Avtonomni GSM rele z inverterjem iz gotovih komponent

S tem GSM relejem lahko vklopite katero koli obremenitev z nazivno napetostjo 220 V in močjo največ 2 kW v katerem koli kotu Zemlje, kjer je mobilno omrežje.

Avtonomni GSM rele z inverterjem iz gotovih komponent
To napravo krmili arduino nano preko gsm modula SIM800L. Spodaj je podan funkcionalni diagram s seznamom komponent. Deluje lahko iz vgrajenih baterij ali iz omrežja 220 V. Pri delovanju iz omrežja lahko obremenitev porabi do 2 kW električne energije. Iz baterij, največja izhodna moč 300 W.

Avtonomni GSM rele z inverterjem iz gotovih komponent
Na kratko o shemi.

V tej napravi so 4 bloki:

  • invertersko enoto
  • krmilnik in baterijska enota
  • enota za neprekinjeno napajanje
  • Nadzorni blok.

Inverterska enota je običajni avtomobilski inverter 500t. Deloval bo tudi z manjšo močjo, vendar se bo sorazmerno z močjo razsmernika zmanjšala tudi največja izhodna moč.

Krmilna in baterijska enota je običajen poceni gonilnik BMS S3, zasnovan za povezavo 3 litij-ionskih baterij. Baterije so visokotokovne. Oddajo lahko tok 35 amperov. Če imate manj moči, potem lahko kupite cenejše baterije z nižjim maksimalnim tokom.

Enota za neprekinjeno napajanje je izdelana na tranzistorju VT3, VD4, R4, R5, R3. Katoda zener diode VD4 je priključena neposredno na napajanje in ko se napaja, se odpre tranzistor VT3. Ko se odpre, na vse relejne vhode pride negativni potencial in releji preklopijo v način napajanja vezja iz napajalnika. Pomembna značilnost že pripravljenih relejskih sklopov: nekateri od njih delujejo, ko na vhod pride pozitiven potencial, nekateri pa, ko negativni. Če imate prvo možnost, potem morate R3 premakniti v oddajno režo tranzistorja VT3 in priključiti relejni vhod na oddajnik istega tranzistorja.

Krmilna enota je sestavljena na modulu SIM800 in arduino nano.

Avtonomni GSM rele z inverterjem iz gotovih komponent

Tako izgleda sestavljeno vezjeAvtonomni GSM rele z inverterjem iz gotovih komponent

Tako izgleda, ko je zapakiranAvtonomni GSM rele z inverterjem iz gotovih komponent

Avtonomni GSM rele z inverterjem iz gotovih komponent

Avtonomni GSM rele z inverterjem iz gotovih komponent

Če želite, da naprava začne prejemati SMS iz vašega telefona, morate v spremenljivko your_phone vpisati svojo telefonsko številko. Na Arduino je mogoče povezati tudi LCD zaslon, na primer wh1601 ali wh0802, vendar boste morali odkomentirati vse vrstice z napisom lcd.

Koda:

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

}

Najdete lahko datoteko STL za tiskanje škatle tukaj.

Video o delu:



Vir: www.habr.com

Dodaj komentar