Autonoom GSM-relais met omvormer van kant-en-klare componenten

Met dit GSM-relais kunt u elke belasting inschakelen die is ontworpen voor 220 V en met een vermogen van maximaal 2 kW, op elke plek ter wereld waar een mobiele netwerk aanwezig is.

Autonoom GSM-relais met omvormer van kant-en-klare componenten
Dit apparaat wordt aangestuurd door een Arduino Nano via de GSM-module SIM800L. Het functionele schema met de lijst van componenten is hieronder weergegeven. Het kan werken op ingebouwde accu's of op netspanning van 220 V. Bij werking vanuit het net kan de belasting tot 2 kW elektriciteit verbruiken. Van de accu's is het maximale uitgangsvermogen 300 W.

Autonoom GSM-relais met omvormer van kant-en-klare componenten
Kort over het schema.

In dit apparaat kunnen 4 blokken worden onderscheiden:

  • omvormer blok
  • besturings- en batterijblok
  • onderbrekingsvrij voedingsblok
  • bedieningsblok.

Het omvormer blok is een gewone auto-omvormer met een vermogen van 500 W. Een omvormer met een lager vermogen kan ook worden gebruikt, maar het maximale uitgangsvermogen zal dan ook proportioneel verminderen.

Het besturings- en batterijblok is een gewone goedkope BMS S3-driver, bedoeld voor het aansluiten van 3 lithium-ion batterijen. De batterijen zijn hoogstroomacculators. Deze kunnen een stroom van 35 ampère leveren. Als u minder vermogen nodig heeft, kunt u goedkopere accu’s met een lager maximaal stroomverbruik aanschaffen.

Het onderbrekingsvrij voedingsblok is gemaakt met de transistoren VT3, VD4, R4, R5, R3. De kathode van de spanningsregelaar VD4 is direct verbonden met de voeding en wanneer de voeding wordt ingeschakeld, opent transistor VT3. Na opening voelt het relais een negatieve potentiaal op alle ingangen en schakelen de relais over naar de voedingsmodus van de voeding. Een belangrijk kenmerk van kant-en-klare relaisassemblages is dat sommige werken met een positieve spanning aan de ingang, terwijl andere bij een negatieve spanning werken. Als u de eerste variant heeft, moet u R3 in de emitter van transistor VT3 verstoren en de ingang van de relais verbinden met de emitter van dezezelfde transistor.

Het bedieningsblok is opgebouwd uit de SIM800-module en Arduino Nano.

Autonoom GSM-relais met omvormer van kant-en-klare componenten

Zo ziet het samengebouwde schema eruitAutonoom GSM-relais met omvormer van kant-en-klare componenten

Zo ziet het eruit in verpakte staatAutonoom GSM-relais met omvormer van kant-en-klare componenten

Autonoom GSM-relais met omvormer van kant-en-klare componenten

Autonoom GSM-relais met omvormer van kant-en-klare componenten

Om het apparaat sms-berichten van uw telefoon te laten ontvangen, moet u uw telefoonnummer in de variabele your_phone invoeren. Ook kan een LCD-display, zoals wh1601 of wh0802, op de Arduino worden aangesloten, maar daarvoor moeten alle regels met de opmerking lcd worden gecommentarieerd.

Code

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

}

Het STL-bestand voor het printen van de behuizing is te vinden here.

Werking video:

Video afspelen


Bron: habr.com
Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster