Installez micropython sur ESP8266 et travaillez avec lui sous Linux (pour les débutants)

Bonjour, Habr!

C'est ma première expérience avec les microcontrôleurs en général, et l'ESP8266 (sous la forme de Nodemcu v2) en particulier. Peut-être que pour quelqu'un cette expérience sera utile.

Pourquoi exactement micropython? La réponse est simple - ma modeste expérience de programmation se limite à Pascal à l'université et à l'écriture de scripts de configuration pour Procera en Python, il s'est donc avéré être le plus proche. Les exemples seront pour Linux (ubuntu 18.04), mais, je crois, il n'y aura pas de différence fondamentale dans les autres distributions Linux.

Entraînement:


Nous mettons python3, pip et picocom, s'ils ne sont pas déjà installés:

sudo apt install python3 python3-pip picocom

Vérification de la version python:

python --version
Python 3.6.9

Si python version 2.7, passez à 3:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10
update-alternatives: using /usr/bin/python3 to provide /usr/bin/python (python) in auto mode

Nous mettons à jour pip et vérifions la version:

sudo pip3 install --upgrade pip
pip --version
pip 20.0.2 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)
pip3 --version
pip 20.0.2 from /usr/local/lib/python3.6/dist-packages/pip (python 3.6)

Nous installons une version plus récente d'esptool 2.8 à partir de pip (puisque la version 2.1 du référentiel ubuntu donne l'erreur "Une erreur fatale s'est produite: la ROM ESP8266 ne prend pas en charge la fonction erase_flash." Pendant le firmware):

pip3 install esptool

Téléchargez le firmware ici . J'ai utilisé la version stable 1.12 .

Deux options sont possibles:

  • 1. Sunrise manuellement (en utilisant le terminal et REPL):


    Nous effaçons le flash sur ESP8266:

    esptool.py --port /dev/ttyUSB0 erase_flash

    Sortie de commande:

    esptool.py v2.8
    Serial port /dev/ttyUSB0
    Connecting....
    Detecting chip type... ESP8266
    Chip is ESP8266EX
    Features: WiFi
    Crystal is 26MHz
    MAC: c8:2b:96:00:63:35
    Uploading stub...
    Running stub...
    Stub running...
    Erasing flash (this may take a while)...
    Chip erase completed successfully in 9.5s
    Hard resetting via RTS pin...

    Remplissez le firmware:

    esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 Downloads/esp8266-20191220-v1.12.bin

    Sortie de commande:

    esptool.py v2.8
    Serial port /dev/ttyUSB0
    Connecting....
    Detecting chip type... ESP8266
    Chip is ESP8266EX
    Features: WiFi
    Crystal is 26MHz
    MAC: c8:2b:96:00:63:35
    Uploading stub...
    Running stub...
    Stub running...
    Changing baud rate to 460800
    Changed.
    Configuring flash size...
    Auto-detected Flash size: 4MB
    Flash params set to 0x0040
    Compressed 619828 bytes to 404070...
    Wrote 619828 bytes (404070 compressed) at 0x00000000 in 9.1 seconds (effective 543.8 kbit/s)...
    Hash of data verified.
    Leaving...
    Hard resetting via RTS pin...

    Et, si vous le souhaitez, vérifiez l'exactitude de la somme de contrôle:

    esptool.py --port /dev/ttyUSB0 --baud 460800 verify_flash --flash_size=detect 0 Downloads/esp8266-20191220-v1.12.bin

    Après cela, nous essayons de nous connecter à MK et de voir la console REPL :

    picocom /dev/ttyUSB0 -b115200

    picocom v2.2
    port is        : /dev/ttyUSB0
    flowcontrol    : none
    baudrate is    : 115200
    parity is      : none
    databits are   : 8
    stopbits are   : 1
    escape is      : C-a
    local echo is  : no
    noinit is      : no
    noreset is     : no
    nolock is      : no
    send_cmd is    : sz -vv
    receive_cmd is : rz -vv -E
    imap is        : 
    omap is        : 
    emap is        : crcrlf,delbs,
    
    Type [C-a] [C-h] to see available commands
    
    Terminal ready
    
    >>> help()
    Welcome to MicroPython!
    
    For online docs please visit http://docs.micropython.org/en/latest/esp8266/ .
    For diagnostic information to include in bug reports execute 'import port_diag'.
    
    Basic WiFi configuration:
    
    import network
    sta_if = network.WLAN(network.STA_IF); sta_if.active(True)
    sta_if.scan()                             # Scan for available access points
    sta_if.connect("<AP_name>", "<password>") # Connect to an AP
    sta_if.isconnected()                      # Check for successful connection
    # Change name/password of ESP8266's AP:
    ap_if = network.WLAN(network.AP_IF)
    ap_if.config(essid="<AP_NAME>", authmode=network.AUTH_WPA_WPA2_PSK, password="<password>")
    
    Control commands:
      CTRL-A        -- on a blank line, enter raw REPL mode
      CTRL-B        -- on a blank line, enter normal REPL mode
      CTRL-C        -- interrupt a running program
      CTRL-D        -- on a blank line, do a soft reset of the board
      CTRL-E        -- on a blank line, enter paste mode
    
    For further help on a specific object, type help(obj)
    >>> 

    PS: pour quitter picocom utilisez Ctrl + a et immédiatement Ctrl + x
  • 2. Utilisation de l'IDE


    Bien que la première option soit assez fonctionnelle (au moins, vous pouvez également faire clignoter une LED), avec l'IDE, elle est encore beaucoup plus pratique. J'ai essayé quelques options, j'ai finalement choisi Thonny .

    Installation:

    Nous mettons python3-tk à partir des référentiels, et en fait Thonny via pip:

    sudo apt install python3-tk

    sudo pip3 install thonny

    Vous pouvez télécharger le firmware sur MK directement via Thonny:



    Après quoi, le clignotement de la LED devient beaucoup plus pratique:



Total


À la sortie, nous avons un esp8266 MK avec micropython cousu et un IDE facile à utiliser pour travailler avec.

PS: la deuxième partie (Plate-forme automotrice sur MK esp8266 avec micropyhon)

All Articles