Пры дапамозе гэтага GSM-рэле вы зможаце ўключыць любую нагрузку, разлічаную на 220 У і магутнасцю не больш за 2 квт, у любым кутку Зямлі, дзе ёсць сотавая сетка.
Дадзеная прылада кіруецца arduino nano праз gsm модуль SIM800L. Функцыянальная схема са спісам камплектуючых прыведзена ніжэй. Яно можа працаваць як ад убудаваных акумулятараў, так і ад сеткі 220 У. Пры працы ад сеткі нагрузка можа спажываць да 2 квт электраэнергіі. Ад акумулятараў, максімальная выходная магутнасць 300 Вт.
Коратка аб схеме.
У гэтай прыладзе можна вылучыць 4 блока:
- блок інвертара
- блок кантролера і батарэй
- блок бесперабойніка
- блок кіравання.
Блок інвертара - гэта звычайны аўтамабільны інвертар магутнасцю 500т. Падыдзе і з меншай магутнасцю, але і максімальная выходная магутнасць таксама паменшыцца прапарцыйна магутнасці інвертара.
Блок кантролера і батарэй - гэта звычайны танны драйвер BMS S3 разлічаны на падлучэнне 3х літый іённых батарэй. Батарэі стаяць высокатокавыя. Яны могуць выдаваць ток у 35 ампераў. Калі ў вас меншая магутнасць, то можна і купіць таннейшыя акумулятары з меншым максімальным токам.
Блок бесперабойніка выкананы на транзістары VT3, VD4, R4, R5, R3. Катод стабілітрона VD4 падлучаны на прамую да блока харчавання і пры падачы харчавання транзістар VT3 адкрываецца. Пасля яго адкрыцця на ўсе ўваходы рэле прыходзіць адмоўны патэнцыял і рэле перамыкаюцца ў рэжым харчавання схемы ад блока харчавання. Важная асаблівасць гатовых рэлейных зборак: некаторыя з іх працуюць, калі на ўваход прыходзіць пажыўляльны патэнцыял, а некаторыя пры адмоўным. Калі ў вас першы варыянт, то вам трэба R3 пераставіць у парыў эмітара транзістара VT3 і злучыць уваход рэле з эмітэрам гэтага ж транзістара.
Блок кіравання - сабраны на модулі SIM800 і arduino nano.
Так выглядае сабраная схема
Так выглядае ва ўпакаваным стан
Каб прылада пачала прымаць смс з вашага тэлефона трэба ў зменную your_phone запісаць свой нумар тэлефона. Гэтак жа да ардуіна магчыма падлучыць LCD дысплей, напрыклад wh1601 ці wh0802, але пры гэтым трэба будзе раскамэнтаваць усе радкі з надпісам 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