Autonóm GSM relé inverterrel, kész alkatrészekből

Ezzel a GSM-relével bármilyen 220 V-os névleges terhelést és legfeljebb 2 kW teljesítményt bekapcsolhat a Föld bármely sarkában, ahol van mobilhálózat.

Autonóm GSM relé inverterrel, kész alkatrészekből
Ezt az eszközt az arduino nano vezérli a SIM800L gsm modulon keresztül. Az alábbiakban egy funkcionális diagramot mutatunk be az összetevők listájával. Működhet akár beépített akkumulátorról, akár 220 V-os hálózatról. Hálózatról üzemelve a terhelés akár 2 kW áramot is fogyaszthat. Akkumulátorról, maximális kimeneti teljesítmény 300 W.

Autonóm GSM relé inverterrel, kész alkatrészekből
Röviden a sémáról.

Ebben az eszközben 4 blokk található:

  • inverter egység
  • vezérlő és akkumulátor egység
  • szünetmentes tápegység
  • Vezérlő blokk.

Az inverter egység egy szokásos 500 tonnás autóinverter. Kisebb teljesítménnyel is fog működni, de a maximális kimeneti teljesítmény is csökkenni fog az inverter teljesítményével arányosan.

A vezérlő és az akkumulátor egység egy szokásos olcsó BMS S3 meghajtó, amelyet 3 lítium-ion akkumulátor csatlakoztatására terveztek. Az akkumulátorok nagy áramerősségűek. 35 amper áramot tudnak leadni. Ha kevesebb a teljesítménye, akkor olcsóbb akkumulátorokat vásárolhat alacsonyabb maximális áramerősséggel.

A szünetmentes tápegység VT3, VD4, R4, R5, R3 tranzisztoron készül. A VD4 zener-dióda katódja közvetlenül csatlakozik a tápegységhez, és tápellátás esetén a VT3 tranzisztor kinyílik. Nyitás után negatív potenciál érkezik az összes relébemenetre, és a relék áramköri tápellátási módba kapcsolnak a tápegységről. A kész relé szerelvények fontos jellemzője: van, amelyik pozitív potenciál érkezik a bemenetre, és van, amikor negatív. Ha megvan az első lehetőség, akkor az R3-at át kell helyeznie a VT3 tranzisztor emitterrésébe, és csatlakoztatnia kell a relé bemenetét ugyanazon tranzisztor emitteréhez.

A vezérlőegység SIM800 modulra és arduino nano-ra van felszerelve.

Autonóm GSM relé inverterrel, kész alkatrészekből

Így néz ki az összeszerelt áramkörAutonóm GSM relé inverterrel, kész alkatrészekből

Így néz ki becsomagolvaAutonóm GSM relé inverterrel, kész alkatrészekből

Autonóm GSM relé inverterrel, kész alkatrészekből

Autonóm GSM relé inverterrel, kész alkatrészekből

Ahhoz, hogy a készülék SMS-eket fogadhasson a telefonjáról, be kell írnia telefonszámát a your_phone változóba. LCD-kijelzőt is csatlakoztathatunk az Arduino-hoz, például wh1601 vagy wh0802, de az összes lcd feliratú sort törölnie kell.

Kód

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

}

A doboz nyomtatásához szükséges STL fájl megtalálható itt.

Videó a munkáról:



Forrás: will.com

Hozzászólás