Autonom GSM Relais mat Inverter aus fäerdege Komponenten

Mat dësem GSM-Relais kënnt Dir all Belaaschtung op 220 V an eng Kraaft vun net méi wéi 2 kW ausschalten, an all Eck vun der Äerd, wou et en Zellularnetz gëtt.

Autonom GSM Relais mat Inverter aus fäerdege Komponenten
Dësen Apparat gëtt vun Arduino Nano iwwer gsm Modul SIM800L kontrolléiert. Eng funktionell Diagramm mat enger Lëscht vun Komponente gëtt hei ënnendrënner. Et kann entweder aus agebaute Batterien oder aus engem Netz vun 220 V. Wann Dir aus dem Netz funktionnéiert, kann d'Laascht bis zu 2 kW Stroum verbrauchen. Vun Batterien, maximal Ausgangsleistung 300 W.

Autonom GSM Relais mat Inverter aus fäerdege Komponenten
Kuerz iwwer de Schema.

Et gi 4 Block an dësem Apparat:

  • inverter Eenheet
  • Controller an Batterie Eenheet
  • uninterruptible Energieversuergung Eenheet
  • Kontrollblock.

D'Inverter Eenheet ass e reguläre 500t Autosinverter. Et wäert och mat manner Kraaft funktionnéieren, awer déi maximal Ausgangskraaft wäert och am Verhältnis zu der Kraaft vum Inverter erofgoen.

De Controller an d'Batterie Eenheet ass e reegelméissege bëllege BMS S3 Chauffer entwéckelt fir 3 Lithium-Ion Batterien ze verbannen. D'Batterien sinn héich Stroum. Si kënnen e Stroum vu 35 Ampere liwweren. Wann Dir manner Kraaft hutt, da kënnt Dir méi bëlleg Batterien mat engem méi nidderegen Maximum Stroum kafen.

D'uninterruptible Energieversuergung Eenheet ass op Transistor VT3, VD4, R4, R5, R3 gemaach. D'Kathode vun der Zenerdiode VD4 ass direkt un d'Energieversuergung verbonnen a wann d'Kraaft ugewannt gëtt, mécht den Transistor VT3 op. Nodeems et opgemaach ass, kënnt en negativt Potenzial bei all Relais-Inputen an d'Relais schalten op de Circuit-Energieversuergungsmodus vun der Energieversuergung. Eng wichteg Feature vu fäerdege Relaisversammlungen: e puer vun hinnen funktionnéieren wann e positiven Potenzial op den Input kënnt, an e puer wann en negativen. Wann Dir déi éischt Optioun hutt, da musst Dir R3 an d'Emitterspalt vum Transistor VT3 réckelen an de Relaisingang un den Emitter vum selwechte Transistor verbannen.

D'Kontroll Eenheet ass op engem SIM800 Modul an Arduino Nano zesummegesat.

Autonom GSM Relais mat Inverter aus fäerdege Komponenten

Dëst ass wéi de versammelt Circuit ausgesäitAutonom GSM Relais mat Inverter aus fäerdege Komponenten

Dëst ass wéi et ausgesäit wann se gepackt sinnAutonom GSM Relais mat Inverter aus fäerdege Komponenten

Autonom GSM Relais mat Inverter aus fäerdege Komponenten

Autonom GSM Relais mat Inverter aus fäerdege Komponenten

Fir datt den Apparat ufänkt SMS vun Ärem Telefon ze kréien, musst Dir Är Telefonsnummer an d'Your_phone Variabel schreiwen. Et ass och méiglech en LCD-Display un den Arduino ze verbannen, zum Beispill wh1601 oder wh0802, awer Dir musst all d'Linnen mat der Inscriptioun lcd decommentéieren.

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

}

D'STL-Datei fir d'Këscht ze drécken kann fonnt ginn hei.

Video vun der Aarbecht:



Source: will.com

Setzt e Commentaire