Autonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten

Mit diesem GSM-Relais können Sie jede Last mit einer Nennspannung von 220 V und einer Leistung von nicht mehr als 2 kW an jedem Ort der Erde einschalten, an dem es ein Mobilfunknetz gibt.

Autonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten
Dieses Gerät wird von Arduino Nano über das GSM-Modul SIM800L gesteuert. Nachfolgend finden Sie ein Funktionsdiagramm mit einer Liste der Komponenten. Der Betrieb kann entweder mit eingebauten Batterien oder mit einem 220-V-Netz erfolgen. Beim Netzbetrieb kann die Last bis zu 2 kW Strom verbrauchen. Aus Batterien, maximale Ausgangsleistung 300 W.

Autonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten
Kurz zum Schema.

Es gibt 4 Blöcke in diesem Gerät:

  • Wechselrichtereinheit
  • Controller und Batterieeinheit
  • unterbrechungsfreie Stromversorgungseinheit
  • Steuerblock.

Die Wechselrichtereinheit ist ein normaler 500-Tonnen-Wechselrichter für Autos. Es wird auch mit weniger Leistung gearbeitet, allerdings verringert sich auch die maximale Ausgangsleistung proportional zur Leistung des Wechselrichters.

Bei der Controller- und Batterieeinheit handelt es sich um einen regulären, günstigen BMS S3-Treiber, der für den Anschluss von 3 Lithium-Ionen-Batterien ausgelegt ist. Die Batterien sind Hochstrombatterien. Sie können einen Strom von 35 Ampere liefern. Wenn Sie weniger Leistung haben, können Sie günstigere Batterien mit einem geringeren Maximalstrom kaufen.

Die unterbrechungsfreie Stromversorgung erfolgt über die Transistoren VT3, VD4, R4, R5, R3. Die Kathode der Zenerdiode VD4 ist direkt mit der Stromversorgung verbunden und bei Stromzufuhr öffnet der Transistor VT3. Nach dem Öffnen kommt an allen Relaiseingängen ein negatives Potenzial an und die Relais schalten vom Netzteil in den Schaltungsstromversorgungsmodus. Ein wichtiges Merkmal vorgefertigter Relaisbaugruppen: Einige funktionieren, wenn am Eingang ein positives Potenzial anliegt, andere, wenn ein negatives Potenzial anliegt. Wenn Sie die erste Option haben, müssen Sie R3 in die Emitterlücke des Transistors VT3 verschieben und den Relaiseingang mit dem Emitter desselben Transistors verbinden.

Die Steuereinheit ist auf einem SIM800-Modul und Arduino Nano aufgebaut.

Autonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten

So sieht die zusammengebaute Schaltung ausAutonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten

So sieht es verpackt ausAutonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten

Autonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten

Autonomes GSM-Relais mit Wechselrichter aus vorgefertigten Komponenten

Damit das Gerät SMS von Ihrem Telefon empfangen kann, müssen Sie Ihre Telefonnummer in die Variable your_phone schreiben. Es ist auch möglich, ein LCD-Display an den Arduino anzuschließen, zum Beispiel wh1601 oder wh0802, aber Sie müssen alle Zeilen mit der Aufschrift „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 zum Drucken der Box finden Sie hier hier.

Video der Arbeit:



Source: habr.com

Kommentar hinzufügen