Autonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem

Izmantojot šo GSM releju, jūs varat ieslēgt jebkuru slodzi ar nominālo 220 V un jaudu, kas nepārsniedz 2 kW, jebkurā Zemes stūrī, kur ir mobilais tīkls.

Autonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem
Šo ierīci kontrolē arduino nano, izmantojot gsm moduli SIM800L. Tālāk ir sniegta funkcionālā diagramma ar komponentu sarakstu. Tas var darboties vai nu no iebūvētiem akumulatoriem, vai no tīkla 220 V. Darbojoties no tīkla, slodze var patērēt līdz 2 kW elektroenerģijas. No akumulatoriem maksimālā izejas jauda 300 W.

Autonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem
Īsi par shēmu.

Šajā ierīcē ir 4 bloki:

  • invertora vienība
  • kontrolieris un akumulatora bloks
  • nepārtrauktās barošanas bloks
  • Vadības bloks.

Invertora bloks ir parasts 500 tonnu automašīnas invertors. Tas darbosies arī ar mazāku jaudu, taču arī maksimālā izejas jauda samazināsies proporcionāli invertora jaudai.

Kontrolieris un akumulatora bloks ir parasts lēts BMS S3 draiveris, kas paredzēts 3 litija jonu akumulatoru savienošanai. Baterijām ir liela strāva. Tie var nodrošināt 35 ampēru strāvu. Ja jums ir mazāka jauda, ​​varat iegādāties lētākas baterijas ar mazāku maksimālo strāvu.

Nepārtrauktās barošanas bloks ir izgatavots uz tranzistora VT3, VD4, R4, R5, R3. Zenera diodes VD4 katods ir tieši pievienots barošanas avotam, un, pieslēdzot strāvu, tiek atvērts tranzistors VT3. Pēc tā atvēršanas visās releju ieejās nonāk negatīvs potenciāls, un releji pārslēdzas uz ķēdes barošanas režīmu no barošanas avota. Svarīga gatavu releju mezglu iezīme: daži no tiem darbojas, kad ieejā nonāk pozitīvs potenciāls, un daži, kad ieejā ir negatīvs. Ja jums ir pirmā iespēja, tad R3 jāpārvieto tranzistora VT3 emitētāja spraugā un jāpievieno releja ieeja tā paša tranzistora emitētājam.

Vadības bloks ir samontēts uz SIM800 moduļa un arduino nano.

Autonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem

Šādi izskatās samontētā ķēdeAutonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem

Šādi tas izskatās iepakotsAutonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem

Autonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem

Autonomais GSM relejs ar invertoru, kas izgatavots no gataviem komponentiem

Lai ierīce sāktu saņemt SMS no jūsu tālruņa, mainīgajā your_phone ir jāieraksta savs tālruņa numurs. Arduino ir iespējams pieslēgt arī LCD displeju, piemēram, wh1601 vai wh0802, taču jums būs jāatmet visas rindas ar uzrakstu lcd.

Kods

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

}

STL failu kastes drukāšanai var atrast šeit.

Video no darba:



Avots: www.habr.com

Pievieno komentāru