Это полностью готовый проект - заливай скетч и пользуйся. Имеет несколько ключевых особенностей:
- может быть легко перестроен под любое количество реле (от 1 до 8);
- имеет диспетчер подключения к Wi-Fi (например в случае необходимости замены точки доступа или смены пароля от Wi-Fi);
- управление через WEB интерфейс с любого устройства в локальной сети через браузер (подключение к Интернет не требуется);
- запрос статуса состояния реле и возможность управления с помощью других плат ESP;
- возможность присвоения статического IP адреса;
- возможность работы с разными типами модулей реле.
Общий алгоритм работы показан блок-схеме:
После подачи питания программа ищет в файлах информацию необходимую для подключения к локальной (домашней) сети Wi-Fi. Если информация не найдена (первый запуск устройства) или сменился пароль от сети Wi-Fi - плата ESP82666 запускается как точка доступа.
Подключившись к этой точке доступа, можно открыть браузер, вбить в адресную строку IP 192.168.4.1 и в открывшейся странице задать параметры сети Wi-Fi, к которой необходимо подключиться.
Там же можно присвоить статический IP адрес и прописать шлюз. Перед этим необходимо зайти на домашний роутер и посмотреть, что раздает DHCP сервер и какие IP не заняты.
После нажатия кнопки Submit ESP8266 перезагрузится и будет доступна внутри домашней сети по адресу, который вы укажите. Я выбрал 10.168.0.200
Библиотека ESPAsyncWebServer умеет делать "динамический" HTML - количество отображаемых кнопок будет зависеть от настроек которые вы зададите в скетче. События происходящие при нажатии кнопок обрабатываются с помощью JavaScript - перезагрузка и обновление WEB страницы не требуются!
При запросе страницы - ползунки обновляются в соответствии с последним состоянием GPIO (можно одновременно управлять с нескольких устройств ПК, смартфон через WEB браузер).
Для проверки и отладки кода был собран прототип. (8 светодиодов + 8 резисторов номиналом 330-990 Ом)
Кроме WEB интерфейса, изменить состояние светодиодов можно отправив GET запрос вида:
http://192.168.0.200/update?relay=5&state=1
- relay=5 порядковый номер реле (5)
- state=1 (1 - включить/0 выключить)
Можно запросить состояние всех GPIO с помощью запроса:
http://192.168.0.200/status
a1b1c0d0e1f0g0h0
Английская буква алфавита - номер реле, цифра после неё 1/0 включено/выключено.
Прошивка и настройка платы
Перед использованием необходимо установить в систему Arduino IDE две библиотеки:
- ESPAsyncWebServer (.zip folder)
- ESPAsyncTCP (.zip folder)
В Папке с проектом есть папка DATA.
Файлы из этой папки необходимо разместить в файловой системе ESP (LittleFS).
Как установить загрузчик и загрузить файлы, читайте в этой статье:
После загрузки файлов необходимо откорректировать несколько строк в скетче:
Если устройств планируется несколько - лучше присвоить точке доступа понятное название. Я использую место установки + последняя цифра IP адреса который я планирую задать.
const char* AP_NAME = "STENA_200";
Задать пароль для точки доступа. Если у вас моргнет электричество и возникнет проблема с роутером, все ваши самодельные девайсы перейдут в режим точки доступа - чтобы в этот момент к ней не смог подключиться "замечательный сосед", лучше придумать свой надежный пароль.
const char* AP_password = "password";
Можно задать понятное название устройства - в WEB странице управления GPIO включена поддержка русской кодировки.
const char* Name_device = "СТЕНА";
Количество реле - именно столько кнопок будет нарисовано в WEB интерфейсе управления. (у меня два реле)
##define NUM_RELAYS 2
Отредактировать массив к которым будут подключены реле (модули реле). Определиться с выбором GPIO, физических контактов на плате и особенностями подключения Вам поможет эта статья:
У меня модули реле подключены к контактам D1, D2 соответственно массив будет выглядеть:
int relayGPIOs[NUM_RELAYS] = {5, 4};
Последние два определения, позволяют работать с любым типом релейных модулей и подключать нагрузку как на нормально-замкнутые так и на нормально-разомкнутые контакты. В готовых релейных модулях ток в катушку может подаваться либо при появлении на входе логической 1 либо при появлении логического 0.
У меня есть несколько таких готовых релейных модулей и логика управления у них разная.
Для этого в коде присутствуют следующие строки:
// Инверсия выходов
##define RELAY_INVERSION true
// Инверсия переключателя
##define SWITCH_INVERSION false
Установив эти значения, можно подогнать работу программы под любую логику работы с реле.
Прошиваем, проверяем, паяем, вставляем в готовую конструкцию и пользуемся.
Конструкция самодельного светодиодного светильника была описана в этой статье:
Загрузив такой вариант прошивки в ESP8266, не будет необходимости каждый раз разбирать конструкцию и пере-прошивать плату в случае необходимости смены сетевых настроек. Есть возможность управлять отдельными GPIO с помощью отдельных HTPP запросов, и запросить статус всех GPIO в виде одной строки текста. Главный плюс - все это находится внутри локальной сети и не требует подключения к сети Интернет.
Скетч с комментариями на русском языке качайте ТУТ.
Полный список всех статей канала доступен по этой ссылке:
Всем удачи!