Relè GSM autonomo con inverter realizzato con componenti già pronti

Utilizzando questo relè GSM, puoi accendere qualsiasi carico valutato per 220 V e una potenza non superiore a 2 kW, in qualsiasi angolo della Terra dove sia presente una rete cellulare.

Relè GSM autonomo con inverter realizzato con componenti già pronti
Questo dispositivo è controllato da arduino nano tramite modulo GSM SIM800L. Di seguito è riportato uno schema funzionale con l'elenco dei componenti. Può funzionare sia con batterie integrate che con una rete da 220 V. Quando si opera dalla rete, il carico può consumare fino a 2 kW di elettricità. Dalle batterie, potenza massima in uscita 300 W.

Relè GSM autonomo con inverter realizzato con componenti già pronti
Brevemente sullo schema.

Ci sono 4 blocchi in questo dispositivo:

  • unità inverter
  • controller e unità batteria
  • gruppo di continuità
  • Blocco di controllo.

L'unità inverter è un normale inverter per auto da 500 t. Funzionerà anche con meno potenza, ma anche la potenza massima in uscita diminuirà in proporzione alla potenza dell'inverter.

Il controller e l'unità batteria sono un normale driver BMS S3 economico progettato per collegare 3 batterie agli ioni di litio. Le batterie sono ad alta corrente. Possono erogare una corrente di 35 ampere. Se hai meno potenza, puoi acquistare batterie più economiche con una corrente massima inferiore.

Il gruppo di continuità è realizzato sul transistor VT3, VD4, R4, R5, R3. Il catodo del diodo zener VD4 è collegato direttamente all'alimentazione e quando viene applicata l'alimentazione, il transistor VT3 si apre. Dopo l'apertura, a tutti gli ingressi dei relè arriva un potenziale negativo e i relè passano alla modalità di alimentazione del circuito dall'alimentatore. Una caratteristica importante dei gruppi relè già pronti: alcuni funzionano quando arriva un potenziale positivo all'ingresso e altri quando negativo. Se hai la prima opzione, devi spostare R3 nello spazio dell'emettitore del transistor VT3 e collegare l'ingresso del relè all'emettitore dello stesso transistor.

L'unità di controllo è assemblata su un modulo SIM800 e arduino nano.

Relè GSM autonomo con inverter realizzato con componenti già pronti

Ecco come appare il circuito assemblatoRelè GSM autonomo con inverter realizzato con componenti già pronti

Ecco come appare una volta imballatoRelè GSM autonomo con inverter realizzato con componenti già pronti

Relè GSM autonomo con inverter realizzato con componenti già pronti

Relè GSM autonomo con inverter realizzato con componenti già pronti

Affinché il dispositivo inizi a ricevere SMS dal tuo telefono, devi scrivere il tuo numero di telefono nella variabile your_phone. È anche possibile collegare all'Arduino un display LCD, ad esempio wh1601 o wh0802, ma bisognerà decommentare tutte le righe con la scritta lcd.

codice

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

}

È possibile trovare il file STL per la stampa della scatola qui.

Video del lavoro:



Fonte: habr.com

Aggiungi un commento