Dieci cose da sapere prima di iniziare un progetto Raspberry Pi

Contributo di Digi-Key's North American Editors

Raspberry Pi è al centro di una rivoluzione che ha portato la potenza dei PC nelle mani dei consumatori, offrendo una piattaforma facile da usare con un ampio ecosistema di supporto. Per quanto intuitiva e facile da usare possa essere la piattaforma, tanto gli ingegneri quanto i principianti possono beneficiare di alcuni consigli da coloro che hanno già utilizzato Pi.

Le "Dieci cose da sapere" non hanno la pretesa di essere esaustive in quanto la comunità online fornisce supporto costante. Possono essere considerate come preziosi suggerimenti che non si trovano nelle guide o nei tutorial, frutto di un'esperienza faticosamente acquisita sul campo. Si tratta di consigli sulla scelta e sulla formattazione delle schede SD, sull'individuazione degli alimentatori per il Raspberry Pi o sul dongle Wi-Fi giusto, oppure di indicazioni sulla programmazione, su cosa fare quando il sistema va in blocco e su come evitare di distruggere la scheda alimentandola in modo corretto.

Scorrere velocemente questi suggerimenti rapidi contribuirà in larga misura a rendere piacevole il vostro primo incontro con un Raspberry Pi e con la potenza delle piattaforme monoscheda nel loro complesso.

1: Dove e quando usare un Raspberry Pi

In ragione del prezzo, delle prestazioni e della presenza di una comunità di supporto è praticamente impossibile non ricorrere al Raspberry Pi per qualsiasi attività immaginabile. Si tratta, in ultima istanza, di un personal computer. Prendiamo, ad esempio, il Raspberry Pi 3 modello B della Raspberry Pi Foundation che si basa su ARM® Cortex®-A53 con frequenza fino a 1,2°GHz. È supportato da 1 gigabyte di RAM, una LAN wireless 802.11n, Bluetooth 4.1 e Bluetooth Low Energy, 4 porte USB, 40 pin GPIO, porta full HDMI, Ethernet, spinotto audio da 3,5°mm e interfacce per foto/videocamera e display.

Immagine del Raspberry Pi 3 modello B

Figura 1: Il Raspberry Pi 3, modello B della Raspberry Pi Foundation si basa su ARM® Cortex®-A53 con frequenza fino a 1,2°GHz, ha 1 gigabyte di memoria e connettività wireless LAN 802.11n. (Immagine per gentile concessione di Raspberry Pi Foundation)

Tra le sue molteplici funzionalità, che spaziano dalla lettura di un sensore di temperatura o dal controllo di un sistema meccatronico di motori e pistoni sino a tutte le operazioni eseguite da un normale PC, segnaliamo alcune attività interessanti e divertenti come la manipolazione di video, la robotica e il controllo a distanza di stampanti 3D.

2: Ai blocchi di partenza con il Raspberry Pi

Il Raspberry Pi è stato progettato per funzionare con un sistema operativo piuttosto che con puro codice su un sistema "bare-metal". L'OS più diffuso, progettato appositamente, richiama Linux e porta il nome di Raspbian, parola in cui si fondono Raspberry e Debian. Anche se il Raspberry supporta altri sistemi operativi, ai principianti si consiglia caldamente di iniziare con Raspbian.

Usato come un computer autonomo, il Raspberry Pi necessita di tutte le normali periferiche: mouse, tastiera, scheda SD (classe 10, almeno 8 gigabyte, ad esempio AP8GMCSH10U1-B di Apacer Memory America) e di un monitor.

È necessario anche un lettore esterno di schede SD per salvare inizialmente sulla scheda SD un'immagine di Pi da un diverso PC. Una volta copiata l'immagine sulla scheda SD, qualsiasi altra attività può essere eseguita da Pi. Il lettore di schede SD USB 2.0 DA-70310-2 di Assmann WSW Components rappresenta una buona scelta, in grado di gestire quasi tutti formati più comuni di schede di memoria.

Per formattare la scheda SD, nella pagina web di Raspberry Pi è disponibile un link per ottenere il programma SD Card Formatter software della SD Association. Si consiglia di utilizzare solo software sperimentato per non incontrare problemi nell'installazione di un NOOBS (New Out Of Box Software) sulla scheda SD. In alternativa, si potrà acquistare una scheda SD con NOOBS pre-installato, come la scheda Raspberry Pi NOOBS da 16 gigabyte.

Una soluzione wireless per tastiera e mouse, come quella proposta da Adafruit con il modello 1738, lascia libere le porte USB ed evita grovigli di cavi. Oppure si può utilizzare un hub USB 2.0 alimentato, ad esempio il modello a 4 porte U22-004-RA di Tripp Lite. Si consiglia di usare un hub a 4 porte alimentato perché riduce la richiesta di alimentazione a carico del Pi.

Un utente può fare a meno di mouse, tastiera e monitor se intende collegarsi al Pi tramite protocollo SSH o pensa di utilizzare un touchscreen (si rimanda al suggerimento n. 9).

Inoltre, a meno che il monitor sia dotato di ingresso HDMI, servirà un adattatore per collegare la porta HDMI del Pi all'ingresso su quel monitor. Ad esempio, per collegare a ponte HDMI a un monitor con DVI-D, si consiglia di usare 741-20010-00300 di CnC Tech (Figura 2).

Immagine dell'adattatore maschio da HDMI (19 pin) a DVI-D (19 pin) modello 741-20010-00300 di CnC Tech

Figura 2: Per collegare l'uscita HDMI del Raspberry Pi a un monitor, può servire un adattatore maschio da HDMI (19 pin) a DVI-D (19 pin) come il modello 741-20010-00300 di CnC Tech. (Immagine per gentile concessione di CnC Tech)

Più avanti, quando il PI verrà integrato in un sistema o in un progetto, queste periferiche verranno verosimilmente accantonate.

3: Dotarsi dell'alimentazione corretta

Il Raspberry Pi non deve essere alimentato dalla porta USB di un computer, che non è in grado di fornire il surplus di potenza necessario per evitare problemi legati all'alimentazione, ad esempio la corruzione di schede SD, il Raspberry Pi in blocco o altri eventi sporadici. 2 A in genere sono sufficienti, ma si consigliano 2,5 A per il Raspberry Pi 3.

Molti degli alimentatori con corrente più alta sono dotati di connettori di uscita maschi cilindrici. Per il Raspberry Pi 3 (Figura 3), si consiglia di utilizzare l'adattatore da spinotto a spina micro USB A 2727 di Adafruit con qualsiasi alimentatore da 5 V dotato di connettore cilindrico a centro positivo da 5,5 x,2,1 mm. 

Immagine dell'adattatore da spinotto a spina micro USB A di Adafruit modello 2727.

Figura 3: Per alimentare il Raspberry Pi con i 2,5 A consigliati, si suggerisce di abbinare l'adattatore da spinotto a spina micro USB A 2727 di Adafruit con qualsiasi alimentatore da 5 V dotato di connettore cilindrico a centro positivo da 5,5 x,2,1 mm. (Immagine per gentile concessione di Adafruit)

Il Raspberry Pi non necessita di per sé di tutta quella corrente. Lo scopo è quello di utilizzare un'alimentazione che dispone di un sovraccarico sufficiente a evitare cali della tensione in ingresso quando altri dispositivi elettronici o accessori vengono collegati alla scheda. Tenendo in considerazione tutto ciò, segue una panoramica dei requisiti di alimentazione.

A seconda del modello, in modalità di inattività i Raspberry assorbono approssimativamente da 100 mA a 300 mA e ogni loro successiva iterazione una quantità maggiore (Figura 4). Se l'applicazione è a bassissima potenza, si consiglia di tenerne conto nel processo di selezione del Raspberry Pi.

Pi1 (B+) Pi2 B Pi3 B (A) Zero (A)
Boot Max 0,26 0,40 0,75 0,20
Media 0,22 0,22 0,35 0,15
Inattivo Media 0,20 0,22 0,30 0,10
Riproduzione video (H.264) Max 0,30 0,36 0,55 0,23
Media 0,22 0,28 0,33 0,16
Sotto carico Max 0,35 0,82 1,34 0,35
Media 0,32 0,75 0,85 0,23

Figura 4: Tabella comparativa dell'assorbimento di corrente tra alcuni dei modelli Raspberry Pi più diffusi. (Immagine per gentile concessione di Raspberry Pi Foundation)

Se Pi utilizza una connessione mobile potrebbe non assorbire corrente sufficiente per l'accensione della maggior parte dei banchi di alimentazione USB portatili, a causa della configurazione dei loro circuiti interni. Procuratevi le batterie 1565 da 4000 mAh o 1566 da 10.000 mAh di Adafruit, il cui funzionamento su Pi è già stato testato.

4: Procurarsi o realizzare un cavo USB con interruttore di alimentazione in linea

Il Raspberry non è dotato di un pulsante di ripristino o di un interruttore di alimentazione. Per evitare di scollegare e ricollegare il cavo USB ogni volta che la scheda va in blocco ed è necessario eseguire un ripristino, si consiglia di dotarsi di un cavo USB con interruttore in linea come il 2379 di Adafruit. È un consiglio dettato dall'esperienza. È inevitabile che i principianti, mentre imparano, prima o poi bloccheranno il sistema. È molto più semplice avere un pulsante da premere al posto di un filo e di un connettore da gestire, con la conseguente riduzione dell'usura del connettore USB.

Occorre però prestare attenzione al fatto che, in circostanze normali, non è consigliabile ricorrere all'uso dell'interruttore per spegnere il Raspberry Pi. Togliere la corrente senza seguire la corretta procedura per lo spegnimento potrebbe corrompere la scheda SD. Si rimanda a "Dove si trova l'interruttore di alimentazione".

5: Le chiavi del successo: le schede accessorie del Raspberry Pi

Il Raspberry Pi è un potente computer monoscheda, ma nessun PC di questo tipo può avere tutto. Fortunatamente è possibile procurarsi con facilità molte schede accessorie, in grado di ampliare le funzionalità del Pi.

Ad esempio, il Raspberry Pi non ha convertitori analogico/digitale (ADC) per l'acquisizione di dati su scheda, ma sono disponibili diverse soluzioni per ovviare a questo problema. Una è rappresentata dalla scheda di conversione analogico-digitale (ADC) e digitale-analogico (DAC) 103990060 di Seeed Technology (Figura 5).

Immagine della scheda di espansione 103990060 per Raspberry Pi di Seeed Technology

Figura 5: Con la scheda di espansione 103990060 di Seeed Technology il Raspberry Pi acquisisce capacità di conversione ADC e DAC con risoluzione di 8 bit. (Immagine per gentile concessione di Seeed Technology)

Un altro metodo per aggiungere ingressi ADC a un RasPi consiste nel delegare il compito a una piccola scheda Arduino come la Trinket a 3,3 V di Adafruit.

Se si intraprende questa strada, è consigliabile leggere "Dieci cose da sapere prima di iniziare un progetto Arduino" e poi programmare la scheda con un solo sketch per la raccolta dei dati analogici. I dati sono ritrasmessi al Pi tramite una connessione seriale.

Un metodo più diretto consiste nell'utilizzo di schede Arduino progettate appositamente per il Raspberry Pi, come gli shield di espansione AlaMode di Seeed e DFR0327 di DFRobot.

Per le operazioni che richiedono l'esecuzione in tempo reale è assolutamente necessaria una scheda accessoria, perché Raspian non ha questa funzionalità. Raspbian/Linux suddivide il tempo della CPU e lo assegna, in base alle necessità, alle applicazioni, al codice Python e a Raspbian stesso. L'imprevedibilità di questa redistribuzione delle risorse rende impossibile l'esecuzione in tempo reale.

6: Dongle Wi-Fi

Il metodo più semplice per installare aggiornamenti e applicazioni su un Pi è rappresentato da una connessione Internet tramite Wi-Fi, che è incorporata nel Raspberry Pi 3 (802.11n). Tuttavia, altre versioni del Raspberry Pi non sono dotate di Wi-Fi, perciò occorre acquistare un dongle apposito. In questo caso, occorre fare le opportune ricerche per essere certi che sia riconosciuto dal sistema operativo Raspbian. Un dongle che notoriamente funziona con il Raspberry Pi è il modulo miniaturizzato 802,11/b/g/n814 di Adafruit (Figura 6).

Immagine dell'adattatore USB 814 di Adafruit

Figura 6: Se la scheda Raspberry Pi a portata di mano non è dotata di Wi-Fi incorporato, eseguire le necessarie ricerche e procurarsi un dongle come l'adattatore USB 814 USB di Adafruit, che notoriamente funziona con Raspbian. (Immagine per gentile concessione di Adafruit)

7: Fare attenzione ai livelli logici di uscita e alle capacità di comando

Il Raspberry Pi usa livelli logici da 3,3°V. Si tratta di un piccolo ma importante dettaglio, che viene spesso trascurato. Parlare di livelli logici da 3.3°V significa che il Pi potrebbe non funzionare con i molti dispositivi e accessori che necessitano di una logica da 5°V. Inoltre, la sua corrente di comando è di 16 mA su ciascun pin, a patto che la corrente totale non superi i 50 mA circa. Questo problema può essere facilmente risolto grazie a un convertitore di livelli logici bidirezionale come il BOB-12009 di SparkFun.

Immagine del convertitore BOB-12009 da SparkFun

Figura 7: BOB-12009 di SparkFun converte i segnali da 5 V nei segnali da 3,3 V richiesti da un Raspberry Pi. (Fonte dell'immagine: SparkFun)

8: Il linguaggio di programmazione Python

Python è il linguaggio di programmazione predefinito per Raspbian. In effetti, l'immagine di Raspbian viene pre-caricata con l'ambiente di sviluppo Python denominato IDLE (Integrated Development and Learning Environment). Lavorare con Python si rivelerà fondamentale per la maggior parte dei progetti Pi.

All'interno di Raspbian, si può utilizzare IDLE 2 per eseguire Python 2 o IDLE 3 per eseguire Python 3. È consigliabile adottare IDLE 3/Python 3 per essere al passo e poter disporre della documentazione più recente.

Si noti che il codice Python 2 e 3 non sono direttamente intercambiabili. Il codice Python 2 è largamente utilizzato, perciò tornare alla versione precedente da Python 3 può rappresentare una forte tentazione ma occorre sapere che vi sono numerose differenze nella sintassi e nelle convenzioni di denominazione che le rendono incompatibili. Tuttavia, qualora si decida di cambiare, è possibile passare al setaccio il codice e apportare le modifiche necessarie per la conversione dal codice Python 2 al Python 3 e viceversa.

La via più breve per iniziare a costruire GUI personalizzate per i programmi Python è offerta da un set di strumenti denominato TkInter, che è già contenuto nel bundle Raspbian. L'uso di TkInter è documentato in numerosi brevi tutorial online, che aiutano l'utente a mettersi rapidamente al lavoro.

Per coloro che non hanno dimestichezza con la programmazione nel suo complesso, è consigliabile suddividere il progetto in componenti costituitivi di base. Si prenda ad esempio un progetto che prevede la proiezione su LCD, la lettura da un sensore con interfaccia SPI e l'acquisizione di input dagli utenti tramite 3 pulsanti. Scrivete una porzione separata di codice per ciascuna operazione. Scrivendolo tutto di seguito è più facile fare errori, rendendo il debug più difficile.

9: Dimensioni dello schermo

Durante la programmazione è opportuno usare un display grande, al posto di quello veramente piccolo - da 3 pollici - appoggiato sul Pi, perché è veramente difficile leggervi. Se può essere adatto per l'interfaccia finale personalizzata di un progetto, in genere si consiglia l'utilizzo di un monitor di dimensioni standard o anche di un display touchscreen da 7 pollici come l'LCD 8997466 della Raspberry Pi Foundation (Figura 8). A seconda del modello di Raspberry Pi, questo display potrebbe non venire automaticamente rilevato tramite il connettore DSI. Se il modello Pi richiede l'attivazione manuale dello schermo, consultare Github per la documentazione della procedura.

Immagine dell'LCD 8997466 dalla Raspberry Pi Foundation

Figura 8: Si sconsiglia l'uso dei minuscoli display da 3 pollici perché difficili da leggere. Dotarsi invece di un monitor di dimensioni standard o dell'LCD 8997466 da 7 pollici dalla Raspberry Pi Foundation. (Immagine per gentile concessione di Raspberry Pi Foundation)

Ciò detto, è preferibile un monitor di dimensioni normali. Inoltre, un display che si connette alla porta DSI o HDMI sarà molto più veloce di un display controllato attraverso la porta I/O per uso generico.

10: Suggerimenti veloci e rimedi

  • Potreste essere tentati dall'uso di una scheda con più di 32 GB. Nel caso, accertatevi di formattare la scheda come un file system FAT32. Il Raspberry Pi può leggere solo volumi FAT32.
  • Accertatevi che la compatibilità della scheda SD con il Raspberry Pi sia comprovata.
  • Se vi capiterà di bloccarvi sulla riga di comando, eseguite il comando 'sudo start x' per avviare la GUI.
  • I pin GPIO del Raspberry Pi non sono contrassegnati. Per evitare confusioni procurarsi una scheda di riferimento GPIO come questa di Seeed.

Immagine della scheda di riferimento per i pin GPIO del Raspberry Pi        

Figura 9: Identificazione dei pin GPIO del Raspberry Pi grazie a un comodo riferimento. (Immagine per gentile concessione di Seeed Technology)

  • Non alimentare il Raspberry Pi tramite i pin GPIO. Può essere fatto, ma comporta il bypass del fusibile su scheda. Il fusibile è autoripristinante e può essere sostituito se necessario. Se l'alimentazione viene instradata tramite GPIO e qualcosa salta, verosimilmente il Pi verrà distrutto.

Immagine del fusibile autoripristinante su scheda del Raspberry Pi 3

Figura 10: Il fusibile autoripristinante su scheda del Raspberry Pi 3 (freccia rossa) verrà bypassato se si sceglie di instradare l'alimentazione attraverso GPIO. È un procedimento rischioso per la scheda. (Immagine per gentile concessione di Digi-Key Electronics)

Quando si usa il Raspberry Pi per lo sviluppo, accertarsi di salvare un backup di tutti i file. È probabile che a un certo punto l'immagine sulla scheda SD si danneggi, rendendo i dati irrecuperabili. Il rischio può essere evitato completamente utilizzando come repository per i file un sistema di archiviazione portatile USB come l'unità da 16 gigabyte APHA016G2BACG-DTM di Apacer.

Immagine dell'unità USB Memory America di Apacer

Figura 11: Salvare i file su un'unità USB li proteggerà in caso di danneggiamento del file system del Raspberry Pi. (Immagine per gentile concessione di Apacer Memory America)

Conclusione

Il Raspberry Pi ha fama di essere potente, facile da usare e di avere un ottimo supporto. Sono ottimi presupposti per lo sviluppo di un'applicazione professionale o di un progetto a scopo di divertimento. A prescindere dalle competenze di base e dal livello di abilità che avete, questi suggerimenti vi aiuteranno ad accorciare la curva di apprendimento, a comprimere il time-to-market e ad aumentare la produttività dell'intero processo.

Esonero della responsabilità: le opinioni, le convinzioni e i punti di vista espressi dai vari autori e/o dai partecipanti al forum su questo sito Web non riflettono necessariamente le opinioni, le convinzioni e i punti di vista di Digi-Key Electronics o le sue politiche.

Informazioni su questo editore

Digi-Key's North American Editors