Relais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi

Grâce à ce relais GSM, vous pouvez allumer n'importe quelle charge nominale de 220 V et d'une puissance ne dépassant pas 2 kW, dans n'importe quel coin de la Terre où se trouve un réseau cellulaire.

Relais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi
Cet appareil est contrôlé par Arduino Nano via le module GSM SIM800L. Un schéma fonctionnel avec une liste de composants est donné ci-dessous. Il peut fonctionner soit à partir de batteries intégrées, soit à partir d'un réseau 220 V. Lorsqu'elle fonctionne depuis le réseau, la charge peut consommer jusqu'à 2 kW d'électricité. À partir de piles, puissance de sortie maximale 300 W.

Relais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi
En bref sur le schéma.

Il y a 4 blocs dans cet appareil :

  • unité onduleur
  • contrôleur et unité de batterie
  • unité d'alimentation sans interruption
  • Bloc de contrôle.

L'unité d'onduleur est un onduleur de voiture ordinaire de 500 t. Il fonctionnera également avec moins de puissance, mais la puissance de sortie maximale diminuera également proportionnellement à la puissance de l'onduleur.

Le contrôleur et l'unité de batterie sont un pilote BMS S3 bon marché ordinaire conçu pour connecter 3 batteries lithium-ion. Les batteries sont à courant élevé. Ils peuvent délivrer un courant de 35 ampères. Si vous disposez de moins d’énergie, vous pouvez acheter des batteries moins chères avec un courant maximum inférieur.

L'unité d'alimentation sans coupure est réalisée sur les transistors VT3, VD4, R4, R5, R3. La cathode de la diode Zener VD4 est connectée directement à l'alimentation et lors de la mise sous tension, le transistor VT3 s'ouvre. Après son ouverture, un potentiel négatif arrive à toutes les entrées de relais et les relais passent en mode d'alimentation du circuit à partir de l'alimentation. Une caractéristique importante des ensembles de relais prêts à l'emploi : certains d'entre eux fonctionnent lorsqu'un potentiel positif arrive à l'entrée, et d'autres lorsqu'un potentiel négatif arrive. Si vous avez la première option, vous devez alors déplacer R3 dans l'espace de l'émetteur du transistor VT3 et connecter l'entrée relais à l'émetteur du même transistor.

L'unité de contrôle est assemblée sur un module SIM800 et arduino nano.

Relais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi

Voici à quoi ressemble le circuit assembléRelais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi

Voilà à quoi ça ressemble une fois emballéRelais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi

Relais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi

Relais GSM autonome avec onduleur fabriqué à partir de composants prêts à l'emploi

Pour que l'appareil commence à recevoir des SMS de votre téléphone, vous devez écrire votre numéro de téléphone dans la variable your_phone. Il est également possible de connecter un afficheur LCD à l'Arduino, par exemple wh1601 ou wh0802, mais il faudra décommenter toutes les lignes avec l'inscription lcd.

Code

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

}

Le fichier STL pour imprimer la boîte est disponible ici.

Vidéo de travail :



Source: habr.com

Ajouter un commentaire