Tutorial completo sui GPIO di Raspberry Pi


Una caratteristica interessante di Rasperry Pi sono i GPIO, 40 pin general purpose dedicati all’input e all’output di dati. Qualsiasi pin GPIO può essere usato come input o come output per un ampia gamma di scopi.



TENSIONI

Sulla scheda sono presenti due pin 5V e due pin 3.3V, oltre a un numero di pin di Ground (0V), che non sono configurabili. I pin rimanenti sono tutti pin 3.3V per uso generico, il che significa che le uscite sono impostate su 3.3V e gli ingressi tollerano 3.3V. Tensioni maggiori di quelle indicate potrebbero portare alla rottura del dispositivo.

USCITE

Un pin GPIO designato come pin di uscita può essere impostato su alto (3.3V) o basso (0V).

INGRESSI

Un pin GPIO designato come pin di ingresso può leggere un valore come alto (3.3V) o basso (0V). Ciò è facilitato dall’uso di resistenze interne di pull-up o pull-down. I pin GPIO2 e GPIO3 hanno resistori pull-up fissi, ma per altri pin questo può essere configurato via software.

FUNZIONALITA AGGIUNTIVE

Oltre a semplici dispositivi di input e output, i pin GPIO possono essere utilizzati con una varietà di funzioni alternative, alcune sono disponibili su tutti i pin, altre su pin specifici.

  1. PWM (modulazione di larghezza di impulso)
    • Software PWM disponibile su tutti i pin
    • Hardware PWM disponibile su GPIO12, GPIO13, GPIO18, GPIO19
  2. SPI
    • SPI0: MOSI (GPIO10); MISO (GPIO9); SCLK (GPIO11); CE0 (GPIO8), CE1 (GPIO7)
    • SPI1: MOSI (GPIO20); MISO (GPIO19); SCLK (GPIO21); CE0 (GPIO18); CE1 (GPIO17); CE2 (GPIO16)
  3. I2C
    • Dati: (GPIO2); Orologio (GPIO3)
    • Dati EEPROM: (GPIO0); Orologio EEPROM (GPIO1)
  4. Seriale
    • TX (GPIO14); RX (GPIO15)

COME SONO NUMERATI I PIN





È possibile accedere a un pratico riferimento sul Raspberry Pi aprendo un terminale di comando ed eseguendo il comando pinout. Questo strumento è fornito dalla libreria GPIO ZERO in Python, che ègià installata sull’immagine desktop del sistema operativo Raspbian, ma non su Raspberry Pi OS Lite.

AUTORIZZAZIONI

Per poter utilizzare le porte GPIO il tuo utente deve essere un membro del gpio. L’utente pi è un membro per impostazione predefinita, gli altri utenti devono essere aggiunti manualmente.

sudo usermod -a -G gpio <nome-utente>

PRIMA DI INIZIARE A PROGRAMMARE

Per scrivere un programma andiamo ad utilizzare l’editor di testo Vim. Eseguire:

sudo apt-get install vim

successivamente andiamo a creare un file con il comando:

vim programma.py

una volta scritto il codice, per salvare il programma basta digitare esc+w e premere Invio. Per uscire dall’editor premere esc+q e premere invio. Infine per eseguire il codice appena scritto, digitare nel terminale:

python programma.py

COME CONTROLLARE UN LED

Colleghiamo un led al pin GPIO17 e eseguiamo il codice seguente

1
2
3
4
5
6
7
8
9
10
from gpiozero import LED
from time import sleep
 
led = LED(17)
 
while True:
    led.on()
    sleep(1)
    led.off()
    sleep(1)

COME CONTROLLARE UN PULSANTE

Colleghiamo un pulsante al pin GPIO2 ed eseguiamo il codice seguente

1
2
3
4
5
6
7
8
9
10
11
from gpiozero import Button
from time import sleep
 
button = Button(2)
 
while True:
    if button.is_pressed:
        print("premuto")
    else:
        print("rilasciato")
    sleep(1)

Il modulo Button del pulsante include le proprietà is_pressed is_held; le callback when_pressed, when_released e when_held; e i metodi wait_for_press() e wait_for_release() .

PULSANTE E LED

Rimaniamo alla configurazione dei pin dettata precedentemente ed eseguiamo il seguente codice:

1
2
3
4
5
6
7
from gpiozero import LED, Button
 
led = LED(17)
button = Button(2)
 
button.when_pressed = led.on
button.when_released = led.off







Commenti