Pilotare le porte GPIO del Raspberry Pi senza alcuna programmazione

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.

 

Figura 1; Le opzioni dell'utility GPIO

Figura 1; Le opzioni dell'utility GPIO

 

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.

 

Figura 2: Lo status delle porte del Raspberry Pi

Figura 2: Lo status delle porte del Raspberry Pi

 

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.

 

 

 

2 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 26 aprile 2017
  2. Maurizio Di Paolo Emilio Maurizio Di Paolo Emilio 26 aprile 2017

Scrivi un commento