Una potente caratteristica del Raspberry Pi è la fila di pin GPIO (general-purpose input/output) lungo il bordo superiore della scheda. Un header GPIO a 40 pin si trova su tutte le attuali schede Raspberry Pi (non popolato su Pi Zero e Pi Zero W). Prima della Pi 1 Model B+ (2014), le schede comprendevano un header più corto a 26 pin.
Ognuno dei pin GPIO può essere designato (nel software) come un pin di ingresso o uscita e utilizzato per una vasta gamma di scopi.
Nota: la numerazione dei pin GPIO non è in ordine numerico; i pin GPIO 0 e 1 sono presenti sulla scheda (pin fisici 27 e 28) ma sono riservati per un uso avanzato (vedi sotto).
Tensioni
Sono presenti sulla scheda due pin a 5V e due pin a 3V3, oltre a una serie di pin di massa (0V), che non sono configurabili. I restanti pin sono tutti di uso generale 3V3, il che significa che le uscite sono impostate su 3V3 e gli ingressi sono tolleranti a 3V3.
Outputs
Un pin GPIO designato come pin di uscita può essere impostato su alto (3V3) o basso (0V).
Inputs
Un pin GPIO designato come pin di ingresso può essere letto come alto (3V3) o basso (0V). Questo è facilitato dall’uso di resistenze interne di pull-up o pull-down. I pin GPIO2 e GPIO3 hanno resistenze di pull-up fisse, ma per gli altri pin questo può essere configurato via software.
Più
Oltre a semplici dispositivi di ingresso e uscita, i pin GPIO possono essere usati con una varietà di funzioni alternative, alcune sono disponibili su tutti i pin, altre su pin specifici.
- PWM (pulse-width modulation)
- Software PWM disponibile su tutti i pin
- Hardware PWM disponibile su GPIO12, GPIO13, GPIO18, GPIO19
- 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)
- I2C
- Dati: (GPIO2); Clock (GPIO3)
- Dati EPROM: (GPIO0); EEPROM Clock (GPIO1)
- Serial
- TX (GPIO14); RX (GPIO15)
GPIO pinout
È importante essere consapevoli di quale pin è quale. Alcune persone usano le etichette dei pin (come il RasPiO Portsplus PCB, o il Raspberry Leaf stampabile).
Un pratico riferimento può essere raggiunto sul Raspberry Pi aprendo una finestra di terminale ed eseguendo il comando pinout
. Questo strumento è fornito dalla libreria GPIO Zero Python, che è installata di default sull’immagine desktop di Raspberry Pi OS, ma non su Raspberry Pi OS Lite.
Per maggiori dettagli sulle capacità avanzate dei pin GPIO vedere il diagramma interattivo della piedinatura di gadgetoid.
Programmazione con GPIO
È possibile controllare i pin GPIO utilizzando diversi linguaggi e strumenti di programmazione. Vedi le seguenti guide per iniziare:
- GPIO con Scratch 1.4
- GPIO con Scratch 2
- GPIO con Python
- GPIO con C/C++ usando l’interfaccia standard del kernel tramite libgpiod
- GPIO con C/C++ usando la libreria di terze parti pigpio
- GPIO con Processing3
Avviso: mentre il collegamento di semplici componenti ai pin GPIO è perfettamente sicuro, è importante fare attenzione a come si cablano le cose. I LED dovrebbero avere delle resistenze per limitare la corrente che li attraversa. Non usare 5V per componenti 3V3. Non collegare i motori direttamente ai pin GPIO, usa invece un circuito H-bridge o una scheda di controllo del motore.
Permessi
Per usare le porte GPIO il tuo utente deve essere membro del gruppo gpio
. L’utente pi
è un membro di default, altri utenti devono essere aggiunti manualmente.
sudo usermod -a -G gpio <username>