Користећи овај ГСМ релеј, можете укључити било које оптерећење од 220 В и снаге не веће од 2 кВ, у било ком углу Земље где постоји ћелијска мрежа.

Овим уређајем управља ардуино нано преко гсм модула СИМ800Л. Функционални дијаграм са листом компоненти је дат у наставку. Може да ради или од уграђених батерија или од 220 В мреже. Од батерија, максимална излазна снага 2 В.

Укратко о шеми.
У овом уређају постоје 4 блока:
- инвертерска јединица
- контролер и батеријска јединица
- јединица за непрекидно напајање
- Контролни блок.
Инвертерска јединица је обичан инвертер за аутомобиле од 500т. Такође ће радити са мањом снагом, али ће се максимална излазна снага такође смањити пропорционално снази претварача.
Контролер и јединица батерије су обичан јефтини БМС С3 драјвер дизајниран за повезивање 3 литијум-јонске батерије. Батерије су велике струје. Могу да испоруче струју од 35 ампера. Ако имате мање снаге, онда можете купити јефтиније батерије са нижом максималном струјом.
Јединица за непрекидно напајање је направљена на транзистору ВТ3, ВД4, Р4, Р5, Р3. Катода зенер диоде ВД4 је директно повезана са напајањем и када се примени напајање, транзистор ВТ3 се отвара. Након што се отвори, негативни потенцијал стиже на све улазе релеја и релеји прелазе у режим напајања кола из извора напајања. Важна карактеристика готових релејних склопова: неки од њих раде када на улаз дође позитиван потенцијал, а неки када је негативан. Ако имате прву опцију, онда морате да померите Р3 у емитерски јаз транзистора ВТ3 и повежете релејни улаз са емитером истог транзистора.
Контролна јединица је састављена на СИМ800 модулу и ардуино нано.

Овако изгледа склопљено коло
Овако изгледа када се спакује


Да би уређај почео да прима СМС са вашег телефона, потребно је да упишете свој број телефона у променљиву иоур_пхоне. Такође је могуће повезати ЛЦД екран на Ардуино, на пример вх1601 или вх0802, али ћете морати да декоментирате све редове са натписом лцд.
Код
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);
}Може се пронаћи СТЛ датотека за штампање кутије .
Видео о раду:

Извор: ввв.хабр.цом
