Сегодня хочу Вам показать интересное устройство, при помощи которого можно управлять чем угодно через интернет при помощи Wi-Fi модуля ESP8266 (ESP-01) и микроконтроллера ATmega8A .
В данной связке модуль, выполняет роль контроллера сети WiFi и вебсервера, а ATmega8A выполняет роль контроллера силового узла, принимает строку по простому протоколу от ESP8266 и обработав ее выдает команду на открытие того или иного реле через сдвиговый регистр 74HC595 и транзисторную сборку ULN2003.
Базовую информацию о ESP8266 можно почитать здесь, а приобрести на AliExpress по этой ссылке.
Схема устройства:
Обращаясь по заданному IP адресу , по умолчанию: 192.168.4.1 , можно настраивать различные режимы и управлять освещением в квартире или доме. Устройство имеет веб интерфейс . Прошивка для ESP8266 создана на основе «вебсвалки» от уважаемого «PVVX» . Я просто дописал пару тройку обработчиков в файле что при получении определенной строки со стороны веб в UART интерфейс будет отсылаться 4 байтная строка — идентификатор команды . На каждый канал управления приходится две таких команды , это включить и выключить . Также, есть ещё дополнительных две команды которые могут включить и выключить сразу все каналы освещения .
И потом, написав простую вебстраничку я легко управляю освещением квартиры.
Работает устройство следующим образом:
Со стороны веб: если по-простому, то при нажатии на любую из кнопок сначала вызывается скрипт , который меняет фон кнопки и меняет переменной значение с 1 на 0 и наоборот при каждом нажатии и потом вызывается обработчик AJAX, который обрабатывается программой в ESP8266 и отправляется в UART код , соответствующий команде AJAX. А уже ATmega8A , эту строку принимает и обрабатывает.
Со стороны микроконтроллера: принимается строка, обрабатывается, и если совпадает строка с проверочной, то выполняются необходимые действия. Выглядит это вот так:
void send_data()
{
static char buff_data=0, rel_data=0;
static char x=0;
if(string_search(«@1A00»,rx_buffer)) // LIGHT ON кухня
{
rel_data|=0x81;
printf(«1CH ONrn»);
clear_buffer_rx();
x=0;
if(demo<42000 && demo_off==0) demo++;
}
………………..
………………..
else if(string_search(«@2A00»,rx_buffer)) // LIGHT OFF кухня
{
rel_data&=~0x81;
printf(«1CH OFFrn»);
clear_buffer_rx();
x=0;
if(demo<42000 && demo_off==0) demo++;
}
relay_send(rel_data);
}
В данной функции сравнивается пришедшая строка в юарт, со строкой, которая выполняет определенные команды. Если она совпадает — то выполняется действие .
функция парсера юарт самодельная, вот ее код:
char string_search(char *str1,char *str2)
{
unsigned char addr=0,x=0,y=0;
str1+=0;
str2+=0;
while(str1[addr]!=0)
{
addr++;
}
while(str1[y]!=0 && str2[x]!=0)
{
if(str1[y] == str2[x])
{
y++;
x++;
}
else
{
if(y<addr)y=0;
x++;
}
}
Веб страничка не претендует на премию , и выглядит вот так:
При нажатии на любую из кнопок происходит включение освещения!
Веб странички настроек скрыты от основной и открывается при вводе ссылок. Чуть ниже я их укажу.
По желанию, любой может доработать основную страницу, добавив на нее кнопку или ссылку для перехода к настройкам.
Ссылки по умолчанию для конфигурации WiFi и прочих настроек:
192.168.4.1/protect/wifi.htm
192.168.4.1/protect/setup.htm
192.168.4.1/protect/uart.htm
192.168.4.1/protect/upload.htm
По вопросам доработки прошивки, можно обратиться в ЛС.
Фото смонтированного устройства:
Внимание! Печатные платы разрабатывались как универсальные (для общего применения) и применялись платы из того, что было уже изготовлено, это все связано с сокращением времени разработки и экономии расходов на изготовление заводских плат. Потому некоторые узлы распаяны не для задачи управления освещением.
Прикрепленные файлы:
- wifi atmega8a.rar (2942 Кб)
- mega8 — схема.rar (18 Кб)
- WiFi контроллер освещения.rar (15 Кб)
- Силовая плата 7 каналов.rar (7 Кб)