Il linguaggio Rust sta facendo capolino in territori che fino a poco tempo fa parevano riservati a C e C++, e il settore embedded è forse quello dove la partita resta più aperta. Nel mondo dei server e del cloud la sua diffusione è ormai cosa fatta, ma quando si scende a livello di microcontrollori il discorso cambia. Ed è qui che progetti pratici e raccolte di esempi diventano una bussola utile per capire quanto l’ecosistema sia davvero pronto. La combinazione tra Raspberry Pi Pico 2, il nuovo microcontrollore RP2350 e il framework asincrono Embassy offre una fotografia piuttosto nitida di questo momento di transizione.
Non parliamo di semplici demo dedicate a sensori e periferiche. È più un laboratorio vero, dove si affrontano problemi concreti: gestione del bus I2C, comunicazione 1-Wire, rendering grafico accelerato via DMA, connettività WiFi e perfino l’integrazione con Matter per la casa intelligente. Il quadro che ne esce sorprende per completezza.
RP2350 ed Embassy, la base hardware e il salto software
Raspberry Pi Pico 2 monta il microcontrollore RP2350, erede diretto dell’RP2040 che aveva spinto il successo della prima generazione di schede Pico. La nuova architettura porta più potenza e una bella flessibilità progettuale: due core Arm Cortex-M33 e il supporto all’ecosistema RISC-V, così chi sviluppa può sperimentare architetture diverse senza cambiare hardware. Sul fronte sicurezza e funzionalità avanzate il passo in avanti è netto, tanto da rendere la scheda interessante non solo per gli hobbisti ma anche per prototipi professionali e applicazioni industriali. La filosofia minimalista resta intatta: il LED integrato collegato alla GPIO25 è ancora il punto di partenza ideale per i primi test, mentre il layout dei pin facilita l’integrazione con sensori, display e moduli esterni.
Se il chip è la base, Embassy è il vero elemento che fa la differenza. Tante applicazioni embedded usano cicli infiniti che interrogano di continuo sensori e periferiche: un approccio che regge nei progetti semplici ma diventa ingestibile quando le funzioni del firmware si moltiplicano. Embassy porta nell’embedded il paradigma async/await, già di casa nello sviluppo moderno. Invece di tenere la CPU occupata durante le attese, i task vengono sospesi per lasciare spazio ad altro. Il vantaggio si vede subito quando bisogna gestire più periferiche insieme: un sensore aspetta la fine di una transazione I2C mentre un altro task aggiorna il display, un terzo elabora i dati di un accelerometro e un quarto tiene viva la connessione di rete.
Dai sensori alla grafica, fino alla smart home
Buona parte del repository realizzato da Mariusz Jurgielewicz è dedicata all’interfaccia I2C, uno dei protocolli più usati per dialogare con i sensori esterni. La configurazione sfrutta il controller I2C0 del RP2350, con GPIO4 sulla linea SDA e GPIO5 sulla SCL. Tra i primi esempi spunta il sensore HS3003 di Renesas, pensato per misure ambientali accurate: rileva temperature tra meno 40°C e più 125°C con precisione di 0,2°C, mentre l’umidità relativa va da 0% a 100% RH con accuratezza dell’1,5%, il tutto a risoluzione 14 bit. Lo stesso principio vale per l’ADXL345, accelerometro triassiale a 13 bit capace di misurare accelerazioni fino a 16g, utile in robotica, monitoraggio industriale, wearable e IoT.
Discorso diverso per il protocollo 1-Wire del sensore DS18B20, dove il tempo conta davvero. Ogni bit viaggia con impulsi dalla durata definita al microsecondo, e piccole variazioni rovinano tutto. Il progetto se la cava con un’implementazione chiamata PreciseDelay, capace di ritardi sub microsecondo privi di jitter sul Cortex-M33. Così il firmware comunica senza intoppi col DS18B20, leggendo temperature tra meno 55°C e più 125°C con accuratezza tipica di 0,5°C.
Sorprende anche la parte grafica. Via bus SPI del RP2350, gli esempi arrivano a mostrare un’immagine a colori da 320×240 pixel su un display TFT Adafruit da 2,2 pollici, e poi una nevicata animata sopra una foto panoramica. Qui entra in gioco un framebuffer off screen con trasferimenti DMA: mentre il controller aggiorna il pannello, la CPU continua a calcolare la posizione dei fiocchi.
Il pezzo forte resta Matter. L’esempio trasforma una Raspberry Pi Pico 2 W in una lampadina intelligente compatibile con i principali ecosistemi domestici. Il provisioning parte dal Bluetooth Low Energy, che passa le credenziali della rete WiFi, poi tutto viaggia sullo stack rs-matter. Una volta configurato, il dispositivo finisce dritto in Home Assistant, Apple Home o Google Home, riconosciuto come una normale lampadina smart, con un LED esterno sulla GPIO15 collegato tramite una resistenza tra 220 e 330 ohm che riflette subito ogni comando dell’utente.