wiringPi

Attenzione

Questa pagina l'ho scritta molto tempo fa e contiene materiale obsoleto

L'uso è sconsigliato e non posso più fornire alcun supporto

 

wiringPi è una libreria che ha lo scopo di semplificare l'accesso alle periferiche collegate al connettore GPIO. Il sito ufficiale è http://wiringpi.com.

Installazione di wiringPi

wiringPi è disponibile come pacchetto standard in Raspbian (nota 1):

pi@raspberrypi:~ $ sudo apt install wiringpi

pi@raspberrypi:~ $ gpio -v

gpio version: 2.50
Copyright (c) 2012-2018 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty

Raspberry Pi Details:
Type: Pi 3, Revision: 02, Memory: 1024MB, Maker: Sony
* Device tree is enabled.
*--> Raspberry Pi 3 Model B Rev 1.2
* This Raspberry Pi supports user-level GPIO access.

wiringPi ha due modalità di funzionamento:

gpio

Questo programma viene definito il "coltellino svizzero" che permette di accedere direttamente da shell alle funzioni di wiringPi.

Purtroppo questo programma deve essere eseguito con i diritti di root. Nell'installazione standard la cosa viene mascherata dal fatto che l'eseguibile è "SUIDdato", cioè con il flag setuid settato e quindi eseguito con i diritti di root anche se lanciato da un utente normale:

pi@raspberrypi:~/wiringpi $ which gpio
/usr/bin/gpio
pi@raspberrypi:~/wiringpi $ ls -l /usr/bin/gpio
-rw
sr-xr-x 1 root root 31436 Feb 29 07:32 /usr/bin/gpio

Per conoscerne il funzionamento (non esiste il man):

pi@raspberrypi:~ $ gpio

Un esempio d'uso (gpio -v) lo abbiamo già visto, per mostrare la versione installata.

Una opzione particolarmente utile permette di visualizzare i nomi dei 40 (o 26) pin presenti sul connettore GPIO (nota 3):

pi@raspberrypi:~ $ gpio readall

gpio readall

Per esempio il pin fisico 3 è indicato a seconda del contesto gpiocome:

Probabilmente questo in nome della chiarezza e della semplificazione...

Esempio

Proviamo ad accendere un LED collegato al pin GPIO.3 (pin fisico: 15; pin Broadcom, indicato in figura: GPIO22):

Led connesso a massa

Ovviamente per spegnere:
pi@raspberrypi:~ $ gpio write 3 0

Esempio

Proviamo a leggere un interruttore. Lo schema è uno dei seguenti, funzionalmente identici (nota 4). Si noti la presenza di una resistenza di pull-up (valore molto indicativo: 10 KΩ) necessaria al funzionamento (nota 5).

Analogamente al'esempio precedente il pin GPIO21 è identificato da wiringPi come GPIO.29 e corrisponde al pin fisico 40,

Leggere un interruttore

Esercizi

  1. Scrivere uno script che fa lampeggiare un LED usando gpio
  2. Scrivere uno script che accende tre LED rosso-giallo-verde come un semaforo
  3. Scrivere uno script che, sfruttando i due circuiti mostrati in questa pagina, accende il LED se l'interruttore è chiuso e lo spegne se aperto (uno smart wire)

Note

  1. Per aggiornare il sistema o installare software: Installare Raspbian. Nel caso di hardware particolarmente recente potrebbe essere necessario installare una versione più recente: per esempio se usate un RPi 4B serve almeno la versione 2.52 che nella data di ultima modifica di questa pagina deve essere scaricata manualmente da http://wiringpi.com
  2. In sistemi non aggiornati è necessario settare la variabile WIRINGPI_GPIOMEM:
    pi@raspberrypi:~ $ export WIRINGPI_GPIOMEM=1
  3. L'output reale non è colorato
  4. La resistenza da 100 Ω serve solo come protezione per eventuali collegamenti errati
  5. All'interno del chip Broadcom è presente una resistenza di pull-up che sostituisce quella esterna, opzione particolarmente comoda e semplice. Può essere attivate con:
    pi@raspberrypi:~ $ gpio mode 29 up

Data di creazione di questa pagina: marzo 2017
Ultima modifica: 31 luglio 2019


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima