Универсальное (1-8 каналов) Wi-Fi реле на ESP8266
Это полностью готовый проект — заливай скетч и пользуйся. Имеет несколько ключевых особенностей:
- может быть легко перестроен под любое количество реле (от 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 запрос вида:
Можно запросить состояние всех GPIO с помощью запроса:
Английская буква алфавита — номер реле, цифра после неё 1/0 включено/выключено.
Прошивка и настройка платы
Перед использованием необходимо установить в систему Arduino IDE две библиотеки:
В Папке с проектом есть папка DATA.
Файлы из этой папки необходимо разместить в файловой системе ESP (LittleFS).
Как установить загрузчик и загрузить файлы, читайте в этой статье:
После загрузки файлов необходимо откорректировать несколько строк в скетче:
Если устройств планируется несколько — лучше присвоить точке доступа понятное название. Я использую место установки + последняя цифра IP адреса который я планирую задать.
Задать пароль для точки доступа. Если у вас моргнет электричество и возникнет проблема с роутером, все ваши самодельные девайсы перейдут в режим точки доступа — чтобы в этот момент к ней не смог подключиться «замечательный сосед», лучше придумать свой надежный пароль.
Можно задать понятное название устройства — в WEB странице управления GPIO включена поддержка русской кодировки.
Количество реле — именно столько кнопок будет нарисовано в WEB интерфейсе управления. (у меня два реле)
Отредактировать массив к которым будут подключены реле (модули реле). Определиться с выбором GPIO, физических контактов на плате и особенностями подключения Вам поможет эта статья:
Управление светом по WiFi своими руками
За основу устройства была взята плата микроконтроллера ESP8266-01 с WiFi интерфейсом самая простая:
Для включения/отключения лампы мне понадобилось реле:
Для питания управляющей части мне понадобился блок питания на 5 вольт и стабилизатор напряжения на 3.3 вольта.
Большинство телефонных зарядок выдают напряжение 5 вольт, если не говорить про более современные. У меня была вот такая вот простая зарядка за 100 рублей.
Данную зарядку я разобрал. Вытащил внутренности из корпуса, убрал USB разъем.
Плата esp8255-01 имеет напряжение питания 3.3 вольта, но рядом с лампочкой только 220 вольт, поэтому здесь я использовал зарядку от телефона. А для получения 3,3 вольт из 5, использовал вот такой вот линейный стабилизатора напряжения:
На его выходе будет 3.3 вольта как раз для питания платы ESP32-01. Собирать все буду на самой обычной монтажной плате:
Подключение и сборка
220 вольт подается на блок питания, с его выхода получается 5 вольт, далее 5 вольт подается на входы питание реле (VCC и GND) и на стабилизатор напряжения, где на выходе получается 3,3 вольта, + поступает на контакты VCC и CH_EN, GND на GND ESP8266-01. На вход IN1 подключается выход ESP8266-01 GPIO0, для управления реле. Лампочку я подключил между фазой (L) и нормально разомкнутым контактом реле (NO). Контакт COM подключил на нейтральный провод (N), контакт NC остается свободным.
Все элементы спаял на монтажной плате, получилось вот так: