Raspberry Pi Pico e MicroPython su Windows
Questo articolo risponde alla domanda: Come si usa Raspberry Pi Pico con MicroPython su Windows? Mostriamo anche come installare il driver giusto per la "Board CDC" (che il Pico apparirà come una volta installato MicroPython) su Windows 8.1. (Discuteremo anche le differenze tra MicroPython e CircuitPython, dove la scheda verrà visualizzata come un'unità di controllo). (Discuteremo anche le differenze tra MicroPython e CircuitPython, dove la scheda si chiamerà "CircuitPython CDC Control").
Infine, mostreremo come connettersi al Pico utilizzando PuTTY e un'opzione più comoda utilizzando Thonny (che è un IDE Python, integrato con il Pico!).
Introduzione: Cos'è il Pico e cos'è MicroPython?
Il Raspberry Pi Pico è una nuova scheda a microcontrollore di Raspberry Pi, con il chip a microcontrollore RP2040 sviluppato internamente.
Raspberry Pi ha progettato molte funzioni interessanti per l'RP2040 (la mia preferita è PIO - programmable IO, che consente di emulare molte interfacce hardware che richiedono tempi precisi, ecc. - Ne parlerò in un altro articolo in futuro), e il Pico è una piattaforma di riferimento molto bella su cui è implementato l'RP2040.
In cosa si differenzia un Raspberry Pi Pico da un Raspberry Pi Zero W?
La differenza tra un microcontrollore (come il modello Pico) e un computer a scheda singola (diciamo Pi Zero W) è più o meno questo: si programma il Pico direttamente (ad esempio, in C), senza un sistema operativo, mentre il Pi Zero W di solito eseguono Linux.
Questo ha dei vantaggi, come il tempo reale, ma anche degli svantaggi: è necessario conoscere meglio l'hardware in uso e implementare molte funzionalità che si danno per scontate in un sistema operativo moderno (ad esempio, l'accesso ai file).
Il Pico ha meno risorse rispetto al Pi Zero W (ad esempio, molta meno RAM, nessuna GPU VideoCore, ecc.) - ma assorbe meno energia e dispone di funzioni aggiuntive, come il già citato PIO e gli ingressi analogici (ADC).
Il Pico è una buona scelta per i progetti che non richiedono necessariamente connettività di rete, uscita HDMI, ingresso telecamera ed elaborazione. In altre parole, se volete interfacciarvi con l'hardware, avere una batteria di lunga durata e così via, il Pico fa al caso vostro.
Quale software esiste già per il Pico?
Il Pico può essere flashato utilizzando diversi software, che sono forniti in File UF2 (vedere la guida introduttiva di Pico). Raspberry Pi fornisce diversi file UF2 per iniziare:
- MicroPython (che sarà al centro di questo articolo) e un cugino stretto, CircuitPython
- Far lampeggiare un LED (Lampeggiare UF2)
- Ciao mondo (dirà "Hello world" se ci si connette attraverso un terminale)
- Picoprobe (utilizzare un Pico per eseguire il debug di un altro Pico)
- Azzeramento della memoria flash (imposta la memoria Flash come vuota)
C'è molto di più di esempi che si possono trovare qui (Codice C).
Nota: Sto collegando i file più recenti di UF2 al 30.01.2021 - in particolare MicroPython potrebbe essere aggiornato, quindi assicuratevi di controllare il file Pagina iniziale di Raspberry Pi Pico.
MicroPython
Se la prospettiva di programmare in C vi sembra un po' scoraggiante, potete iniziare con MicroPython. In questo caso, sul Raspberry Pi Pico è preinstallato un software (il file MicroPython UF2), che esegue un piccolo interprete Python.
Si chiama MicroPython perché non supporta la libreria standard Python 3 completa. MicroPython è destinato ad ambienti limitati, come il Pico. Il Pico ha un totale di 2 MB di RAM e non è in grado di supportare tutto ciò che Python 3 porta con sé. Controllare questa pagina Github per le differenze tra CPython e MicroPython. Inoltre, ecco il sito ufficiale MicroPython homepage, e il documentazione ufficiale di MicroPython.
CircuitPython
Nota: la maggior parte delle istruzioni si applica anche alle schede basate su CircuitPython RP2040 per Windows, ad esempio l'Adafruit Feather RP2040, ma dovrete seguire dei passaggi leggermente diversi - vi indicherò le differenze in questo articolo.
CircuitPython è fondamentalmente una variante di MicroPython sviluppata da Adafruit.
La scheda stessa verrà chiamata in modo diverso nel gestore dispositivi dopo il flashing (CircuitPython CDC Control) - e naturalmente sarà necessario un software diverso. Ecco cosa vi serve, per iniziare:
- Pagina di download di Adafruit Feather RP2040 (File UF2 di CircuitPython 7.0.0)
In questo articolo vi mostreremo anche come installare le librerie CircuitPython sui dispositivi basati su RP2040 in Windows e come eseguire e arrestare i programmi utilizzando Thonny.
Cosa si ottiene con MicroPython UF2?
Una volta installato MicroPython sul Pico, sarete in grado di connettervi al Pico usando la console seriale (vi mostreremo come in questo articolo) e di iniziare a scrivere codice Python sul Pico.
Installazione di MicroPython su Pico
- Togliere l'alimentazione al Pico
- Premete il pulsante BOOTSEL e tenetelo premuto.
- collegare il Pico al PC utilizzando un cavo da microUSB a USB
- ora è possibile rilasciare il pulsante BOOTSEL
Il Pico dovrebbe essere ora visibile nel filesystem, come RPI-RP2:
(Nota a margine: mi chiedo cosa fosse RPI-RP1).
Il Pico emula un'unità flash FAT32, che contiene due file: INDEX.HTM e INFO_UF2.TXT.
In effetti, Windows Drive Manager mostra che Pico è un'unità flash FAT da 128 MB.
Non commettere l'errore di tentare di memorizzare alcun file sul Pico in questo modo: verranno eliminati silenziosamente. Anche se sembra che siano stati scritti, è solo Windows che memorizza le operazioni nella cache: i vostri file saranno spariti! Ho già detto che il Pico ha solo 2 MB di Flash? Sta mentendo spudoratamente sui 128 MB (l'RP2040 dovrebbe supportare fino a 16 MB di flash, comunque, AFAIK).
Nota a margine: questo mi ricorda un po' il mio viaggio in India, dove ho acquistato delle chiavette con una capacità di 128 GB, che avrebbero scritto i vostri dati nel Nirvana. Quando ho cercato di restituire la chiavetta per riavere i miei soldi, il venditore non c'era più... che avventure 🙂
Tuttavia, se si copia il tipo di file giusto, il file UF2, su questa unità, questo verrà riconosciuto e scritto.
È possibile trascinarla dal browser, dopo averla scaricata, oppure copiarla e incollarla. Una volta completata la copia, il Pico si riavvierà automaticamente e non verrà più visualizzata l'unità flash.
Nota: se si desidera utilizzare CircuitPython, in questo passaggio si può utilizzare il file UF2 di CircuitPython.
Il Pico ora (dopo il riavvio) esegue MicroPython, che fornisce una porta seriale (COM-port) via USB. (In termini tecnici, si tratta di una periferica USB di classe 02 = Comunicazioni e controllo CDC e dispositivo USB sottoclasse 02).
Connessione a Pico, Windows 10
Windows 10 semplifica la connessione al Pico, poiché il driver della porta COM necessario (usbser.inf) viene installato e attivato automaticamente.
Per verificare su quale porta COM si trova, aprire la gestione dispositivi:
Qui sarà possibile vedere il nuovo dispositivo seriale USB, con il numero di porta COM (che servirà tra poco per la connessione), in Porte (COM e LPT).
Per verificare che si tratti effettivamente del Pico, che esegue MicroPython, si può procedere come segue:
Fare clic su Visualizza e selezionare Dispositivi per contenitore:
Qui si vedrà una voce "Scheda in modalità FS", con i due nodi "Dispositivo composito USB" e "Dispositivo seriale USB (COM3)". La COM3 è importante, perché dovrà essere utilizzata per PuTTY (vedere sotto).
È possibile esaminare ulteriormente i dispositivi facendo clic con il pulsante destro del mouse su di essi e selezionando la voce relativa alle proprietà dal menu contestuale. Le proprietà della scheda in modalità FS sono vuote:
Il dispositivo composito USB mostra "Scheda in modalità FS" come descrizione del dispositivo riportata dal bus:
Nota: questo è il Pico con MicroPython. Quando lo si riflasha con un software diverso, i risultati saranno diversi!
Il dispositivo seriale USB stesso mostrerà alcune proprietà interessanti:
Nota: la descrizione del dispositivo della scheda sarà "CircuitPython CDC Control" invece di "Board CDC" se si utilizza CircuitPython.
Se si sa cosa si sta cercando, gli ID hardware (VID = vendor id e PID = product id) sono utili:
VID_2E8A -> l'id del fornitore è 2E8A (in esadecimale) o 11914 (in decimale), che è Raspberry Pi
PID_0005 -> l'id del prodotto è 5che la scheda mostrerà durante l'esecuzione di MicroPython (l'id prodotto predefinito è 3)
Nota a margine: registro di debug del browser Chrome
Queste informazioni possono essere ottenute anche con il browser Chrome.
consente di visualizzare i dispositivi attualmente collegati.
Torniamo a Windows 10:
Come si vede nell'immagine qui sopra, Windows 10 ha installato automaticamente usbser (USB Serial Driver) per voi, in modo che possiate iniziare subito a utilizzare Pico.
PuTTY
PuTTY è un client telnet / SSH. Lo si userà per connettersi al Pico e per parlare con il REPL di MicroPython. Scaricare PuTTY qui. (È possibile utilizzare il programma di installazione MSI a 64 bit per la maggior parte delle installazioni di Windows 10).
Aprire PuTTY. Inserire le impostazioni corrette:
- Il tipo di connessione deve essere impostato su Seriale
- La linea seriale deve essere impostata su ciò che è emerso dall'indagine precedente. Nel mio caso, si tratta di COM3. Nel vostro caso molto probabilmente sarà qualcosa di diverso!
- La velocità può essere lasciata a 9600 per ora
Fare clic su Apri e si aprirà un Terminale:
Per ottenere il prompt iniziale, premere una volta Invio
Dopo il prompt si può iniziare a scrivere codice Python, che verrà interpretato immediatamente. Provate a inserire il classico "Hello world":
print("Hello world!")
MicroPython risponderà con
Ciao mondo!
come previsto 🙂
Ora che il contatto iniziale è stato stabilito, vi auguro buona codifica!
Thonny: un IDE Python, funziona con Pico!
L'uso di PuTTY non è molto comodo per le sessioni più lunghe o quando si vuole caricare molto codice sul Pico. Fortunatamente, l'applicazione open source Thonny (che è installata di default sul sistema operativo Raspberry Pi) è disponibile anche per Windows e integra il supporto per Pico (MicroPython e CircuitPython).
Primo passo
Scarica Thonny quie installarlo
Fase due
Collegare il Pico, come descritto sopra - ora dovrebbe avere un numero COM - se lo si desidera, si può verificare con il metodo PuTTY descritto sopra, se si riesce a raggiungere il Pico.
Terzo passo
Avviare Thonny e fare clic sul pulsante Strumenti menu, scegliere Opzioni
Quarto passo: impostare Pico come interprete
Fare clic sulla scheda Interprete. Per impostazione predefinita, viene visualizzata questa schermata:
Fare clic e selezionare MicroPython (Raspberry Pi Pico)
NotaSe si utilizza CircuitPythonè invece necessario selezionare "CircuitPython (generico)" da questo menu a discesa.
È possibile lasciare la porta a "cerca di rilevare automaticamente la porta" o impostare una porta specifica (abbiamo visto sopra come si può determinare il numero di porta corretto).
Nota: la porta dovrebbe comunque comparire nel menu a tendina, quindi è bene ricontrollare che sia presente:
Lo lascio come "cerca di rilevare automaticamente la porta". Fare clic su OK per salvare l'impostazione.
A questo punto la schermata dovrebbe cambiare in questo modo:
Quinto passo: il test
Ora è possibile testare la comunicazione con il Pico.
Tipo
print("Hello world")
nel prompt di MicroPython e premere invio.
Vedrete che il Pico vi risponderà.
Congratulazioni, avete collegato con successo Thonny con Pico su Windows!
Script più complessi: Far lampeggiare un LED con Thonny
Il REPL (read evaluate print loop) appena visto è bello, ma per progetti più complessi, vorremmo inserire prima il sorgente o caricarlo da un file.
Ecco a cosa può servire la parte superiore della finestra Thonny.
Immettere il codice. Nel mio esempio, faremo lampeggiare il LED di bordo (che è l'equivalente hardware di Hello World!), e faremo un ciclo continuo.
import time
from machine import Pin
print("Welcome to Pico example 2, blinking an LED")
led = Pin(25, Pin.OUT)
# For demo purposes, we have an infinite loop here
while True:
led.high()
time.sleep(0.5)
led.low()
time.sleep(0.5)
Fate attenzione alla corretta indentazione in Python (in Python gli spazi bianchi sono utilizzati a scopo di controllo!)
Ora fate clic sul pulsante "Esegui
Thonny vi chiederà dove salvare in
Selezionare Raspberry Pi Pico:
Ho scelto di chiamare il file hello.py - Cliccare su OK per salvarlo
Una volta premuto il pulsante OK, il codice inizierà a essere eseguito. Il LED di bordo del Pico dovrebbe iniziare a lampeggiare e si vedrà l'output nella Shell:
Nota: non ho dovuto inserire il comando %Run -c $EDITOR_CONTENT, Thonny lo faceva da solo. L'output riportato di seguito proviene dal nostro codice.
CircuitPython su Thonny in Windows
Seguite la stessa procedura, ma selezionate CircuitPython (generico) come interprete.
La conchiglia Thonny mostra una conferma diversa:
Windows 8.1
Windows 8.1 NON carica automaticamente il driver seriale e mostra il dispositivo in uno stato di errore.
Nota: con CircuitPython, il nome del dispositivo sarà invece "CircuitPython CDC control". Stessa procedura.
Ecco come appaiono le proprietà della scheda CDC (il Pico che esegue MicroPython):
Dice che i driver per questo dispositivo non sono stati installati (codice 28).
Una soluzione per risolvere questo problema è il Strumento Zadigche potete scaricare gratuitamente:
Attenzione: Diversi scanner antivirus sembrano concordare sul fatto che l'installer_x64.exe contenuto in Zadig 2.7 contiene "Trojan.Tedy". Forse si tratta di un falso allarme, tuttavia: consiglio di utilizzare Zadig-2.5.exe che non mi ha dato questi avvertimenti (appena verificato una seconda volta). Meglio prevenire che curare!
Zadig consente di installare driver USB generici per accedere ai dispositivi USB.
Nel nostro caso vogliamo il driver USB Serial (CDC).
Selezionare Board CDC (Interface 0) dal menu a discesa in alto e USB Serial (CDC) nell'altro campo. Fare clic su Installa driver.
Dopo l'installazione, si noterà che il driver è ora impostato su usbser (v1.0.0.0):
E sarete in grado di connettervi, come ho descritto in Windows 10, utilizzando il numero di porta COM corretto:
nota a margine:
Porta Pico/Seriale su Windows 7
Secondo un cliente, Zadig È stato utile installare il driver della porta seriale anche su Windows 7 e il Pico è stato poi utilizzabile! Assicuratevi di utilizzare Zadig 2.5poiché il nuovo Zadig 2.7 è stato segnalato dal mio scanner antivirus durante l'installazione del driver. (Non sono sicuro del motivo, ma meglio prevenire che curare: quello vecchio funziona).
Se avete bisogno di una guida passo-passo, consultate la guida per Windows 8.1 qui sopra; dovrebbe essere abbastanza simile su un computer Windows 8.1.
Installazione delle librerie e programmazione di una scheda CircuitPython RP2040 in Windows
Se si utilizza, ad esempio, un Adafruit Feather RP2040, è possibile utilizzare CircuitPython. Adafruit ha un programma NeoPixel RGB su di esso, che necessita di librerie da installare nella cartella lib sul dispositivo.
(nota: scarica le biblioteche qui - fare clic sul link "Download Project Bundle").
Quando si estrae la cartella del bundle del progetto, si vedranno due diverse sottocartelle con CircuitPython 6.x e CircuitPython 7.x
Sto usando la versione CircuitPython 7.x, poiché ho flashato la versione 7.0.0 Versione di CircuitPython.
Si noterà un'unità denominata "CIRCUITPY" in Explorer:
Il lib è vuota con una nuova installazione di CircuitPython. Utilizzando Windows Explorer, possiamo semplicemente copiare e incollare i file qui.
Copiare le librerie necessarie dalla cartella lib scaricata nella cartella lib di CIRCUITPY:
Ora possiamo anche sovrascrivere code.py:
Con Thonny è possibile modificare ed eseguire il file code.py. Fare clic sull'icona di apertura di Thonny e selezionare "CircuitPython device" nella finestra di dialogo "Where to open from":
E qui si può aprire code.py:
Ora la finestra di Thonny dovrebbe avere un aspetto simile a questo:
Premere F5 sulla tastiera o fare clic sull'icona di esecuzione.
Se tutto è andato bene, il LED NeoPixel RGB del vostro Adafruit Feather RP2040 dovrebbe ora iniziare a lampeggiare in diversi colori. Congratulazioni 🙂
Ora è possibile giocare con lo script: forse si possono modificare i colori o l'intervallo di tempo tra i cambiamenti di colore? O aggiungere altre funzioni.
Per poter eseguire lo script modificato, premere Ctrl + C nella shell (o selezionare Esegui > Interrompi esecuzione nel menu Thonny). Ora è possibile caricare nuovamente lo script.
Un'ottima cosa per il debug è che con Thonny si ottiene l'output della console, per cui si possono usare le istruzioni di stampa per produrre informazioni:
Pacchetto Adafruit CircuitPython
Adafruit offre un comodo download di più librerie in uno ZIP. Scaricare il corrispondente adafruit-circuitpython-bundle-7.x.-mpy o -6.x. mpy qui. È possibile installare diverse o tutte le librerie come discusso sopra semplicemente utilizzando Windows Explorer. Un upload completo di tutte le librerie avrebbe una dimensione di circa 1,2 MB; l'Adafruit Feather RP2040 ha spazio sufficiente per consentirlo. La copia potrebbe richiedere un paio di minuti.
Note varie
Posso utilizzare le procedure di questa guida anche per CircuitPython?
Assolutamente sì. Ad esempio, è possibile utilizzare Zadig su Windows 8.1 (vedere la descrizione sopra per i dettagli. Utilizzare la versione 2.5.730 di Zadig!). Si cercherà un dispositivo "CircuitPython CDC control" invece del dispositivo "Board CDC".
L'installazione del driver non riesce con Zadig?
Questo potrebbe essere dovuto al software antivirus. Forse è un falso allarme, ma non posso esserne certo. Il mio scanner antivirus (Bitdefender) mi dice quanto segue:
"Die Datei C:\Users\Max\usb_driver\installer_x64.exe ist mit Gen:Variant.Tedy.11444 infiziert und wurde in die Quarantäne verschoben. Consigliamo di eseguire un'analisi di sistema, per evitare di incorrere in altre infrazioni".
Diversi scanner antivirus sembrano concordare sul fatto che il file installer_x64.exe (parte del driver USB) contiene "Trojan.Tedy". Si consiglia di provare a utilizzare Zadig-2.5.exe. Che potete scaricare qui. Ho usato Zadig-2.5 per installare un driver seriale USB di CircuitPython sulla mia installazione di Windows 8.1 (che è la mia macchina principale).
Come si blocca l'esecuzione di codice su Pico in Thonny?
Fare clic nella shell e premere Ctrl+C. In questo modo si interrompe l'esecuzione del codice corrente:
Ripetizione di affermazioni precedenti a Thonny
È comodo eseguire di nuovo lo stesso comando: premete il tasto su della tastiera nel prompt della shell per richiamare la cronologia dei comandi precedenti.
Come faccio a sapere quando il mio Pi Pico è disconnesso da Thonny?
Quando si cerca di eseguire il codice, viene visualizzato un messaggio di errore, simile a questo:
Ciò significa che Thonny non può scrivere sulla porta seriale su cui il Pico dovrebbe trovarsi.
Non è stato possibile trovare automaticamente il dispositivo in Thonny.
Se si ottiene il seguente errore:
Non è stato possibile trovare automaticamente il dispositivo.
Verificare la connessione (assicurandosi che il dispositivo non sia in modalità bootloader) oppure scegliere
"Configura interprete" nel menu dell'interprete (angolo in basso a destra della finestra)
per selezionare una porta specifica o un altro interprete.
Verificare di aver selezionato l'interprete giusto. Se il dispositivo esegue CircuitPython invece di MicroPython, è necessario selezionare CircuitPython (generico) come interprete in Thonny. Per le istruzioni, consultare le informazioni pertinenti in questo articolo.
I vostri consigli per Pico/MicroPython su Windows?
Fateci sapere nei commenti se avete altri suggerimenti per iniziare a utilizzare Pico e MicroPython su Windows, aggiorneremo l'articolo di conseguenza 🙂
Godetevi la vostra Pico e divertitevi con i fantastici progetti che potete realizzare con essa!
Altri post del blog Pico su PiCockpit
Se vi è piaciuto leggere questo articolo, potreste apprezzare anche i seguenti:
Ho Win 8.1 e questo è l'unico sito che ha la soluzione per il problema COM. Grazie mille.
Potreste per favore condividere il link dell'articolo in cui c'è una soluzione per Board CDC in windows 8.1
L'articolo che state leggendo descrive come utilizzare Board CDC su Windows 8.1 - utilizzare lo strumento Zadig nella versione 2.5.
Grazie, Windows 7 64 bit funziona senza problemi.
Un grande grazie per questo tutorial!
Molto bello il tutorial Hai messo il caffè sul tavolo come diciamo noi in Polonia, il che significa senza menare il can per l'aia. Fantastico!
Ho bisogno di aiuto. Il mio windows 11 mostra il pico come "dispositivo portatile". Putty non riesce a trovarlo per questo motivo, quindi ricevo un errore che non riesce a trovare il percorso.
Non so come superare questa situazione.
Grazie!
Questa è stata una grande introduzione per me! Grazie!
Hola muy bueno, consulto x la inquietud que se me ha presentado
si despues de subir mi codigo a mi pi pico, y la coloco en una placa para que ejecute una tarea x,
se non sei tu a farlo, puoi collegare il pi greco alla piastra e a un pc o a un notebook,
è possibile leggere il codice che si trova nella piantina attraverso un esempio di Thonny facendo clic sull'icona di apertura del tappeto e selezionando l'opzione di apertura della piantina?
Esiste un modo per non leggere?
gracias
Sia Putty che zadig hanno funzionato per me. Ottimo tutorial.