- Cos'è MicroPython?
- Perché MicroPython per NodeMCU?
- Cos'è un ESP8266 (NodeMCU)?
- Hardware utilizzato
- Installazione del firmware MicroPython per ESP8266
- Comunicazione con NodeMCU con PuTTY
- Caricamento di un codice di lampeggiamento LED basato su Python utilizzando Ampy
- MicroPython su ESP8266: ottenere temperatura e umidità con DHT22
Per un principiante che è interessato alla programmazione di microcontrollori abilitati Wi-Fi come ESP8266, comprendere l'ambiente di programmazione ESP-IDF o l'IDE di Arduino può essere un compito arduo, la sintassi criptica dei linguaggi C e C ++ richiede una maggiore conoscenza dell'informatica che è perché quelle lingue non sono sempre amichevoli per i principianti, quindi in questo articolo impareremo a configurare e programmare un ESP8266 con MicroPython e, infine, otterremo i dati di temperatura e umidità dal nostro sensore di temperatura e umidità DHT22 preferito. In precedenza abbiamo realizzato anche un tutorial su come programmare ESP32 con Micro Python, puoi anche verificarlo se interessato.
Cos'è MicroPython?
Possiamo dire che MicroPython è una versione ridotta di python, progettata per funzionare con microcontrollori e sistemi embedded. La sintassi e il processo di codifica di MicroPython assomigliano a python. Quindi, se conosci già python, sai già come scrivere il tuo codice usando MicroPython. Se sei un fan di Python puoi consultare questo articolo.
MicroPython è stato sviluppato nel Regno Unito, da un team guidato da Damion jones, e hanno lanciato un Kickstarter tempo fa, dove hanno lanciato un particolare set di schede di sviluppo che avrebbero eseguito il firmware, che consente di eseguire MicroPython su di esso, il firmware è stato ora portato per funzionare su ESP8266, che in questo articolo imparerai.
Perché MicroPython per NodeMCU?
Python è uno dei linguaggi di programmazione più utilizzati e facili da imparare fino ad oggi. Quindi, con l'introduzione di MicroPython, la programmazione di microcontrollori basati su hardware è diventata molto semplice. Se non hai mai programmato un microcontrollore prima e vuoi iniziare a imparare a programmare, MicroPython è un buon inizio.
MicroPython utilizza una versione ridotta delle librerie standard di Python, quindi tutte le librerie standard non sono disponibili. Ma MicroPython include moduli semplici e facili da usare per interfacciarsi con l'hardware, il che significa che con l'aiuto di MicroPython, leggere e scrivere su un registro GPIO è diventato molto più semplice.
L'obiettivo finale di MicroPython è rendere i microcontrollori di programmazione il più semplice possibile, in modo che possano essere utilizzati da chiunque. Con MicroPython importare librerie e scrivere codice diventa facile, il codice mostrato di seguito è un semplice esempio che fa lampeggiare il LED integrato della scheda NodeMCU, discuteremo il codice in dettaglio dopo l'articolo.
from machine import Pin from time import sleep LED = Pin (2, Pin.OUT) while True: LED.value (not LED.value ()) sleep (0.5)
Cos'è un ESP8266 (NodeMCU)?
ESP8266 è un modulo Wi-Fi a basso costo, progettato per applicazioni relative a Internet of Things (IoT).
Viene fornito con pin di input e output generici (GPIO) e supporta anche una varietà di protocolli di uso comune come SPI, I2C, UART e altri. Ma la caratteristica più interessante di questo microcontrollore è che dispone di Wi-Fi integrato. Con esso, possiamo connetterci molto facilmente a qualsiasi Wi-Fi a 2,4 GHz.
Ora che le basi sono state tolte, possiamo passare alla parte pratica in cui ti mostreremo l'hardware richiesto e il processo di installazione di MicroPython sull'IC ESP8266.
Hardware utilizzato
Elenco dei materiali utilizzati
- 1 x tagliere
- 1 x ESP8266 (NodeMCU)
- 1 x DHT22 (sensore di temperatura e umidità)
- 1 x 3 mm LED (diodo a emissione luminosa)
- 1 x 1K resistore
- 5 x ponticello
Installazione del firmware MicroPython per ESP8266
Esistono due modi per installare il firmware MicroPython su ESP8266 in questo articolo. Parleremo di entrambi, ma prima dobbiamo scaricarlo.
Download del firmware MicroPython per ESP8266:
Prima di collegare la scheda NodeMCU (ESP8266) al nostro PC, dobbiamo scaricare l'ultima versione di MicroPython dopodiché possiamo installare il firmware su NodeMCU, è possibile scaricarlo dalla pagina di download ufficiale di Micropython
Installazione del firmware MicroPython su ESP8266:
Prima di poter installare il firmware su ESP8266, dobbiamo assicurarci di avere l'unità giusta per il convertitore da USB a seriale, la maggior parte della scheda NodeMCU utilizza un IC convertitore da USB a UART CP2102, motivo per cui dobbiamo scaricare e installare il driver per il convertitore da USB a UART CP2102, una volta che l'unità è stata scaricata e installata, è necessario scaricare esptool, che è uno strumento basato su python creato per leggere e scrivere il firmware su ESP8266.
Il modo più semplice per ottenere Python è tramite Microsoft Store, da lì è necessario scaricare e installare una copia di Python. Una volta installato Python, possiamo usare il comando pip3 install esptool per installare esptool. Il processo sarà simile all'immagine sottostante.
Una volta installato, controlla se accedi a esptool dal terminale di comando.
Per fare ciò, esegui il comando, versione esptool.py se ottieni una finestra come un'immagine qui sotto, hai installato con successo esptool sul tuo PC Windows.
E se hai problemi ad accedere a esptool dalla finestra di comando, prova ad aggiungere il percorso di installazione completo alla variabile d'ambiente di Windows.
Trovare la PORTA assegnata per la scheda NodeMCU:
Ora dobbiamo scoprire la porta allocata per la scheda NodeMCU, per farlo basta andare nella finestra del tuo gestore dispositivi e cercare un'opzione chiamata Porte se espandi puoi scoprire la porta associata alla scheda NodeMCU. A noi sembra l'immagine mostrata sotto.
Cancellazione della memoria flash di ESP8266:
Ora che abbiamo individuato la porta COM associata, possiamo preparare il modulo NodeMCU cancellandone la memoria flash. Per fare ciò, viene utilizzato il seguente comando, esptool.py --port COM6 erase_flash . Il processo sarà simile all'immagine qui sotto.
Installazione del firmware:
L'esecuzione del seguente comando installerà il binario MicroPython sulla scheda NodeMCU, una volta installato questo binario ci permetterà di caricare i nostri programmi python e comunicare con il ciclo di lettura, valutazione e stampa .
esptool.py --port COM6 --baud 460800 write_flash --flash_size = detect 0 esp8266-20200911-v1.13.bin
Il processo sarà simile all'immagine qui sotto,
Si noti che al momento dell'installazione il file binario era sul desktop, quindi ho un cd sul desktop ed eseguo il comando.
Fatto ciò, è il momento di comunicare con la scheda e far lampeggiare alcuni LED.
Comunicazione con NodeMCU con PuTTY
Ora iniziamo il nostro primo programma Hello World usando PuTTY, PuTTY per farlo dobbiamo impostare il tipo di connessione come Seriale, quindi impostiamo la linea Seriale (nel nostro caso è COM6) e, infine, impostiamo la velocità a 115200 baud.
Se tutto è fatto correttamente, apparirà una finestra simile all'immagine sottostante, e possiamo facilmente scrivere il nostro codice in essa, di solito funziona come un terminale iPython. Inoltre, abbiamo eseguito il nostro primo programma hello world che è composto da sole due semplici righe e, una volta inserita la nostra istruzione print, abbiamo ottenuto la nostra risposta.
Caricamento di un codice di lampeggiamento LED basato su Python utilizzando Ampy
Accedere a MicroPython con l'aiuto del terminale PuTTY è un buon modo per comunicare con il modulo ESP, ma un altro modo semplice è caricare il codice tramite lo strumento Adafruit Ampy, per installare ampy, possiamo semplicemente eseguire un semplice pip3 install adafruit- comando ampy e installerà ampy sul nostro PC. Il processo sarà simile all'immagine qui sotto.
Ora, una volta che hai questo, abbiamo ancora bisogno delle nostre informazioni sulla porta seriale a cui siamo collegati. Nel nostro caso, è COM6. Ora dobbiamo solo scrivere il nostro codice LED Blink con MicroPython, per questo abbiamo utilizzato la guida fornita nel sito Web ufficiale di micro python
Con l'aiuto della guida, viene creato il seguente codice.
from machine import Pin from time import sleep LED = Pin (2, Pin.OUT) while True: LED.value (not LED.value ()) sleep (0.5)
Il codice è molto semplice. Innanzitutto, importiamo la libreria Pin dalla macchina. Classe di pin. Successivamente, dobbiamo importare la libreria del tempo, che viene utilizzata per creare una funzione di ritardo. Successivamente, impostiamo Pin2 (che è il LED integrato collegato al modulo ESP12E) come output. Successivamente, impostiamo un ciclo while in cui accendiamo e spegniamo il LED con un ritardo di 500 ms.
È così che carichi il codice su NodeMCU. Per farlo, devi eseguire il seguente comando ampy , ampy --port COM6 put main.py
Se il programma viene eseguito corretto, vedrai un LED lampeggiante come mostrato di seguito.
Nota: durante il caricamento del codice, ho impostato la posizione del prompt corrente sul desktop, quindi non ho bisogno di specificare un percorso completo per il file main.py se non è così, devi specificare il percorso completo per il tuo file.py.
Successivamente, passiamo a ottenere i nostri dati di temperatura e umidità dal sensore DHT22.
MicroPython su ESP8266: ottenere temperatura e umidità con DHT22
Schema per l'interfacciamento di DHT22 con NodeMCU:
Di seguito è possibile trovare lo schema elettrico completo per questo progetto. Ho usato il fritzing per creare questo circuito.
Come puoi vedere il circuito è molto semplice e può essere facilmente costruito su una breadboard usando dei ponticelli. Il circuito completo può essere alimentato utilizzando la porta micro-USB su NodeMCU. La mia configurazione hardware è mostrata di seguito.
Codice:
È molto facile ottenere i dati di temperatura e umidità da un sensore DHT22 o DHT11 utilizzando un MicroPython perché il firmware MicroPython che abbiamo installato in precedenza viene fornito con una libreria DHT incorporata.
1. Iniziamo il nostro codice importando la libreria DHT e la libreria pin dalla classe macchina.
importare dht dal pin di importazione della macchina
2. Successivamente, creiamo un oggetto DHT che si riferisce al pin, a cui abbiamo collegato il nostro sensore.
sensore = dht.DHT22 (Pin (14))
3. Infine, per misurare il valore del sensore, dobbiamo utilizzare i seguenti tre comandi.
sensor.measure () sensor.temperature () sensor.humidity ()
Per il codice finale, lo inseriamo in un ciclo while e stampiamo i valori che segnano la fine del nostro codice. Inoltre, il sensore DHT22 necessita di 2 secondi prima di poter leggere qualsiasi dato, quindi è necessario aggiungere un ritardo di 2 secondi.
from machine import Pin from time import sleep import dht dht22 = dht.DHT22 (Pin (14)) while True: try: sleep (2) dht22.measure () temp = dht22.temperature () hum = dht22.humidity () print ('Temperatura:% 3.2f C'% temp) print ('Umidità:% 3.2f %%'% hum) eccetto OSError as e: print ('Impossibile leggere i dati dal sensore DHT22.')
Una volta terminata la codifica, possiamo caricare il codice con l'aiuto del comando ampy.
ampy --port COM6 put main.py
Dopo aver eseguito correttamente il codice, è possibile monitorare i valori di temperatura e umidità su qualsiasi monitor seriale. Ho usato lo stucco e come puoi vedere sotto, ho potuto ricevere i valori di temperatura e umidità su COM5.
Spero ti sia piaciuto l'articolo e hai imparato qualcosa di utile. Se hai domande, puoi lasciarle nella sezione commenti qui sotto o utilizzare i nostri forum per pubblicare altre domande tecniche.