기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이

이 GSM 릴레이를 사용하면 셀룰러 네트워크가 있는 지구상 어느 곳에서나 정격 220V의 모든 부하와 2kW 이하의 전력을 켤 수 있습니다.

기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이
이 장치는 GSM 모듈 SIM800L을 통해 Arduino Nano로 제어됩니다. 구성 요소 목록이 포함된 기능 다이어그램이 아래에 나와 있습니다. 내장 배터리 또는 220V 네트워크에서 작동할 수 있으며, 네트워크에서 작동할 때 부하는 최대 2kW의 전력을 소비할 수 있습니다. 배터리의 최대 출력 전력은 300W입니다.

기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이
계획에 대해 간략히 설명합니다.

이 장치에는 4개의 블록이 있습니다.

  • 인버터 유닛
  • 컨트롤러 및 배터리 유닛
  • 무정전 전원 공급 장치
  • 제어 블록.

인버터 유닛은 일반 500t 차량용 인버터이다. 더 적은 전력으로도 작동하지만 최대 출력 전력도 인버터 전력에 비례하여 감소합니다.

컨트롤러와 배터리 유닛은 리튬 이온 배터리 3개를 연결하도록 설계된 일반 저렴한 BMS S3 드라이버입니다. 배터리는 고전류입니다. 35A의 전류를 전달할 수 있습니다. 전력이 적다면 최대 전류가 더 낮은 저렴한 배터리를 구입할 수 있습니다.

무정전 전원 공급 장치는 트랜지스터 VT3, VD4, R4, R5, R3에서 만들어집니다. 제너 다이오드 VD4의 음극은 전원 공급 장치에 직접 연결되며 전원이 공급되면 트랜지스터 VT3이 열립니다. 개방된 후 모든 릴레이 입력에 음전위가 도달하고 릴레이는 전원 공급 장치에서 회로 전원 공급 모드로 전환됩니다. 기성 릴레이 어셈블리의 중요한 특징: 일부는 입력에 양의 전위가 올 때 작동하고 일부는 음의 전위가 올 때 작동합니다. 첫 번째 옵션이 있는 경우 R3을 트랜지스터 VT3의 이미터 갭으로 이동하고 릴레이 입력을 동일한 트랜지스터의 이미터에 연결해야 합니다.

제어 장치는 SIM800 모듈과 Arduino Nano에 조립됩니다.

기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이

조립된 회로는 이렇게 생겼습니다기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이

포장하면 이런 느낌이에요기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이

기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이

기성 부품으로 만든 인버터를 갖춘 자율 GSM 릴레이

장치가 휴대폰에서 SMS 수신을 시작하려면 your_phone 변수에 전화번호를 입력해야 합니다. 예를 들어 wh1601 또는 wh0802와 같이 LCD 디스플레이를 Arduino에 연결할 수도 있지만 lcd라는 글자가 있는 모든 줄의 주석 처리를 제거해야 합니다.

암호

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 파일을 찾을 수 있습니다. 여기에.

작업 영상:



출처 : habr.com

코멘트를 추가