Forse non tutti i possessori del Raspberry Pi 3 sanno che, nell'ambito del suo stesso sistema operativo, è presente un'utility utilizzabile da modalità terminale, che gestisce la porta GPIO. Essa consente di abilitare o disabilitare le porte di uscita, leggere lo stato logico di un ingresso ed effettuare altre operazioni utili, senza alcuna fatica.
Senza programmazione
Quando si entra in possesso di un Raspberry Pi 3, la prima operazione che compie un programmatore elettronico è quello di cercare di pilotare una porta GPIO e di leggere il suo stato logico, proveniente da un sensore digitale o da un pulsante. Quindi, egli sceglie un opportuno linguaggio di programmazione, come il C, il Python, Harbour o altri, predispone tutta la gestione dei files incaricati nelle abilitazioni delle porte e prova se un ipotetico diodo Led collegato funziona correttamente o se un interruttore risponde secondo le proprie aspettative e previsioni. La scrittura di tale software potrebbe risultare un po' impegnativa e onerosa, in termini di tempo, in quanto implica il richiamo di alcuni files di sistema nella corretta sequenzialità.
Ma il Raspian ci regala una grandiosa utility, già pronta e presente sul piatto d'argento che, da sola, effettua un completo trattamento della porta in questione. Tale semplice programma è richiamabile da una finestra di console e, come si vede dalla figura 1, le opzioni sono davvero tante. Inviando semplicemente il comando "gpio" e premendo il tasto invio, saranno visualizzate le varie opzioni.
La prima particolarità, molto importante, è che l'utility può essere invocata tanto da root quanto da utente normale.
Porta in ingresso o in uscita
Prima di utilizzare le porte è opportuno configurare la funzionalità di esse. Le opzioni principali prevedono se un pin del Raspberry Pi deve lavorare come ingresso oppure come uscita. I seguenti comandi effettuano, rispettivamente, tali settaggi:
gpio -g mode 26 out gpio -g mode 26 in
Attivare e disattivare una porta
Le prove migliori dell'utility si apprezzano di più collegando un carico alla porta di comunicazione prescelta. E' sufficiente anche un semplice diodo Led, preceduto dalla solita resistenza di limitazione di corrente. Per porre la porta 26, ad esempio, ad un valore logico alto, si deve invocare il seguente comando:
gpio -g write 26 1
Se il diodo è correttamente collegato esso si accenderà subito. L'opzione -g consente di trattare la porta con una numerazione BCM_GPIO, invece di quella fisica. Per spegnere il Led basta porre a zero la sua uscita, con il comando:
gpio -g write 26 0
Leggere lo stato di una porta
Dopo aver configurato una porta in modalità di ingresso (vedi sopra) se ne può leggere il relativo stato logico, proveniente da un sensore o interruttore digitale, con il seguente comando riferito, sempre come esempio, alla porta 26:
gpio -g read 26
In risposta, sarà visualizzato sullo schermo o, meglio, su stdout, il valore "1" o "0".
Lettura e scrittura di valori analogici
Anche se il Raspberry Pi non è provvisto di ingressi e di uscite analogiche, l'utility GPIO prevede le relative implementazioni, tramite opportune interfacce esterne, usando le opzioni aread e awrite del comando gpio.
Mappa di tutte le porte
I comandi gpio readall e gpio allreadall sono molto interessanti e utili. Consentono di visualizzare l'intera mappa delle porte, assieme al loro stato logico. La figura 2 mostra l'interrogazione del Raspberry Pi in un determinato momento.
Conclusioni
L'utility ha ancora tante opzioni da scoprire. L'utilità di questo programma è indubbia e gli utenti, spesso, vengono a sua conoscenza solo dopo aver faticato parecchio nel realizzare le proprie routines. In maniera molto semplice essa può essere inglobata nei propri progetti, con la piena consapevolezza di ottenere un sicuro e affidabile funzionamento delle proprie applicazioni.
Questa utility è strepitosa. Quando ne sono venuto a conoscenza ne sono rimasto davvero sorpreso per quanta mole di lavoro si potesse risparmiare, gestendo le porte GPIO con le proprie applicazioni.
Le porte GPIO rappresentano il vero core del raspberry pi come kit di sviluppo. Articolo interessante!
Beh, tutto il lavoro fatto per capire la gestione delle porte GPIO attraverso i file rimane comunque utile. Così però è una pacchia…