Introduzione a Raspberry Pi Pico (lezione 1)
Introduzione
Molte aziende che producono componenti elettronici, hanno sicuramente compreso che la fascia di mercato dei sistemi embedded è in notevole crescita, alimentata da numerosi gruppi di makers, molto attivi, i quali condividono numerosi progetti in rete. Alla luce di questo virtuoso scenario anche il gruppo Raspberry ha deciso di entrare in questo mercato con il progetto Raspberry Pico, una scheda che monta il microcontrollore RP2040.
In questo caso, il gruppo Raspberry è stato sicuramente lungimirante, ma non possiamo affermare che sia stato particolarmente innovativo, anzi è arrivato in notevole ritardo rispetto ai concorrenti, altresì, essi hanno introdotto nel 2012, un sistema che ha sicuramento innovato il mondo dei micro PC con il progetto Rapberry PI.
Realizzare un micro PC con discrete prestazioni, ad un costo estremamente basso, con lo scopo, lodevole, di rendere disponibile la tecnologia, per uso didattico, anche ai paesi in via di sviluppo, ma oltre ogni aspettativa, questo progetto ha riscosso un successo mondiale con la vendita di milioni di esemplari che hanno costretto il gruppo Raspberry ad un incremento delle linee di produzione per soddisfare le richieste di mercato.
Dopo questa breve divagazione, ritorniamo all’argomento principale del post, il microcontrollore RP2040 e’ stato progettato e prodotto dal gruppo Raspberry, che ha realizzato un sistema dalle buone caratteristiche (i dettagli li analizzeremo in seguito), con la stessa politica del progetto precedente, cioè collocare sul mercato un prodotto dal costo molto competitivo, infatti, l’intera scheda è venduta al prezzo di soli 4 $.
Adesso analizziamo le caratteristiche del microcontrollore, con qualche nota, secondo me, negativa. Il microcontrollore RP2040 è un dual-core Arm Cortex M0, le caratteristiche principali sono riassunte nei seguenti punti:
- Frequenza massima del clock è di 133MHz
- SRAM da 264KB
- Memoria di programma FLASH da 2MB
- Interfaccia USB, per la connessione al PC
- Non è richiesta la compilazione del codice sorgente ma esso deve essere caricato semplicemente con la procedura “drag-and-drop”
- N° 26 pins multi funzioni GPIO
- Periferiche configurabili: 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC e 16 × PWM
- Un sensore di temperatura
In rapportato al prezzo, possiamo affermare che il microcontrollore è un ottimo prodotto sia dal punto di vista delle performance, che delle periferiche montate nel chip e come dimensioni memorie FLASH e RAM, inoltre, ha un sistema di programmazione semplificato con la procedura del “drag-and-drop”.
Adesso analizziamo le note negative, sono rimasto moto deluso dalla mancanza di una periferica wireless , anche a scapito di un aumento del prezzo di vendita, non averla e’ anacronistico, preclude l’utilizzo della board per lo sviluppo di sistemi come l’IOT, e per questi progetti è preferibile usare la famosa board ESP32.
Ma non dobbiamo escludere che il gruppo Raspberry che ha sempre costantemente migliorato le caratteristiche dei propri prodotti sia dal punto di vista delle prestazioni che delle funzionalità e non possa in un futuro prossimo, introdurre un nuovo microcontrollore con almeno una periferica wireless integrate. Nella Figura 1, è riportata la pin function della scheda Pico, scaricata dal sito di Raspberry.
Il sistema supporta i linguaggi di programmazione Python e C++ in modo nativo, il codice sorgente non deve essere compilato ma scaricato direttamente all’interno della memoria FLASH con una procedura di drag e drop, e grazie al software, precedentemente caricato, la compilazione o l’interpretazione del codice è eseguita direttamente all’interno del microcontrollore.
Prima di scaricare il codice sorgente all’interno della memoria FLASH, il microcontrollore deve essere configurato, pertanto, bisogna scaricare il compilatore che deve essere caricato all’interno della memoria FLASH, in base al linguaggio di programmazione prescelto. Di seguito ho riportato i passi che devono essere eseguiti per configurare la scheda e pronta per eseguire il codice sorgente dei nostri progetti:
- Inserire il cavo micro USB nella scheda Pico
- Mantenere premuto il pulsante bianco posto sulla Raspberry Pi Pico
- Inserire l’altro connettore del USB nel PC e aspettare circa 5 secondi, sempre con il pulsante premuto.
- Rilasciare il pulsante, il PC riconosce la scheda Pico come una memoria di massa (vedi Figura 2)
- Selezionare il linguaggio di programmazione da questo link e scaricare il software per poi caricarlo all’interno della FLASH del microcontrollore con la stessa procedura della scrittura di una pendriver (drag and drop)
La nostra scheda è ora pronta per eseguire il nostro codice sorgente, ma abbiamo bisogno dell’IDE (Integrated Development Environment), un sistema di sviluppo che ci consenta di scrivere il codice sorgente e di caricalo all’interno della memoria del microcontrollore.
Sul mercato ci sono diverse IDEs per il sistema Pico, con alcune di esse e’ possibile gestire anche più di un linguaggio, in questo corso vorrei utilizzare il solo linguaggio MicroPython, e propongo di usare l’IDE Thonny, consigliato anche dagli sviluppatori della scheda Pico.
Come da tradizione, il primo codice sorgente per chi inizia a programmare o ad usare un sistema nuovo è classico programma di “Hello World” e credo che le tradizioni debbano essere rispettate e quindi il nostro primo codice farà accendere e spegnere un diodo LED, quello integrato sulla board. Dopo aver scaricato e installato l’IDE Thonny, seguite le istruzioni riportate nelle gif di seguito, con le istruzioni per configurare l’ambiente per la prima compilazione del codice sorgente. Dopo aver installato l’IDE Thonny, configurare l’ambiente come indicato nelle due gif riportate di seguito.
import machine import utime led_onboard = machine.Pin(25, machine.Pin.OUT) while True: led_onboard.value(1) utime.sleep(0.5) led_onboard.value(0) utime.sleep(0.5)
- Nella prima istruzione importiamo la libreria di configurazione dei pins del microcontrollore.
- Nella seconda istruzione importiamo la libreria per la gestione dei ritardi, come il delay.
Questa istruzione setta il pin 25 del microcontrollore, dove e’ connesso il diodo LED, come un’uscita.
Questo e’ un ciclo infinto dove il i diodo LED ad intervalli regolari, impostati dall’istruzione ultime.sleep, e’ acceso.