Relè GSM autonomu cù inverter fattu da cumpunenti pronti

Utilizendu stu relé GSM, pudete accende ogni carica valutata à 220 V è una putenza di micca più di 2 kW, in ogni angulu di a Terra induve ci hè una rete cellulare.

Relè GSM autonomu cù inverter fattu da cumpunenti pronti
Stu dispusitivu hè cuntrullatu da arduino nano via u modulu gsm SIM800L. Un diagramma funziunale cù una lista di cumpunenti hè datu quì sottu. Pò esse operatu da e batterie integrate o da una reta di 220 V. Quandu opera da a reta, a carica pò cunsumà finu à 2 kW d'electricità. Da e batterie, a putenza massima di output 300 W.

Relè GSM autonomu cù inverter fattu da cumpunenti pronti
In breve nantu à u schema.

Ci sò 4 blocchi in stu dispusitivu:

  • unità inverter
  • controller è unità di batterie
  • unità di alimentazione senza interruzzione
  • Blocu di cuntrollu.

L'unità inverter hè un inverter di vittura regulare 500t. Funcionà ancu cù menu putenza, ma a putenza massima di output diminuirà ancu in proporzione à a putenza di l'inverter.

U controller è l'unità di batteria hè un driver BMS S3 regularmente economicu cuncepitu per cunnette 3 batterie di lithium-ion. E batterie sò alta corrente. Puderanu furnisce una corrente di 35 ampere. Sè vo avete menu putenza, allura vi pò cumprà batterie ecunumia cù un currenti massimu più bassu.

L'unità di alimentazione senza interruzzione hè fatta nantu à transistor VT3, VD4, R4, R5, R3. U cathode di u diodu zener VD4 hè cunnessu direttamente à l'alimentazione è quandu u putere hè appiicatu, u transistor VT3 apre. Dopu chì si apre, un putenziale negativu arriva à tutti l'inputs di relè è i relè cambianu à u modu di alimentazione di circuitu da l'alimentazione. Una funzione impurtante di l'assemblee di relè pronti: alcuni di elli travaglianu quandu un putenziale pusitivu vene à l'input, è alcuni quandu un negativu. Se tenete a prima opzione, allora avete bisognu di trasfurmà R3 in u gap emitter di transistor VT3 è cunnette l'input di relé à l'emettitore di u stessu transistor.

L'unità di cuntrollu hè assemblata nantu à un modulu SIM800 è arduino nano.

Relè GSM autonomu cù inverter fattu da cumpunenti pronti

Questu hè ciò chì u circuitu assemblatu pareRelè GSM autonomu cù inverter fattu da cumpunenti pronti

Questu hè ciò chì pare quandu hè imballatuRelè GSM autonomu cù inverter fattu da cumpunenti pronti

Relè GSM autonomu cù inverter fattu da cumpunenti pronti

Relè GSM autonomu cù inverter fattu da cumpunenti pronti

Per chì u dispositivu cumencia à riceve SMS da u vostru telefunu, avete bisognu di scrive u vostru numeru di telefunu in a variabile your_phone. Hè ancu pussibule di cunnette un display LCD à l'Arduino, per esempiu wh1601 o wh0802, ma avete bisognu di uncomment tutte e linee cù l'inscription 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);

}

U schedariu STL per stampà a scatula pò esse truvata ccà.

Video di u travagliu:



Source: www.habr.com

Add a comment