
Negli ultimi anni Raspberry Pi è diventata una delle piattaforme più diffuse sia nel mondo Linux sia in quello dell’elettronica embedded. Con PiZZa, un nuovo progetto open source disponibile su GitHub, il Raspberry Pi Zero 2 W e il Raspberry Pi Zero W assumono però un ruolo differente: invece di eseguire una distribuzione Linux, possono avviare direttamente Zephyr RTOS e persino eseguire sketch Arduino caricati tramite l’IDE ufficiale, senza dover riscrivere ogni volta la scheda SD.
L’obiettivo del progetto è semplificare al massimo lo sviluppo. Dopo una configurazione iniziale è sufficiente collegare il Raspberry Pi al computer con un singolo cavo micro-USB: lo stesso collegamento fornisce alimentazione, crea una console seriale USB-CDC e permette di caricare nuovi programmi.
Un Raspberry Pi che si comporta come una scheda Arduino: come funziona PiZZa
L’aspetto probabilmente più interessante di PiZZa è il supporto ad Arduino.
Il progetto mette infatti a disposizione un package dedicato per l’Arduino IDE che consente di sviluppare sketch come si farebbe con una classica scheda compatibile Arduino. Quando si preme il pulsante di upload, il codice non viene utilizzato per riscrivere completamente la memoria della scheda, ma viene trasferito al Raspberry Pi tramite USB, salvato sulla microSD ed eseguito direttamente come modulo Zephyr.
Questo approccio elimina una delle operazioni più scomode durante lo sviluppo: non è più necessario rimuovere la microSD, copiarvi manualmente un’immagine aggiornata oppure eseguire un nuovo flash del sistema.
L’intero processo avviene attraverso un unico cavo USB.
Una guida completa per utilizzare Arduino con PiZZa è disponibile nel repository del progetto:
https://github.com/jetpax/PiZZa/tree/main/os/Arduino
Il progetto è stato inoltre presentato anche su Hackster.io:
https://www.hackster.io/news/pizza-turns-your-raspberry-pi-sbc-into-a-powerful-arduino-306bc23d06d9
Zephyr al posto di Linux
PiZZa è costruito sulla fork di Zephyr mantenuta dal progetto jetpax e rappresenta una distribuzione pensata per rendere immediatamente utilizzabili le funzionalità già sviluppate.
Una volta scritto il file immagine sulla microSD ed inserita la scheda nel Raspberry Pi, basta collegare il cavo micro-USB al computer. Il dispositivo si presenta automaticamente come una porta seriale USB-CDC ACM dalla quale è possibile accedere direttamente alla shell di Zephyr.
L’intero banco di prova può quindi essere composto semplicemente da un computer portatile, un Raspberry Pi Zero e un cavo USB, senza alimentatori esterni né adattatori USB-seriale.
Numerosi driver già disponibili
La dotazione software è già piuttosto ampia e comprende il supporto per gran parte delle periferiche principali del Raspberry Pi Zero 2 W.
Sono disponibili il WiFi tramite il chip CYW43439, il Bluetooth, il filesystem su microSD, GPIO, SPI, I²C, I²S, PWM, generatore hardware di numeri casuali, sensore di temperatura del processore e numerose funzionalità della rete di Zephyr come DHCP, DNS e server HTTP.
Sul fronte USB è supportata la modalità Device, utilizzata proprio per implementare la console USB-CDC che costituisce il metodo di accesso predefinito.
Alcune funzionalità sono invece ancora in fase di sviluppo, come la modalità Access Point WiFi e il controllo dinamico della frequenza della CPU, mentre altre, come ext4, MIPI DSI, fotocamera CSI e modalità USB Host, non rientrano negli obiettivi del progetto.
Compatibilità hardware
Il target principale rimane il Raspberry Pi Zero 2 W, completamente supportato.
Anche il Raspberry Pi Zero W originale è compatibile, sebbene alcune periferiche siano ancora in fase di completamento. Attualmente funzionano la console USB-CDC, l’archiviazione su microSD e il WiFi integrato, mentre il supporto ad alcune altre funzionalità è ancora in evoluzione.
Gli sviluppatori indicano inoltre come potenzialmente compatibili anche i Raspberry Pi 3, pur senza test ufficiali, mentre Raspberry Pi 4, Raspberry Pi 5 e la famiglia Raspberry Pi Pico non sono supportati.
Anche giochi ed emulatori
Oltre all’ambiente Arduino, il repository include una serie di applicazioni native utilizzate per dimostrare le capacità della piattaforma.
Tra queste trovano posto porting di Doom, Prince of Persia (SDLPoP), emulatori Macintosh e DOS, oltre a versioni dedicate di wipEout e Jet 3D.
Queste applicazioni sono raccolte nella directory apps del progetto e rappresentano esempi pratici dell’utilizzo di Zephyr sul Raspberry Pi Zero.
Installazione semplice
Per iniziare è sufficiente scaricare una delle immagini ufficiali rilasciate dal progetto e copiarla sulla microSD utilizzando strumenti come Raspberry Pi Imager oppure balenaEtcher.
L’immagine contiene già tutto il necessario: bootloader Raspberry Pi, file di configurazione e applicazione Zephyr.
Una volta inserita la scheda nel Raspberry Pi e collegato il cavo micro-USB, il sistema si avvia direttamente mostrando una console seriale accessibile da Windows, Linux o macOS.
Chi preferisce compilare autonomamente il progetto può invece ricostruire completamente l’immagine partendo dai sorgenti disponibili su GitHub.
Arduino: cosa è già supportato
Per quanto riguarda l’ambiente Arduino, il livello di supporto varia in base alla scheda utilizzata.
Sul Raspberry Pi Zero 2 W sono già disponibili GPIO, SPI, I²C, Serial tramite USB-CDC, mini-UART e connettività WiFi.
Sul Raspberry Pi Zero W originale funzionano invece GPIO e le interfacce seriali, mentre SPI, I²C e WiFi sono ancora in fase di sviluppo.
Al momento non è disponibile analogWrite(), mentre analogRead() non può essere implementato direttamente poiché il SoC non integra un convertitore ADC. Il progetto suggerisce comunque l’utilizzo di convertitori esterni collegati tramite SPI o I²C, come ADS1115 o MCP3008.
Un progetto ancora in evoluzione
PiZZa nasce come distribuzione destinata a rendere facilmente utilizzabili le modifiche sviluppate nella fork di Zephyr mantenuta da jetpax. Lo scopo dichiarato è quello di integrare progressivamente queste funzionalità direttamente nel progetto Zephyr ufficiale. Quando il lavoro sarà completato, il repository PiZZa farà semplicemente riferimento alle versioni upstream senza mantenere una fork separata.
Per seguire lo sviluppo o scaricare le immagini già pronte è possibile consultare il repository GitHub:
https://github.com/jetpax/PiZZa
Il codice Zephyr utilizzato dal progetto è invece disponibile nella fork dedicata:
https://github.com/jetpax/zephyr
Conclusioni
PiZZa propone un modo diverso di utilizzare il Raspberry Pi Zero, trasformandolo in una piattaforma di sviluppo basata su Zephyr e, allo stesso tempo, in una scheda compatibile con il flusso di lavoro dell’Arduino IDE. L’idea di poter compilare e caricare uno sketch attraverso un semplice cavo USB, senza riscrivere continuamente la microSD, rende il progetto particolarmente interessante per chi sviluppa software embedded e desidera sfruttare l’hardware del Raspberry Pi in un contesto diverso da quello tradizionale basato su Linux.
Iscriviti ai nostri gruppi Telegram
Link utili