• 1
  • 2
  • 3

Gestire da terminale i GPIO di Raspberry PI

Con questa guida vogliamo mostrare come gestire lo switch on/off dei GPIO presenti sulla scheda Raspberry PI. Tale tecnica prevede l'attivazione dei pin tramite riga di comando con il terminale di Raspbian (o della distribuzione che voi state utilizzando). Per la dimostrazione che segue è stato utilizzato un banale diodo LED, ma sfruttando il mondo dell'elettronica potreste associare tranquillamente ai terminale di uscita dei transistor che operano come switch.

Punto fondamentale di partenza è la directory di sistema /sys/class/gpio/ la quale contiene tutte le informazioni dei vari GPIO sotto forma di file di testo.

Nell'esempio seguente ipotizzeremo di utilizzare il seguente schema elettrico sfruttando un diodo LED e una resistenza da 150 ohm su un RaspberryPI 3.

Per ogni GPIO che noi vogliamo attivare dobbiamo seguire tre step:

1 - Richiamare il GPIO interessato e creare la relativa struttura di dati

Questo passaggio è relativamente facile: si tratta di passare al sistema il GPIO sul quale noi vogliamo agire. Per far questo apriamo il terminale e, supponendo di voler lavorare sul GPIO15 utilizziamo il comando:

echo 15 > /sys/class/gpio/export

in questo modo nella directory /sys/class/gpio/ verrà creata la cartella gpio15 contenente tutti i relativi file di configurazione.

2 - Definire se il nostro GPIO è un input o un output

Questo passaggio è molto importante perché definiamo se il nostro terminale deve ricevere o erogare corrente elettrica. Solitamente se il nostro obiettivo è pilotare transistor/relé/diodi led allora dovremo impostare il GPIO come output, se invece volgiamo ottenere informazioni da sensori di vario genere lo andremo ad impostare come input. Per far ciò dovremo semplicemente scrivere in o out all'interno del file direction. Quindi, supponendo di rendere il nostro terminale 15 un output procediamo con il comando:

echo out > /sys/class/gpio/gpio15/direction

3 - Definire lo stato logico del nostro GPIO

Abbiamo a disposizione gli stati logici 0 (off) e 1 (on) che corrispondono relativamente a 0 volt e a 3.3 volt (attenti a non confondervi con i 5 volt! 3.3 volt è ben diverso da 5 volt). Riprendendo quindi il nostro esempio impostiamo il nostro GPIO15 a ON:

echo 1 > /sys/class/gpio/gpio15/value

Riassumendo

Per attivare il GPIO 15 come output e impostarlo allo stato logico ON dobbiamo dare i comandi:

echo 15 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio15/direction
echo 1 > /sys/class/gpio/gpio15/value

Per attivare il GPIO 14 come output e impostarlo allo stato logico OFF dobbiamo dare i comandi:

echo 14 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio15/direction
echo 0 > /sys/class/gpio/gpio15/value

Conclusioni

I punti 1 e 2 possiamo utilizzarli solamente la prima volta che attiviamo un GPIO, poi potremo gestirlo modificando (come da punto 3) solo il parametro value del terminale. Ricordiamo inoltre che ad ogni restart della scheda la directory /sys/class/gpio viene ripulita, quindi ad ogni riavvio dovremo reimpostare i GPIO di nostro interesse.