Отладочная плата NodeMCU на базе ESP8266
Заметки серии:
Продолжу про первый опыт взаимодействия с семейством контроллеров ESP от Espressif Systems.
При первой попытке подключения к компьютеру вышла курьезная ситуация. Потратил несколько часов на борьбу с совершенно простой проблемой.
Отладочная плата оборудуется преобразователем интерфейса USB-UART от Silicon Labs CP210x. В моем случае это CP2102 у ESP8266 и CP21084 у ESP32. Грубо говоря это микросхема служит для организации программатора. С одной стороны она взаимодействует с контролером, с другой - с компьютером по интерфейсу USB2.0. Операционная система подключает сборку через виртуальный COM-порт. Для Windows
нужны драйвера, в составе Linux они уже есть.
При первом подключении возникала проблема, что драйвер не хотел видеть плату, а в диспетчере устройств Windows драйвер устройства значился с кодом ошибки 10. Ставил разные версии драйверов, подключал и так, и сяк. И через родную ОСь, и через виртуалки. Ни в какую.
Проблема оказалась в проводе. Провод MicroUSB, который взял изначально, предназначен только для питания. Вообще такие вещи надо проверять сразу, но бывает, что очевидные вещи пропускаешь. Не повторяйте моих ошибок :)
Осваивать платы решил с использованием MicroPython. Пару слов о том, что для этого нужно
- Установить Python
- Установить ПО для прошивки контроллеров esptool для ESP32, для ESP8266. По сути, программка одна и та же. Для Windows еще бинарный вариант.
- Скачать прошивки MicroPython для ESP32, ESP8266. В моем случае ESP8266 шли с 4 Мб флэш-памяти, но бывают варианты на 1 и 2 Мб. В этом случае нужно брать прошивки меньшего размера. Они такие есть на сайте проекта.
- Прошить устройство в две команды:
Windows:
esptool.py --port COM3 erase_flash
esptool.py --port COM3 --baud 460800 write_flash --flash_size=detect 0 esp8266-20210902-v1.17.bin
Linux:
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20210902-v1.17.bin - Установить и запустить редактор. Я использую для этих целей Thonny. Он есть и под Windows, и под Linux.
И как же без «Hello World!» мира потребительских контроллеров - помигать встроенным светодиодом.
from machine import Pin
from time import sleep
def blinkTact(controlled_LED):
for n in range(1, 35):
controlled_LED.value(not controlled_LED.value())
sleep(0.05 + 0.01 * (35 - n))
LED = Pin(2, Pin.OUT)
while True:
LED.value(1)
sleep(2)
blinkTact(LED)