Довольно широко известно, что компания Espressif выпускает крайне недорогие модули WiFi, стоимость составляет порядка 2-3 долларов за один модуль. Кроме дешевизны, да и благодаря ей, на основе WiFi модулей ESP8266 развиваются инструменты программирования и управления, доступные каждому желающему. Первым модулем ESP8266 был выпущен ESP-01, особенностями которого являются малый размер, встроенная PCB антенна и всего два доступных порта ввода – вывода. Построен этот модуль по аналогии с популярным NRF24L01. Далее модули, пройдя некоторый путь эволюции, стали выпускаться в несколько другом форм факторе:
С одной стороны такие модули как ESP-07 более удобные и имеют большее количество портов ввода – вывода, но занимают большее посадочное место. Потому, кажется, устаревший формат ESP-01 все же проще использовать в несложных проектах, для которых компактность имеет не последнее значение, потому что для подключения лишь необходимо место для восьми штырьков. Справедливости ради стоит отметить, что из-за этого конструкция с модулем ESP-01 будет выше.
На сегодняшний день существует несколько способов программировать модули ESP8266 и управлять ими: по умолчанию настройка и управление происходит посредством AT команд, можно также перепрошить модуль nodemcu и писать прошивки на lua, а можно воспользоваться средой программирования Arduino последних версий, где этот модуль WiFi поддерживается. Каждый способ имеет свои плюсы и минусы и имеет право на существование.
Достаточно интересным вариантом является использование nodemcu по причине своей простоты. Попробуем сделать устройство, управляющее нагрузками по сети WiFi.
Изначально (если это не модуль или плата nodemcu) WiFi модуль идет с AT прошивкой, нам необходимо перепрошить его nodemcu. Для этого необходимо воспользоваться софтом для прошивки модулей ESP. На мой взгляд, самая удобная программа это ESP8266Flasher (или nodemcu flasher). Для подключения к компьютеру модуля ESP необходим USB-UART преобразователь. Забегая немного вперед, нужно отметить, что не всякий преобразователь интерфейсов будет работать. При таком подключении к компьютеру WiFi модуль должен в терминал отсылать сообщения, ответы на команды, но если этого не происходит, то варианта может быть два как минимум при условии верного подключения модуля по UART. Первый это действительно неисправный преобразователь USB-UART или с какими-то особенностями, отклонениями. Второй вариант это то, что вы используете купленный готовый преобразователь со всеми прибамбасами и светодиодиками. Как раз неверное подключение этих светодиодов (к линиям данных) и не даст корректно работать WiFi модулю. Варианта снова два – попробовать использовать другой преобразователь или просто отпаять лишние детали.
Что бы прошить модуль ESP-01, необходимо его подключить следующим образом: подключить плюс и минус питания к модулю (напряжение от 3 до 3,6 вольт), линии Rx и Tx модуля USB-UART, выводы ресет и чип энебл подтянуть к плюсу питания, вывод GPIO0 подтянуть к земле. Сначала подключаются выводы, потом подается питание, а не наоборот.
Дальше все просто, открываем nodemcu flasher, выбираем нужный порт, во вкладке Config выбираем путь к прошивке, во вкладке Advanced задаем настройки для модуля. Практически при любой конфигурации параметров модуль работает нормально, необходимо задать объем флэш памяти WiFi модуля. Для ESP-01 это 512 кб. Хотя все работает, если даже задать больший объем.
Во вкладке Operation жмем Flash и должен пойти процесс загрузки, при этом появляется QR код и MAC адреса.
Во вкладке Log можно просмотреть статус выполненных операций. При успешной загрузке в нижнем левом углу появится галочка.
По поводу прошивок nodemcu, ESP-01 самые старые модули и памяти в них мало, поэтому чем новее прошивка, тем больше риск нестабильной работы. В моем случае наиболее стабильно на ESP-01 заработала прошивка nodemcu_integer_dev_json_20150317 (хотя проверял не все). При этом на более новых модулях с большим количеством памяти нормально работают и более поздние прошивки.
При обычном включении, когда не нужно перепрошивать модуль, вывод GPIO0 не должен быть подтянут к земле или быть соединенным с ней.
После успешной прошивки можно приступать к написанию пользовательской прошивки, само собой сам модуль и является микроконтроллером. Для этого можно использовать несколько программ, но я остановился на ESPlorer.
Задумка следующая: управлять какими-либо нагрузками при помощи, компьютера, телефона, планшета или другого устройства, подключенного к сети WiFi. Устройство будет соответствовать следующей схеме.
WiFi модуль ESP-01 требует напряжение питания от 3 вольт до 3,6 вольт, причем порог этот лучше не превышать. Для питания модуля используется стабилизатор напряжения AMS1117 adj. Резисторами R5, R6 задается уровень выходного напряжения (стабилизатор напряжения с регулируемым выходным напряжением). Вместо AMS1117 adj можно использовать любой другой стабилизатор на 3,3 вольта либо питать схему непосредственно от источника напряжения на 3,3 вольта. При использовании источника напряжение от USB (5 вольт) нужно использовать стабилизатор напряжения с малым падением напряжения, что бы выходное напряжение было в диапазоне нормального. Джемпером Jmp1 устанавливается режим работы модуля – обычный или режим прошивки. Модуль ESP-01 имеет всего два порта ввода – вывода – GPIO0 и GPIO2. Они и используются для управления светодиодами LED1, LED2 (нагрузками).
Светодиоды в данном случае самый простой вариант для наглядности. Для подключения более серьезной нагрузки необходимо использовать узлы транзисторных ключей, реле, оптопары, оптореле и так далее. При выборе силового элемента необходимо учитывать мощность нагрузки, чтобы не было перегрузок.
Схема собирается на небольшой универсальной плате для модуля ESP-01. С одной стороны плата имеет ряд выводов для подключения USB-UART преобразователя (Rx, Tx, +5v, Gnd), с другой стороны на плате расположены пользовательские выводы модуля (GPIO0, GPIO2, Rst, +3,3v, Gnd).
Для подключения к компьютеру и питания схемы используется преобразователь USB-UART на PL2303. При этом из 2-х одинаковых преобразователей интерфейсов нормально заработал лишь один. Оказалось печатные платы у них хоть и похожие, но немного разные и подключенные светодиоды нарушали работу, хотя в целом для других 5 вольтовых схем модуль работает нормально.
Для прошивки модуля под nodemcu необходимо поставить перемычку как на фото – замкнуть GPIO0 на землю. Для пользовательских прошивок этот вывод можно использовать.
Согласно схеме подключаем светодиоды и при помощи ESPlorer загружаем прошивку в модуль. Строго говоря, это даже не прошивка, а скрипт. При включении всегда стартует файл init.lua, в нем и находится вся логика работы нашего устройства. В этом файле необходимо прописать название сети WiFi, к которой необходимо соединяться и соответственно пароль. Далее конфигурируются выводы модуля на выходной сигнал – GPIO0 и GPOI2 (доступные для ESP-01). Далее создается сервер с html кодом (текстом), который задает внешний вид страницы и элементы на ней. Так как у нас есть два выхода WiFi модуля, то нам необходимо две кнопки, что бы ими управлять, в данном случае их четыре – кнопка «включить» и кнопка «выключить» для одного выход и так же для второго выхода. Чтобы включить светодиод или выключить обрабатывается нажатие кнопок на web странице. Подключаем к питание к модулю, он подключается к сети и через несколько секунд в сети будет доступна страничка WiFi модуля. Что бы к ней подключится, необходимо в браузере задать автоматически выдаваемый IP адрес устройства. Есть два способа узнать на каком адресе сейчас находится модуль. Первый заключается в том, что если модуль подключается через USB-UART переходник к компьютеру, он выдает в терминал IP адрес при успешном старте. Второй способ заключается в том, чтобы просто запустить программное обеспечение, сканирующее сеть. Данные получаются в следующем виде (IP адрес, MAC адрес, название компании сетевого адаптера):
192.168.100.3 18-FE-34-99-1E-00 Espressif Inc.
Даже при большом количестве IP адресов в сети без труда можно найти необходимый по названию компании сетевого адаптера.
При конфигурации выводов модулей ESP8266 нужно учитывать нумерацию портов ввода — вывода, которая представлена в таблице ниже:
индекс
GPIO
индекс
GPIO
0
GPIO16
7
GPIO13
1
GPIO5
8
GPIO15
2
GPIO4
9
GPIO3
3
GPIO0
10
GPIO1
4
GPIO2
11
GPIO9
5
GPIO14
12
GPIO10
6
GPIO12
Просто из интереса в данной прошивке организован вывод некой переменной, которая изменяется по таймеру, который тикает каждую секунду. Вместо этой абстрактной переменной можно сделать вывод температуры, например – что-то типа термометра в сети.
Весь алгоритм на программном языке можно просмотреть в исходном коде init.lua
Как вывод можно отметить следующее. Nodemcu достаточно интересна и вполне несложная прошивка для работы с WiFi модулями ESP8266. Но хорошей стабильности работы прошивок, особенно сложных, можно не получить с применением этого инструментария. Хотя nodemcu успешно прошивается даже в старые модули ESP-01 могут возникать ошибки, связанные с недостатком памяти. Таким образом, nodemcu лучше всего использовать с модулями с большим количеством памяти, например, ESP-12E. Из плюсов весомым аргументом является простота и быстрое написание прошивок.
К статье прилагается необходимый софт, печатная плата в формате lay6, исходный код для ESPlorer, небольшое видео.
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
U1
WiFi модульESP82661
ESP-01VR1
Линейный регуляторAMS1117-ADJ1
C1
Конденсатор1 мкФ1
C1
Конденсатор1 мкФ1
C2
Конденсатор2.2 мкФ1
C3
Электролитический конденсатор100 мкФ1
C4
Конденсатор100 нФ1
R1
Резистор1 кОм1
R2, R9
Резистор10 кОм2
R3, R4, R7, R8
Резистор390 Ом4
R5
Резистор3 кОм1
R6
Резистор1.8 кОм1
Jmp1
ПеремычкаДжемпер1
LED1, LED2
Светодиод2
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- WiFi-01.lay6 (75 Кб)
- nodemcu-flasher-master.rar (4806 Кб)
- ESPlorer.rar (3141 Кб)
- Nodemcu прошивка.rar (982 Кб)
- Исходники.rar (2 Кб)