Relé GSM autónomo con inversor de componentes listos

Con este relé GSM, podrá activar cualquier carga de 220 V y con una potencia máxima de 2 kW, desde cualquier rincón del mundo donde haya cobertura de red celular.

Relé GSM autónomo con inversor de componentes listos
Este dispositivo es controlado por un Arduino Nano a través del módulo GSM SIM800L. El esquema funcional con la lista de componentes se presenta a continuación. Puede funcionar tanto con baterías internas como con una red de 220 V. Cuando funciona con la red, la carga puede consumir hasta 2 kW de energía eléctrica. Con las baterías, la potencia de salida máxima es de 300 W.

Relé GSM autónomo con inversor de componentes listos
Resumen del esquema.

En este dispositivo se pueden identificar 4 bloques:

  • bloque de inversor
  • bloque de controlador y baterías
  • bloque de alimentación ininterrumpida
  • bloque de control.

El bloque de inversor es un inversor de automóvil común con una potencia de 500 W. También se puede usar uno de menor potencia, pero la potencia máxima de salida también disminuirá proporcionalmente a la potencia del inversor.

El bloque de controlador y baterías es un controlador BMS S3 barato, diseñado para conectar 3 baterías de litio y el ion. Las baterías son de alta corriente. Pueden entregar hasta 35 amperios. Si tiene una potencia menor, puede comprar baterías más económicas con un menor máximo de corriente.

El bloque de alimentación ininterrumpida está basado en el transistor VT3, VD4, R4, R5, R3. El cátodo del estabilizador VD4 está conectado directamente a la fuente de alimentación y al suministrar energía, el transistor VT3 se activa. Después de su activación, todos los terminales del relé reciben un potencial negativo y los relés cambian a modo de alimentación del circuito desde la fuente de alimentación. Una característica importante de los conjuntos de relés listos: algunos funcionan con un potencial positivo en la entrada y otros con un potencial negativo. Si tiene la primera opción, debe mover R3 al corte del emisor del transistor VT3 y conectar la entrada del relé al emisor de este mismo transistor.

El bloque de control está montado en el módulo SIM800 y Arduino Nano.

Relé GSM autónomo con inversor de componentes listos

Así es como se ve el esquema ensambladoRelé GSM autónomo con inversor de componentes listos

Así es como se ve en estado empaquetadoRelé GSM autónomo con inversor de componentes listos

Relé GSM autónomo con inversor de componentes listos

Relé GSM autónomo con inversor de componentes listos

Para que el dispositivo comience a recibir SMS desde su teléfono, debe registrar su número de teléfono en la variable your_phone. También se puede conectar una pantalla LCD, como wh1601 o wh0802, a Arduino, pero en este caso, será necesario descomentar todas las líneas con la etiqueta lcd.

Código

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

}

Puede encontrar el archivo STL para imprimir la caja aquí.

Video de funcionamiento:

Reproducir video


Fuente: habr.com
Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster