Заливаем Micropython на Wi-Fi (Troyka-модуль) с Raspberry Pi

Тема в разделе "Глядите, что я сделал", создана пользователем Walker2000, 17 дек 2018.

  1. Walker2000

    Walker2000 Нерд

    Всем привет.

    Валялся Wi-Fi (Troyka-модуль) без дела, тот, что с esp8266 на борту. Решил на него залить Micropython для экспериментов с датчиками. Переходника с TTL UART на USB под рукой не было, для перепрошивки модуля использовал Raspberry.

    [​IMG]

    Дело, казалось бы, нескольких минут, ан нет. Найденная в Интернет заветная строка утилиты esptool не сработала. Прошивка заливалась, но не запускалась. Провозился несколько часов в попытках разобраться. На всякий случай решил положить алгоритм решения проблемы здесь, может сэкономит время кому...

    1. Включаем UART на Raspberry из под терминала (подключен putty через ssh):
    Код (Python):
    sudo raspi-config
    В меню выбираем "5 Interfacing Options" -> "P6 Serial" -> "Would you like a login shell to be accessible serial?" -> "No" -> "Would you like the serial port hardware to be enabled?" -> "Yes". На заключительном экране должно быть так:

    [​IMG]

    2. Ставим esptool:
    Код (Python):
    sudo pip3 install esptool
    3. Скачиваем в рабочий каталог (например, "esp8266") прошивку Micropyhon c официального сайта нужную версию прошивки (на момента написания этой заметки была "esp8266-20180511-v1.9.4.bin".

    4. Подключаем Wi-Fi (Troyka-модуль) к Raspberry (V модуля к 3,3В Raspberry, G - к GND, TX модуля к Rx Raspberry, RX модуля к Tx, вывод P модуля можно не подключать).

    5. Переводим модуль в режим записи. Нажимаем и держим кнопку "PROG", нажимаем "RESET", отпускаем "PROG".

    6. Стираем содержимое flash памяти модуля:
    Код (Python):
    esptool.py --port /dev/serial0 erase_flash
    7. Снова переводим модуль в режим записи, записываем прошивку с Микропитоном:
    Код (Python):
    esptool.py --port /dev/serial0 --baud 115200 write_flash -fm dio -ff 40m -fs 4MB 0x00000 esp8266-20180511-v1.9.4.bin
    8. Ставим и запускаем терминал (я использовал "picocom")
    Код (Python):
    sudo apt-get install picocom
    sudo picocom -b 115200 /dev/serial0 --omap crcrlf
    9. Жмем на "RESET" модуля, видим в терминале:
    Код (Python):
    MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266
    Type "help()" for more information.
    >>>
    10. Находим в эфире WiFi сетку модуля с именем "MicroPython-XXXXXX", где XXXXXX - кусок mac-адреса нашего тройка-модуля. К этой сетке по идее можно подключиться через WebREPL (ip 192.168.4.1, пароль "micropythoN").

    Чтобы выйти из picocom жмём Ctrl+Q.

    При сбросе модуля при работающем терминале у меня сыплется разный мусор вот такого вида:
    Код (Python):
    |▒s{s▒oě܀▒▒▒▒▒▒@b▒Ƈ䌜DŽb▒▒l▒▒▒▒䄜▒l▒܈ı▒▒▒l`▒▒
    ▒▒▒▒▒   n▒#4 ets_task(40100130, 3, 3fff83ec, 4)
    OSError: [Errno 2] ENOENT

    MicroPython v1.9.4-8-ga9a3caad0 on 2018-05-11; ESP module with ESP8266
    Type "help()" for more information.
    >>>
    Скорее всего UART Raspberry шлет какую-то информацию в порт. При большом желании можно отключить через конфигурационные файлы. Решение проблемы гуглится в Интернетах.

    На сим всё. Всем удачных экспериментов.
     

    Вложения:

    Последнее редактирование: 18 дек 2018
    IvanUA нравится это.