Autonomní GSM relé s invertorem z hotových komponentů

Pomocí tohoto GSM relé můžete zapnout jakoukoli zátěž navrženou pro 220 V a s výkonem maximálně 2 kW, kdekoli na světě, kde je mobilní síť.

Autonomní GSM relé s invertorem z hotových komponentů
Toto zařízení je ovládáno pomocí Arduino Nano přes GSM modul SIM800L. Funkční schéma se seznamem komponent je uvedeno níže. Může pracovat jak na vestavěné akumulátory, tak na síti 220 V. Při provozu ze sítě může spotřebovat až 2 kW elektrické energie. Z akumulátorů je maximální výstupní výkon 300 W.

Autonomní GSM relé s invertorem z hotových komponentů
Krátce o schématu.

V tomto zařízení lze vyčlenit 4 bloky:

  • blok invertoru
  • blok kontroléru a baterií
  • blok záložního zdroje
  • řídící blok.

Blok invertoru je obyčejný automobilový invertor s výkonem 500 W. Může být i s nižším výkonem, ale maximální výstupní výkon se také úměrně sníží podle výkonu invertoru.

Blok kontroléru a baterií je obyčejný levný řídící modul BMS S3 určený k připojení 3 lithium-iontových baterií. Baterie mají vysoký vybíjecí proud. Mohou dodávat proud až 35 ampér. Pokud máte nižší výkon, můžete koupit levnější akumulátory s nižším maximálním proudem.

Blok záložního zdroje je postaven na tranzistorech VT3, VD4, R4, R5, R3. Katoda stabilizátoru VD4 je přímo připojena k napájecímu bloku a při připojení napájení se tranzistor VT3 otevře. Po jeho otevření dostává všechny vstupy relé záporný potenciál a relé přepíná do režimu napájení schématu z napájecího bloku. Důležitá vlastnost hotových reléových sestav: některé z nich pracují, když na vstup přichází kladný potenciál, a některé při záporném. Pokud máte první variantu, je třeba R3 přemístit do rozpojení emitoru tranzistoru VT3 a připojit vstup relé k emitoru tohoto tranzistoru.

Řídící blok je sestaven na modulu SIM800 a Arduino Nano.

Autonomní GSM relé s invertorem z hotových komponentů

Takto vypadá sestavené schémaAutonomní GSM relé s invertorem z hotových komponentů

Takto vypadá v zabaleném stavuAutonomní GSM relé s invertorem z hotových komponentů

Autonomní GSM relé s invertorem z hotových komponentů

Autonomní GSM relé s invertorem z hotových komponentů

Aby zařízení začalo přijímat SMS z vašeho telefonu, musíte do proměnné your_phone zapsat své telefonní číslo. Také k Arduinu je možné připojit LCD displej, například WH1601 nebo WH0802, ale v tom případě je nutné odkomentovat všechny řádky se zápisem lcd.

Kód

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

}

STL soubor pro tisk krabice lze nalézt tady.

Video ukázka činnosti:

Přehrát video


Zdroj: habr.com
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster