Autonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų

Naudodami šią GSM relę galite įjungti bet kokią 220 V apkrovą ir ne didesnę kaip 2 kW galią bet kuriame Žemės kampelyje, kur yra korinis tinklas.

Autonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų
Šis įrenginys valdomas arduino nano per gsm modulį SIM800L. Žemiau pateikiama funkcinė diagrama su komponentų sąrašu. Gali veikti tiek iš įmontuotų baterijų, tiek iš 220 V tinklo.. Veikiant iš tinklo apkrova gali sunaudoti iki 2 kW elektros energijos. Iš baterijų maksimali išėjimo galia 300 W.

Autonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų
Trumpai apie schemą.

Šiame įrenginyje yra 4 blokai:

  • keitiklio blokas
  • valdiklis ir akumuliatoriaus blokas
  • nepertraukiamo maitinimo blokas
  • Valdymo blokas.

Inverterio blokas yra įprastas 500 tonų automobilio keitiklis. Jis taip pat veiks su mažesne galia, tačiau maksimali išėjimo galia taip pat mažės proporcingai keitiklio galiai.

Valdiklis ir akumuliatoriaus blokas yra įprastas pigus BMS S3 vairuotojas, skirtas prijungti 3 ličio jonų baterijas. Baterijos yra didelės srovės. Jie gali tiekti 35 amperų srovę. Jei turite mažiau galios, galite nusipirkti pigesnių akumuliatorių su mažesne maksimalia srove.

Nepertraukiamo maitinimo blokas pagamintas ant tranzistoriaus VT3, VD4, R4, R5, R3. Zenerio diodo VD4 katodas yra tiesiogiai prijungtas prie maitinimo šaltinio, o įjungus maitinimą, atsidaro tranzistorius VT3. Jam atsidarius, į visus relių įėjimus patenka neigiamas potencialas ir relės iš maitinimo šaltinio persijungia į grandinės maitinimo režimą. Svarbi paruoštų relių agregatų savybė: kai kurie iš jų veikia, kai į įėjimą ateina teigiamas potencialas, o kai kurie – kai neigiamas. Jei turite pirmąjį variantą, tuomet turite perkelti R3 į tranzistoriaus VT3 emiterio tarpą ir prijungti relės įvestį prie to paties tranzistoriaus emiterio.

Valdymo blokas sumontuotas ant SIM800 modulio ir arduino nano.

Autonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų

Taip atrodo surinkta grandinėAutonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų

Taip jis atrodo supakuotasAutonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų

Autonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų

Autonominė GSM relė su inverteriu, pagaminta iš gatavų komponentų

Kad įrenginys pradėtų gauti SMS iš jūsų telefono, kintamajame your_phone turite įrašyti savo telefono numerį. Taip pat prie „Arduino“ galima prijungti LCD ekraną, pavyzdžiui, wh1601 arba wh0802, tačiau reikės iškomentuoti visas eilutes su užrašu lcd.

Kodas

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

}

Galima rasti dėžutės spausdinimo STL failą čia.

Darbo vaizdo įrašas:



Šaltinis: www.habr.com

Добавить комментарий