Аутономни ГСМ релеј са инвертером направљеним од готових компоненти

При помощи этого GSM-реле вы сможете включить любую нагрузку, рассчитанную на 220 В и мощностью не более 2 кВт, в любом уголке Земли, где есть сотовая сеть.

Аутономни ГСМ релеј са инвертером направљеним од готових компоненти
Данное устройство управляется arduino nano через gsm модуль SIM800L. Функциональная схема со списком комплектующих приведена ниже. Оно может работать как от встроенных аккумуляторов, так и от сети 220 В. При работе от сети нагрузка может потреблять до 2 кВт электроэнергии. От аккумуляторов, максимальная выходная мощность 300 Вт.

Аутономни ГСМ релеј са инвертером направљеним од готових компоненти
Коротко о схеме.

В этом устройстве можно выделить 4 блока:

  • блок инвертора
  • блок контроллера и батарей
  • блок бесперебойника
  • Контролни блок.

Блок инвертора — это обычный автомобильный инвертор мощностью 500т. Подойдет и с меньшей мощностью, но и максимальная выходная мощность тоже уменьшиться пропорционально мощности инвертора.

Блок контроллера и батарей — это обычный дешевый драйвер BMS S3 рассчитанный на подключение 3х литиий ионных батарей. Батареи стоят высокотоковые. Они могут выдавать ток в 35 ампер. Если у вас меньшая мощность, то можно и купить более дешевые аккумуляторы с меньшим максимальным током.

Блок бесперебойника выполнен на транзисторе VT3, VD4, R4, R5, R3. Катод стабилитрона VD4 подсоединен на прямую к блоку питания и при подаче питания транзистор VT3 открывается. После его открытия на все входы реле приходит отрицательный потенциал и реле переключаются в режим питания схемы от блока питания. Важная особенность готовых релейных сборок: некоторые из них работают, когда на вход приходит поожительный потенциал, а некоторые при отрицательном. Если у вас первый вариант, то вам нужно R3 переставить в разрыв эмитера транзистора VT3 и соеденить вход реле с эмитером этого же транзистора.

Блок управления — собран на модуле SIM800 и arduino nano.

Аутономни ГСМ релеј са инвертером направљеним од готових компоненти

Так выглядит собранная схемаАутономни ГСМ релеј са инвертером направљеним од готових компоненти

Так выглядит в упакованном состояниеАутономни ГСМ релеј са инвертером направљеним од готових компоненти

Аутономни ГСМ релеј са инвертером направљеним од готових компоненти

Аутономни ГСМ релеј са инвертером направљеним од готових компоненти

Чтобы устройство начало принимать смс с вашего телефона нужно в переменную your_phone записать свой номер телефона. Так же к ардуино возможно подключить LCD дисплей, например wh1601 или wh0802, но при этом нужно будет разкоментировать все строчки cнадписью lcd.

Код

char your_phone = "+79148389933";

#include <SoftwareSerial.h>                                          // Подключаем библиотеку SoftwareSerial для общения с модулем по программной шине UART
SoftwareSerial softSerial(8,9);                                      // Создаём объект softSerial указывая выводы RX, TX (можно указывать любые выводы Arduino UNO)
// include the library code:
//#include <LiquidCrystal.h>

// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
//const int rs = 12, en = 11, d4 = 5, d5 = 6, d6 = 7, d7 = 10;
//LiquidCrystal lcd(rs, en, d4, d5, d6, d7);                                                               // В данном случае вывод TX модуля подключается к выводу 2 Arduino, а вывод RX модуля к выводу 3 Arduino.
//  Инициируем работу шин UART с указанием скоростей обеих шин:      //
String buf2,buf3;
int g=0;

    String cmd1;
void setup(){                                                        //
init_port();
      // lcd.begin(16, 2);
  // Print a message to the LCD.
  //lcd.clear();
  //  lcd.setCursor(0, 0);
 /// lcd.print("VKL");
 // lcd.setCursor(0, 1);
 /// lcd.print("ZHDITE");

        /// init_port();// Инициируем передачу данных по аппаратной  шине UART на скорости  9600 (между Arduino и компьютером)
    softSerial.begin(9600);                                         // Инициируем передачу данных по программной шине UART на скорости 38400 (между модулем и Arduino)
        Serial.begin(9600);   
        delay(30000);

  //  cmd1 ="AT+CMGF=1rn";
  softSerial.print("AT+CMGF=1rn"); 
  ///  print_lcd(cmd1);
delay(1000);
       dellAllSMS();  
//  cmd1 ="AT+CMGDA="DEL ALL"rn";
    // print_lcd(cmd1);
//cmd1="AT+CPAS";
  ///   print_lcd(cmd1);
}                                                                    //
      
   
      char c;  
      int m=0;
      int i=0;//
      int n=0;
//  Выполняем ретрансляцию:                                          // Всё что пришло с модуля - отправляем компьютеру, а всё что пришло с компьютера - отправляем модулю

void dellAllSMS(){
  /* This deletes all sms in memory  
  
  */

  softSerial.print("AT+CMGDA="DEL ALL"rn"); // set sms to text mode

delay(3000);
}
void pin_on_setb()
{
 digitalWrite(2,1);
  digitalWrite(13,1);
}
void pin_off_setb()
{
 digitalWrite(2,0);
  digitalWrite(13,0);
}
void pin_on_inv()
{
 digitalWrite(3,1);
  //  digitalWrite(13,1);
}
void pin_off_inv()
{
 digitalWrite(3,0);
   // digitalWrite(13,0);
}
void init_port()
{
pinMode(2,1);
pinMode(3,1);
    pinMode(13,1);
}
String readData(){
   // this function just reads the raw data
   uint16_t timeout=0;
   while (!softSerial.available() && timeout<10000)
   {
     delay(10);
     timeout++;
   }
   if(softSerial.available())
   {
     String output = softSerial.readString();
     //if(DEBUG)
    ///   Serial.println(output);
     return output;
   }
 }
String buf, bufferIndex; 
int tempIndex=0;
int messageIndex;
int prev=0;
int power=0;
void loop(){                                                         //
   /* if(softSerial.available()){    Serial.write(softSerial.read());} // Передаём данные из программной шины UART в аппаратную  (от модуля     через Arduino к компьютеру)
    if(    Serial.available()){softSerial.write(    Serial.read());} // Передаём данные из аппаратной  шины UART в программную (от компьютера через Arduino к модулю    )*/

         //   lcd.clear();
     //  lcd.setCursor(0, 0);
     //  lcd.print("Nagruzka");
            //  lcd.setCursor(0, 1);
           //   if (power==1)
          //    {
         //              lcd.print("VKL");
     //         }
         //     else {lcd.print("VIKL");}
      softSerial.print(F("AT+CMGL="ALL",0"));
  softSerial.print("r");
  buf = readData();
 // Serial.println(buf);
tempIndex = buf.lastIndexOf("+CMGL: ");
tempIndex = tempIndex + 6;
    bufferIndex = buf.substring(tempIndex);
    bufferIndex = bufferIndex.substring(1,(bufferIndex.indexOf(",")));
    messageIndex = bufferIndex.toInt();
    ///Serial.println(messageIndex);
    if(prev!=messageIndex)
    {
      tempIndex = buf.lastIndexOf(your_phone);
     //  lcd.clear();
     //  lcd.setCursor(0, 0);
     //  lcd.print("SMS READ");

     if((digitalRead(4))&&(tempIndex!=-1))
     {
      pin_on_inv();
      delay(2000);
      pin_off_inv();
     // i=1;
   //  power=1;
     }
     else 
     {
     pin_on_setb();
           delay(2000);
     pin_off_setb();
  //   i=1;
 //         power=1;
     }
        //    send_sms(number3);

     
    prev++;
    
    }
if(messageIndex>=2)
{
 dellAllSMS();
// lcd.clear();
     //   lcd.setCursor(0, 0);
     //  lcd.print("SMS READ");
     //   lcd.setCursor(0, 1);
// lcd.print("SMS DEL");
 //  cmd1 ="AT+CMGDA="DEL ALL"rn";
   //  print_lcd(cmd1);
prev=0;
}
delay(10000);

}

STL файл для печати коробки можно найти овде.

Видео работы:



Извор: ввв.хабр.цом

Додај коментар