Довольно широко известно, что компания 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. При этом из двух одинаковых преобразователей интерфейсов нормально заработал только один. Оказалось печатные платы у них хоть и похожие, но немного разные и подключенные светодиоды нарушали работу, хотя в целом для других 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 модуль | ESP8266 | 1 | ESP-01 | Поиск в магазине Отрон | |
VR1 | Линейный регулятор | AMS1117-ADJ | 1 | Поиск в магазине Отрон | ||
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 Кб)
Комментарии (90) | Я собрал (0) | Подписаться
Для добавления Вашей сборки необходима регистрация
[Автор]
Всё, разобрался. На сайте esp8266.ru уже спрашивали о такой же ошибке. Все дело в новой прошивке NodeMCU. Теперь буду разбираться дальше.
[Автор]
"В последней NodeMCU прошивке они изменили стандартный ответ - отключите автоопределение прошивки на вкладке Settings - Firmware Autodetection, открывайте порт на скорости 9600, а потом уже переходите на 921600 (ESPlorer сам перенастроит порт и отправит команду NodeMCU для переключения скорости)".
Сделал как посоветовал автор и всё заработало.
[Автор]
[Автор]
У вас сами модули работают без перезагрузок? Я программирую их в ардуине, так никакой стабильности, постоянно перезагружаются, питания достаточно, емкостями обвесил и нифига. Да еще и греются сильно
[Автор]
Да - фишка с 3 В логикой есть, но у меня PL2303, CH340 работают очень хорошо (при схеме без висюлек и светодиодов на линях)
Именно ESP-01 показывают плохую стабильность при интенсивном использовании часто вылетает ошибка, говорящая о недостаточности памяти (емкости тоже пробовал довешивать), ESP-07 намного большую стабильность показал, но тоже не огонь, интересно что покажет ESP-13 и интересно какие отзыва на модули с 4мб памяти devboard.
[Автор]
[Автор]
[Автор]
http://arduino.esp8266.com/package_esp8266com_index.json
Нажать OK. Потом зайти в "Менеджер плат" (там где выбирается плата, в самом верху), подождать какое-то время чтобы софт Ардуины обновил связи и в самом низу появится новая плата "esp8266 by ESP8266 Community". Нажимаете кнопку "Установить" и всё. Загружается порядка 150-160 МБ. Потом в списке плат для выбора появятся новые платы Generic ESP8266, Adafruit, NodeMCU и т.д.
[Автор]
Есть еще ESP-12E, вот такие.
Но их я еще не пробовал, там изначально NodeMSU зашит, надо, наверное, стандартную прошивку для начала поставить.
[Автор]
Правда ли, что в модулях по ссылке 4 мб? там по идее esp-12
[Автор]
[Автор]
0 9 6 456127 1458400 4096 0 40000000
а в описании команды:
Возвращает NodeMCU version, chipid, flashid, flash size, flash mode, flash speed.
Шил я версию 0.9.6. Значит размер 4096 КБ и скорость 40 МГц.
Я все никак разобраться не мог, а вот теперь, спасибо, с Вашей помощью, понял.
[Автор]
[Автор]
Посмотреть только если программно запросить командой информацию из модуля, думаю. По идее смысл делать одинаковые модули с разными названиями, с другой стороны Китай...
[Автор]
[Автор]
Судя по всему стоит 25Q32. Да и на фотке вскрытого модуля (автор говорит что версия Q), та же память стоит.
[Автор]
[Автор]
Где-то читал что бутлоадер записан в самой ESP, так что содержимое EPROM'ки вроде как не критично для загрузчика.
[Автор]
Вот как было и как стало.
[Автор]
Второй прикол с памятью - попробовать увеличить память через выводы на торце ESP12E(Q, D) дополнительной микросхемой - возможно ли так, тогда можно будет апнуть память без перепайки компонентов
Только это была относительно новая материнка с сокетом 1155, я на ней запорол БИОС, в сервисе за программирование запросили дорого, вот я ее и выбросил. А ведь мог использовать модуль ESP-01 как программатор :( Кстати, еще одна идея: выпаять память, поставить панельку и использовать как программатор для SPI памяти :)
Удачи.
[Автор]
Я старые материнки посмотрел - не нашел подходящей памяти, вся маленькая, и правда нужна относительно новая материнка, значит под настроение нужно из китая заказать на 16 мб попробовать
[Автор]
P.S. Было бы неплохо на форум перейти, а то много не по теме Вашей статьи.
[Автор]
Я вот хочу попробовать подключить дополнительную память к торцевым контактам ESP-12E (Q), печалит, что походу только после НГ стоит ждать посылку из-за праздников
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
1. Более быстрый WiFi - 144 Mbps
2. Bluetooth Low Energy (BLE) на борту (а в позже обещают и Classic Bluetooth)
3. Два процессора Tensilica L108 на борту - 160 MHz
4. Низкое потребление в режиме Deep Sleep
5. Богатая периферия с поддержкой DMA: чувствительный к касанию вход (capacitive touch), нескоько АЦП, ЦАПы, I2C, UART, SPI, SDIO, I2S, RMII, PWM и др. (USB - нет)
6. RAM: SRAM ~400 KB !
7. Поддержка Security на аппаратном уровне (AES и SSL)
8. Упрощенные APIs
Пишут, что будет дороже ESP-8266, но не на много.
[Автор]
[Автор]
[Автор]
[Автор]
Пробовал менять в скрипте на английский, эффекта нет...
[Автор]
Еще заметил такую странность: у сети было название TP-Link_1720. АТ-командами модуль подключался без проблем, но ни из Lua, ни из Arduino подключение к роутеру не происходило. Поменял название на другое, без символов "-" и "_", всё сразу заработало. Где-то видел что надо делать подмену таких символов на UTF-8 или Юникод.
[Автор]
Я тоже пытался бороться с этим, но походу просто форматирование и перепрошивка наиболее действенные меры
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]
[Автор]