developer_board IoT e Raspberry

GPIO su Raspberry Pi: numerazione dei pin e primi passi con Python

calendar_today personTeam EGSOFT schedule5 min di lettura

Cos'è il GPIO

Il connettore a 40 pin presente su ogni Raspberry Pi si chiama GPIO (General Purpose Input/Output) e permette alla scheda di dialogare con il mondo esterno: accendere un LED, leggere lo stato di un pulsante, pilotare un relè, comunicare con un sensore. A differenza di Arduino, i pin GPIO del Raspberry lavorano a 3,3 Volt e non sono tolleranti ai 5V: collegare un segnale a 5V direttamente su un pin GPIO può danneggiare permanentemente la scheda, quindi va sempre verificata la tensione di lavoro di ogni componente prima di collegarlo.

Due modi di numerare i pin

Una delle prime fonti di confusione per chi inizia è che esistono due sistemi di numerazione per gli stessi pin fisici. La numerazione BOARD conta semplicemente la posizione fisica del pin sul connettore, da 1 a 40. La numerazione BCM (Broadcom) fa invece riferimento al numero del canale GPIO del chip, che non coincide con la posizione fisica. Il comando pinout, eseguito nel terminale del Raspberry Pi OS, mostra una mappa completa con entrambe le numerazioni: è la prima cosa da consultare prima di collegare qualsiasi cavo.

Controllare un pin con gpiozero

La libreria Python più semplice per iniziare si chiama gpiozero ed è preinstallata su Raspberry Pi OS. Accendere un LED collegato (con la relativa resistenza di protezione) richiede poche righe: si crea un oggetto LED passando il numero di pin BCM, e si richiamano i metodi on(), off() o blink(). Per leggere lo stato di un pulsante il concetto è analogo con la classe Button, che espone la proprietà is_pressed e permette anche di collegare una funzione da eseguire automaticamente alla pressione, tramite when_pressed.

Le resistenze pull-up e pull-down

Quando un pin è configurato come ingresso e non è collegato a nulla, il suo stato elettrico è indefinito e può oscillare tra 0 e 1 in modo casuale (il classico "rumore" elettrico). Per questo un pulsante va sempre collegato con una resistenza di pull-up o pull-down, che forza il pin a uno stato noto quando il pulsante non è premuto. Molti pin GPIO del Raspberry hanno resistenze di pull-up/pull-down interne attivabili via software, e gpiozero le gestisce automaticamente nella maggior parte dei casi comuni, semplificando non poco il cablaggio.

Prima di iniziare

Tre regole pratiche prima di collegare qualsiasi componente: verifica sempre la tensione di lavoro (3,3V, non 5V), spegni il Raspberry Pi mentre modifichi i collegamenti, e usa sempre una resistenza di protezione in serie a un LED per evitare di superare la corrente massima erogabile da un singolo pin (circa 16mA).

developer_boardAltri articoli su IoT e Raspberry grid_viewTutti gli articoli
Scrivici su WhatsApp