Instal micropython di ESP8266 dan bekerja dengannya di Linux (untuk pemula)

Halo, Habr!

Ini adalah pengalaman pertama saya dengan mikrokontroler pada umumnya, dan ESP8266 (dalam bentuk Nodemcu v2) khususnya. Mungkin bagi seseorang pengalaman ini akan bermanfaat.

Kenapa tepatnya micropython? Jawabannya sederhana - pengalaman pemrograman sederhana saya terbatas pada Pascal di universitas, dan menulis skrip konfigurasi untuk Procera dengan Python, jadi ternyata yang terdekat. Contohnya adalah untuk Linux (ubuntu 18.04), tetapi, saya percaya, tidak akan ada perbedaan mendasar dalam distribusi Linux lainnya.

Latihan:


Kami meletakkan python3, pip dan picocom, jika belum terpasang:

sudo apt install python3 python3-pip picocom

Memeriksa versi python:

python --version
Python 3.6.9

Jika python versi 2.7, ubah ke 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

Kami memperbarui pip dan memeriksa versinya:

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)

Kami menginstal versi esptool 2.8 yang lebih baru dari pip (karena versi 2.1 dari repositori ubuntu memberikan kesalahan "Terjadi kesalahan fatal: ESP8266 ROM tidak mendukung fungsi erase_flash." Selama firmware):

pip3 install esptool

Unduh firmware di sini . Saya menggunakan build stabil 1,12 .

Ada dua opsi:

  • 1. Sunrise secara manual (menggunakan terminal dan REPL):


    Kami menghapus flash pada ESP8266:

    esptool.py --port /dev/ttyUSB0 erase_flash

    Output perintah:

    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...

    Isi firmware:

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

    Output perintah:

    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...

    Dan, jika diinginkan, periksa kebenaran checksum:

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

    Setelah itu, kami mencoba untuk terhubung ke MK dan melihat konsol 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: untuk keluar dari picocom gunakan Ctrl + a dan segera Ctrl + x
  • 2. Menggunakan IDE


    Meskipun opsi pertama cukup fungsional (setidaknya Anda juga bisa berkedip LED di dalamnya), dengan IDE itu masih jauh lebih nyaman. Saya mencoba beberapa pilihan, akhirnya memilih Thonny .

    Instalasi:

    Kami meletakkan python3-tk dari repositori, dan sebenarnya Thonny via pip:

    sudo apt install python3-tk

    sudo pip3 install thonny

    Anda dapat mengunggah firmware ke MK langsung melalui Thonny:



    Setelah itu, berkedip LED menjadi jauh lebih nyaman:



Total


Pada output, kami memiliki esp8266 MK dengan micropython dijahit, dan IDE yang mudah digunakan untuk bekerja dengannya.

PS: bagian kedua (platform self-propelled di MK esp8266 dengan micropyhon)

All Articles