Relé GSM autònom amb inversor fet de components ja confeccionats

Amb aquest relé GSM, podeu encendre qualsevol càrrega nominal de 220 V i una potència de no més de 2 kW, a qualsevol racó de la Terra on hi hagi una xarxa mòbil.

Relé GSM autònom amb inversor fet de components ja confeccionats
Aquest dispositiu està controlat per arduino nano mitjançant el mòdul GSM SIM800L. A continuació es mostra un diagrama funcional amb una llista de components. Pot funcionar amb bateries incorporades o amb una xarxa de 220 V. Quan funciona des de la xarxa, la càrrega pot consumir fins a 2 kW d'electricitat. Des de les bateries, potència màxima de sortida 300 W.

Relé GSM autònom amb inversor fet de components ja confeccionats
Breument sobre l'esquema.

Hi ha 4 blocs en aquest dispositiu:

  • unitat inversora
  • controlador i unitat de bateria
  • unitat d'alimentació ininterrompuda
  • Bloc de control.

La unitat inversora és un inversor de cotxe normal de 500 t. També funcionarà amb menys potència, però la potència de sortida màxima també disminuirà en proporció a la potència de l'inversor.

El controlador i la unitat de bateria és un controlador BMS S3 barat dissenyat per connectar 3 bateries d'ió de liti. Les bateries són de gran corrent. Poden subministrar un corrent de 35 amperes. Si teniu menys potència, podeu comprar bateries més barates amb un corrent màxim inferior.

La font d'alimentació ininterrompuda es fa al transistor VT3, VD4, R4, R5, R3. El càtode del díode zener VD4 està connectat directament a la font d'alimentació i quan s'aplica energia, el transistor VT3 s'obre. Després d'obrir-se, arriba un potencial negatiu a totes les entrades del relé i els relés passen al mode d'alimentació del circuit des de la font d'alimentació. Una característica important dels conjunts de relés preparats: alguns d'ells funcionen quan arriba un potencial positiu a l'entrada i d'altres quan és negatiu. Si teniu la primera opció, heu de moure R3 al buit de l'emissor del transistor VT3 i connectar l'entrada del relé a l'emissor del mateix transistor.

La unitat de control està muntada en un mòdul SIM800 i arduino nano.

Relé GSM autònom amb inversor fet de components ja confeccionats

Així és el circuit muntatRelé GSM autònom amb inversor fet de components ja confeccionats

Aquest és el que sembla quan està empaquetatRelé GSM autònom amb inversor fet de components ja confeccionats

Relé GSM autònom amb inversor fet de components ja confeccionats

Relé GSM autònom amb inversor fet de components ja confeccionats

Perquè el dispositiu comenci a rebre SMS des del vostre telèfon, heu d'escriure el vostre número de telèfon a la variable your_phone. També és possible connectar una pantalla LCD a l'Arduino, per exemple wh1601 o wh0802, però haureu de descomentar totes les línies amb la inscripció lcd.

Codi

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

}

Es pot trobar el fitxer STL per imprimir la caixa aquí.

Vídeo del treball:



Font: www.habr.com

Afegeix comentari