Данное устройство управляется 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, но при этом нужно будет разкоментировать все строчки cнадписью 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=1\r\n";
softSerial.print("AT+CMGF=1\r\n");
/// print_lcd(cmd1);
delay(1000);
dellAllSMS();
// cmd1 ="AT+CMGDA=\"DEL ALL\"\r\n";
// 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\"\r\n"); // 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\"\r\n";
// print_lcd(cmd1);
prev=0;
}
delay(10000);
}
STL файл для печати коробки можно найти тут.
Видео работы:
Комментарии (21)
KirmiziTas
18.10.2019 08:48Не хочу никого обидеть, но готовое решение на одном известном сайте, название которого начинается на А, стоит до двух тысяч и имеет более широкий функционал и более компактное оформление.
infund
18.10.2019 09:06В этом устройстве можно выделить 3 блока:
— блок инвертора
— блок контроллера и батарей
— блок бесперебойника
— блок управления
Что-то в этом устройстве пошло не так…
Они могут выдавать ток в 35 ампер и взорваться.
Хорошая вещь, надо брать…
kalapanga
18.10.2019 10:47Сборка ужасная. Про отсутствие вентиляционных отверстий выше уже написали. У Вас же вместо них наоборот, ещё и какая-то резина проложена, чтобы точно тепло никуда не ушло. Далее, Вы же сами печатали коробку — так почему не предусмотрели нормальное крепление Ваших плат в корпусе, под каждую своё посадочное место? Вместо этого распорки из резинок, подсунутые картонки, изолента — страх! Гнездо антенны висит в воздухе, usb-кабель тянется куда-то внутрь.
Ну и аккАмуляторы на схемах.xo4y_B_BostonDynamics Автор
18.10.2019 11:00Коробку делал инженер конструктор
kalapanga
18.10.2019 11:15От этого она лучше не стала.
char your_phone = "+79148389933";
Ничего не пропущено?
REPISOT
18.10.2019 11:06При помощи этого GSM-реле вы сможете включить любую нагрузку, рассчитанную на 220 В и мощностью не более 2 кВт, в любом уголке Земли, где есть сотовая сеть.
При помощи… ардуино. Удаленная нагрузка 2кВт. А если зависнет и не выключится? Про применение ардуины в пром. автоматике уже сколько раз писали.
peacemakerv
18.10.2019 18:23А как же на Хабре оценить публикацию, чтобы
1) не обидеть молодого, но малограмотного автора, лишив его «запала» писать статьи
2) однако дать понять, что публикация чем-то интересна
3) и не нахватать минусов себе
?
teleghost
18.10.2019 20:29Автор, Вы, конечно, молодец, но нагрузка 2кВт — это уже не шутки, а глядя на внутренности девайса, лично мне становится страшно оставлять его без присмотра…
Подобные приборы пром. автоматики должны иметь гарантированный диапазон рабочих температур -40..+85°C, а также известную вибро- и влагоустойчивость. Надёжность всего прибора == надёжности его самого слабого звена. Плата ардуино (т.е. обвязка атмеги) — это уже какие-нибудь коммерческие 0..70°C (про SIM800L и других не знаю). С учётом токов/мощностей корпус нужен не только с теплоотводом и правильной организацией полостей, но из самозатухающего (не поддерживающего горение) пластика. А код — это вообще отдельная история, там хотя бы сторожевой таймер где-то включается? Я про безопасность аутентификации по номеру телефона даже молчу (погуглите «подделка номера абонента gsm», вводите на сайте номер — и с него же Вам обещают перезвонить).
Резюме: подобные девайсы потому и стоят дорого, что лучше заплатить за фабричное изделие от какого-нибудь известного производителя и спать, блин, спокойно (или почти).
Но Вы, главное, того, не бросайте, просто вектор развития скорректируйте, и будет Вам бостон динамикс…
tmin10
18.10.2019 23:33Не совсем понял, зачем для реле нужна автономность? Если оно управляет нагрузкой, то почему бы не взять питание от этого же источника и для себя? А если питания нет, то смысла управлять реле вообще нет.
iig
19.10.2019 07:20Непонятно, какой недеструктивный use case подобного устройства. Деструктивный (где всё горит и взрывается) я уже придумал.
balamutang
19.10.2019 12:38Включать на даче бойлер/обогреватель за полдня до приезда например
Или полив или перезагрузить по питанию чтото
xo4y_B_BostonDynamics Автор
19.10.2019 15:43ну вообще это прототип устройства для включения/отключения механического переключателя на удаленных трансформаторных подстанциях трансформаторных подстанциях
iig
19.10.2019 21:57То есть от того, зависнет ли бытовой микроконтроллер от электромагнитного импульса, будет зависит, сожжёт ли 6кВ электрика или нет.
xo4y_B_BostonDynamics Автор
20.10.2019 17:11это только прототип. его надо было сделать в короткие сроки, поэтому и была выбрана ардуина.
iig
19.10.2019 13:49"Включать на даче бойлер/обогреватель за полдня до приезда например
Или полив"
От аккумулятора, ага ;)
balamutang
21.10.2019 10:10ну в общем встроенный акк конечно такое себе, единственный профит — отправит смс что электричество пропало, если там конечно это мониторится.
У мегафона были когда-то GSM розетки с подобными функциями + термодатчик, цель у них была именно такая
lelik363
Перфорация в корпусе не помешала бы.