MicroPython:Платы/ESP8266/Руководство по MicroPython для ESP8266/Подготовка к работе с MicroPython для ESP8266: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{MicroPython/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} <syntaxhighlight lang="python" line="GESHI_NORMAL_...»)
 
Нет описания правки
Строка 2: Строка 2:
{{Перевод от Сubewriter}}
{{Перевод от Сubewriter}}
{{Myagkij-редактор}}
{{Myagkij-редактор}}
=Подготовка к работе с MicroPython для ESP8266<ref>[http://docs.micropython.org/en/latest/esp8266/tutorial/intro.html docs.micropython.org - Getting started with MicroPython on the ESP8266]</ref>=
Использование порта MicroPython – это отличный способ выжать из вашей ESP8266-платы самый максимум. И наоборот, чип ESP8266 – это отличная платформа для использования MicroPython. В этом руководстве мы расскажем, как настроить MicroPython, скачать и установить командную строку, использовать WebREPL, подключиться к сети и коммуницировать с интернетом, использовать GPIO-контакты и управлять некоторыми внешними компонентами.
Что ж, приступим!
1.1. Требования
Первое, что вам нужно – это плата с чипом ESP8266. Порт MicroPython поддерживает использование самого чипа ESP8266, поэтому должна подойти любая плата, где он используется. Главная характеристика платы – это то, сколько в нее установлено flash-памяти, как GPIO-контакты подключены к «внешнему миру» и есть ли у нее встроенный преобразователь USB-Serial, чтобы через UART-порт можно было коммуницировать с ПК.
Минимальные требования к размеру flash-памяти – 1 Мб. Есть также специальный билд для плат с 512 Кб, но у него очень много ограничений по сравнению с нормальным билдом: не поддерживается файловая система и поэтому функции, которые зависят от нее, работать не будут (WebREPL, upip и т.д.). Следовательно, 512 Кб будут более интересны пользователям, предпочитающим делать сборку из исходного кода и подстраивать параметры под свое приложение.
В этом руководстве нумерация контактов будет привязана к их нумерации на чипе (например, GPIO0), поэтому вам, когда вы будете работать со своей платой, будет легко понять, какой именно контакт имеется в виду.
1.2. Питание платы
Если у вашей платы есть USB-коннектор, то скорее всего она питается именно через него (будучи подключенной к компьютеру). В противном случае ее надо будет питать напрямую. Более подробно читайте в документации к вашей плате.
1.3. Загрузка прошивки
Во-первых, вам надо будет скачать самую последнюю версию прошивки MicroPython – это файл формата «*.bin», который вам затем надо будет загрузить на свою ESP8266-плату. Ее можно скачать со [http://micropython.org/download/#esp8266 страницы загрузок сайта MicroPython]. Там  у вас будет три варианта:
• Стабильный билд для модулей с 1024 Кб памяти и выше
• Текущий (выпускаемый каждый день) билд для модулей с 1024 Кб памяти и выше
• Текущий билд для модулей с 512 Кб памяти
Если вы только начали работать с MicroPython, советуем скачать стабильную прошивку. Если вы продвинутый, опытный пользователь порта MicroPython для ESP8266, которому нравится быть в курсе того, как идет разработка порта, и помогать с тестированием новых функций, то для вас есть текущие билды (примечание: вам также, возможно, понадобится некоторый опыт в разработке – например, нужно быть готовым следить за git-историей разработки проекта, чтобы знать какие изменения были внесены и какие новые функции появились).
Поддержка модулей с 512 Кб памяти осуществляется по принципу «превью функций». Конечным пользователям рекомендуется использовать модули с flash-памятью 1024 Кб и больше. Поэтому для модулей с 512 Кб доступны только текущие билды прошивки.
1.4. Установка прошивки
Теперь, когда у вас есть прошивка MicroPython (скомпилированный код), нужно загрузить ее на вашу ESP8266-плату. Это делается в два шага: во-первых, вам надо перевести устройство в режим загрузчика, и во-вторых, скопировать прошивку. То, как именно выполнять эти шаги, сильно зависит от модели платы, так что советуем по этому вопросу свериться с документацией.
Если у вашей платы есть USB-коннектор и преобразователь USB-Serial, а контакты DTR и RTS подключены так, как нужно, то загрузка прошивки будет выполняться легко и просто, т.к. все эти шаги будут выполняться автоматически. К таким платам можно причислить, к примеру, Adafruit Feather HUZZAH и платы NodeMCU.
Чтобы получить наилучший результат, рекомендуем сначала стереть всю flash-память на вашем устройстве, а уже затем устанавливать на него новую прошивку MicroPython.
В данный момент для копирования прошивки поддерживается только esptool.py. Вы можете либо скачать этот инструмент [https://github.com/espressif/esptool/ отсюда], либо установить его с помощью pip:
pip install esptool
Версии начиная с 1.3 поддерживают и Python 2.7, и Python 3.4 (или новее). Более ранние версии (нужна как минимум версия 1.2.1) работают нормально, но требуют Python 2.7.
При помощи esptool.py можно стереть flash-память. Это делается с помощью команды:
esptool.py --port /dev/ttyUSB0 erase_flash
Установка новой прошивки выполняется следующей командой:
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170108-v1.8.7.bin
Вам, возможно, надо будет поменять настройку port на что-то релевантное вашему ПК. Также, если у вас начнут появляться ошибки при записи прошивки, вам, возможно, надо будет снизить скорость передачи данных (например, до 115200 бод). Кроме того, название файла прошивки должно соответствовать имеющемуся у вас файлу.
Для некоторых плат с особой конфигурацией FlashROM (например, для некоторых плат NodeMCU) вам, возможно, надо будет воспользоваться следующей командой для установки прошивки (обратите внимание на опцию -fm dio).
esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170108-v1.8.7.bin
Если команды выше запустились без ошибок, то это значит, что MicroPython успешно установлен на вашу плату!
1.5. Командная строка
Теперь, когда прошивка установлена, вы можете получить доступ к REPL (командной строке Python) через порт UART0 (GPIO1=TX, GPIO3=RX), который может быть подключен к преобразователю USB-Serial (зависит от вашей платы). Скорость передачи данных – 115200 бод. В следующем разделе мы расскажем о командной строке более подробно.
1.6. WiFi
После установки прошивки и загрузки ваша плата настроит себя как точку доступа WiFi, к которой можно будет подключиться. ESSID платы будет иметь вид «MicroPython-xxxxxx», где иксы будут заменены на часть MAC-адреса вашего устройства (поэтому он всегда будет одинаковым и скорее всего будет отличаться от ESSID других ESP8266-чипов). Пароль к WiFi – «micropythoN» (обратите внимание на заглавную «N» в конце). Когда вы подключитесь к сети, IP-адресом платы будет «192.168.4.1». Более подробно о WiFi будет рассказано ниже.
1.7. Решение проблем с установкой
Если вы испытываете проблемы с установкой прошивки или с ее запуском сразу после установки, вот некоторые рекомендации по их решению:
• Старайтесь избегать аппаратных проблем. Есть две распространенные проблемы: источник питания плохого качества и дефективная (возможно, износившаяся) FlashROM. Что касается источника питания, то важен не только ампераж, но и то, насколько низок общий уровень электромагнитных помех. Если у вас проблемы с самодельным или бытовым розеточным источником питания, попробуйте запитать плату через USB-порт ПК. Также проблемы могут возникнуть из-за незаземленного источника электроэнергии, т.к. он (и это в лучшем случае) генерирует повышенные электромагнитные помехи и даже может привести плату в негодность. Поэтому советуем избегать использования незаземленных источников питания при работе с ESP8266 и другими платами. Что касается аппаратных проблем с FlashROM, согласно некоторым независимым (никак не связанным с MicroPython) источникам (например, [https://internetofhomethings.com/homethings/?p=538 вот]), на некоторых ESP8266-модулях FlashROM можно программировать лишь не более 20 раз, после чего начинают появляться ошибки. Это гораздо меньше 100 тысяч циклов программирования FlashROM-чипов, которые устанавливают в свои ESP8266 надежные производители, что говорит либо о производственном браке, либо об изношенных б/у чипах, устанавливаемых в некоторые (по всей вероятности, дешевые) модули/платы. Поэтому советуем максимально ответственно подходить к покупке модулей/плат, обращая особое внимание на такие характеристики как цена, производитель, документация, гарантия и послепродажное обслуживание.
• Выше в разделе 1.4 подразумевается, что запись прошивки делается при 460800 бод – это хороший компромисс между скоростью и стабильностью. Однако, в зависимости от модуля/платы, преобразователя USB-UART, кабелей, ОС и т.д. эта скорость передачи данных может оказаться слишком высокой, что может привести к ошибкам. В таком случае попробуйте более часто используемую скорость 115200 бод.
• Если понижение скорости не помогло, можно попробовать более раннюю версию esptool.py (у нее другой алгоритм программирования):
pip install esptool==1.0.1
Эта версия не поддерживает опцию --flash_size=detect, поэтому размер FlashROM нужно будет указать явно (в мегабитах). Ей также потребуется Python 2.7, поэтому в команде выше, возможно, надо будет вписать pip2 вместо pip.
• В команде выше должна обязательно присутствовать опция --flash_size. Если ее не вписать, прошивка получится поврежденной.
• Чтобы определить некорректный контент на flash-памяти (например, данные, находящиеся в дефектной части чипа), добавьте в команды выше опцию --verify.
• Кроме того, вы можете проверить целостность прошивки из командной строки MicroPython REPL (с условием, если вам удалось ее записать, и опция --verify не выдала никаких ошибок).
import esp
esp.check_fw()
Если крайним значением, которое вернул этот метод, является «true», значит с прошивкой все в порядке. В противном случае она повреждена и ее надо будет корректно перезаписать.
• Если у вас проблемы с другим инструментом для записи прошивки (не esptool.py), попробуйте esptool.py. Это общепринятое в сообществе ESP8266 приложение для записи прошивки.
• Если у вас по-прежнему проблемы даже с записью прошивки, зайдите на [https://github.com/espressif/esptool страницу проекта esptool.by на GitHub] – там вы найдете дополнительную документацию и сможете сообщить о своем баге.
• Если вы смогли записать прошивку, но опция --verify или метод esp.check_fw() возвращают ошибки даже после нескольких повторных попыток, то вам, возможно, попался дефектный чип FlashROM (о чем говорилось выше).


<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"  
<syntaxhighlight lang="python" line="GESHI_NORMAL_LINE_NUMBERS|GESHI_FANCY_LINE_NUMBERS"  

Версия от 11:34, 1 июля 2020

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Подготовка к работе с MicroPython для ESP8266[1]

Использование порта MicroPython – это отличный способ выжать из вашей ESP8266-платы самый максимум. И наоборот, чип ESP8266 – это отличная платформа для использования MicroPython. В этом руководстве мы расскажем, как настроить MicroPython, скачать и установить командную строку, использовать WebREPL, подключиться к сети и коммуницировать с интернетом, использовать GPIO-контакты и управлять некоторыми внешними компонентами. Что ж, приступим! 1.1. Требования Первое, что вам нужно – это плата с чипом ESP8266. Порт MicroPython поддерживает использование самого чипа ESP8266, поэтому должна подойти любая плата, где он используется. Главная характеристика платы – это то, сколько в нее установлено flash-памяти, как GPIO-контакты подключены к «внешнему миру» и есть ли у нее встроенный преобразователь USB-Serial, чтобы через UART-порт можно было коммуницировать с ПК. Минимальные требования к размеру flash-памяти – 1 Мб. Есть также специальный билд для плат с 512 Кб, но у него очень много ограничений по сравнению с нормальным билдом: не поддерживается файловая система и поэтому функции, которые зависят от нее, работать не будут (WebREPL, upip и т.д.). Следовательно, 512 Кб будут более интересны пользователям, предпочитающим делать сборку из исходного кода и подстраивать параметры под свое приложение. В этом руководстве нумерация контактов будет привязана к их нумерации на чипе (например, GPIO0), поэтому вам, когда вы будете работать со своей платой, будет легко понять, какой именно контакт имеется в виду. 1.2. Питание платы Если у вашей платы есть USB-коннектор, то скорее всего она питается именно через него (будучи подключенной к компьютеру). В противном случае ее надо будет питать напрямую. Более подробно читайте в документации к вашей плате. 1.3. Загрузка прошивки Во-первых, вам надо будет скачать самую последнюю версию прошивки MicroPython – это файл формата «*.bin», который вам затем надо будет загрузить на свою ESP8266-плату. Ее можно скачать со страницы загрузок сайта MicroPython. Там у вас будет три варианта: • Стабильный билд для модулей с 1024 Кб памяти и выше • Текущий (выпускаемый каждый день) билд для модулей с 1024 Кб памяти и выше • Текущий билд для модулей с 512 Кб памяти Если вы только начали работать с MicroPython, советуем скачать стабильную прошивку. Если вы продвинутый, опытный пользователь порта MicroPython для ESP8266, которому нравится быть в курсе того, как идет разработка порта, и помогать с тестированием новых функций, то для вас есть текущие билды (примечание: вам также, возможно, понадобится некоторый опыт в разработке – например, нужно быть готовым следить за git-историей разработки проекта, чтобы знать какие изменения были внесены и какие новые функции появились). Поддержка модулей с 512 Кб памяти осуществляется по принципу «превью функций». Конечным пользователям рекомендуется использовать модули с flash-памятью 1024 Кб и больше. Поэтому для модулей с 512 Кб доступны только текущие билды прошивки. 1.4. Установка прошивки Теперь, когда у вас есть прошивка MicroPython (скомпилированный код), нужно загрузить ее на вашу ESP8266-плату. Это делается в два шага: во-первых, вам надо перевести устройство в режим загрузчика, и во-вторых, скопировать прошивку. То, как именно выполнять эти шаги, сильно зависит от модели платы, так что советуем по этому вопросу свериться с документацией. Если у вашей платы есть USB-коннектор и преобразователь USB-Serial, а контакты DTR и RTS подключены так, как нужно, то загрузка прошивки будет выполняться легко и просто, т.к. все эти шаги будут выполняться автоматически. К таким платам можно причислить, к примеру, Adafruit Feather HUZZAH и платы NodeMCU. Чтобы получить наилучший результат, рекомендуем сначала стереть всю flash-память на вашем устройстве, а уже затем устанавливать на него новую прошивку MicroPython. В данный момент для копирования прошивки поддерживается только esptool.py. Вы можете либо скачать этот инструмент отсюда, либо установить его с помощью pip: pip install esptool Версии начиная с 1.3 поддерживают и Python 2.7, и Python 3.4 (или новее). Более ранние версии (нужна как минимум версия 1.2.1) работают нормально, но требуют Python 2.7. При помощи esptool.py можно стереть flash-память. Это делается с помощью команды: esptool.py --port /dev/ttyUSB0 erase_flash Установка новой прошивки выполняется следующей командой: esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 esp8266-20170108-v1.8.7.bin Вам, возможно, надо будет поменять настройку port на что-то релевантное вашему ПК. Также, если у вас начнут появляться ошибки при записи прошивки, вам, возможно, надо будет снизить скорость передачи данных (например, до 115200 бод). Кроме того, название файла прошивки должно соответствовать имеющемуся у вас файлу. Для некоторых плат с особой конфигурацией FlashROM (например, для некоторых плат NodeMCU) вам, возможно, надо будет воспользоваться следующей командой для установки прошивки (обратите внимание на опцию -fm dio). esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170108-v1.8.7.bin Если команды выше запустились без ошибок, то это значит, что MicroPython успешно установлен на вашу плату! 1.5. Командная строка Теперь, когда прошивка установлена, вы можете получить доступ к REPL (командной строке Python) через порт UART0 (GPIO1=TX, GPIO3=RX), который может быть подключен к преобразователю USB-Serial (зависит от вашей платы). Скорость передачи данных – 115200 бод. В следующем разделе мы расскажем о командной строке более подробно. 1.6. WiFi После установки прошивки и загрузки ваша плата настроит себя как точку доступа WiFi, к которой можно будет подключиться. ESSID платы будет иметь вид «MicroPython-xxxxxx», где иксы будут заменены на часть MAC-адреса вашего устройства (поэтому он всегда будет одинаковым и скорее всего будет отличаться от ESSID других ESP8266-чипов). Пароль к WiFi – «micropythoN» (обратите внимание на заглавную «N» в конце). Когда вы подключитесь к сети, IP-адресом платы будет «192.168.4.1». Более подробно о WiFi будет рассказано ниже. 1.7. Решение проблем с установкой Если вы испытываете проблемы с установкой прошивки или с ее запуском сразу после установки, вот некоторые рекомендации по их решению: • Старайтесь избегать аппаратных проблем. Есть две распространенные проблемы: источник питания плохого качества и дефективная (возможно, износившаяся) FlashROM. Что касается источника питания, то важен не только ампераж, но и то, насколько низок общий уровень электромагнитных помех. Если у вас проблемы с самодельным или бытовым розеточным источником питания, попробуйте запитать плату через USB-порт ПК. Также проблемы могут возникнуть из-за незаземленного источника электроэнергии, т.к. он (и это в лучшем случае) генерирует повышенные электромагнитные помехи и даже может привести плату в негодность. Поэтому советуем избегать использования незаземленных источников питания при работе с ESP8266 и другими платами. Что касается аппаратных проблем с FlashROM, согласно некоторым независимым (никак не связанным с MicroPython) источникам (например, вот), на некоторых ESP8266-модулях FlashROM можно программировать лишь не более 20 раз, после чего начинают появляться ошибки. Это гораздо меньше 100 тысяч циклов программирования FlashROM-чипов, которые устанавливают в свои ESP8266 надежные производители, что говорит либо о производственном браке, либо об изношенных б/у чипах, устанавливаемых в некоторые (по всей вероятности, дешевые) модули/платы. Поэтому советуем максимально ответственно подходить к покупке модулей/плат, обращая особое внимание на такие характеристики как цена, производитель, документация, гарантия и послепродажное обслуживание. • Выше в разделе 1.4 подразумевается, что запись прошивки делается при 460800 бод – это хороший компромисс между скоростью и стабильностью. Однако, в зависимости от модуля/платы, преобразователя USB-UART, кабелей, ОС и т.д. эта скорость передачи данных может оказаться слишком высокой, что может привести к ошибкам. В таком случае попробуйте более часто используемую скорость 115200 бод. • Если понижение скорости не помогло, можно попробовать более раннюю версию esptool.py (у нее другой алгоритм программирования): pip install esptool==1.0.1 Эта версия не поддерживает опцию --flash_size=detect, поэтому размер FlashROM нужно будет указать явно (в мегабитах). Ей также потребуется Python 2.7, поэтому в команде выше, возможно, надо будет вписать pip2 вместо pip. • В команде выше должна обязательно присутствовать опция --flash_size. Если ее не вписать, прошивка получится поврежденной. • Чтобы определить некорректный контент на flash-памяти (например, данные, находящиеся в дефектной части чипа), добавьте в команды выше опцию --verify. • Кроме того, вы можете проверить целостность прошивки из командной строки MicroPython REPL (с условием, если вам удалось ее записать, и опция --verify не выдала никаких ошибок). import esp esp.check_fw() Если крайним значением, которое вернул этот метод, является «true», значит с прошивкой все в порядке. В противном случае она повреждена и ее надо будет корректно перезаписать. • Если у вас проблемы с другим инструментом для записи прошивки (не esptool.py), попробуйте esptool.py. Это общепринятое в сообществе ESP8266 приложение для записи прошивки. • Если у вас по-прежнему проблемы даже с записью прошивки, зайдите на страницу проекта esptool.by на GitHub – там вы найдете дополнительную документацию и сможете сообщить о своем баге. • Если вы смогли записать прошивку, но опция --verify или метод esp.check_fw() возвращают ошибки даже после нескольких повторных попыток, то вам, возможно, попался дефектный чип FlashROM (о чем говорилось выше).