Autonom GSM-relä med inverter från färdiga komponenter

Med denna GSM-relä kan du slå på vilken belastning som helst, designad för 220 V och med en effekt på högst 2 kW, i alla hörn av jorden där det finns mobilnät.

Autonom GSM-relä med inverter från färdiga komponenter
Denna enhet styrs av Arduino Nano via GSM-modul SIM800L. Funktionsschemat med en lista över komponenter finns nedan. Den kan drivas både av inbyggda batterier och från 220 V nätverk. När den drivs från nätverket kan lasten dra upp till 2 kW elektricitet. Från batterierna är den maximala uteffekten 300 W.

Autonom GSM-relä med inverter från färdiga komponenter
Kort om schemat.

I denna enhet kan man särskilja 4 block:

  • invertern
  • kontroll- och batteriblocket
  • UPS-blocket
  • styrningsblocket.

Inverterblocket är en vanlig bilinverter med en effekt på 500 W. Det fungerar även med en lägre effekt, men den maximala uteffekten minskas proportionellt med inverterens effekt.

Kontroll- och batteriblocket är en vanlig, billig BMS S3-drivrutin som är avsedd att ansluta 3 litiumjonbatterier. Batterierna är av högströmstyp. De kan avge en ström på 35 ampere. Om du har en lägre effekt kan du köpa billigare batterier med en lägre maximal ström.

UPS-blocket är byggt på transistorn VT3, VD4, R4, R5, R3. Katoden på zenerdioden VD4 är direkt ansluten till strömförsörjningen, och när ström tillförs öppnas transistorn VT3. Efter att den har öppnat får alla ingångar på reläet en negativ potential och reläet växlar till att driva kretsen från strömförsörjningen. En viktig aspekt av färdiga relämoduler: vissa av dem fungerar när en positiv potential kommer till ingången, medan andra fungerar vid negativ. Om du har den första varianten måste du flytta R3 i avbrottet av transistorns emitter och koppla reläingången till emittern på samma transistor.

Styrningsblocket är byggt på SIM800-modulen och Arduino Nano.

Autonom GSM-relä med inverter från färdiga komponenter

Så här ser det sammansatta schemat utAutonom GSM-relä med inverter från färdiga komponenter

Så här ser det ut i förpackat tillståndAutonom GSM-relä med inverter från färdiga komponenter

Autonom GSM-relä med inverter från färdiga komponenter

Autonom GSM-relä med inverter från färdiga komponenter

För att enheten ska börja ta emot SMS från din telefon behöver du skriva ditt telefonnummer i variabeln your_phone. Det är också möjligt att ansluta en LCD-skärm till Arduino, till exempel WH1601 eller WH0802, men du måste avkommentera alla rader med etiketten lcd.

Kod

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 för att skriva ut lådan finns här ). Ett typiskt exempel på användning:.

Videovisning:

Spela video


Källa: habr.com
Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster