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

Сегодня хочу Вам показать интересное устройство, при помощи которого можно управлять чем угодно через интернет при помощи 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

По вопросам доработки прошивки, можно обратиться в ЛС.

Фото смонтированного устройства:

Внимание! Печатные платы разрабатывались как универсальные (для общего применения) и применялись платы из того, что было уже изготовлено, это все связано с сокращением времени разработки и экономии расходов на изготовление заводских плат. Потому некоторые узлы распаяны не для задачи управления освещением.


Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.