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.
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).
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.
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:
Notevoli eccezioni agli OS per SBC basati su Debian sono:
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.
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