Autonomes GSM-Relais mit Inverter aus fertigen Komponenten

Mit diesem GSM-Relais können Sie jede Last, die für 220 V ausgelegt und nicht mehr als 2 kW stark ist, an jedem Ort der Welt, wo es ein Mobilfunknetz gibt, einschalten.

Autonomes GSM-Relais mit Inverter aus fertigen Komponenten
Dieses Gerät wird über ein Arduino Nano mittels des GSM-Moduls SIM800L gesteuert. Das Funktionsschema mit einer Liste der Komponenten ist unten dargestellt. Es kann sowohl von integrierten Akkus als auch aus dem 220 V Stromnetz betrieben werden. Bei Betrieb aus dem Netz kann die Last bis zu 2 kW Strom verbrauchen. Bei Verwendung von Akkus beträgt die maximale Ausgangsleistung 300 W.

Autonomes GSM-Relais mit Inverter aus fertigen Komponenten
Kurze Übersicht über das Schema.

In diesem Gerät lassen sich 4 Blöcke unterscheiden:

  • Inverterblock
  • Block für Controller und Batterien
  • USV-Block
  • Steuerblock.

Der Inverterblock ist ein herkömmlicher Auto-Inverter mit einer Leistung von 500 W. Ein Modell mit geringerer Leistung ist ebenfalls geeignet, jedoch wird auch die maximale Ausgangsleistung proportional zur Inverterleistung sinken.

Der Block für Controller und Batterien ist ein gewöhnlicher, kostengünstiger BMS S3-Treiber, der für den Anschluss von 3 Lithium-Ionen-Batterien ausgelegt ist. Die Batterien sind für hohe Ströme ausgelegt. Sie können einen Strom von 35 Ampere liefern. Wenn Sie eine geringere Leistung benötigen, können Sie auch günstigere Akkus mit einem niedrigeren maximalen Strom kaufen.

Das Netzteilblock besteht aus dem Transistor VT3, VD4, R4, R5, R3. Der Kathode des Zeners VD4 ist direkt an die Stromversorgung angeschlossen, und beim Anlegen der Spannung öffnet sich der Transistor VT3. Nach dem Öffnen liegt an allen Eingängen des Relais ein negativer Potenzial an, und das Relais schaltet in den Betrieb des Stromversorgungsschemas um. Eine wichtige Eigenschaft von fertigen Relaismodulen ist, dass einige von ihnen arbeiten, wenn am Eingang ein positives Potenzial anliegt, während andere bei negativem Potenzial aktiv sind. Wenn Sie die erste Variante haben, müssen Sie R3 in den Emitter des Transistors VT3 umschalten und den Relais-Eingang mit dem Emitter desselben Transistors verbinden.

Die Steuerungseinheit besteht aus dem SIM800-Modul und einem Arduino Nano.

Autonomes GSM-Relais mit Inverter aus fertigen Komponenten

So sieht das montierte Schema aus.Autonomes GSM-Relais mit Inverter aus fertigen Komponenten

So sieht es im verpackten Zustand aus.Autonomes GSM-Relais mit Inverter aus fertigen Komponenten

Autonomes GSM-Relais mit Inverter aus fertigen Komponenten

Autonomes GSM-Relais mit Inverter aus fertigen Komponenten

Um das Gerät dazu zu bringen, SMS von Ihrem Telefon zu empfangen, müssen Sie Ihre Telefonnummer in die Variable your_phone eintragen. Außerdem kann ein LCD-Display, wie WH1601 oder WH0802, an das Arduino angeschlossen werden, allerdings müssen Sie alle Zeilen mit der Bezeichnung lcd auskommentieren.

Code

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);

}

Die STL-Datei für den Druck des Gehäuses finden Sie hier. hier.

Funktionsvideo:

Video abspielen


Quelle: habr.com
Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster