- Как сделать умную розетку, включающуюся от сигнала по wi-fi
- Шаг 1: Материалы
- Шаг 2: Предупреждение!
- Шаг 3: Делаем блок питания
- Шаг 4: Проводка для высокого напряжения
- Шаг 5: Подключаем микропроцессор и реле
- Шаг 6: Программирование
- Digitrode
- цифровая электроника вычислительная техника встраиваемые системы
- Умная розетка на ESP8266 своими руками
- Сетевой выключатель на основе ESP8266
- Электроника (современная)
- Радиоэлектронные схемы радиоэлектроника
- Wi-fi розетка на esp8266 Умный дом
- Представляю Вам Wifi розетку на модуле ESP8266.
- ESPlorer
- Первый скрипт
- Скачать скрипты LUA для Умного дома реле.
- Добавлено 01.04.2020
- ESP8266 NodeMCU Прошивка. Делаем WiFi розетку
- Что такое ESP8266?
- Что такое NodeMCU?
- Что такое язык Lua?
- Где скачать NodeMCU?
- Как залить NodeMCU на ESP8266?
- Прошивка NodeMCU под Windows
- Прошивка NodeMCU под Ubuntu
- ESPlorer, init.lua — пишем первый скрипт
- Подключаемся к Wifi или создаем свою Wifi точку
- GPIO. Мигаем светодиодом
- Websocket
- Передача данных с мобильного телефона с помощью JuiceSSH
- Работа с RoboRemoFree
- Web интерфейс
- Подключаем реле с нагрузкой
- Некоторые правила работы с языком Lua на NodeMCU
Как сделать умную розетку, включающуюся от сигнала по wi-fi
В этой статье я расскажу вам, как собрал умную wi-fi розетку.
Шаг 1: Материалы
Для сборки вам понадобятся:
- ESP8266 (пойдет любая версия)
- модуль реле 5В
- AMS1117 (линейный регулятор с малым падением напряжения)
- 1К резистор
- сдвоенная розетка
- настенный корпус
- подрозетник
- 5В зарядное устройство от телефона
- кабель питания
Для программирования микроконтроллера ESP8266 вам понадобятся:
- адаптер FTDI Usb 3,3 В
- повода-коннекторы
Шаг 2: Предупреждение!
Высокое напряжение опасно для здоровья и жизни!! Пожалуйста, будьте осторожны. Если вы не знакомы с техникой безопасности при работе с высоким напряжением, обязательно ознакомьтесь с ней. Я вас предупредил.
Шаг 3: Делаем блок питания
Я решил просто припаять провода к основному входу и использовать шнур USB для выхода. Все компоненты, которые будут находиться под высоким напряжением, я поместил в корпус адаптера. Я аккуратно вскрыл его канцелярским ножом.
Я заменил провод от входа на чуть более длинный провод. Еще я убрал коннектор USB, потому что это соединение занимает слишком много места. После этого я собрал все обратно в корпус.
Шаг 4: Проводка для высокого напряжения
Для питания я взял силовой кабель от компьютера.
Я собираюсь фазу подключить вместо нейтраля.
Я решил убрать одну из пластин, разделяющих два гнезда розетки. Это позволит оставить одну розетку всегда включенной, а другую можно будет включать и выключать с помощью реле.
Шаг 5: Подключаем микропроцессор и реле
Схема проводки достаточно проста, поэтому я решил обойтись без печатной платы, а просто спаять все вокруг ESP8266.
Модуль вай-фай я установил ESP12, но подойдет любой линейки ESP.
Кнопочные выключатели и адаптер FTDI-Usb будут нужны для программирования микроконтроллера. Для этого на модуле сделаны штыревые коннекторы:
- Ground
- RX
- TX
- GPIO0 (замыкается на землю при включении питания, чтобы перевести контроллер в режим программирования)
- Reset (перезапуск, опционально)
На фото видно, что я спаял всю проводку вокруг модуля реле, вместо того, чтобы установить реле на макетную плату. Линейный регулятор AMS1117 и микропроцессор ESP8266 я установил вокруг модуля реле. Провода достаточно жесткие, чтобы удержать модуль вай-фай на месте. Напряжение 3В от линейного регулятора выводится на средний штырь И на теплоотвод, так удобнее фиксировать модуль вай-фая на месте.
Шаг 6: Программирование
Что касается программного обеспечения, выбор у вас обширен. Простейшая программа, что я нашел – Blynk. Скачайте бесплатное приложение для Android или iPhone, зарегистрируйтесь и получите аутентификатор.
В программе Arduino IDE откройте Менеджер библиотек (Скетч> Включить библиотеку> Управление библиотеками) чтобы установить библиотеку Blynk. Файл> Образцы> Blynk> Платы и шилды> ESP8266_StandAlone
Пропишите в скетче ваш аутентификатор, SSID (имя) вашего домашнего вай-фая и пароль.
Заземлите GPIO0 (можно временно припаять провод на землю, или с помощью переключателя), и включите питание, чтобы перевести контроллер в режим программирования. Как только загрузка будет завершена, можно отсоединить USB-шнур.
В приложение Blynk настройте кнопку и на этом ваша работа над умной розеткой завершена!
Рассказываю как сделать какую-либо вещь с пошаговыми фото и видео инструкциями.
Источник
Digitrode
цифровая электроника вычислительная техника встраиваемые системы
Умная розетка на ESP8266 своими руками
Сетевой выключатель на основе ESP8266
Те, кто начинает работать с модулями ESP Wi-Fi, зачастую хотят создать умную розетку Wi-Fi, которая позволяла бы управлять нагрузками переменного тока по беспроводной сети через смартфон. Хотя подобные продукты уже доступны на рынке, такие как популярный Moko WiFi Smart Plug или Sonoff, они немного дороги и, к тому же, они не дают вам радости в создании своих собственных изобретений.
Итак, в этом проекте будет показано, как вы можете создать свой собственный умный сетевой выключатель, используя Wi-Fi модуль ESP8266. Это устройство может быть легко подключено к любой выходной розетке переменного тока, а затем на другом конце вы можете подключить фактическую нагрузку. После этого просто оставляйте основной выключатель вашей розетки всегда включенным, и вы сможете контролировать свою нагрузку прямо со своего смартфона.
Цель состоит в том, чтобы включить/выключить нагрузку (например, в данном случае маршрутизатор Wi-Fi), просто используя смартфон. Но если мы выключим маршрутизатор , у нас больше не будет доступа к интернету. Так как мы снова включим его? К счастью, наш ESP8266 можно использовать в качестве точки доступа, что означает, что он также может действовать как маршрутизатор, отправляя собственный сигнал Wi-Fi. Этот сигнал Wi-Fi будет всегда доступен, пока ESP8266 включен. Следовательно, мы запрограммируем наш ESP8266 в качестве портала. Таким образом, как только мы подключимся к сигналу Wi-Fi ESP, мы попадем на веб-страницу, откуда мы можем включить/выключить нашу нагрузку.
Прежде чем мы продолжим, давайте углубимся в программу, чтобы понять, как будет работать наш умный самодельный WiFi-штекер. Как вы можете видеть здесь, мы начинаем программу с включения нескольких заголовочных файлов и настройки сетевого сервера DNS.
Затем мы инициализируем вывод GPIO 2 ESP как выход, который будет использоваться для управления нашей нагрузкой. После чего у нас есть длинный HTML-код для нашей веб-страницы. Здесь у нас есть три экрана на нашей веб-странице, а именно главный экран, экран включения и экран выключения.
Эти три веб-страницы при открытии будут выглядеть примерно так. Вы можете настроить свою веб-страницу так, чтобы она вам понравилась.
Затем у нас есть функция установки void, внутри которой мы определяем наш ESP для работы в качестве точки доступа, а также предоставляем имя для нее, в данном случае «ESP_Smart_Plug». Когда любой пользователь подключится к этому Wi-Fi, он будет перенаправлен на домашнюю страницу, которую мы определили ранее.
На домашней странице, если пользователь нажимает кнопку ON, будет отображаться экранная страница включения, и вывод GPIO 2 будет установлен в высокий логический уровень.
Аналогичным образом, если пользователь нажимает кнопку выключения, отображается страница выключенного экрана, и вывод GPIO 2 будет установлен в низкий уровень.
Полный код приведен в конце данного руководства. Теперь, когда наш код готов, мы можем загрузить его в наш модуль ESP, просто нажав кнопку загрузки, а затем дождаться загрузки кода.
После загрузки кода выполните поиск сетей Wi-Fi на своем телефоне, и вы должны найти сигнал с именем «ESP_Smart_Plug». Подключитесь к нему, и вы попадете на веб-страницу, которую мы только что разработали. Здесь, когда вы нажимаете кнопку выключения, вы должны заметить, что светодиод на нашей плате ESP выключается, а когда вы нажимаете кнопку включения, светодиод должен снова включиться.
После проверки кода еще несколько раз нам больше не понадобится программатор для этого проекта. Теперь нам нужно построить схему для питания нашего модуля ESP напрямую от сетевого напряжения и использовать его вывод GPIO для переключения реле. Для создания этой схемы использовался модуль преобразователя переменного тока в постоянный ток от Hi-Link, который преобразует напряжение переменного тока в постоянное напряжение 3,3 В с выходным током 900 мА, достаточным для питания модуля ESP через сеть. Реле выходной стороны представляет собой реле 3,3 В, которым можно управлять с помощью вывода GPIO ESP через такой транзистор, как BC547. Нам также понадобится резистор 1 кОм, чтобы ограничить базовый ток нашего транзистора. В итоге схема подключения выглядит следующим образом:
Напряжение переменного тока для питания нашего проекта будет получено через розетку. Еще одна важная вещь, которую нужно учитывать – это поддерживать GPIO-0 и GPIO-2 на высоком логическом уровне при загрузке. В противном случае модуль ESP перейдет в режим программирования, и внешний код не будет работать. Поэтому используется резистор 10 кОм (можно использовать значения от 3,3 кОм до 10 кОм), чтобы по умолчанию подтянуть вывод GPIO. В качестве альтернативы вы можете также использовать транзистор PNP вместо BC547 и переключать реле с верхней стороны.
Само устройство можно разместить в корпусе для подключения к розетке переменного тока. Пример такого корпуса можно найти на thingiverse (https://www.thingiverse.com/thing:3852528) и распечатать его на 3D принтере.
Полный код проекта умной розетки на ESP8266.
Таким же образом вы можете контролировать любую нагрузку переменного тока с низким энергопотреблением в вашем доме и получать удовольствие.
Источник
Электроника (современная)
Радиоэлектронные схемы радиоэлектроника
Wi-fi розетка на esp8266 Умный дом
Представляю Вам Wifi розетку на модуле ESP8266.
В своём варианте исполнения релейной управляемой розетки использую модуль ESP-07(вы можете использовать ESP8266 сразу с UARTом на борту и NODEMCU вот такую напимер), Прошитый под LUA то есть nodemcu, соответственно напишу два скрипта LUA. О том как писать — вгружать скрипты писал в первой статье «Первая программа на LUA для ESP»
Использовать для написания и загрузки скриптов в модуль esp8266 буду программу
ESPlorer
Первый скрипт
с именем init.lua
Обязательно с таким именем ибо nodemcu первым делом после старта загружает именно его.
Незабываем в скрипте поменять имя и пароль от сети вайфай!
Второй скрипт назовём его rrr.lua
Будет поднимать вебсервер и ждать нажатия на кнопки.
Лучше скачать эти скрипты отсюда, так как в коде потёрлись(фильтранулись движком сайта) некоторые теги.
Скачать скрипты LUA для Умного дома реле.
init.lua
rrr.lua
Код может и корявый но рабочий_) Проверйяте)
Не обращайте внимание если при включении релюхи будут передёргиваться, это нормально для GPIO2 и GPIO0. Можете использовать другие ноги.
Если всё без ошибок, то Вы сможете войти в устройство через браузер по выданному от wi-fi роутера паролю. Ож нже будет выдан в интерфейс если смотреть в com порт автоматически при выполнении в скрипте комманды print(wifi.sta.getip())…
Распиновка ESP для работы с ногами GPIO в среде LUA
Добавлено 01.04.2020
Всвязи с распространением коронавируса по стране сидим дома и собираем очередную розетку для насоса малыша на обычном пускателе. Почему не твердотельное РЕЛЕ на симисторе? Да потому что китайцы суют в твердотелки 12 амперный 600вольт симистор и впаривают, а я в результате получу пробитый симистор от коммутации индуктивной нагрузки.
Пускатель(реле) тож может пригореть, но время покажет и эффективность снаббера.
Источник
ESP8266 NodeMCU Прошивка. Делаем WiFi розетку
Популярность WiFi-модулей на базе ESP8266 настолько велика, что помимо прошивок для использования ESP8266 в качестве WiFi-модуля под управлением внешнего микроконтроллера, существует масса прошивок для использования его и как микроконтроллера с разными целевыми назначениями, в том числе и в сфере интернет вещей. В этом цикле статей мы будем изучать возможности ESP8266 с прошивкой NodeMCU и изучим скриптовый язык LUA.
Что такое ESP8266?
ESP8266 — это микроконтроллер с WiFi интерфейсом. Его можно использовать как WiFi модуль, и как микроконтроллер.
Плюсы ESP8266: WiFi интерфейс, 32-разрядное ядро с достаточной производительностью, низкая цена.
Минусы: По сравнению с другими 32-разрядными микроконтроллерами периферия не вызывает восхищения.
ESP8266 идеально подходит для домашних проектов, интернета вещей. ESP8266 программируется через последовательный порт UART, поэтому для его прошивки не требуется специального программатора. Особенность этого микроконтроллера в том, что он может выполнять программу, расположенную на внешней Flash памяти. Это позволяет производителю «наращивать» объем Флеша, что также является плюсом.
На базе ESP8266 выпускаются разные модули:
ESP-01 | |
ESP-02 | |
ESP-03 | |
ESP-04 | |
ESP-05 | |
ESP-06 | |
ESP-07 | |
ESP-08 | |
ESP-09 | |
ESP-10 | |
ESP-11 | |
ESP-12S | |
ESP-12E | |
ESP-12F |
Существует различные версии плат с уже запаянными модулями ESP8266, стабилизаторами напряжения, микросхемой для обеспечения работы последовательного порта UART через USB и разведенными на гребенку выводами, кнопками и тому подобное. Для работы с такими платами достаточно подключить их к USB порту компьютера. Никакого дополнительного оборудования не требуется. Это очень удобно. Одна из таких плат — NodeMCU. В примерах я буду использовать плату NodeMCU с модулем ESP-12F. Но, Вы вполне можете взять модуль, скажем ESP-01, подключить к нему UART-USB переходник и работать с ним аналогичным образом. У ESP-01 будет меньше памяти и меньше выводов, которые можно задействовать, но в остальном работа с ним аналогичная.
Что такое NodeMCU?
NodeMCU — открытый бесплатный проект на основе скриптового языка Lua. Прошивка достаточно мощная и позволяет очень быстро реализовывать различные типовые проекты. Например, сегодня, в качестве знакомства, мы сделаем WiFi розетку с управлением с мобильного телефона и с Web-интерфейсом. Прошивка умеет исполнять Lua-скрипты как из последовательного UART порта (аналогично AT-командам) так и из внутренней flash памяти (выполняя скрипты). Lua скрипты сохраняются во Flash во внутренней файловой системе. Файловая система плоская, упрощенная. Т.е. без подкаталогов. Тем не менее — это круто. Не стоит забывать, что ESP8266 — это всего лишь микроконтроллер. Из скриптов так же можно получить доступ к файлам, читать и сохранять различную информацию. NodeMCU модульная. Что с одной стороны позволяет наращивать функционал, а с другой собрать прошивку только из требуемых модулей, не расходуя понапрасну память.
NodeMCU работает с протоколами обмена данными — HTTP, MQTT, JSON, CoAP.
Поддерживаются различные датчики — акселерометры ADXL345, магнитометры HMC5883L, гироскопы L3G4200D, датчики температуры и влажности AM2320, DHT11, DHT21, DHT22, DHT33, DHT44 датчики температуры, влажности, атмосферного давления BME280, датчики температуры, атмосферного давления BMP085, множество дисплеев работающих по шинам I2C, SPI. С возможностью работы с разными шрифтами. TFT дисплеи ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735, умные светодиоды и LED контроллеры — WS2812, tm1829, WS2801, WS2812, поддерживаются интерфейсы — 1-Wire, I2C, SPI, UART, Также можно задействовать модуль шифрования, планировщик задач, часы реального времени, протокол синхронизации часов через интернет SNTP, таймеры, АЦП канал (один), проигрывать аудио файлы, формировать на выходах ШИМ-сигнал (до 6), использовать сокеты, есть поддержка FatFS, т.е можно подключать SD-карточки и так далее.
Что такое язык Lua?
Lua — это интерпретируемый язык, который, как и большинство современных интерпретируемых языков, может хранить скомпилированные версии скриптов. Это позволяет увеличить скорость работы. Lua позиционируется как мультипарадигмовый. Он не сложный, и если Вы уже программировали на любом языке, то Lua Вы изучите очень быстро. Если Вы только начинаете программировать, тогда Lua удивит Вас своей доступностью для начинающих.
Есть некоторые особенности при работе с Lua на NodeMCU. В основном это связано с конечным объемом памяти микроконтроллера ESP8266. Нужно придерживаться простых правил и выдерживать стиль работы с Lua. Об этих правилах расскажу чуть позже. Если же сохранять такой же стиль, как и при написании программ на С, то у Вас не получиться ощутить всей мощи Lua и прошивки NodeMCU. Когда Вы начинаете писать на Lua, это увлекает, и Вы начинаете воплощать в жизнь все более объемные задачи. Вы теряете ощущение того, что вы работаете с микроконтроллером и невольно нагружаете задачами, которые не по плечу микроконтроллеру. Нужно помнить, что у ESP8266 ограниченные ресурсы и не следует его грузить задачами, которые под силу выполнить микрокомпьютерам или полноценным компьютерам.
Документация по LUA на русском языке: http://www.lua.ru/doc/
Где скачать NodeMCU?
Конечно, можно скачать исходные коды NodeMCU (https://github.com/nodemcu/nodemcu-firmware/releases/) и скомпилировать с нужными параметрами. Но мы не будет так делать. Существует сайт https://nodemcu-build.com, на котором можно собрать NodeMCU с необходимыми Вам модулями. Вы просто отмечаете те модули, которые Вам нужно, указываете свой e-mail и нажимаете внизу кнопку «Start ysour build«. Сначала на указанный e-mail приходит письмо о том что сборка началась. А затем извещение об окончании и ссылки для скачивания integer и float версий. Если в своем проекте Вы не будете использовать вычисления с плавающей запятой, тогда качайте «integer«. Не стоит жадничать и включать те модули, которые Вы не собираетесь использовать. В любой момент можно собрать новую прошивку, добавив недостающий модуль. Для примеров я собрал NodeMCU с такими модулями:
Как залить NodeMCU на ESP8266?
Теперь, когда у нас есть файл прошивки NodeMCU, его нужно залить в ESP8266. Прежде всего, при подключении платы NodeMCU к компьютеру должен появиться виртуальный Com порт. Как правило, последние версии Windows установки драйверов не требуют. Ubuntu сразу распознает подключенное устройство.
Прошивка NodeMCU под Windows
Заходим по этой ссылке: https://github.com/nodemcu/nodemcu-flasher. И из папки Win32/Release (для 32-битной Windows), или из папки Win64/Release (для 64-битной Windows) качаем файл ESP8266Flasher.exe. Эта программа не требует установки. Просто запускаем ее. Переходим в закладку «Config«, нажимаем «шестеренку» чтобы выбрать файл прошивки.
Возвращаемся на закладку «Operation» указываем порт, и нажимаем кнопку «Flash«.
После нажатия «Flash» должны увидеть МАС-адреса и примерно такую картину.
Ждем пока прошивка завершиться. В нижнем углу должна появиться зеленая галочка.
После этого нужно выключить и снова включить ESP8266. Прошивка завершена.
Если после нажатия кнопки «Flash» процес прошивки не начался (не появились МАС-адреса), нажмите кнопку «reset» на плате и повторите попытку.
Прошивка NodeMCU под Ubuntu
/Dev/ttyUSB0 — порт на котором висит ESP8266.
The_Path_To_The_NodeMCU_Firmware.bin — путь к файлу прошивки.
Кстати, esptool можно использовать и под Windows. esptool написан на Pyton, для работы под Windows нужно установить Pyton.
esptool пригодиться нам для заливки бинарных файлов на файловую систему NodeMCU. Можно заливать любые файлы, в том числе скрипты. Скрипты можно писать хоть в Notepad, но я предпочитаю ESPlorer.
ESPlorer, init.lua — пишем первый скрипт
Для написания и заливки скриптов будем использовать программу ESPlorer. Это кроссплатформенная программа написана на Java и так же не требует установки. Работает одинаково как под Windows так и под Ubuntu.
Под Windows запускаем файл ESPlorer.bat
Примечание: далее описанна робота с ESPlorer v0.1. Внешний вид новых версий может иметь не принципиальные отличия.
Указываем порт и скорость 9600:
И нажимаем «Open«. Увидем следующще
У ESPlorer обнаружилась паршивая особенность. Он не всегда четко подключается к NodeMCU. Если попробовать послать любую команду (кнопкой Send) в консоли пролетает мусор вместо нормального ответа. Иногда после нескольких повторов все налаживается. Если Вас это беспокоит, попробуйте изменить скорость подключения на 115200.
Приступим к созданию первого скрипта на языке Lua. Скрипт с именем init.lua стартует автоматически после запуска NodeMCU. Создадим файл init.lua. напечатаем всего одну строчку:
Сохраняем файл как init.lua. После сохранения файл выполниться и мы должны увидеть работу первого скрипта.
По умолчанию файл сохраняется и на диск компьютера и заливается на ESP8266.
Теперь о самой большой неприятности, которая есть у NodeMCU. При некоторых критических ошибках (это случается не так часто, но если случается, то запоминается на долго) NodeMCU может перезагружаться. И самое страшное, что может случиться — это циклическая перезагрузка. Это случается если допустить критическую ошибку в скрипте который стартует автоматически. NodeMCU стартует, выполняет «глючный» скрипт, нарывается на критическую ошибку и уходит в перезагрузку. И так до бесконечности.
Для того, чтобы обезопасить себя на этапе изучения NodeMCU, я использую описанный ниже прием. В стартовом скрипте init.lua запускаем таймер, который сработает только один раз и через указанное время (в данном случае через 5 секунд) выполнит процедуру запуска другого скрипта (в данном случае main.lua). Больше ничего в скрипте init.lua не делаем. Все операции выполняются в скрипте main.lua. Таким образом, если мы допустим ошибку в скрипте main.lua, и NodeMCU уйдет в циклическую перезагрузку, после перезагрузки у нас будет 5 секунд для того чтобы удалить или исправить «глючный» скрипт.
Кроме того, такой подход позволяет легко включать в автозагрузку любо нужный скрипт, достаточно в файле init.lua вместо main.lua указать имя другого скрипта. Это очень удобно, когда вы на одной плате тестируете несколько проектов или несколько версий скрипта.
Подключаемся к Wifi или создаем свою Wifi точку
Для подключения к WiFi создаем main.lua и пишем:
После успешного подключения модуль получить IP адрес. Узнать его можно с помощью команды:
Если мы хотим, чтобы ESP8266 создал свою собственную WiFi точку:
Примечание: WiFi точка не поднимется, если пароль короче 8 символов. По умолчанию IP адрес точки всегда 192.168.4.1
Его можно узнать командой:
Что такое collectgarbage()? Функция collectgarbage — это сборщик мусора. Ее следует вызывать в конце каждого скрипта. Обратите внимание, переменная cfg объявлена как local. Она будет доступна только в текущем скрипте. Если local убрать, то переменная cfg была бы глобальной и доступной в других скриптах.
GPIO. Мигаем светодиодом
Для управления реле (мы ведь собрались делать WiFi розетку) потребуется изучить работу с выводами GPIO. Пока попробуем использовать GPIO вывод в качестве выхода и устанавливать высокий и низкий уровень сигнала. Для наглядности подключим светодиод как показано на схеме.
IO index | ESP8266 pin |
0 | GPIO16 |
1 | GPIO5 |
2 | GPIO4 |
3 | GPIO0 |
4 | GPIO2 |
5 | GPIO14 |
6 | GPIO12 |
7 | GPIO13 |
8 | GPIO15 |
9 | GPIO3 |
10 | GPIO1 |
11 | GPIO9 |
12 | GPIO10 |
D0(GPIO16) can only be used as gpio read/write. No support for open-drain/interrupt/pwm/i2c/ow
Примечание: Существует несколько версий плат Nodemcu. Распиновка Вашей платы может отличаться.
Websocket
Теперь сделаем сервер, который будет работать на указанном порту (пусть будет 333). Затем мы с помощью терминальной программы подключимся к нашему серверу, указав его IP и порт. И потом будем обмениваться данными.
Теперь наш скрипт поднимает Wi-Fi точку, создает сервер, который на порту 333 ожидает подключения. В момент подключения сервер отправит клиенту строку «Hello!«, а приняв от клиента данные, вернет ему строку «Recived: » и дальше все, что он принял.
Теперь мы можем подключиться мобильным телефоном к Wi-Fi точке ESP8266. В принципе, создавать точку не обязательно. Вы можете переписать скрипт и сделать так, чтобы ESP8266 подключался к Вашей WiFi сети. Тогда Вам нужно узнать его IP и далее использовать его вместо 192.168.4.1, который далее используется в примерах.
Но нам еще нужна терминальная программа для подключения на IP адрес ESP8266 (192.168.4.1) и указанный порт (333). На обычном компьютере можно установить PuTTY. Для мобильных телефонов под Android я использую JuiceSSH.
Передача данных с мобильного телефона с помощью JuiceSSH
Установим JuiceSSH и создадим подключение на IP 192.168.4.1, порт 333.
Сразу после подключения должны увидеть такую картину:
Отправим ему радостное «Yes» и должны получить ответ.
Теперь доработаем скрипт так, чтобы получив «1», он включал светодиод, а получив «0» — выключал.
Доработанная версия скрипта main.lua:
Попробуйте отправить «1» и «0». Светодиод должен загораться и гаснуть. Разумеется, управлять светодиодом через терминальную программу очень неудобно. Но в дальнейшем именно терминальная программа позволит Вам отлаживать более сложные проекты.
Работа с RoboRemoFree
В Интернете можно найти массу программ под Android, которые помогают организовать интерфейс для такого рода задач, не прибегая к программированию. Я покажу, как это можно сделать с помощью RoboRemoFree.
Устанавливаем и запускаем RoboRemoFree
Создаем подключение к серверу. Желательно чтобы мобильный телефон/планшет был подключен к той-же WiFi сети, где находиться сервер. В данном случае наш ESP8266. Заходим в «Menu», выбираем пункт «connect»
Выбираем тип подключения «Internet (TCP)»
Указываем IP и порт
Далее в меню выбираем пункт «interface»
Выбираем интерфейс. Программа позволяет создавать несколько интерфейсов с разными органами управления.
Затем переходим в режим редактирования интерфейса
Нажимаем на свободном пространстве и выбираем, что мы хотим установить. Мы будем использовать кнопки. Выбираем «button»
После чего на интерфейс будет установлена кнопка. Ее можно перемещать и изменять ее размеры.
Чтобы изменить название на кнопке, нужно нажать не ней и выбрать пункт «Set text»
Затем укажем еще один параметр — «set press action». Зададим «1». При нажатии кнопки будет отправлена указанная строка по созданному нами подключению. Т.е. Наш ESP8266 получит символ «1» и включит светодиод.
Аналогично создадим кнопку «Off» и установим set press action «0».
Наш интерфейс готов. Выходим из режима редактирования, выполнив пункт меню «don`t edit ui».
Если подключение к серверу (ESP8266) было успешным, можно пользоваться. По нажатию кнопки «On» светодиод должен загореться, по нажатию кнопки «Off» светодиод должен погаснуть.
Web интерфейс
Есть и другой путь — можно сделать Web интерфейс и управлять светодиодом еще и через браузер.
Тот же скрипт + Web интерфейс:
Небольшое пояснение как работает web-сервер вообще, и наш скрипт в частности. Стандартный порт для web-сервера — 80. Т.е. когда Вы в браузере набираете http://192.168.4.1/, то браузер подключается к серверу (192.168.4.1) на порт 80 и отправляет запрос. Запрос выглядит примерно так:
Для нас представляет интерес первая строка запроса: «GET / HTTP/1.1«. В ней указан URL. Если в браузере набрать http://192.168.4.1/on , тогда в первой строке запроса будет «GET /on HTTP/1.1«. А если в браузере набрать http://192.168.4.1/off тогда будет «GET /off HTTP/1.1«. Именно эту строку и анализирует скрипт и в зависимости от полученного URL включает или отключает светодиод. Далее скрипт отправляет html страничку. Но после отправки нужно разорвать подключение. Поскольку отправка занимает некоторое время, а ждать окончания отправки технически глупо, на событие «sent» (отправлено) подключим функцию со строкой sck:close(). Это делается в строке: sck:on(«sent», function(sck) sck:close() end). После чего выполняется отправка html страницы sck:send(response). Скрипт продолжает работу. Когда ответ будет полностью отправлен, сработает sck:close().
Страницы большого размера таким образом отправить не получится. Весомое содержимое нужно отправлять кусками. Подробнее об этом будет рассказано в другой статье.
Подключаем реле с нагрузкой
Внимание! Напряжение более 40 Вольт опасно для жизни человека! Будьте внимательны и аккуратны, собирая схему и подключая бытовые приборы. Не прикасайтесь к токоведущим частям.
А теперь вместо светодиода подключим модуль реле, а в качестве нагрузки — скажем лампу, обогреватель, компрессор для аквариума, вентилятор и т.п.
При подключении реле могут быть нюансы. Если блок реле с оптической развязкой (с оптопарой), то, скорее всего, Вам ничего переделывать не придется. Если блок реле без оптической развязки, как у меня, тогда придется переделать работу с GPIO, поскольку во первых реле включается низким уровнем, а не высоким, а во вторых высокий уровень ESP8266 – это 3.3В, для 5-ти вольтового блока реле этого не достаточно, поэтому мне пришлось настроить выход как OPENDRAIN, после чего все заработало как надо.
Финальная версия скрипта выглядит так:
Теперь мы можем включать и выключать “розетку” с мобильного телефона с помощью программы RoboRemoFree или с помощью браузера. Разумеется, с обычного компьютера через браузер тоже можно управлять.
Все это хорошо, но что дальше? Если у нас будет 5, 10, 20 подобных устройств? Как их объединить, чтобы не надо было подключаться к каждому устройству отдельно. Для этого существует протокол MQTT, но это будет отдельная тема. А пока мы изучим возможности ESP8266 и NodeMCU.
Некоторые правила работы с языком Lua на NodeMCU
1. Не пишите длинные скрипты. Размер памяти ESP8266 не бесконечен. Разбивайте программу на функциональные модули и делайте их в виде отдельных скриптов, запуская их с помощью dofile(). Например, код подключения к Wifi:
можно вынести в отдельный скрипт «wifi.lua» и выполнить его из основного скрипта командой dofile(«wifi.lua»).
2. Переменные, которые используются только в текущем скрипте объявляйте как local. В конце скрипта, когда переменная уже не нужна, присваивайте ей значение nil и явно вызывайте сборщик мусора collectgarbage()
Статья про MQTT будет позже, в самом конце цикла статей про NodeMCU. Про то как сохранять настройки через web-интерфейс можно подсмотреть в этом проекте: http://www.avislab.com/blog/gps-tracker-esp8266_ru/ Подробно про web тоже будет статья позже.
Если Хотите настраивать устройство через UART, посмотрите статью http://www.avislab.com/blog/esp8266-nodemcu-uart_ru/ там описан вариант ввода параметров. Останется только их сохранить и использовать в скриптах.
Здравствуйте не могу запустить пример, тот в котором светодиод загорается при отправке 0 і 1, пишет
Источник