Aŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj

Uzante ĉi tiun GSM-relajson, vi povas ŝalti ajnan ŝarĝon taksitan je 220 V kaj potencon de ne pli ol 2 kW, en iu ajn angulo de la Tero kie ekzistas ĉela reto.

Aŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj
Ĉi tiu aparato estas kontrolita de arduino nano per gsm-modulo SIM800L. Funkcia diagramo kun listo de komponentoj estas donita malsupre. Ĝi povas funkcii aŭ de enkonstruitaj baterioj aŭ de reto de 220 V. Funkciante de la reto, la ŝarĝo povas konsumi ĝis 2 kW da elektro. El kuirilaroj, maksimuma eliga potenco 300 W.

Aŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj
Mallonge pri la skemo.

Estas 4 blokoj en ĉi tiu aparato:

  • invetila unuo
  • regilo kaj kuirilaro
  • neinterrompebla elektroprovizo
  • Kontrola bloko.

La invetila unuo estas kutima 500t aŭta invetilo. Ĝi ankaŭ funkcios kun malpli da potenco, sed la maksimuma eliga potenco ankaŭ malpliiĝos proporcie al la potenco de la invetilo.

La regilo kaj bateriunuo estas regula malmultekosta BMS S3-ŝoforo dizajnita por konekti 3 litiajn bateriojn. La kuirilaroj estas alta kurento. Ili povas liveri kurenton de 35 amperoj. Se vi havas malpli da potenco, tiam vi povas aĉeti pli malmultekostajn bateriojn kun pli malalta maksimuma kurento.

La neinterrompebla elektroprovizo estas farita sur transistoro VT3, VD4, R4, R5, R3. La katodo de la zener-diodo VD4 estas konektita rekte al la elektroprovizo kaj kiam potenco estas aplikata, la transistoro VT3 malfermiĝas. Post kiam ĝi malfermiĝas, negativa potencialo alvenas ĉe ĉiuj relajsaj enigaĵoj kaj la relajsoj ŝanĝas al la cirkvita elektroprovizoreĝimo de la elektroprovizo. Grava trajto de pretaj relajsasembleoj: iuj el ili funkcias kiam pozitiva potencialo venas al la enigo, kaj iuj kiam negativa. Se vi havas la unuan opcion, tiam vi devas movi R3 en la elsendilon de transistoro VT3 kaj konekti la relajsan enigon al la elsendilo de la sama transistoro.

La kontrolunuo estas kunvenita sur SIM800-modulo kaj arduino nano.

Aŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj

Jen kiel aspektas la kunmetita cirkvitoAŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj

Jen kiel ĝi aspektas kiam pakitaAŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj

Aŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj

Aŭtonoma GSM-relajso kun invetilo farita el pretaj komponantoj

Por ke la aparato komencu ricevi SMS de via telefono, vi devas skribi vian telefonnumeron en la variablon your_phone. Ankaŭ eblas konekti LCD-ekranon al la Arduino, ekzemple wh1601 aŭ wh0802, sed vi devos malkomenti ĉiujn liniojn kun la surskribo lcd.

Kodo

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

}

La STL-dosiero por presi la skatolon troveblas tie.

Video de laboro:



fonto: www.habr.com

Aldoni komenton