La GPIO del Raspberry Pi

Buongiorno a tutti! Eccoci ritornati dopo queste lunghe vacanze natalizie, ora, dopo le interminabili abbuffate, possiamo riprendere a nerdare:) . Spero che per natale vi siete regalati un bel Raspberry Pi, poiché oggi andremo a smanettarci sopra, se non lo avete fatto beh cliccate qui e compratene subito uno! Fatto questo possiamo continuare. In passato abbiamo spiegato l’architettura di questo piccolo computer, facendovi notare una sua particolarità, ossia la GPIO.

GPIO

Essa è composta da una serie di pin, messi al lato della board. I vari pin hanno diverse funzioni, possiamo trovare due pin che hanno costantemente la tensione 5V, altri due che hanno 3.3V, cinque pin che funzionano da GND, e il resto possono essere personalizzati, ossia possiamo decidere se usarli come OUTPUT oppure INPUT, dove nel primo caso possono assumere valori di tensione HIGH (3.3V) oppure LOW (0V). Utilizzarlo è molto semplice, basta tenere sotto mano uno schema che ci indichi quale pin fa cosa, e procedere con i collegamenti. Il tutto può essere controllato con delle librerie direttamente dal Raspberry. La GPIO ricorda molto Arduino, con l’unica differenza che su una board Arduino bisogna caricare il software nella sua memoria utilizzando un altro computer, mentre il Raspberry è esso stesso un computer che integra direttamente questi pin nella scheda!

 

Qui di seguito possiamo vedere lo schema dei pin:

I pin in rosso rappresentano i 5V, quelli verdi i 3.3V, quelli blu rappresentano il GND e quelli senza il cerchiolino sono pin della GPIO che possono essere usati come input o output.

 

Qui di seguito uno schema più dettagliato, io farò riferimento al secondo poiché possiedo il Pi2, ma poco cambia:

Vediamo ora come sfruttare questi pin utilizzando una libreria in python.

 

La libreria che andremo ad utilizzare si chiama RPi.GPIO, essa è presente già nel sistema operativo di Raspbian, ma se così non fosse possiamo semplicemente trovarla nei repository ufficiali. Quindi diamo i seguenti comandi:

 

sudo apt-get update

sudo apt-get install python-rpi.gpio python3-rpi.gpio

 

Se si utilizzano altre distribuzioni, la libreria la si può installare tramite l’utility di python pip, semplicemente dando il seguente comando:

 

sudo pip install RPi.GPIO

 

Ora possiamo procedere alla creazione del nostro primo script. Quello che andremo a fare sarà semplicemente accendere e spegnere dei led, diciamo un “hello world” dell’elettronica.

 

Ecco il nostro script in python:

 

import RPi.GPIO as GPIO
import time as time

GPIO.setmode(GPIO.BCM)

LED_RED = 17
LED_YELLOW = 27
LED_GREEN = 22

GPIO.setup(LED_RED, GPIO.OUT)
GPIO.setup(LED_YELLOW, GPIO.OUT)
GPIO.setup(LED_GREEN, GPIO.OUT)

while(True):
 GPIO.output(LED_RED, 1)
 time.sleep(1)
 GPIO.output(LED_RED, 0)
 GPIO.output(LED_YELLOW, 1)
 time.sleep(1)
 GPIO.output(LED_YELLOW, 0)
 GPIO.output(LED_GREEN, 1)
 time.sleep(1)
 GPIO.output(LED_GREEN, 0)

Vediamo cosa abbiamo fatto con questo script. Il nostro scopo è stato di far accendere e spegnere tre led. Per fare ciò abbiamo collegato i led, (con una opportuna resistenza ad esempio sui 150 OHM), tra i pin 17, 27 e 22 e il pin GND come ad esempio il 14. Nello script abbiamo importato le librerie GPIO e time, la prima per avere un’interfaccia con la GPIO, la seconda per poter utilizzare un ritardo all’interno dello script. La prima cosa che abbiamo fatto è stato di settare la modalità in BCM, ossia in questo modo quando dobbiamo dire all’interfaccia quale pin stiamo utilizzando possiamo semplicemente dirlo mettendo il numero del pin (quello riportato nell'immagine di sopra), infatti nella riga successiva abbiamo dichiarato le variabili LED_RED, LED_YELLOW e LED_GREEN, che verranno utilizzate come costante per i nostri pin. Per settare la modalità abbiamo quindi utilizzato la costante GPIO.BCM. Dopo di che dobbiamo impostare i pin dei led 17, 27 e 22 come pin di OUTPUT, questo lo possiamo fare utilizzando la funzione GPIO.setup passandogli il pin interessato e la costante GPIO.OUT, mentre se volessimo utilizzarli come pin di input esiste la costante apposta GPIO.IN.

Ora che le impostazioni sono tutte settate, possiamo procedere con l’accensione e lo spegnimento dei led, attraverso la procedura GPIO.output, specificando il pin del led, e mettendo 1 se vogliamo accenderlo, 0 se vogliamo spegnerlo, il tutto ripetuto all’interno di un ciclo while infinito.

 

Come avete potuto leggere, l’utilizzo della GPIO è molto semplice, e ci permette di controllare dei circuiti elettronici in modo semplice e veloce. Le applicazioni possono essere molte, ad esempio ci si possono fare un gran numero di applicazioni di domotica, l’unico limite, come sempre, è la fantasia!

Dottore in Informatica. Da sempre appassionato di Linux, reti informatiche, sicurezza e, in modo amatoriale, all'elettronica. Il mio intento è quello di trasmettere le mie conoscenze ad altri appassionati.

2 risposte

  1. Grazie,una bellisima spiegazione.

Lascia un commento