Single Board Computer: un cervello per i prototipi di tutti i giorni
Un Single Board Computer è un computer completo di logica, memoria e dispositivi di I/O, disegnato per contenere tutti i componenti in un circuito stampato. A differenza dei semplici microcontrollori come Arduino o Raspberry Pi Pico, i SBC hanno le risorse per eseguire un intero sistema operativo (OS), ad esempio Linux o Windows 10 IoT Core.
I primi dovranno essere programmati da un computer esterno ed eseguiranno una serie di istruzioni relativamente limitate (infatti l’ambiente di sviluppo di Arduino, o Arduino IDE è semplicemente un’insieme di funzioni C/C++ che vengono compilate e flashate su una scheda). Di contro i SBC si possono usare con qualsiasi OS e linguaggio di programmazione che meglio si adatti al progetto che abbiamo in mente.
Il maggiore player nel mondo dei SBC è senza dubbio la fondazione Raspberry Pi (RPi), con l’omonima linea di prodotti. Sono presenti anche altre aziende famose nel settore dei semiconduttori, come Asus, Nvidia ed Intel, ma il mercato è in realtà molto ampio e di SBC ne esistono a bizzeffe. Per farsi un’idea è sufficiente dare un’occhiata alle liste di compatibilità dei OS pensati per essi.
Le caratteristiche dei Single Board Computer
Rispetto a un personal computer tradizionale i Single Board Computer hanno dimensioni molto ridotte, all’incirca quelle di una carta di credito, con lo spessore dato dalle porte di input/output come USB o LAN. Sono privi di un case a protezione della circuiteria, che può essere lasciata esposta o, a seconda dell’applicazione, protetta da un case acquistato a parte o creato fai da te, magari stampato in 3D. I consumi sono molto bassi, solitamente sotto i 10W, infatti gli SBC puntano molto all’efficienza, usando saggiamente ogni Watt e limitando qualsiasi componente non necessario.
Le prestazioni in termini di calcolo variano molto in base al modello e di conseguenza varia il prezzo. I più semplici mirano ad avere prezzi molto bassi (6€ nel caso del primo RPi Zero) ed essere comunque ben capaci di eseguire un sistema operativo e le applicazioni meno esose. I più potenti sono comparabili a smartphone di fascia bassa, come il RPi 4 con rare eccezioni che si spingono fino ai livelli dei PC tradizionali che, condividendo con essi la maggior parte dei componenti, arrivano a costare diverse centinaia di euro.
Aalcuni modelli differiscono in quanto il focus principale non è la potenza di calcolo general-purpose, ma l’esecuzione efficiente di un carico di lavoro specifico. È il caso del Google Coral Development Board, un SBC mirato ad applicazioni nel campo dell’Intelligenza Artificiale. Poche SBC possiedono una memoria di archiviazione integrata, solitamente eMMC; nella maggioranza dei casi occorrerà aggiungerla attraverso gli slot di espansione a disposizione (MicroSD, USB, SATA, etc).
Porte e GPIO
Oltre alle comuni porte di alimentazione e I/O come USB, HDMI, LAN possono essere presenti altre porte di espansione proprietarie o universali, dedicate a componenti specifici come fotocamere e display. Inoltre ogni Single Board Computer che si rispetti possiede dei connettori GPIO, o General Purpose Input Output, che possono essere programmati per interagire con il mondo esterno, pilotare motori, relè, o acquisire informazioni da dei sensori. L’uso che si può fare di questi connettori è il più svariato e dipende molto dalla nostra applicazione specifica.
Sistemi Operativi
Stesso discorso vediamo per i OS (Operating System) disponibili, ne esistono decine o centinaia pensati più o meno per un’applicazione specifica. Nella scelta dell’OS va fatta particolare attenzione alla compatibilità con l’SBC. In particolare bisogna rispettare l’architettura del processore (ARM a 32 o 64 bit, o x86 a 32 o 64 bit) e i requisiti minimi in termini di spazio di archiviazione e RAM. È sempre preferibile scegliere un OS esplicitamente compatibile con l’SBC, o viceversa sceglierne uno esplicitamente compatibile con l’OS che si vuole usare.
La maggioranza degli OS sono basati su Debian, una versione di Linux molto leggera e flessibile, adatta sia a chi è alle prime armi e vuole imparare le basi della programmazione, sia a server che devono gestire carichi importanti e migliaia di connessioni contemporaneamente.
Solitamente questi OS non hanno una UI installata di base, questo per ridurre il peso e le risorse necessarie per eseguirli, ma anche perché un caso d’uso comune per i SBC è l’utilizzo headless, ovvero non connessi a un display. Si pensi ad esempio all’uso come server o NAS (Network Attached Storage) casalingo. Se si vuole usare un ambiente desktop, va installato a parte o si può optare per un OS che l’abbia installato di base.
Sebbene siano per la maggior parte basati su Debian, sono molto diversi fra loro, qui qualche esempio:
- Raspberry Pi OS: in precedenza chiamato Raspbian è il OS più popolare e supportato ufficialmente dalla Raspberry Pi Foundation. Ottimo come base di partenza generica se si possiede uno dei loro SBC, meno usato dagli utenti più avanzati se hanno in mente un caso d’uso specifico per la loro SBC;
- DietPi: un OS ridotto all’osso. Il suo punto di forza è la lista di programmi installabili in maniera guidata: con il solo comando dietpi-software si possono installare programmi che diversamente richiederebbero molti più comandi, o anche avventurarsi nella modifica dei file di configurazione;
- OSMC (Open Source Media Center) e OpenELEC sono creati per ospitare Kodi OS, un programma (e non un OS) ottimizzato per la riproduzione di media locali e in streaming, con una particolare interfaccia pensata per essere controllata con un telecomando su grandi schermi;
- RetroPie è un OS dedicato al retrogaming, ovvero l’emulazione di console di gioco come i Nintendo 64, Game Boy, Playstation e tante altre diventate classici del passato.
Notevoli eccezioni agli OS per SBC basati su Debian sono:
- RISC OS, un OS disegnato per processori ARM dai creatori di ARM stesso;
- Windows IoT Core, un OS creato da Microsoft per Raspberry Pi pensato come piattaforma di sviluppo per programmatori focalizzato alla creazione di prototipi IoT;
- Ubuntu Linux, famoso nell’ambito PC, la sua versione Server è disponibile anche per piattaforme ARM, quindi compatibile con la maggioranza delle SBC.
La lista è ancora lunga e dà spazio a OS dedicati alla sicurezza, alla domotica, all’archiviazione di rete e cloud, e chi più ne ha più ne metta. Se pensate ad una applicazione specifica, esiste probabilmente un OS per SBC costruito ad-hoc per essa.
Single Board Computer: destinatari e applicazioni creative
Le SBC sono destinate a esperti e principianti che vogliono mettersi alla prova o imparare di più riguardo la programmazione. Avere una macchina dedicata è di per sé un vantaggio rispetto ad usare il PC. Se qualcosa dovesse andare storto possiamo flashare l’OS e ritornare al punto di partenza senza troppe preoccupazioni. Ma avere un computer di piccole dimensioni e che consumi poco porta anche a interessanti applicazioni creative.
Da server casalingo a fotocamera time-lapse, da mini gaming-PC (con una SBC capace come la LattePanda) a controller per l’irrigazione del nostro giardino. I SBC sono gli strumenti molto versatili e le possibili applicazioni sono davvero infinite e limitate solo dalla nostra fantasia!
Articolo a cura di Francesco Porcelli