Рассматриваются процесс установки и тестовой проверки MicroPython на плате с микроконтроллером ESP фирмы Espressif.
Для загрузки MicroPython в микроконтроллер ESP можно воспользоваться IDE Thonny с графическим интерфейсом или консольной утилитой esptool написанной на Python.
sudo apt install esptool
Лист. 1. Установка утилиты esptool.
Утилита esptool позволяет проанализировать аппаратную часть плат с микроконтроллерами ESP.
esptool chip_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:04:8d:2d
Enabling default SPI flash mode...
Chip ID: 0x00048d2d
Hard resetting via RTS pin...
Лист. 2. Вывод информации о микроконтроллере ESP с помощью утилиты esptool.
esptool flash_id
esptool.py v2.8
Found 1 serial ports
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:04:8d:2d
Enabling default SPI flash mode...
Manufacturer: 20
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
Лист. 3. Вывод информации о Flash памяти, установленной на плате с микроконтроллером ESP, с помощью утилиты esptool.
Основное предназначение утилиты esptool — связь с загрузчиком ROM микроконтроллеров фирмы Espressif, чтение, запись, стирание и проверка двоичных данных, хранящихся во Flash-памяти.
esptool.py --port /dev/ttyUSB0 erase_flash
esptool.py v4.5.1
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:04:8d:2d
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.9s
Hard resetting via RTS pin...
Лист. 4. Очистка Flash памяти, установленной на плате с микроконтроллером ESP, с помощью утилиты esptool.
С официального сайта MicroPython micropython.org/download/esp8266/ скачайте микропрограмму (двоичный bin файл) MicroPython и загрузите его в Flash память, установленную на плате с микроконтроллером ESP, с помощью утилиты esptool.
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20230426-v1.20.0.bin
esptool.py v4.5.1
Serial port /dev/ttyUSB0
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: ec:fa:bc:04:8d:2d
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x0009afff...
Flash params set to 0x0040
Compressed 634016 bytes to 420365...
Wrote 634016 bytes (420365 compressed) at 0x00000000 in 9.6 seconds (effective 530.6 kbit/s)...
Hash of data verified.
Leaving...
Hard resetting via RTS pin...
Лист. 5. Процесс установки MicroPython на плату с микроконтроллером ESP, с помощью утилиты esptool.
Теперь, когда у нас есть прошивка на устройстве, мы можем получить доступ к REPL (командная строка Python).
REPL расшифровывается как Read Evaluate Print Loop и обозначает интерактивный, диалоговый режим взаимодействия с MicroPython. Использование REPL — это самый простой способ протестировать код и выполнить команды.
Есть два способа получить доступ к REPL: через проводное соединение через последовательный порт UART, или через WiFi.
REPL всегда доступен на последовательном периферийном устройстве UART0, которое подключено к контактам GPIO1 для TX и GPIO3 для RX. Скорость REPL составляет 115200 бод. Если на вашей плате есть USB-UART микросхема, вы сможете получить доступ к REPL непосредственно с вашего ПК. В противном случае вам понадобится способ связи с UART.
Чтобы получить доступ к подсказке REPL через USB или последовательный порт, вам необходимо использовать программу-эмулятор терминала. В Windows это TeraTerm, на Mac можно использовать встроенную утилиту screen, а в Linux есть picocom и minicom и много других терминальных программ.
sudo apt install picocom
Лист. 6. Установка picocom.
Запустите терминал последовательного порта.
picocom /dev/ttyUSB0 -b115200
picocom v3.1
port is : /dev/ttyUSB0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : none
initstring : none
exit_after is : not set
exit is : no
Type [C-a] [C-h] to see available commands
Terminal ready
>>>
Лист. 7. Терминал, запущенный на компьютере.
На листинге 7 параметр /dev/ttyUSB0 путь к виртуальному файлу примонтированного к Linux системе USB/UART устройства установленного на плате с ESP микроконтроллером.
После того, как вы установили соединение через последовательный порт, вы можете проверить, работает ли оно, нажав Enter несколько раз. Вы должны увидеть приглашение Python REPL, обозначенное как >>>.
Как только у вас появится подсказка, вы можете начать экспериментировать! Все, что вы вводите в командной строке, будет выполнено после нажатия клавиши Enter. MicroPython запустит введенный вами код и распечатает результат (если он есть). Так же, выводятся сообщения об ошибках.
>>> pin = machine.Pin(2, machine.Pin.OUT)
>>> pin.off()
>>> pin.on()
>>> pin.off()
Лист. 8.
REPL запоминает определенное количество ранее введенных вами команд (до 8 на ESP8266). Чтобы вызвать предыдущие строки, используйте клавиши со стрелками вверх и вниз.
Нажатие клавиши Tab приведет к автозавершению текущего слова, которое вы вводите. Это может быть очень полезно, чтобы узнать функции и методы, которые есть у модуля или объекта. Попробуйте, набрав «ma», затем нажать Tab. Ввод должен завершиться как «machine». Затем введите «.» и снова нажмите Tab, чтобы увидеть список всех методов, модуля machine.
Лист. 9. Пример использования клавиши Tab.
Составные операторы в Python, как правило, после двоеточия требуют дополнительные стоки кода с отступом перед ними. В этом случае подсказка изменится на ... и курсор автоматически установит правильный отступ.
Для завершения ввода тела составного оператора, необходимо нажать клавишу Enter три раза подряд. Другой способ закончить составной оператор — нажать клавишу Backspace, чтобы перейти к началу строки, а затем нажать клавишу Enter.
Лист. 10. Пример использования составного оператора Python в REPL.
Если вы сделали что-то не так и хотите выйти из режима продолжения, нажмите ctrl-C; все строки будут проигнорированы.
Литература:
dzfd docs.micropython.org/en/latest/esp8266 fyjfy