- Универсальное (1-8 каналов) Wi-Fi реле на ESP8266
- Прошивка и настройка платы
- Полезные устройства для дома: WiFi-розетка своими руками
- Wi-fi розетка на esp8266 Умный дом
- Представляю Вам Wifi розетку на модуле ESP8266.
- ESPlorer
- GO!
- Первый скрипт
- Скачать скрипты LUA для Умного дома реле.
- Добавлено 01.04.2020
- Вот что получается.
Универсальное (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-розетка своими руками
Привет Geektimes! В статье хочу представить инструкцию по созданию WiFi-розетки.
Началось всё с того, что осенью наткнулся на WiFi-розетки в магазинах, подумал, что вроде ничего сложного, потом ознакомился с ESP8266 и понял, что готов сделать розетку сам.
Розетка будет состоять из:
- Корпус;
- ESP8266 12E с платой развязки питания;
- Питание для ESP8266 от 220 Вольт;
- Плата контроля 220 Вольт;
- Контрольная панель (кнопка, led, порт RJ45 для прошивки).
Разбив статью на спойлеры, мне хочется структурировать знания.
Корпус задумывался легким для сборки и разборки во время разработки и отладки, и по возможности прозрачным, чтобы видеть все компоненты.
Все платы имеют максимальный размер 5 x 3.5 см, поэтому коробка будет 5 х 5 х 3.5 см.
- кусок оргстекла, наименьшего размера 0.5 x 0.25 метра, вполне хватит на десяток таких поделок
- петли, наименьшие из найденных 2.5 x 2.5 см
- шурупы
Оргстекло вырезал паяльником, разогретым до 300 градусов: линию разреза расчерчивал лезвием ножа, и затем проводил паяльником по линии с нажимом на паяльник, потом проводил с другой стороны, и тогда можно ломать по линии разлома.
Отверстия для шурупов к петлям высверливал мини дрелью на двигателе с цангой и сверлом 1мм.
Реализовать развязку питания вместе с ESP8266 на одной плате не получилось из-за ограничений на размер корпуса.
Представленные платы совместимы для ESP8266 12F и 12E:
Сама ESP8266 положилась на эту плату:
А развязка питания, и прошивки происходит здесь:
Понадобится 5 штук 10k Ом и 1 штука 470 Ом 0.125 Вт SMD резисторов и 0.1 mkF кондесатор SMD.
На 6-ти контактах по два отверстия, одно для входящего провода от платы Esp8266, а другое для исходящего провода в плату для гнезда RJ45 (используемый для прошивки).
PS: Соединение «locking on programmator wires» замыкается в режиме прошивки, например сделать перемычку в кабеле с коннектором RJ45.
Для питания легче всего использовать китайскую USB зарядку для телефона похожую на зарядку для IPhone.
Замене подвергнется только выделенный красным стабилитрон (диод Зенера). В USB зарядке на 5 Вольт, стоит стабилитрон на 5 Вольт. Для питания ESP8266 нужно 3.3 Вольта, и стабилитрон на 3.3 Вольта мощностью более 1 Ватта с запасом судя по потреблению (3.3 Вольт,
Далее выпаиваем USB коннектор и припаиваемся к + и -.
- 1 штук 500k Ом и 1 штука 470 Ом, 1 штука 200 Ом 0.125 Вт SMD резисторов;
- 1 Симистор
- 1 Опто-пара, MOC3052
- две пары клемм для зажима 220 Вольтовых проводов
Файл доступен для скачивания вместе с другими ресурсами.
Скрипты находятся тут
Я использовал:
её можно получить тут https://nodemcu-build.com/ с пакетами enduser setup, file, gpio, net, node, rtc-time, sntp, timer, uart, wifi.
sudo python esptool.py —port /dev/ttyUSB0 write_flash 0x00000 The_Path_To_The_NodeMCU_Firmware.bin
Для оптимизации памяти, чтобы память ESP8266, которой маловато, не тратилась на компиляцию, после загрузки файлов на ESP8266, необходимо скомпилировать .lua файлы (кроме init.lua) в .lc прямо на ESP8266 через Esplorer.
node.compile(«actionsprocess.lua»)
node.compile(«constants.lua»)
node.compile(«espgetstatehtml.lua»)
node.compile(«estbehaviour.lua»)
node.compile(«httpfilesender.lua»)
node.compile(«httpsend.lua»)
node.compile(«httpsender.lua»)
node.compile(«schedulermanager.lua»)
Кнопка переключает ESP8266 в режим создания своей точки доступа в положении «Выкл» (для указания Точки доступа пользователя и пароля к точке доступа пользователя), в «Вкл» — рабочее состояние.
Светодиод — горит, когда кнопка «Выкл» (ESP8266 находится в режиме создания своей точки доступа);
- мигает, когда кнопка «Вкл», и ESP8266 в процессе подключения;
- не горит, когда кнопка «Вкл», и ESP8266 подключено к роутеру.
гнездо RJ45 — для прошивки, или питания через USB Uart переходник.
Управление розеткой происходит из андройд телефона. WiFi-Switcher Git-Hub
Когда розетка и телефон подключены к роутеру, андройд-телефон шлёт UDP-широковещательные пакеты роутеру на порт 33248, открытый на розетке. Она отвечает на него, передаёт свой Id и Type.
Wi-fi розетка на esp8266 Умный дом
В сети Интернет поискал и нашёл много разных исполнений умных радиоуправляемых wifi розеток, но все варианты мне неустраивали или по исполнению или по методу управления или ардуино или инфа какая-то есть, но скучно читать — ни одной картинки, безобразие.
Представляю Вам Wifi розетку на модуле ESP8266.
В своём варианте исполнения релейной управляемой розетки использую модуль ESP-07(вы можете использовать ESP8266 сразу с UARTом на борту и NODEMCU вот такую напимер), Прошитый под LUA то есть nodemcu, соответственно напишу два скрипта LUA. О том как писать — вгружать скрипты писал в первой статье «Первая программа на LUA для ESP»
Использовать для написания и загрузки скриптов в модуль esp8266 буду программу
ESPlorer
созданную именно под эти цели.
В первом скрипте будет реализована функция подключения к Wi-fi роутеру и 10 секундная задержка перед запуском второго скрипта основной программы.
Сделано именно с задержкой для того что-бы после перезагрузки модуля с помощью комманды tmr.stop остановки счётчика можно было остановить таймер и что-то подправить и вгрузить опять иначе программа при выполнении вам не даст ничего вгрузить вновь(вобщем делайте так)!
Второй скрипт будет содержать саму программу с поднятым веб сервером на котором будет простецкий html интерфейс с кнопками.
Простенькая схемка
Использовать — тоесть дёргать ногами будем GPIO2 и GPIO0.
GO!
Первый скрипт
с именем init.lua
Обязательно с таким именем ибо nodemcu первым делом после старта загружает именно его.
wifi.setmode(wifi.STATION) print('set mode=STATION (mode='..wifi.getmode()..')') print('MAC: ',wifi.sta.getmac()) wifi.sta.config("ИМЯ СЕТИ ВАЙФАЙ","ПАРОЛЬ") FileToExecute="rrr.lua" print("For stop have 10 sec") tmr.alarm(0, 10000, 0, function() print("Run".. FileToExecute) dofile(FileToExecute) --if wifi.sta.getip() == nil then print(wifi.sta.getip()) end)
Незабываем в скрипте поменять имя и пароль от сети вайфай!
Второй скрипт назовём его rrr.lua
Будет поднимать вебсервер и ждать нажатия на кнопки.
print(wifi.sta.getip()) led1 = 3 led2 = 4 gpio.mode(led1, gpio.OUTPUT) gpio.mode(led2, gpio.OUTPUT) srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(client,request) local buf = ""; local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP"); if(method == nil)then _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP"); end local _GET = <> if (vars ~= nil)then for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do _GET[k] = v end end buf = buf.." "; buf = buf.." ESP8266 2 channel Web Server
"; buf = buf.." ESP8266 Web Server
"; buf = buf.."GPIO0
"; buf = buf.."GPIO2
"; buf = buf.."
Made in RUSSIA version 29.06.2018 radio.obninskiy.net "; buf = buf..""; local _on,_off = "","" if(_GET.pin == "ON1")then gpio.write(led1, gpio.HIGH); elseif(_GET.pin == "OFF1")then gpio.write(led1, gpio.LOW); elseif(_GET.pin == "ON2")then gpio.write(led2, gpio.HIGH); elseif(_GET.pin == "OFF2")then gpio.write(led2, gpio.LOW); end client:send(buf); client:close(); collectgarbage(); end) end)
Лучше скачать эти скрипты отсюда, так как в коде потёрлись(фильтранулись движком сайта) некоторые теги.
Скачать скрипты LUA для Умного дома реле.
init.lua
rrr.lua
Код может и корявый но рабочий_) Проверйяте)
Не обращайте внимание если при включении релюхи будут передёргиваться, это нормально для GPIO2 и GPIO0. Можете использовать другие ноги.
Если всё без ошибок, то Вы сможете войти в устройство через браузер по выданному от wi-fi роутера паролю. Ож нже будет выдан в интерфейс если смотреть в com порт автоматически при выполнении в скрипте комманды print(wifi.sta.getip())…
Распиновка ESP для работы с ногами GPIO в среде LUA
Добавлено 01.04.2020
Всвязи с распространением коронавируса по стране сидим дома и собираем очередную розетку для насоса малыша на обычном пускателе. Почему не твердотельное РЕЛЕ на симисторе? Да потому что китайцы суют в твердотелки 12 амперный 600вольт симистор и впаривают, а я в результате получу пробитый симистор от коммутации индуктивной нагрузки.
Пускатель(реле) тож может пригореть, но время покажет и эффективность снаббера.
Вот что получается.
`