Relé GSM autónomo con inversor fabricado con compoñentes prefabricados

Usando este relé GSM, pode activar calquera carga nominal de 220 V e unha potencia non superior a 2 kW, en calquera recuncho da Terra onde exista unha rede móbil.

Relé GSM autónomo con inversor fabricado con compoñentes prefabricados
Este dispositivo está controlado por arduino nano a través do módulo gsm SIM800L. A continuación ofrécese un diagrama funcional cunha lista de compoñentes. Pode funcionar con baterías incorporadas ou desde unha rede de 220 V. Cando funciona desde a rede, a carga pode consumir ata 2 kW de electricidade. A partir de baterías, potencia de saída máxima 300 W.

Relé GSM autónomo con inversor fabricado con compoñentes prefabricados
Brevemente sobre o esquema.

Neste dispositivo hai 4 bloques:

  • unidade inversora
  • controlador e unidade de batería
  • unidade de alimentación ininterrompida
  • Bloque de control.

A unidade inversora é un inversor de coche normal de 500 t. Tamén funcionará con menos potencia, pero a potencia máxima de saída tamén diminuirá en proporción á potencia do inversor.

O controlador e a unidade de batería son un controlador BMS S3 barato normal deseñado para conectar 3 baterías de ión-litio. As baterías son de alta corrente. Poden entregar unha corrente de 35 amperios. Se tes menos enerxía, podes mercar baterías máis baratas cunha corrente máxima máis baixa.

A unidade de alimentación ininterrompida está feita no transistor VT3, VD4, R4, R5, R3. O cátodo do díodo zener VD4 está conectado directamente á fonte de alimentación e cando se aplica enerxía, o transistor VT3 ábrese. Despois de que se abre, chega un potencial negativo a todas as entradas dos relés e os relés cambian ao modo de alimentación do circuíto desde a fonte de alimentación. Unha característica importante dos conxuntos de relés preparados: algúns deles funcionan cando chega un potencial positivo á entrada e outros cando un negativo. Se tes a primeira opción, entón tes que mover R3 ao espazo do emisor do transistor VT3 e conectar a entrada de relé ao emisor do mesmo transistor.

A unidade de control está montada nun módulo SIM800 e arduino nano.

Relé GSM autónomo con inversor fabricado con compoñentes prefabricados

Este é o aspecto do circuíto montadoRelé GSM autónomo con inversor fabricado con compoñentes prefabricados

Isto é o que parece cando está embaladoRelé GSM autónomo con inversor fabricado con compoñentes prefabricados

Relé GSM autónomo con inversor fabricado con compoñentes prefabricados

Relé GSM autónomo con inversor fabricado con compoñentes prefabricados

Para que o dispositivo comece a recibir SMS do teu teléfono, debes escribir o teu número de teléfono na variable your_phone. Tamén é posible conectar unha pantalla LCD ao Arduino, por exemplo wh1601 ou wh0802, pero terás que descomentar todas as liñas coa inscrición 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);

}

Pódese atopar o ficheiro STL para imprimir a caixa aquí.

Vídeo do traballo:



Fonte: www.habr.com

Engadir un comentario