Autonomt GSM-relæ med inverter lavet af færdige komponenter

Ved at bruge dette GSM-relæ kan du tænde for enhver belastning på 220 V og en effekt på højst 2 kW i ethvert hjørne af jorden, hvor der er et mobilnetværk.

Autonomt GSM-relæ med inverter lavet af færdige komponenter
Denne enhed styres af arduino nano via gsm-modulet SIM800L. Et funktionsdiagram med en liste over komponenter er givet nedenfor. Den kan fungere enten fra indbyggede batterier eller fra et 220 V netværk. Ved drift fra netværket kan belastningen forbruge op til 2 kW strøm. Fra batterier, maksimal udgangseffekt 300 W.

Autonomt GSM-relæ med inverter lavet af færdige komponenter
Kort om ordningen.

Der er 4 blokke i denne enhed:

  • inverter enhed
  • controller og batterienhed
  • uafbrydelig strømforsyningsenhed
  • Kontrolblok.

Inverterenheden er en almindelig 500t bilinverter. Det vil også arbejde med mindre strøm, men den maksimale udgangseffekt vil også falde i forhold til vekselretterens effekt.

Controlleren og batterienheden er en almindelig billig BMS S3-driver designet til at forbinde 3 lithium-ion-batterier. Batterierne er højstrøm. De kan levere en strøm på 35 ampere. Hvis du har mindre strøm, så kan du købe billigere batterier med en lavere maksimal strøm.

Den uafbrydelige strømforsyningsenhed er lavet på transistor VT3, VD4, R4, R5, R3. Katoden på zenerdioden VD4 er forbundet direkte til strømforsyningen, og når der tilføres strøm, åbner transistoren VT3. Efter at den åbner, ankommer et negativt potentiale til alle relæindgange, og relæerne skifter til kredsløbsstrømforsyningstilstand fra strømforsyningen. En vigtig egenskab ved færdiglavede relæsamlinger: nogle af dem fungerer, når der kommer et positivt potentiale til input, og nogle når et negativt. Hvis du har den første mulighed, skal du flytte R3 ind i emittergabet på transistoren VT3 og forbinde relæindgangen til emitteren på den samme transistor.

Styreenheden er samlet på et SIM800-modul og arduino nano.

Autonomt GSM-relæ med inverter lavet af færdige komponenter

Sådan ser det samlede kredsløb udAutonomt GSM-relæ med inverter lavet af færdige komponenter

Sådan ser det ud, når det er pakketAutonomt GSM-relæ med inverter lavet af færdige komponenter

Autonomt GSM-relæ med inverter lavet af færdige komponenter

Autonomt GSM-relæ med inverter lavet af færdige komponenter

For at enheden kan begynde at modtage SMS fra din telefon, skal du skrive dit telefonnummer i your_phone-variablen. Det er også muligt at tilslutte en LCD-skærm til Arduino, for eksempel wh1601 eller wh0802, men du bliver nødt til at fjerne kommentarer fra alle linjerne med inskriptionen lcd.

Kode

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-filen til udskrivning af æsken kan findes her.

Video af arbejdet:



Kilde: www.habr.com

Tilføj en kommentar