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-контакты и управлять некоторыми внешними компонентами.


Что ж, приступим!
Что ж, приступим!
Строка 11: Строка 11:
==Требования==
==Требования==


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


В этом руководстве нумерация контактов будет привязана к их нумерации на чипе (например, GPIO0), поэтому вам, когда вы будете работать со своей платой, будет легко понять, какой именно контакт имеется в виду.
Минимальные требования к размеру ''flash-памяти – 1 Мб''. Есть также специальный билд для плат с ''512 Кб'', но у него очень много ограничений по сравнению с нормальным билдом: не поддерживается файловая система и поэтому функции, которые зависят от нее, работать не будут ([[WebREPL]], [[upip]] и т.д.). Следовательно, ''512 Кб'' будут более интересны пользователям, предпочитающим делать сборку из исходного кода и подстраивать параметры под свое приложение.
 
В этом руководстве нумерация контактов будет привязана к их нумерации на чипе (например, ''GPIO0''), поэтому вам, когда вы будете работать со своей платой, будет легко понять, какой именно контакт имеется в виду.


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


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


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


Во-первых, вам надо будет скачать самую последнюю версию прошивки 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 Кб'' доступны только текущие билды прошивки.


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


Теперь, когда у вас есть прошивка 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">
<syntaxhighlight lang="python" enclose="div">
Строка 47: Строка 48:
</syntaxhighlight>
</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">
<syntaxhighlight lang="python" enclose="div">
Строка 61: Строка 62:
</syntaxhighlight>
</syntaxhighlight>


Вам, возможно, надо будет поменять настройку port на что-то релевантное вашему ПК. Также, если у вас начнут появляться ошибки при записи прошивки, вам, возможно, надо будет снизить скорость передачи данных (например, до 115200 бод).  
Вам, возможно, надо будет поменять настройку ''port'' на что-то релевантное вашему [[ПК]]. Также, если у вас начнут появляться ошибки при записи прошивки, вам, возможно, надо будет снизить скорость передачи данных (например, до ''115200 бод'').  


Кроме того, название файла прошивки должно соответствовать имеющемуся у вас файлу.
Кроме того, название файла прошивки должно соответствовать имеющемуся у вас файлу.


Для некоторых плат с особой конфигурацией FlashROM (например, для некоторых плат NodeMCU) вам, возможно, надо будет воспользоваться следующей командой для установки прошивки (обратите внимание на опцию -fm dio).
Для некоторых плат с особой конфигурацией ''FlashROM'' (например, для некоторых плат [[NodeMCU]]) вам, возможно, надо будет воспользоваться следующей командой для установки прошивки (обратите внимание на опцию ''-fm dio'').


<syntaxhighlight lang="python" enclose="div">
<syntaxhighlight lang="python" enclose="div">
Строка 71: Строка 72:
</syntaxhighlight>
</syntaxhighlight>


Если команды выше запустились без ошибок, то это значит, что MicroPython успешно установлен на вашу плату!
Если команды выше запустились без ошибок, то это значит, что [[MicroPython]] успешно установлен на вашу плату!


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


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


==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]] будет рассказано ниже.


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


Если вы испытываете проблемы с установкой прошивки или с ее запуском сразу после установки, вот некоторые рекомендации по их решению:
Если вы испытываете проблемы с установкой прошивки или с ее запуском сразу после установки, вот некоторые рекомендации по их решению:
* Старайтесь избегать аппаратных проблем. Есть две распространенные проблемы: источник питания плохого качества и дефективная (возможно, износившаяся) 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">
<syntaxhighlight lang="python" enclose="div">
Строка 92: Строка 93:
</syntaxhighlight>
</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">
<syntaxhighlight lang="python" enclose="div">
Строка 102: Строка 103:
</syntaxhighlight>
</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 (о чем говорилось выше).


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

Версия от 12:04, 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 (о чем говорилось выше).

См.также

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