MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo dell’IDE PyCharm – 3

Spread the love

Se stai cercando di iniziare a programmare microcontrollori utilizzando Python, allora MicroPython con esp8266 e esp32 è un ottimo punto di partenza. Con MicroPython, puoi utilizzare Python per programmare microcontrollori e controllare dispositivi come sensori, motori e luci.

MicroPython con esp8266 e esp32: installazione del firmware e utilizzo dell'IDE PyCharm
MicroPython con esp8266 e esp32: installazione del firmware e utilizzo dell’IDE PyCharm

Uno dei modi più semplici per iniziare con MicroPython su esp8266 e esp32 è utilizzare PyCharm come ambiente di sviluppo integrato (IDE). In questo articolo, esamineremo come configurare PyCharm per lo sviluppo MicroPython e creeremo un semplice progetto per far lampeggiare un LED.

Dettagli ESP32

Mi piacciono questi dispositivi. Sono molto potenti e a basso costo, con un microcontroller WIFI di grande valore.

Lo puoi trovare qui ESP32 Dev Kit v1 - Selectable - TTGO T-Display 1.14 ESP32 - NodeMCU V3 V2 ESP8266 Lolin32 - NodeMCU ESP-32S - WeMos Lolin32 CP2104 CH340 - ESP32-CAM programmer - ESP32-CAM bundle - ESP32-WROOM-32 - ESP32-S

Specifiche

Ricorda che esistono molte varianti di questo dispositivo. Alcune hanno una funzione killer specifica, quindi questa è una descrizione generica delle specifiche.

Diagramma a blocchi delle funzioni del microcontroller Wi-Fi Bluetooth Espressif esp32
Diagramma a blocchi delle funzioni del microcontroller Wi-Fi Bluetooth Espressif esp32
  • Processori:
    • CPU: Xtensa a doppio core (o singolo core) microprocessore a 32 bit LX6, operante a 160 o 240 MHz e con una prestazione fino a 600 DMIPS
    • Co-processore a ultra basso consumo (ULP)
  • Memoria: 520 KiB SRAM
  • Connettività wireless:
    • Wi-Fi: 802.11 b/g/n
    • Bluetooth: v4.2 BR/EDR e BLE (condivide la radio con il Wi-Fi)
  • Interfacce periferiche:
  • Sicurezza:
  • Gestione dell’energia:
    • Regolatore di tensione LDO interno
    • Dominio di potenza individuale per RTC
    • Corrente di deep sleep 5μA
    • Risveglio da interruzione GPIO, timer, misurazioni ADC, interruzione sensore touch capacitivo

Piazzamento dei pin

ESP32 DEV KIT v1

ESP32 DevKIT v4

piazzamento dei pin ESP32 DevKIT v4
Piazzamento dei pin ESP32 DevKIT v4

ESP32 WeMos LOLIN32

Questo dispositivo è molto potente, e puoi vedere che ci sono pin per il tocco capacitivo, più di una UART e vari pin analogici.

Come fare

Devi scaricare i driver per il chip USB, probabilmente hai una versione esp32 con cp2102, ma esiste una variante con chip ch340.

Dettagli ESP8266

Lo puoi trovare qui WeMos D1 mini - NodeMCU V2 V2.1 V3 - esp01 - esp01 programmer

Specifiche

Disposizione dei pin

Wemos D1 mini

Wemos D1 mini esp8266 disposizione pin bassa risoluzione
Wemos D1 mini esp8266 disposizione pin bassa risoluzione

Wemos D1 mini immagine ad alta risoluzione

NodeMCU V2

NodeMCU v2 esp8266 disposizione pin bassa risoluzione
NodeMCU v2 esp8266 disposizione pin bassa risoluzione

NodeMCU V2 immagine ad alta risoluzione

NodeMCU v2.1

NodeMcu v2.1 disposizione pin a bassa risoluzione
NodeMcu v2.1 disposizione pin a bassa risoluzione

NodeMCU v2.x immagine ad alta risoluzione

NodeMCU v3

NodeMcu v3 disposizione pin a bassa risoluzione
NodeMcu v3 disposizione pin a bassa risoluzione

Credo che la cosa interessante sia che ha più di una seriale hardware, quindi puoi utilizzare Serial per la comunicazione con i dispositivi e Serial1 D4 (solo trasmissione) per il debug.

Driver

Puoi scaricare i driver per i chip USB qui, controlla la tua versione di D1 mini e clicca sui driver.

Ecco una lista più esaustiva di dispositivi.

Hai bisogno di Python

Prima di tutto, devi installare Python e scaricarlo da qui.

E ricorda di aggiungerlo al PATH.

Installazione di Python su Windows: aggiungi al PATH
Installazione di Python su Windows: aggiungi al PATH

Flashing del firmware MicroPython sulla scheda

Per installare MicroPython sulla tua scheda ESP8266 o ESP32, dovrai scaricare il firmware dal sito ufficiale di MicroPython. Il firmware è disponibile in forma binaria per una varietà di microcontrollori, inclusi ESP8266 e ESP32.

  1. Scarica il firmware
  1. Installa lo strumento esptool.py, che è un’utilità da riga di comando che può essere utilizzata per caricare il firmware MicroPython sulla scheda. Lo strumento può essere installato utilizzando pip, un gestore di pacchetti Python.
    • Per gli utenti Windows:
      • Apri il Prompt dei comandi
      • Installa pip eseguendo il seguente comando (probabilmente non ne avrai bisogno): python -m ensurepip
      • Installa esptool.py eseguendo il seguente comando: pip install esptool
    • Per gli utenti Mac o Linux:
      • Apri il Terminale
      • Installa pip eseguendo il seguente comando: sudo easy_install pip
      • Installa esptool.py eseguendo il seguente comando: sudo pip install esptool
C:\Users\renzo>pip install esptool
Defaulting to user installation because normal site-packages is not writeable
Collecting esptool
  Downloading esptool-4.5.1.tar.gz (252 kB)
     |████████████████████████████████| 252 kB 2.2 MB/s
Collecting bitstring>=3.1.6
  Downloading bitstring-4.0.1-py3-none-any.whl (45 kB)
     |████████████████████████████████| 45 kB 3.2 MB/s
Collecting cryptography>=2.1.4
  Downloading cryptography-39.0.2-cp36-abi3-win_amd64.whl (2.5 MB)
     |████████████████████████████████| 2.5 MB 2.2 MB/s
Collecting ecdsa>=0.16.0
  Downloading ecdsa-0.18.0-py2.py3-none-any.whl (142 kB)
     |████████████████████████████████| 142 kB 2.2 MB/s
Requirement already satisfied: pyserial>=3.0 in c:\users\renzo\appdata\roaming\python\python39\site-packages (from esptool) (3.0.1)
Collecting reedsolo<=1.6.0,>=1.5.3
  Downloading reedsolo-1.6.0.tar.gz (278 kB)
     |████████████████████████████████| 278 kB 2.2 MB/s
Collecting cffi>=1.12
  Downloading cffi-1.15.1-cp39-cp39-win_amd64.whl (179 kB)
     |████████████████████████████████| 179 kB 2.2 MB/s
Collecting pycparser
  Downloading pycparser-2.21-py2.py3-none-any.whl (118 kB)
     |████████████████████████████████| 118 kB 2.2 MB/s
Collecting six>=1.9.0
  Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
Using legacy 'setup.py install' for esptool, since package 'wheel' is not installed.
Using legacy 'setup.py install' for reedsolo, since package 'wheel' is not installed.
Installing collected packages: pycparser, six, cffi, reedsolo, ecdsa, cryptography, bitstring, esptool
    Running setup.py install for reedsolo ... done
    Running setup.py install for esptool ... done
Successfully installed bitstring-4.0.1 cffi-1.15.1 cryptography-39.0.2 ecdsa-0.18.0 esptool-4.5.1 pycparser-2.21 reedsolo-1.6.0 six-1.16.0

Se aggiungi la cartella Script alla variabile PATH, puoi chiamare direttamente esptool.py.

Aggiungi la cartella Script alla variabile PATH di Windows
Aggiungi la cartella Script alla variabile PATH di Windows
  1. Collega la scheda al tuo computer tramite USB.
    Per trovare la nuova porta COM seriale, vai su Gestione dispositivi dal menù di Windows e controlla quale porta è nata.
Gestione dispositivi per trovare la porta COM seriale
Gestione dispositivi per trovare la porta COM seriale
  • Cerca nel menù di Windows “Modifica le variabili di ambiente del sistema“;
  • Nel pannello clicca su Variabili d'ambiente....
  • Nelle variabili utente, seleziona “Path
  • E aggiungi la cartella Script.
  1. Cancella la memoria flash della scheda eseguendo il seguente comando:
    Per ESP8266 e ESP32:
esptool.py --port COM5 erase_flash

Se non hai esptool.py nel path usa questo comando

python -m esptool --port COM5 erase_flash

Sostituisci COM5 con la porta seriale corretta della tua scheda.

D:\projects\micropython\testesp>python -m esptool --port COM5 erase_flash
esptool.py v4.5.1
Serial port COM5
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 50:02:91:74:fd:2f
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 8.6s
Hard resetting via RTS pin...
  1. Carica il firmware MicroPython sulla scheda eseguendo il seguente comando:

Per ESP8266:

esptool.py --port COM5 --baud 460800 write_flash --flash_size=detect 0 <firmware.bin>

oppure

python -m esptool --port COM5 --baud 460800 write_flash --flash_size=detect 0 <firmware.bin>

Per ESP32:

esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 <firmware.bin>

oppure

python -m esptool --port /dev/ttyUSB0 --baud 460800 write_flash -z 0x1000 <firmware.bin>

Sostituisci COM5 con la porta seriale corretta della tua scheda e <firmware.bin> con il percorso del file del firmware MicroPython che hai scaricato in precedenza.

D:\projects\micropython\testesp>python -m esptool --port COM5 --baud 460800 write_flash --flash_size=detect 0 esp8266-20220618-v1.19.1.bin
esptool.py v4.5.1
Serial port COM5
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 50:02:91:74:fd:2f
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x0009afff...
Flash params set to 0x0040
Compressed 634844 bytes to 419808...
Wrote 634844 bytes (419808 compressed) at 0x00000000 in 10.0 seconds (effective 509.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
  1. Dopo aver caricato il firmware sulla scheda, è possibile connettersi alla scheda utilizzando un programma di terminale seriale, come PuTTY (Windows) o screen (Mac/Linux). La velocità di trasmissione dovrebbe essere impostata a 115200.

Iniziare con PyCharm

Configurare PyCharm è piuttosto semplice, ecco il processo per le impostazioni.

Installare l’IDE

Scarica la versione Community di PyCharm dal sito web di JetBrains.

Pagina di download di PyCharm
Pagina di download di PyCharm

Dopo di che, avvia la procedura di installazione.

Installazione di PyCharm per MicroPython
Installazione di PyCharm per MicroPython

Ora avvia il programma.

Schermata iniziale di PyCharm
Schermata iniziale di PyCharm

Installare e configurare il plugin MicroPython

Nella pagina di benvenuto,

  1. seleziona la voce del menu Plugin;
  2. cerca MicroPython;
  3. e installalo.
Plugin MicroPython di PyCharm
Plugin MicroPython di PyCharm

In questo momento, seleziona la voce del menu Project e il pulsante New Project.

Primo progetto MicroPython in PyCharm: selezione di venv e python
Primo progetto MicroPython in PyCharm: selezione di venv e python

Nella Posizione selezionare o scrivere il nome della cartella del progetto (ho scritto pythonProject).

Ora devi abilitare il supporto a MicroPython, per farlo:

  1. Fai clic su File --> Impostazioni;
  2. Ora vai a Lingua & Framework --> MicroPython;
  3. Seleziona Abilita supporto MicroPython.
PyCharm abilita il supporto di MicroPython
PyCharm abilita il supporto di MicroPython

Ora seleziona il framework del microcontroller corretto, per ESP32 e esp8266 è la voce ESP8266.

PyCharm MicroPython: selezione del microcontroller esp8266 esp32 raspberry
PyCharm MicroPython: selezione del microcontroller esp8266 esp32 raspberry

Ora devi aggiungere la porta COM Seriale corretta, e puoi ottenerla come descritto nella parte precedente di questo articolo. Scrivila nel Percorso del dispositivo.

PyCharm MicroPython: impostare la porta COM Seriale corretta
PyCharm MicroPython: impostare la porta COM Seriale corretta

Il tuo primo sketch di stampa

Quando chiudi la finestra modale, crea un file python main.py e aggiungi questa riga di codice.

print("Ciao da www.mischianti.org")
Primo esempio di stampa MicroPython in PyCharm: nessuna dipendenza
Primo esempio di stampa MicroPython in PyCharm: nessuna dipendenza

Come puoi vedere, l’IDE ti avvisa che mancano alcune dipendenze. Devi semplicemente fare clic su Mancano pacchetti MicroPython richiesti, e l’IDE risolverà il problema per te.

Ora il progetto è pronto, per avviare il programma devi solo fare clic con il tasto destro del mouse sul file py e fare clic sul link Esegui "Flash main.py".

Primo esempio di stampa MicroPython in PyCharm: tutto ok
Primo esempio di stampa MicroPython in PyCharm: tutto ok

Ora riavvia l’IDE.

L’IDE crea un avviatore nella parte superiore destra della barra dell’IDE e il programma si avvia.

Pycharm MicroPython: modifica script di avvio
Pycharm MicroPython: modifica script di avvio

Le volte successive dovrai solo fare clic sulla freccia verde alla destra dell’avviatore.

Il risultato nella console Run è:

Connettendo a COM5
Caricamento dei file: 0% (0/1)
C:\Users\renzo\PycharmProjects\pythonProject\main.py -> main.py
Caricamento dei file: 100% (1/1)
Soft reboot
PyCharm MicroPython: mostra stampa in REPL
PyCharm MicroPython: mostra stampa in REPL

Ora, se apri la scheda MicroPython nella parte inferiore dell’IDE, fai clic sulla freccia di riavvio alla sinistra della console MicroPython (REPL) e reimposta il dispositivo, ottieni questo:

                                              ��ll�
Ciao da www.mischianti.org                             
                                                          
MicroPython v1.19.1 del 18-06-2022; modulo ESP con ESP8266
Digita "help()" per ulteriori informazioni.                       
>>> 

Console REPL interattiva

Come puoi vedere, puoi utilizzare la REPL (Read-Eval-Print Loop) per interagire con la scheda e eseguire codice Python. La REPL è un modo semplice per inserire comandi Python e vedere il loro output in tempo reale. Puoi connetterti alla REPL della scheda utilizzando un programma di terminale seriale, come PuTTY o screen, tramite una connessione USB.

Quindi, se stai per scrivere questo codice sulla console REPL:

print("Ciao da www.mischianti.org! direttamente dalla console")
PyCharm MicroPython: scrive codice nella console REPL
PyCharm MicroPython: scrive codice nella console REPL

Ricevi indietro queste righe:

Hello from www.mischianti.org! directly from console
>>>    

Sketch per far lampeggiare e stampare

Ora stiamo per scrivere uno sketch più complesso che interagisce con il dispositivo.

Prendi questo codice:

import machine
import time
pin = machine.Pin(2, machine.Pin.OUT)
while True:
    pin.value(0)
    print("LED ON");
    time.sleep(0.5)
    pin.value(1)
    print("LED OFF");
    time.sleep(0.5)

Il codice importa inizialmente due moduli: machine e time. Il modulo machine fornisce accesso alle periferiche hardware del microcontrollore, mentre il modulo time fornisce funzioni per lavorare con il tempo e i ritardi.

Successivamente, il codice configura un pin GPIO sul microcontrollore (in questo caso, il pin 2) come pin di output utilizzando il metodo machine.Pin() con l’argomento machine.Pin.OUT.

Il codice entra poi in un ciclo che verrà eseguito indefinitamente (poiché la condizione True è sempre vera). All’interno del ciclo, il codice imposta prima il pin a 0, accendendo così il LED ad esso collegato. Stampa poi LED ON sulla console utilizzando la funzione print(). Il codice poi attende per mezzo secondo utilizzando la funzione time.sleep().

Pycharm MicroPython: sketch di lampeggio con stampa
Pycharm MicroPython: sketch di lampeggio con stampa

In seguito, il codice imposta il pin a 1, spegnendo così il LED, e stampa LED OFF sulla console. Poi attende per un altro mezzo secondo prima di ripetere il ciclo.

Complessivamente, questo codice farà lampeggiare un LED accendendolo e spegnendolo in un modello ripetitivo con un ritardo di 0,5 secondi tra ciascun cambio di stato.

Se avete qualche problema nell’usare l’importazione di machine, seguite la guida per risolverlo negli articoli precedenti riguardanti MicroPython.

Probabilmente all’inizio, ottenete:

Quit: Ctrl+] | Stop program: Ctrl+C | Reset: Ctrl+D 
Type 'help()' (without the quotes) then press ENTER.
LED ON
Traceback (most recent call last):                        
  File "main.py", line 7, in <module>                     
KeyboardInterrupt:                                        
MicroPython v1.19.1 on 2022-06-18; ESP module with ESP8266
Type "help()" for more information.                       
>>> 

Ma se riavviate il dispositivo, il programma si avvia correttamente:

LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
LED OFF
LED ON
WeMos d1 mini (esp8266): led light
WeMos d1 mini (esp8266): led light

Grazie

Padroneggiare la programmazione dell’esp8266 con MicroPython

  1. MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo di strumenti standard
  2. MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo dell’IDE Thonny
  3. MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo dell’IDE PyCharm

Padroneggiare la programmazione dell’esp32 con MicroPython

  1. MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo di strumenti standard
  2. MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo dell’IDE Thonny
  3. MicroPython con esp8266 ed esp32: installazione del firmware e utilizzo dell’IDE PyCharm

Spread the love

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *