MicroPython: Programowanie ESP32 i ESP8266 przez WiFi. WebREPL, flash

Źródło: https://youtu.be/10Y89xaVkqw
oraz OwocowaAda: Access WebREPL

Wgrywanie flash do ESP8266 i ESP32

  • Otwieramy TERMINAL (MacOS)
  • Jeśli nie mamy zainstalowanego esptool instalujemy:
    • sudo easy_install esptool
  • Podłączamy płytkę kablem do portu USB
  • Sprawdzamy na jakim porcie się zameldowała:
    • ls /dev/cu.*
    • u mnie dla ESP8266 wyświetlił się adres: /dev/cu.usbserial-2231140
      U was na pewno będzie inny
  • Skoro mamy dostęp możemy na płytce wymazać istniejący flash:
    • esptool.py --port /dev/cu.usbserial-2231140 erase_flash
      pamiętamy o zmianie portu
  • Następnie ładujemy flash z obowiązującą dla płytki wersją Micropython: https://micropython.org/download/esp8266/
    Żeby nie wpisywać kilometrowego adresu zmieniamy katalog na ten w którym przechowujemy flash. U mnie:
    • cd /Users/minimj/Documents/Arduino/VSC_MicroPython/_ADDS/flash
  • Teraz możemy załadować nowy flash. U mnie dla ESP8266:
    • esptool.py --port /dev/cu.usbserial-2231140 --baud 460800 write_flash --flash_size=detect 0 esp8266-20220618-v1.19.1.bin
  • Dla ESP32 dodatkowe informacje tu:

Najnowszy flash 1.21.0 dla esp8266 na moim komputerze, TERMINAL macOS, ściąga:

ls /dev/cu.*
esptool.py --port [PORT] erase_flash 
cd /Users/minimj/Documents/Arduino/VSC_MicroPython/_ADDS/flash_MP
esptool.py --port [PORT] --baud 460800 write_flash --flash_size=detect 0 ESP8266_GENERIC-20231005-v1.21.0.bin

Instalowanie WebREPL dla ESP8266

  • Otwieramy panel WiFi w komputerze i znajdujemy sieć naszego ESP8266. U mnie wygląda tak:
    • MicroPython-f809c3
    • Logujemy się do sieci. Hasło to: micropythoN
  • Pobieramy folder WebREPL z github-a:
    • git clone https://github.com/micropython/webrepl.git
  • Wchodzimy do katalogu webrepl (cd webrepl)i uruchamiamy plik webrepl.html
    • open webrepl.html
  • W przeglądarce otworzy się zakładka z oknem:
  • Jeśli nie ma adresu należy wpisać: ws://192.168.4.1:8266/
  • Teraz po wciśnięciu przycisku Connect powinniśmy się połączyć z urządzeniem. Jeśli się nie udaje należy wrócić do TERMINAL-a i wpisać komendę:
    • screen /dev/cu.usbserial-2231140 115200
      /oczywiście podmieniamy kanał usb na własny/
  • Powinno się otworzyć okno z informacją:
    • MicroPython v1.19.1 on 2022-06-18; ESP module with ESP8266
      jeśli nie, warto zresetować moduł. Jesteśmy wewnątrz płytki, możemy pisać program
  • Wpisujemy linijkę:
    • import webrepl_setup
zrzut z okna przeglądarki
rys. procedura webrepl_setup
  • Wpisujemy nowe hasło, potwierdzamy, dostajemy info:
    • Changes will be activated after reboot
      Would you like to reboot now? (y/n)
  • Oczywiście wpisujemy y
  • Teraz jeśli wrócimy do przeglądarki i przyciśniemy Connect w oknie programu pojawi się:
    • Welcome to MicroPython!    
      Password: 
  • Wpisujemy nowe hasło i dostajemy informację: WebREPL connected. To oznacza, że jeśli odłączymy płytkę od komputera, to nadal będzie do niej dostęp przez WiFi i WebREPL

WebREPL dla ESP32

Tu już nie jest tak prosto jak dla ESP8266. Lepiej posłużyć się edytorem Thonny.
Thonny to całkiem sprytne narzędzie dzięki któremu możemy wgrać do płytki flash, łączyć się z nią przez port USB jak i korzystając z WebREPL. Jedna ważna różnica jest taka, że zanim uruchomimy WebREPL musimy do pliku boot.py wpisać następujący kod:

import webrepl
import credentials

def connect():
    import network
    sta_if = network.WLAN(network.STA_IF)
    if not sta_if.isconnected():
        print('connecting to network...')
        sta_if.active(True)
        sta_if.connect(credentials.WIFI_SSID, credentials.WIFI_PASSWORD)
        while not sta_if.isconnected():
            pass
    print('network config:', sta_if.ifconfig())

def showip():
    import network
    sta_if = network.WLAN(network.STA_IF)
    print('network config:', sta_if.ifconfig())

connect()
webrepl.start()
  • Przez Thonny łączymy się z ESP32 przez USB, wpisujemy powyższy kod (pamiętamy o Ctrl+C żeby przerwać połączenie i uzyskać dostęp do płytki). Jeśli mamy już w pliku boot.py zapisane łączenie z siecią, dodajemy tylko linie: import webrepl oraz webrepl.start()
  • Teraz po >>> wpisujemy: import webrepl_setup
    • Dalej wszystko przebiega jak opisałem powyżej dla esp8266 (patrz: rys. procedura webrepl_setup)
    • Po restarcie (Ctrl+D) otrzymujemy info:
      • u mnie: WebREPL daemon started on ws://192.168.1.156:8266
        Started webrepl in normal mode
  • Teraz wystarczyłoby wpisać w konfiguracji Thonny adres oraz hasło podane przy setup-ie i wszystko powinno śmigać (pamiętamy, żeby w komputerze włączone było WiFi to samo z którym łączy się płytka). Niestety u mnie nie działa, Thonny się wywala i pozostaje mi tylko skorzystać z webrepl.html. Będę nad tym pracował, jeśli sprawdzę co jest nie tak, dam znać.

Dokumentacja: https://docs.micropython.org/en/latest/esp32/quickref.html?highlight=webrepl
GitHub: https://github.com/micropython/webrepl


LINKI:

Dodaj komentarz