Raspberry Pi dispone di un’interfaccia GPIO, acronimo di General Purpose Input Output. Questo tipo di interfaccia consente ai dispositivi che ne siano dotati di interagire con un’altra periferica. Tali periferiche possono agire come input o output, per controllare o fungere da segnalatore agli altri dispositivi.
La piedinatura GPIO del Raspberry Pi è configurabile individualmente “pin a pin” e, prima di parlare di eventuali problemi che possono verificarsi durante un normale utilizzo, diamole un’occhiata:
Consigli generali sull’utilizzo dell’interfaccia GPIO
Il primo concetto da avere ben chiaro in mente quando si utilizza l’interfaccia GPIO, è la tensione massima tollerata da ogni singolo pin. Al contrario di quello che pensano in tanti, il solo livello logico di funzionamento consentito è di 3,3V.
Attenzione: Tensioni superiori ai 3,3V danneggiano irrimediabilmente la board.
Cortocircuitare i due pin GPIO + 3,3 V e + 5 V o un pin di alimentazione a terra, fa andare in protezione il Raspberry Pi. Il polifusibile di ingresso scatta e si ripristina automaticamente dopo essersi raffreddato (ricristallizzazione del polimero). Il processo di ricristallizzazione può richiedere diverse ore, quindi in previsione di problemi come questo, tenete sempre un Raspberry Pi di scorta.
Elettricità Statica
I pin GPIO si collegano direttamente al nucleo del processore ARM e sono sensibili all’elettricità statica, quindi è fortemente consigliato evitare di toccare i pin ove possibile. Toccate sempre una superficie metallica prima di toccare i pin GPIO (o qualsiasi dispositivo ad essi collegato). Anche se è un problema sostanzialmente raro, è stato verificato che l’elettricità statica è in grado di bruciare il Raspberry Pi.
Testare l’interfaccia GPIO
Ogni volta che l’interfaccia GPIO dà problemi, è possibile eseguire un test diagnostico (richiede la libreria pigpio).
Attenzione: per tutta la durata del test non collegare nulla ai pin GPIO (niente LED, fili, cavi ecc.).
Da riga di comando digitare:
gpiotest
Il test verifica che ogni pin GPIO possa essere letto e scritto, e che i pull-up e pull-down della resistenza interna siano funzionanti.
Se il test è andato a buon fine, dovreste avere un output simile a questo:
tutti i pin dell’interfaccia GPIO funzionano correttamente in lettura e scrittura e le relative resistenze di pull-up e pull-down funzionano senza problemi.
123456789101112131415 This program checks the Pi's (user) gpios.The program reads and writes all the gpios. Make sure NOTHINGis connected to the gpios during this test.The program uses the pigpio daemon which must be running.To start the daemon use the command sudo pigpiod.Press the ENTER key to continue or ctrl-C to abort...Testing...Skipped non-user gpios: 0 1 28 29 30 31Tested user gpios: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27Failed user gpios: None
In caso di problemi, l’output sarà invece simile a questo:
Come vedete non solo non è possibile una lettura o una scrittura di alcuni pin GPIO, ma le resistenze di pull-up e pull-down sono bruciate.
12345678910111213141516171819202122232425 This program checks the Pi's (user) gpios.The program reads and writes all the gpios. Make sure NOTHINGis connected to the gpios during this test.The program uses the pigpio daemon which must be running.To start the daemon use the command sudo pigpiod.Press the ENTER key to continue or ctrl-C to abort...Testing...Write 1 to gpio 17 failed.Pull up on gpio 17 failed.Write 1 to gpio 18 failed.Pull up on gpio 18 failed.Write 0 to gpio 23 failed.Pull down on gpio 23 failed.Write 0 to gpio 24 failed.Pull down on gpio 24 failed.Write 1 to gpio 27 failed.Pull up on gpio 27 failed.Skipped non-user gpios: 0 1 28 29 30 31Tested user gpios: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27Failed user gpios: 17 18 23 24 27
Visualizzare le forme d’onda dei pin GPIO con piscope
Se volete spingervi oltre e controllare in tempo reale il funzionamento dell’interfaccia GPIO, alcuni siti consigliano l’utilizzo di piscope, un visualizzatore di forme d’onda. Piscope è uno strumento software per visualizzare i livelli di segnale di un progetto di circuito digitale o analogico. Ovviamente dovete essere in grado di leggere la forma d’onda e il segnale corrispondente, pertanto se siete alle prime armi non è la strada che consigliamo.
Se vi siete persi i capitoli precedenti della guida alla Risoluzione dei problemi con Raspberry Pi, potete trovarli qui:
- Risoluzione Problemi Raspberry Pi Vol I: i LED di stato
- Risoluzione Problemi Raspberry Pi Vol II: Firmware
- Risoluzione Problemi Raspberry Pi Vol III: La Scheda SD
- Problemi Raspberry Pi Vol IV: Mouse e Tastiera
- Risoluzione Problemi Raspberry Pi Vol. V: Password
Articolo interessantissimo.
Ho necessità proprio di verificare le porte del mio Raspberry 3B+
Mi servirebbe un aiutino
Poichè sul mio non era presente la libreria ho installato pigpio-master (L’unica che ho trovato).
Purtroppo il comando gpiotest non c’è.
Dove stò sbagliando?
Ringrazio anticipatamente per la pazienza e l’aiuto.
Grazie
Buongiorno Francesco,
l’installazione che hai eseguito va bene, adesso dobbiamo testare il GPIO e vedere se tutto funziona.
Didatticamente parlando, pigpio è un daemon: non è altro che un programma che lanci e aspetti che ti restituisca qualcosa. Un daemon non prevede interazione con l’utente, quindi una volta lanciato dovrai aspettare che esegua tutta la procedura. C’è un comando di “brute force” che lo stoppa, ma lo vediamo dopo. In genere, consiglio sempre di non stopparlo ma lasciargli finire tutta la procedura.
Il comando per lanciare il test è il seguente (va fatto con permessi di root):
sudo pigpiod
se vuoi stopparlo
sudo killall pigpiod
Mi raccomando, scollega tutto dagli header GPIO per fare il test.