Сегодня хочу Вам показать интересное устройство, при помощи которого можно управлять чем угодно через интернет при помощи 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 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 Кб)
Комментарии (19) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
[Автор]
В дальнейшем я вообще стал использовать ножку сброса esp для вывода ее из состояния глюка.
[Автор]
[Автор]
https://cloud.mail.ru/public/5Spz/i2eg23ziH
А вообще, получился очень приятный минимализм.
[Автор]
[Автор]
[Автор]
[Автор]
В исходниках есть файл server.c (как то так название ) в нем как раз и выполняется обработка этого запроса.
[Автор]