Hazır bileşenlerden yapılmış invertörlü otonom GSM rölesi

Bu GSM rölesini kullanarak, dünyanın hücresel şebekenin bulunduğu herhangi bir köşesinde 220 V değerindeki herhangi bir yükü ve 2 kW'ı geçmeyen gücü açabilirsiniz.

Hazır bileşenlerden yapılmış invertörlü otonom GSM rölesi
Bu cihaz arduino nano tarafından GSM modülü SIM800L aracılığıyla kontrol edilir. Bileşenlerin listesini içeren işlevsel bir diyagram aşağıda verilmiştir. Dahili pillerden veya 220 V şebekeden çalışabilir.Şebekeden çalışırken yük 2 kW'a kadar elektrik tüketebilir. Pillerden maksimum çıkış gücü 300 W.

Hazır bileşenlerden yapılmış invertörlü otonom GSM rölesi
Kısaca şema hakkında.

Bu cihazda 4 blok var:

  • invertör ünitesi
  • denetleyici ve pil ünitesi
  • kesintisiz güç kaynağı ünitesi
  • Kontrol bloğu.

İnverter ünitesi normal bir 500 tonluk araç invertörüdür. Ayrıca daha az güçle çalışacak ancak maksimum çıkış gücü de invertörün gücüyle orantılı olarak azalacaktır.

Denetleyici ve pil ünitesi, 3 lityum iyon pili bağlamak için tasarlanmış normal ve ucuz bir BMS S3 sürücüsüdür. Piller yüksek akımlıdır. 35 amperlik akım verebilirler. Daha az gücünüz varsa, daha düşük maksimum akıma sahip daha ucuz piller satın alabilirsiniz.

Kesintisiz güç kaynağı ünitesi VT3, VD4, R4, R5, R3 transistörü üzerinde yapılır. Zener diyot VD4'ün katodu doğrudan güç kaynağına bağlanır ve güç uygulandığında transistör VT3 açılır. Açıldıktan sonra tüm röle girişlerine negatif bir potansiyel gelir ve röleler güç kaynağından devre güç kaynağı moduna geçer. Hazır röle düzeneklerinin önemli bir özelliği: Bazıları girişe pozitif bir potansiyel geldiğinde, bazıları ise negatif bir potansiyel geldiğinde çalışır. İlk seçeneğe sahipseniz, R3'ü transistör VT3'ün verici boşluğuna taşımanız ve röle girişini aynı transistörün vericisine bağlamanız gerekir.

Kontrol ünitesi bir SIM800 modülü ve arduino nano üzerine monte edilmiştir.

Hazır bileşenlerden yapılmış invertörlü otonom GSM rölesi

Birleştirilmiş devre böyle görünüyorHazır bileşenlerden yapılmış invertörlü otonom GSM rölesi

Paketlendiğinde böyle görünüyorHazır bileşenlerden yapılmış invertörlü otonom GSM rölesi

Hazır bileşenlerden yapılmış invertörlü otonom GSM rölesi

Hazır bileşenlerden yapılmış invertörlü otonom GSM rölesi

Cihazın telefonunuzdan SMS almaya başlaması için your_phone değişkenine telefon numaranızı yazmanız gerekmektedir. Arduino'ya wh1601 veya wh0802 gibi bir LCD ekran bağlamak da mümkündür, ancak tüm satırları lcd yazısıyla açmanız gerekecektir.

Kod

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

}

Kutuyu yazdırmak için STL dosyası bulunabilir burada.

İşin videosu:



Kaynak: habr.com

Yorum ekle