Releu GSM autonom cu invertor realizat din componente gata fabricate

Folosind acest releu GSM, puteți porni orice sarcină evaluată la 220 V și o putere de cel mult 2 kW, în orice colț al Pământului unde există o rețea celulară.

Releu GSM autonom cu invertor realizat din componente gata fabricate
Acest dispozitiv este controlat de arduino nano prin modulul GSM SIM800L. O diagramă funcțională cu o listă de componente este prezentată mai jos. Poate funcționa fie din baterii încorporate, fie dintr-o rețea de 220 V. Când funcționează din rețea, sarcina poate consuma până la 2 kW de energie electrică. Din baterii, putere maximă de ieșire 300 W.

Releu GSM autonom cu invertor realizat din componente gata fabricate
Pe scurt despre schema.

Există 4 blocuri în acest dispozitiv:

  • unitate invertor
  • controler și baterie
  • unitate de alimentare neîntreruptibilă
  • Bloc de control.

Unitatea invertor este un invertor auto obișnuit de 500 t. De asemenea, va funcționa cu mai puțină putere, dar și puterea maximă de ieșire va scădea proporțional cu puterea invertorului.

Controlerul și unitatea bateriei sunt un driver BMS S3 ieftin obișnuit, conceput pentru a conecta 3 baterii litiu-ion. Bateriile sunt de curent mare. Pot furniza un curent de 35 de amperi. Dacă aveți mai puțină putere, atunci puteți cumpăra baterii mai ieftine cu un curent maxim mai mic.

Unitatea de alimentare neîntreruptibilă este realizată pe tranzistorul VT3, VD4, R4, R5, R3. Catodul diodei zener VD4 este conectat direct la sursa de alimentare și atunci când este aplicată puterea, tranzistorul VT3 se deschide. După deschidere, un potențial negativ ajunge la toate intrările releului și releele trec la modul de alimentare a circuitului de la sursa de alimentare. O caracteristică importantă a ansamblurilor de relee gata făcute: unele dintre ele funcționează atunci când vine un potențial pozitiv la intrare, iar altele atunci când este unul negativ. Dacă aveți prima opțiune, atunci trebuie să mutați R3 în golul emițătorului tranzistorului VT3 și să conectați intrarea releului la emițătorul aceluiași tranzistor.

Unitatea de control este asamblată pe un modul SIM800 și arduino nano.

Releu GSM autonom cu invertor realizat din componente gata fabricate

Așa arată circuitul asamblatReleu GSM autonom cu invertor realizat din componente gata fabricate

Așa arată când este împachetatReleu GSM autonom cu invertor realizat din componente gata fabricate

Releu GSM autonom cu invertor realizat din componente gata fabricate

Releu GSM autonom cu invertor realizat din componente gata fabricate

Pentru ca dispozitivul să înceapă să primească SMS-uri de pe telefonul dvs., trebuie să scrieți numărul dvs. de telefon în variabila your_phone. De asemenea, este posibil să conectați un afișaj LCD la Arduino, de exemplu wh1601 sau wh0802, dar va trebui să decomentați toate liniile cu inscripția 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 de lucru:



Sursa: www.habr.com

Adauga un comentariu