RaspberryPI

WiringPI per gestire i pin GPIO da terminale

Breve guida all'utilizzo dei GPIO da shell

In questo tutorial si vuole mostrare la possibilità di gestire i vari GPIO direttamente da terminale al fine di poterli integrare all’interno di script BASH. Tale articolo vuole essere un’integrazione alla guida GESTIRE DA TERMINALE I GPIO DI RASPBERRYPI.

Innanzitutto dobbiamo verificare due condizioni:

1 – Verificare (e in caso negativo inserire) il nostro utente nel gruppo gpio
2 – Installare le librerie di sistema necessarie alla gestione dei GPIO

Per prima cosa, quindi, procediamo con il comando

$ groups

per verificare se il nostro utente è inserito nel gruppo gpio. Se così non fosse possiamo procedere con il comando

$ sudo usermod -a -G gpio NOME_UTENTE

dove, NOME_UTENTE, di default è ‘pi’.
Ora possiamo procedere all’installazione dei pacchetti base per la corretta gestione dei GPIO con il comando:

$ sudo apt-get install wiring pigpen i2c-tools python-smbus

Terminata l’installazione siamo abilitati a gestire i GPIO dal terminale.

Il comando pinout ci mostrerà a video il nome dei singoli  GPIO  mettendo in evidenza le alimentazioni 3,3V  5V e i pin GND. Nel nostro caso, con RaspberryPI 3 model B v1.2, otteniamo:

Il comando gpio readall permette di avere una panoramica globale di come sono impostati tutti i GPIO.

Infine, se vogliamo risalire all’indirizzo di qualche dispositivo connesso mediante I2C, possiamo utilizzare il comando gpio i2cdetect. Nel nostro caso abbiamo connesso un display LCD avente come indirizzo esadecimale 27.

Gestiti correttamente questi primi tre comandi base possiamo proseguire con le vere e proprie attivazioni dei GPIO.

1- OUTPUT DIGITALI (on/off)

Se vogliamo impostare un GPIO come uscita digitale, ovvero un’output che potrà assumere solamente un valore ben definito tra due alternative (LOW –> 0V          HIGH –> 3,3V)
dobbiamo assegnare la modalità di funzionamento con il comando

gpio -g mode <GPIO_numerazione_BCM> out

e dichiarare lo stato logico con il comando

gpio -g write <GPIO_numerazione_BCM> <stato>

dove stato sarà 1 per HIGH e 0 per LOW.

2- OUTPUT DIGITALI (PWM)

La scheda RaspberryPI prevede solamente 4 pin PWM (GPIO12, GPIO13, GPIO18, GPIO19). Come per le uscite digitali on/off il primo passaggio sarà assegnale la modalità di funzionamento con il comando:

gpio -g mode <GPIO_PWM_numerazione_BCM> pwm

Di default le uscite PWM di RaspberryPI prevedono 1024 intervalli tra 0V e 3,3V (quindi una risoluzione di circa 3,2mV per unità). Di conseguenza noi potremo assegnare qualsiasi valore tra 0 e 1023 per assegnare una tensione a onda quadra avente valore medio proporzionale al valore da noi assegnato.

Valore medio di uscita = (valore assegnato * 3,2mV)

gpio -g pwm <GPIO_numerazione_BCM> <valore>

3- INPUT DIGITALI (on/off)

Con la nostra scheda possiamo anche leggere informazioni dal mondo esterno stando ben attenti a verificare di NON SUPERARE MAI la tensione limite di 3,3V.

Un ingresso digitale può essere dichiarato in vari modi: normale (il GPIO non verrà associato ad alcun riferimento), pull up (il GPIO verrà associato allo stato logico HIGH, ovvero 3,3V) e pull down (il GPIO verrà associato allo stato logico LOW, ovvero 0V).

Rimandiamo al seguente articolo per approfondire meglio i concetti di pull up e pull down: http://www.mst-tutorial.it/arduino-input-digitali/

Per la dichiarazione del GPIO senza riferimenti ci basterà procedere con il comando:

gpio -g mode <GPIO_numerazione_BCM> in

se invece vogliamo attivare il sistema pull up:

gpio -g mode <GPIO_numerazione_BCM> up

se invece vogliamo attivare il sistema pull down:

gpio -g mode <GPIO_numerazione_BCM> down

e per leggere l’informazione dal mondo esterno ci basterà utilizzare il comando:

gpio -g read <GPIO_numerazione_BCM>

MST-Admin

Appassionato di elettronica, elettrotecnica generale e programmazione. Fondatore del progetto MST-tutorial, desideroso di condividere con voi l'entusiasmo per l'innovazione tecnologica e la sperimentazione di novità tecniche in questi campi.

Articoli Correlati

Pulsante per tornare all'inizio