Autonom GSM-relæ med inverter fra færdige komponenter

Med dette GSM-relæ kan du tænde for enhver belastning, der er designet til 220 V og med en effekt på op til 2 kW, hvor som helst på jorden, så længe der er et mobilnetværk.

Autonom GSM-relæ med inverter fra færdige komponenter
Enheden styres af en Arduino Nano gennem GSM-modulet SIM800L. Funktionsskemaet med listen over komponenter findes nedenfor. Den kan både fungere med indbyggede batterier og fra 220 V-nettet. Når den fungerer fra nettet, kan belastningen forbruge op til 2 kW elektricitet. Fra batterierne er den maksimale udgangseffekt 300 W.

Autonom GSM-relæ med inverter fra færdige komponenter
Kort om skemaet.

I denne enhed kan der identificeres 4 blokke:

  • inverterblok
  • controller- og batteriblok
  • UPS-blok
  • styringsblok.

Inverterblokken er en almindelig bilinverter med en effekt på 500 W. En inverter med lavere effekt kan også anvendes, men den maksimale udgangseffekt vil også blive reduceret proportionalt med inverterens effekt.

Controller- og batteriblokken er en almindelig billig BMS S3 driver, der kan tilsluttes 3 lithium-ion batterier. Batterierne skal være højstrømsfokuserede. De kan levere en strøm på 35 ampere. Hvis du har en lavere effekt, kan du også købe billigere batterier med en lavere maksimal strøm.

UPS-blokken er bygget med transistorene VT3, VD4, og modstandene R4, R5, R3. Katoden på zenerdiode VD4 er direkte tilsluttet strømforsyningen, og ved tilførsel af strøm åbner transistoren VT3. Når den åbner, får alle relæets indgange negativt potentiale, og relæerne skifter til strømmode fra strømforsyningen. En vigtig egenskab ved færdige relæmoduler: nogle fungerer, når der er positivt potentiale på indgangen, og nogle ved negativt. Hvis du har den første variant, skal du flytte R3 til bruddet i emitteren af transistoren VT3 og forbinde relæets indgang med emitteren af den samme transistor.

Styringsblokken er bygget med modulet SIM800 og Arduino Nano.

Autonom GSM-relæ med inverter fra færdige komponenter

Sådan ser det samlede skema udAutonom GSM-relæ med inverter fra færdige komponenter

Sådan ser det ud i pakket tilstandAutonom GSM-relæ med inverter fra færdige komponenter

Autonom GSM-relæ med inverter fra færdige komponenter

Autonom GSM-relæ med inverter fra færdige komponenter

For at enheden kan begynde at modtage SMS fra din telefon, skal du indtaste dit telefonnummer i variablen your_phone. Det er også muligt at tilslutte et LCD-display til Arduino, som f.eks. WH1601 eller WH0802, men du skal kommentere alle linjer med overskriften lcd.

Kode

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-filen til at printe kassen kan findes her.

Video af arbejdet:

Afspil video


Kilde: habr.com
Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster