RaspberryPi, le basi: le porte GPIO. #8


Informatica / venerdì, Aprile 3rd, 2020

Bentornato all'ottava parte della rubrica RaspberryPi, le basi , oggi si parlerà di GPIO.

Cosa sono le porte GPIO

La cosa che mi ha sempre affascinato del RaspberryPi, a parte il costo irrisorio, sono le porte GPIO e la possibilità di comandarle in tempo reale, senza dover preparare uno sketch, salvarlo, caricarlo, resettare ....

... Queste possono agire come input, per leggere i segnali digitali dalle altre parti del circuito, o output, per controllare o segnalare agli altri dispositivi. ...

Semplicemente servono per comunicare con il mondo esterno, vi si possono collegare ogni sorta di sensore, motori, microcontrollori e molto altro... anche le banane.

Nel RaspberryPi le porte GPIO, sono dei pin metallici posizionati su un lato, ed attualmente sono 40, di cui varie con specifiche funzioni.

Nel sito pinout.xyz puoi trovarle descritte in modo preciso. Bisogna fare attenzione alla numerazione che di norma troverai nominate come GPIO, che corrisponde a BCM.

Cosa significano questi numeri?
BCM - Numero pin Broadcom, comunemente chiamato "GPIO", questi sono quelli che probabilmente vorresti usare con RPi.GPIO e GPIO Zero
WiringPi - Numero pin di Wiring Pi (mostrato come descrizione comando), per la libreria Wiring Pi di Gordon Henderson
Fisico: numero corrispondente alla posizione fisica del perno nell'intestazione
Rev 1 Pi - Numeri BCM alternativi per il modello originale a 26 pin "A" e "B" Pi

Come avrai notato dallo schema, alcune porte gestiscono l'alimentazione, alcune sono semplici Input/Output, mentre alcune hanno funzioni speciali, come 1-Wire, Seriali, PMW ed altre che potrai approfondire in base al progetto che seguirai.

Oltre ai singoli sensori esistono vere e proprie schede dedicate a scopi precisi, chiamate HAT. Pimoroni è molto conosciuto come costruttore e nel suo shop potrai farti un idea della varietà di dispositivi pronti da attaccare, senza saldature, alle porte GPIO.

raspberry pi hat led

Attenzione: prima di collegarci la lavatrice, ricorda sempre che possono assorbire una quantità limitata di corrente.

La tensione di funzionamento dei pin GPIO è di 3,3 V con un assorbimento di corrente massimo di 16 mA. Ciò significa che possiamo alimentare in sicurezza uno o due LED  da un singolo pin GPIO, tramite un resistore. Ma per qualsiasi cosa che richieda più corrente, ad esempio un motore CC, dovremo utilizzare componenti esterni per assicurarci di non danneggiare il GPIO.

Librerie GPIOZero

Ogni sensore o motore che collegherai sarà comandabile semplicemente usando una libreria, di norma in python, dedicata al dispositivo. Le librerie sono create spesso da persone indipendenti.

La libreria preferita dalla fondazione RaspberryPi e da me, si chiama GPIOZero .
GPIOZero riunisce la gestione dei più comuni dispositivi, in semplici comandi, ben documentati e pronti all'uso.

Si parte dal far lampeggiare un semplice led

from signal import pause
led = PWMLED(17)
led.pulse()
pause()

Fino a comandare da remoto qualsiasi periferica anche grazie all'uso delle API.

Installazione GPIOZero

Raspbian Full possiede di default GPIOZero, mentre su Raspbian Lite, andrà installata.

  1. Aggiorniamo l'elenco apt
    sudo apt update
  2. Installiamo le librerie per python3
    sudo apt install python3-gpiozero
  3. Oppure per python2
    sudo apt install python-gpiozero

Esiste anche la versione per Windows / Mac , ma serve per comandare da remoto le porte GPIO del RaspberryPi .

Perfetto, verifichiamo che siano installate digitando nella shell il comando

pinout

.

raspberry pi pinout

Nel caso tu stessi usando la versione Raspbian Full a scopo educativo, con l'uso di Scratch, avrai a disposizione i blocchi per usare le porte GPIO in modo a portata di bambino.raspberry pi scratch

Approfondimenti