Wi-Fi контроллер управления освещением

Электричество /
Сегодня хочу Вам показать интересное устройство, при помощи которого можно управлять чем угодно через интернет при помощи Wi-Fi модуля ESP8266 (ESP-01) и микроконтроллера ATmega8A.
В данной связке модуль, выполняет роль контроллера сети WiFi и вебсервера, а ATmega8A выполняет роль контроллера силового узла, принимает строку по простому протоколу от ESP8266 и обработав ее выдает команду на открытие того или иного реле через сдвиговый регистр 74HC595 и транзисторную сборку ULN2003.




Схема устройства:



Обращаясь по заданному 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 ON\r\n»);
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 OFF\r\n»);
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 Кб)

1 комментарий

molchec
Вроде в ESP8266 можно залить свою управляющую прогу и можно обойтись без Мега8, или я ошибаюсь?
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.