Releu GSM autonom cu inverter din componente disponibile

Cu acest releu GSM, puteți activa orice sarcină de 220 V cu o putere maximă de 2 kW, din orice colț al lumii, unde există o rețea de telefonie mobilă.

Releu GSM autonom cu inverter din componente disponibile
Acest dispozitiv este controlat de un Arduino Nano prin modulul GSM SIM800L. Diagrama de funcționare împreună cu lista componentelor este prezentată mai jos. Acesta poate funcționa atât de la acumulatori încorporați, cât și de la rețeaua de 220 V. Când funcționează de la rețea, sarcina poate consuma până la 2 kW de energie electrică. De la acumulatori, puterea maximă de ieșire este de 300 W.

Releu GSM autonom cu inverter din componente disponibile
Scurt despre schemă.

În acest dispozitiv se pot distinge 4 blocuri:

  • blocul inverterului
  • blocul controlerului și bateriilor
  • blocul de întrerupere fără lucrare
  • blocul de control.

Blocul inverterului este un invertor auto obișnuit cu o putere de 500 W. Se pot folosi și invertori cu putere mai mică, dar și puterea maximă de ieșire se va reduce proporțional cu puterea inverterului.

Blocul controlerului și bateriilor este un driver BMS S3 ieftin, destinat conectării a 3 baterii litiu-ion. Bateriile sunt de tip high-current. Acestea pot furniza un curent de 35 amperi. Dacă aveți o putere mai mică, puteți achiziționa baterii mai ieftine cu un curent maxim mai mic.

Blocul de întrerupere fără lucrare este construit cu tranzistorii VT3, VD4, R4, R5, R3. Catodul stabilizatorului VD4 este conectat direct la sursa de alimentare și, la aplicarea tensiunii, tranzistorul VT3 se deschide. După deschidere, toate intrările releului primesc un potențial negativ și releele comută la modul de alimentare a schemei de la sursa de alimentare. O caracteristică importantă a ansamblurilor de relee gata preparate: unele funcționează atunci când la intrare vine un potențial pozitiv, iar altele la potențial negativ. Dacă aveți prima variantă, trebuie să mutați R3 în întreruperea emitorului tranzistorului VT3 și să conectați intrarea releului la emitorul aceluiași tranzistor.

Blocul de control este construit pe modulul SIM800 și Arduino Nano.

Releu GSM autonom cu inverter din componente disponibile

Așa arată schema asamblată.Releu GSM autonom cu inverter din componente disponibile

Așa arată în stare ambalată.Releu GSM autonom cu inverter din componente disponibile

Releu GSM autonom cu inverter din componente disponibile

Releu GSM autonom cu inverter din componente disponibile

Pentru ca dispozitivul să înceapă să primească SMS-uri de la telefonul dumneavoastră, trebuie să scrieți numărul dumneavoastră de telefon în variabila your_phone. De asemenea, la Arduino se poate conecta un display LCD, cum ar fi wh1601 sau wh0802, dar în acest caz va trebui să decomentați toate liniile cu eticheta lcd.

Cod

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

}

Fișierul STL pentru imprimarea cutiei poate fi găsit. aici.

Video cu funcționarea:

Redați video


Sursa: habr.com
Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster