
Il Raspberry Pi è stato utilizzato, sino ad ora, come un normale PC, con il quale abbiamo imparato e approfondito la programmazione in Linguaggio C. Da questa puntata del corso le cose cambiano: il dispositivo sarà visto, infatti, come un apparecchio elettronico programmabile. In questo modo lo potremo collegare a componenti esterni, per il loro pilotaggio o per l'acquisizione di dati ed informazioni. Questo articolo tratterà, in maniera approfondita, le porte in uscita, ossia quei pin di cui è dotato il RPi da cui può uscire, o meno, una tensione elettrica. Gli esempi e le argomentazioni trattate saranno di ordine crescente e facilmente realizzabili da tutti i lettori.
Introduzione
Il Raspberry Pi è un potente computer con una marcia in più: la sua piastra madre è dotata di alcune porte elettroniche di I/O da poter collegare a dispositivi esterni come LED, transistor, sensori ed altro. Il suo interfacciamento con il mondo esterno è, dunque, assicurato e le sue potenzialità di utilizzo sono pressoché infinite. Pensate un attimo ad un microcontrollore: si può programmare, è dotato di alcune porte di I/O ma manca la gestione di un sistema operativo e non può essere collegato normalmente ad un monitor o TV. Tutte queste lacune, a prima vista superabili, sono egregiamente risolte dal nostro gioiello, oggetto del presente corso.
Le porte GPIO
Si tratta di un insieme di porte presenti sul Raspberry Pi che fanno capo ad un connettore maschio. GPIO è l'acronimo di General Purpose I/O. La sua identificazione è semplice, in quanto si tratta di un insieme numeroso di pin numerati. La figura 1 mostra la dislocazione di tale connettore e la sua piedinatura.
La piedinatura non è sequenziale ma alternata. Per evitare malfunzionamenti dei propri progetti o, addirittura, guasti al dispositivo, controllate sempre attentamente il datasheet di riferimento. Lavorare con la GPIO richiede, infatti, sempre la massima attenzione. Il collegamento con i vari pin deve essere effettuato con opportuni cavetti o jumper di tipo "femmina" da connettere alle varie porte, senza la possibilità di accidentali corto circuiti tra le stesse. Guardiamo un po' il connettore è descriviamo le funzionalità dei contatti di alimentazione:
- Il pin 1 mette a disposizione una tensione positiva di 3.3V. La corrente massima prelevabile è di 50 mA;
- Il pin 2 eroga una tensione positiva di 5V. Può anche servire per alimentare il Raspberry Pi;
- Il pin 6 costituisce la massa comune del sistema.
La porta GPIO dispone, in totale, di diciassette contatti anche se quelle direttamente utilizzabili, quali input e output digitali, sono otto. Esse lavorano con una tensione di 3.3 Volt, sia come ingresso che uscita. In base alla loro numerazione sul bus, esse posseggono i seguenti nomi:
- GPIO0
- GPIO1
- GPIO4
- GPIO14
- GPIO15
- GPIO17
- GPIO18
- GPIO21
- GPIO22
- GPIO23
- GPIO24
- GPIO10
- GPIO9
- GPIO25
- GPIO11
- GPIO8
- GPIO7
Vedremo adesso come si configurano le porte per l'output di un segnale digitale, come effettuare un collegamento elettrico di un diodo led su essi e come scrivere un adeguato [...]
ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2680 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici che potrai leggere in formato PDF per un anno. ABBONATI ORA, è semplice e sicuro.

Mi piace molto l’accensione della lampadina da tastiera; implementando altre funzioni avanzate come la connessione internet si potrebbe anche sperimentare l’accensione da remoto che nasconde molto applicazioni di controllo come Giovanni ci fa notare nelle conclusioni.
Un embedded in effetti offre milioni di possibilità. Una scuola della mia città ha realizzato un simulatore di terremoto, con tanto di pistoni idraulici e finta casa costruita sopra. Si preme un pulsante e avviene il finto terremoto. Uno sballo…
Concordo, l’idea di accendere la lampadina da tastiera è bellissima.
Una domanda all’autore:
Nei prossimi articoli tratterai anche la funzione Timer Interrupt?
Complimenti per l’articolo, interessante come tutti quelli che hai presentato.
Grazie dei complimenti.
Si, penso proprio di si, ma nella parte di corso Avanzato.
Ciao
Ciao a tutti,
per quanto riguarda l’utilizzo di echo io ho avuto problemi di permessi.
Se qualcuno avesse lo stesso problema provi a utilizzare sudo sh -c.
Per esempio:
sudo sh -c ‘echo out > /sys/class/gpio/gpio4/direction’
Riferimento: http://unix.stackexchange.com/questions/118716/unable-to-write-to-a-gpio-pin-despite-file-permissions-on-sys-class-gpio-gpio18