Raspberry Pi Pico – conosciamo la scheda ed installiamo MicroPython

Raspberry Pi Pico è una nuovissima scheda di prototipazione elettronica estremamente potente ed economica che monta il microcontrollore RP2040 costituito da un Cortex-M0+. La scheda è prodotta da Raspberry Pi ed ha un costo estremamente contenuto, circa € 4,5.
La scheda ha una dimensione simile a quella di un Arduino Nano, però rispetto alle  schede della famiglia Arduino che montano microcontrollori ATmega, possiede una potenza di calcolo e di memoria superiore. Inoltre è possibile programmarla in MicroPython, C e C++.

La scheda è stata messa in vendita qualche settimana fa e non appena commercializzata ho deciso di acquistarne 10 schede, ulteriori 10 schede mi arriveranno tra qualche giorno ciò mi permetterà di gestire un’intera classe di studenti e le prime sperimentazioni le effettuerò con i miei studenti di  5′ Elettronica e Automazione a cui assegnerò il compito di sviluppare le esercitazioni che poi utilizzerò nel prossimo anno scolastico con i miei studenti di 3′ del percorso elettronica e automazione.
Come prima attività in DaD ho chiesto ai miei allievi di realizzare in autonomia un documento di presentazione del prodotto e una tabella di confronto con le schede Arduino che montano microcontrollori ATmega tutto ciò mi farà risparmiare tempo e ci permetterà di concentraci sull’attività pratica in laboratorio.

Con questo post ne voglio presentare  le caratteristiche tecniche e la modalità di installazione del firmware ed un esempio di programmazione in MicroPython. Sul sito di riferimento potete trovare tutta la documentazione necessaria per utilizzare la scheda.

Pico viene venduto senza piedini di collegamento, quindi dovrete acquistarli e procedere poi voi a sedarli sulla scheda, quindi armatevi di tanta pazienza ed utilizzando una breadboard per fissare i pin, procedete con la saldatura.

Per maggiori informazioni seguire il link per la pagina di riferimento della scheda.

Caratteristiche tecniche

L’RP2040 è il primo microcontrollore di Raspberry Pi. I due core del processore Cortex-M0+ del  Pico funzionano a 48 MHz, anche se questo può essere modificato nel software fino a 133 MHz.

La RAM del microcontrollore è incorporata nello stesso chip dei core del processore, è costituita da sei banchi di memoria  per un totale di 264kB (264.000 byte) di RAM statica (SRAM). La RAM viene utilizzata per memorizzare i vostri programmi e i dati di cui hanno bisogno i programmi.

L’RP2040 include 30 pin GPIO (general-purpose input / output) multifunzione, 26 dei quali sono collegati a connettori pin fisici sul vostro Pico e uno dei quali è collegato a un LED integrato sulla scheda. Tre di questi pin GPIO sono collegati a un convertitore analogico-digitale (ADC), mentre un altro canale ADC è collegato a un sensore di temperatura su chip.

L’RP2040 include due UART (ricevitore-trasmettitore asincrono universale), due SPI (Serial Periferal Interface) e due bus I2C (Inter-Integrated Circuit) per i collegamenti a dispositivi hardware esterni come sensori, display, convertitori digitale-analogico (DAC) e molto altro. Il microcontrollore include anche un ingresso/uscita programmabile (PIO), che consente al programmatore di definire nuove funzioni hardware e bus nel software.

Il  Pico include un connettore micro USB, che permette un collegamento seriale UART-over-USB al microcontrollore RP2040 per la programmazione e l’interazione e che alimenta il chip. Tenendo premuto il pulsante BOOTSEL quando si collega il cavo, il microcontrollore passerà alla modalità “Dispositivo di archiviazione di massa USB”, consentendo di caricare il nuovo firmware.

L’RP2040 include anche un on-chip clock e timer, che permette di tenere traccia in modo preciso dell’ora e della data. Il clock può memorizzare l’anno, il mese, il giorno, il giorno della settimana, l’ora, i minuti e i secondi e tiene automaticamente traccia del tempo trascorso finché viene fornita l’alimentazione alla scheda. RP2040 include il single-wire debug (SWD)  un debug hardware a tre fili nella parte inferiore del tuo Pico.

Pinout del Raspberry Pi Pico

 

 

 

Caratteristiche tecniche

  • CPU: 32-bit dual-core ARM Cortex-M0+ at 48MHz, configurabile fino a 133MHz
  • RAM: SRAM da 264kB disposi in 6 banchi indipendenti configurabili
  • Memoria: flash RAM esterna da 2MB
  • GPIO: 26 pins
  • ADC: 3 × 12-bit ADC pin
  • PWM: 16
  • Clock: Orologio e timer accurati su chip con anno, mese, giorno, giorno della settimana, ora, secondi e calcolo automatico dell’anno bisestile
  • Sensori: Sensore di temperatura On-chip connesso connesso ad un ADC 12-bit
  • LED: LED su scheda indirizzabile dall’utente
  • Connessioni bus: 2 × UART, 2 × SPI, 2 × I2C, Programmable Input/Output (PIO)
  • Hardware Debug: Single-Wire Debug (SWD)
  • Mount Options: pin passanti
  • Alimentazione: 5 V via micro USB, 3.3 V via 3V3 pin, o 2–5V via VSYS pin

Installare MicroPython

Dopo che avete effettuato le saldature dei pin abbiamo bisogno di installare MicroPython sulla scheda. Colleghiamo un cavo micro USB alla porta micro USB del vostro Pico.
Per installare MicroPython sul vostro Pico dovrete scaricarlo da Internet. Questa operazione è da fare una sola volta, dopo averlo installato rimarrà sul vostro Pico a meno che voi non decidiate di sostituirlo con qualcos’altro.

Mantenete premuto “BOOTSEL” nella parte superiore del tuo Pico, vicino al connettore USB, quindi, tenendolo ancora premuto, collega l’altra estremità del cavo micro USB a una delle porte USB del vostro computer Raspberry Pi o altro computer. Contate tre secondi, dopo di che rilasciate il pulsante “BOOTSEL”. Dovreste vedere il vostro  Pico apparire come un’unità rimovibile, come se avessimo collegato un’unità flash USB o un disco rigido esterno. Sul vostro computer verrà aperta una finestra per aprire l’unità (la scheda) che avete connesso.

Nella finestra del vostro File Manager, vedrete due file sul  Pico: INDEX.HTM e INFO_UF2.TXT. Il file  INFO_UF2.TXT contiene informazioni sul  Pico tra cui la versione del bootloader attualmente in esecuzione sul Pico.

Il file, INDEX.HTM, contiene tutte le informazioni utili per usare il Pico, fate doppio clic, sarete reindirizzati sulla pagina di benvenuto da cui reperire tutte le informazioni che servono per iniziare. Fate clic sulle schede scorrete la pagina per accedere alle guide, ai progetti e alla raccolta di libri: una libreria di documentazione tecnica dettagliata che copre tutto, dal funzionamento interno del microcontrollore RP2040 il cuore della vostra scheda, alla programmazione in Python e C / C ++.

Leggete tutte le informazioni sulla pagina, andate in “Getting started with MicroPython” e fate clic sul pulsante “Scarica file UF2” per scaricare il firmware MicroPython, che è un piccolo file che contiene MicroPython per il vostro Pico. Il download dal sito di riferimento richiede pochissimi secondi.

Una volta scaricato, andate nella vostra cartella Download cercate il file “micropython” seguito da una data e dall’estensione “uf2”. Fare clic e tenere premuto il pulsante del mouse sul file UF2, quindi trascinatelo sull’unità di archiviazione rimovibile di Pico (quindi all’interno del Pico). Posizionalo sulla finestra e rilascia il pulsante del mouse per rilasciare il file sul vostro Pico.

Dopo qualche secondo il vostro Pico scomparirà dal vostro File Manager e potreste anche vedere un messaggio del vostro sistema operativo che vi dice che un’unità è stata rimossa senza essere stata espulsa: non preoccupatevi, non è successo nulla di grave, ciò accade perchè quando avete trascinato il file del firmware MicroPython sul Pico, avete detto di eseguire il flashing del firmware nella  memoria interna di Pico. Per fare il flashing il Pico esce dalla modalità speciale in cui lo avete  inserito con il pulsante “BOOTSEL” (modalità periferica USB), vedrete lampeggiare il LED sulla scheda, ciò indica che Pico ora esegue MicroPython.

Bene! Ora siete pronti per iniziare a programmare in MicroPython su Raspberry Pi Pico! 🙂

Installiamo l’IDE Thonny per programmare in MicroPython.

Scarichiamo ora l’IDE di programmazione Thonny, vedremo in una lezione successiva come utilizzare Visual Studio Code.

Andate sul sito https://thonny.org e scaricate la versione per il vostro sistema operativo

Doppio click sull’applicazione, si aprirà la seguente finestra:

Configuriamo ora l’IDE per poter programmare il Pico, dal menù > Strumenti > Opzioni… selezionare “Interprete”

Scegliere MicroPython (Raspberry Pi Pico)

Determiniamo ora la porta seriale di connessione a cui abbiamo collegato il Pico, possiamo effettuare questa operazione oppure manualmente selezionate quella identificata da una lunga serie di 0 che termina con 1

Dal menù Strumenti > Gestione plug-in… inserire nel campo di ricerca “machine”

Si avvierà l’installazione, al termine chiudete la finestra.

Vediamo ora come effettuare il blink del LED sulla scheda.
Scrivimi all’interno dell’area di programmazione il seguente codice, fate attenzione all’indentazione, come sapete in Python è importante.

import machine
import utime

led_onboard = machine.Pin(25, machine.Pin.OUT)

while True:
    led_onboard.value(1)
    utime.sleep(1)
    led_onboard.value(0)
    utime.sleep(1)

La prima linea di codice:

import machine

Questa prima linea di codice è importantissima in quanto vi consentirà di lavorare con MicroPython sul Pico, importerà la libreria “machine” che contiene tutte le istruzioni necessarie che permettono per fare comunicare MicroPython con Pico ed altri dispositivi compatibili con MicroPython.
Senza questa linea di codice non sarete in grado di controllare nessuno dei pin GPIO di Pico e non potrete controllare il LED sulla scheda.

La seconda linea di codice

import utime

Importa la libreria di MicroPython: “utime”. Questa libreria gestisce tutto ciò che ha a che fare con il tempo, dalla misurazione all’inserimento di ritardi.

led_onboard = machine.Pin(25, machine.Pin.OUT)

Questa riga definisce un oggetto chiamato led_onboard, che è il nome che assegniamo noi per fare riferimento al LED sulla scheda, possiamo tecnicamente utilizzare qualsiasi nome, possibilmente meglio scegliere nomi che abbiamo attinenza con la funzionalità dell’oggetto in modo da rendere più semplice la lettura del programma.
Come si può notare la funzione machine.Pin() è costituita da due parametri: il pin a cui è connesso il LED, il 25, seguito dalla modalità con cui viene usato il pin, OUT. Per chi ha familiarità con la programmazione con Arduino noterà che l’azione è la medesima, cambia solo la sintassi.

Definiamo un loop infinito in cui andremo ad inserire le istruzioni che vogliamo vengano ripetute per sempre.

while True:

Analizziamo le istruzioni nel corpo del while

led_onboard.value(1)

Questa linea di codice imposta il pin ad HIGH però da sola non permetterà ancora l’accensione del LED, è necessario indicare per quanto tempo il LED starà ad HIGH con la riga di codice che segue manteniamo ad 1 (HIGH) il Led per 1 secondo

utime.sleep(1)

Allo stesso modo impostiamo a 0 (LOW) il il pin a cui è connesso il LED

led_onboard.value(0)

facciamo in modo che questo stato duri per 1 secondo:

utime.sleep(1)

Fare ora clic sull’icona play per eseguire lo script:

il LED sulla scheda inizierà a lampeggiare

Per fermare l’esecuzione dello script sulla scheda fare click su STOP

Nel caso in cui invece desiderate rendere l’esecuzione automatica non appena il Pico viene connesso ad una fonte di alimentazione, rinominate il file in main.py e salvatelo sulla scheda

Buon Coding a tutti 🙂

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.