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

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


=См.также=
=См.также=

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

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


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

Использование порта MicroPython – это отличный способ выжать из вашей ESP8266-платы самый максимум. И наоборот, чип ESP8266 – это отличная платформа для использования MicroPython. В этом руководстве мы расскажем, как настроить MicroPython, скачать и установить командную строку, использовать WebREPL, подключиться к сети и коммуницировать с интернетом, использовать GPIO-контакты и управлять некоторыми внешними компонентами.

Что ж, приступим!

Требования

Первое, что вам нужно – это плата с чипом ESP8266. Порт MicroPython поддерживает использование самого чипа ESP8266, поэтому должна подойти любая плата, где он используется. Главная характеристика платы – это то, сколько в нее установлено flash-памяти, как GPIO-контакты подключены к «внешнему миру» и есть ли у нее встроенный преобразователь USB-Serial, чтобы через UART-порт можно было коммуницировать с ПК. Минимальные требования к размеру flash-памяти – 1 Мб. Есть также специальный билд для плат с 512 Кб, но у него очень много ограничений по сравнению с нормальным билдом: не поддерживается файловая система и поэтому функции, которые зависят от нее, работать не будут (WebREPL, upip и т.д.). Следовательно, 512 Кб будут более интересны пользователям, предпочитающим делать сборку из исходного кода и подстраивать параметры под свое приложение.

В этом руководстве нумерация контактов будет привязана к их нумерации на чипе (например, GPIO0), поэтому вам, когда вы будете работать со своей платой, будет легко понять, какой именно контакт имеется в виду.

Питание платы

Если у вашей платы есть USB-коннектор, то скорее всего она питается именно через него (будучи подключенной к компьютеру). В противном случае ее надо будет питать напрямую. Более подробно читайте в документации к вашей плате.

Загрузка прошивки

Во-первых, вам надо будет скачать самую последнюю версию прошивки MicroPython – это файл формата «*.bin», который вам затем надо будет загрузить на свою ESP8266-плату. Ее можно скачать со страницы загрузок сайта MicroPython. Там у вас будет три варианта:

  • Стабильный билд для модулей с 1024 Кб памяти и выше
  • Текущий (выпускаемый каждый день) билд для модулей с 1024 Кб памяти и выше
  • Текущий билд для модулей с 512 Кб памяти

Если вы только начали работать с MicroPython, советуем скачать стабильную прошивку. Если вы продвинутый, опытный пользователь порта MicroPython для ESP8266, которому нравится быть в курсе того, как идет разработка порта, и помогать с тестированием новых функций, то для вас есть текущие билды (примечание: вам также, возможно, понадобится некоторый опыт в разработке – например, нужно быть готовым следить за git-историей разработки проекта, чтобы знать какие изменения были внесены и какие новые функции появились).

Поддержка модулей с 512 Кб памяти осуществляется по принципу «превью функций». Конечным пользователям рекомендуется использовать модули с flash-памятью 1024 Кб и больше. Поэтому для модулей с 512 Кб доступны только текущие билды прошивки.

Установка прошивки

Теперь, когда у вас есть прошивка 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 успешно установлен на вашу плату!

Командная строка

Теперь, когда прошивка установлена, вы можете получить доступ к REPL (командной строке Python) через порт UART0 (GPIO1=TX, GPIO3=RX), который может быть подключен к преобразователю USB-Serial (зависит от вашей платы). Скорость передачи данных – 115200 бод. В следующем разделе мы расскажем о командной строке более подробно.

WiFi

После установки прошивки и загрузки ваша плата настроит себя как точку доступа WiFi, к которой можно будет подключиться. ESSID платы будет иметь вид «MicroPython-xxxxxx», где иксы будут заменены на часть MAC-адреса вашего устройства (поэтому он всегда будет одинаковым и скорее всего будет отличаться от ESSID других ESP8266-чипов). Пароль к WiFi – «micropythoN» (обратите внимание на заглавную «N» в конце). Когда вы подключитесь к сети, IP-адресом платы будет «192.168.4.1». Более подробно о WiFi будет рассказано ниже.

Решение проблем с установкой

Если вы испытываете проблемы с установкой прошивки или с ее запуском сразу после установки, вот некоторые рекомендации по их решению:

  • Старайтесь избегать аппаратных проблем. Есть две распространенные проблемы: источник питания плохого качества и дефективная (возможно, износившаяся) 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 (о чем говорилось выше).

См.также

Внешние ссылки