Il connettore GPIO

Il connettore GPIO del Raspberry Pi

Raspberry Pi possiede diverse interfacce tipiche dei PC: ethernet, USB, HDMI, audio e video analogico. Sono presenti anche altre interfacce proprietarie, per esempio l'interfaccia verso la webcam 1080p.

In questo tutorial si farà riferimento solo a GPIO: 26 (o 40) pin di facile accesso fisico attraverso cui è possibile utilizzare una serie di segnali di ingresso/uscita digitali, diversi bus seriali (I2C, SPI, seriale asincrono) e le alimentazioni di 3.3 V e 5 V.

Il connettore meccanico

Il connettore GPIO originale è costituito da 26 pin disposti su due file, distanziati tra di loro di un decimo di pollice (2,54 mm). Se avete Rasberry Pi B+, Rasberry Pi 2 oppure Rasberry Pi 3, (qui altre informazioni) i pin sono 40, con analoga disposizione.

La numerazione di pin è quella indicata nella figura di apertura: i pin con numeri pari sono quelli verso il bordo del circuito stampato, quelli con numero dispari all'interno. Questa è la numerazione standard dei connettori, diversa da quella dei circuiti integrati.

Il pin numero 1 è il più vicino alla scheda SD; è identificato sul circuito stampato da un piccolo rettangolo bianco con la scritta P1; guardando al lato opposto, è l'unico che ha un pad in rame di forma quadrata e non circolare.

Flat cable (cavo piatto)

Il primo modo per realizzare il collegamento tra Raspberry Pi ed il mondo esterno è l'uso di un cavo piatto a 13x2 (oppure 20x2) poli. E' il metodo preferito per collegare un circuito stampato, oppure quando c'è la  necessità di usare numerosi fili.

Il cavo è formato da 26 (40) fili uniti tra di loro, numerati da 1 a 26 (da 1 a 40) a partire da quello rosso (o di altro colore diverso dagli altri, ovviamente). Il connettore è a perforazione di isolante, cioè si monta a pressione, senza spelare i fili, usando per esempio una piccola morsa parallela. Forse è più semplice acquistare l'intero cavo già assemblato, si trova a pochi euro in uno dei tanti siti on-line oppure in un negozio di componenti elettronici.

Un po' scomodo il collegamento con la breadboard: serve un apposito adattatore (utile un motore di ricerca, scrivendo raspberry pi flat cable breadboard) oppure un po' di manualità nel piegare i pin di un connettore angolare a 26 (40) poli.

Montaggio flat cable Adattatore flat cable - bradboard

E' importante verificare che il cavetto sia costruito correttamente in quanto spesso ho visto connettori collegati "casualmente", anche tra quelli acquistati pre-assemblati: l'unico  filo rosso deve essere allineato con il triangolo o la V presente sul connettore plastico, che identifica il pin 1; è irrilevante invece il fatto che  il connettore plastico sia "sopra" o "sotto", è corretto anche un montaggio misto. Tutti i cavi piatti mostrati in questa pagina sono realizzati correttamente e sono funzionalmente assolutamente identici tra di loro.

Triangolo sul flat cable  

Il cavo può essere indifferentemente collegato verso l'interno oppure verso l'esterno del circuito stampato del Raspberry Pi, avendo l'unica attenzione di allineare il conduttore rosso con il pin 1, cioè verso il lato con la scheda SD. Purtroppo il connettore sul Raspberry Pi non è idiot proof (termine quasi tecnico, traducibile come "a prova di idiota"...) e quindi è sempre possibile collegarlo, erroneamente, al contrario, con un sicuro malfunzionamento e possibili danni permanenti.

Entrambi i collegamento di seguito mostrati sono corretti e funzionalmente identici: la scelta tra i due è solo questione di comodità.

Connettore flat Connettore flat

Cavetti singoli

In alternativa al cavo piatto è possibile l'uso di semplici cavetti opportunamente intestati; è la scelta migliore se si hanno poche connessioni provvisorie. I colori non sono ovviamente un fatto estetico! Per l'acquisto rivolgersi ad un negozio di elettronica (fisico oppure on-line) o ad un famoso sito di aste on-line.

Attenzione! Il rischio di danni fisici

Alcune importanti osservazioni che riguardano possibili danni permanenti al Raspberry Pi:

I segnali elettrici

Esistono diverse revisioni del Raspberry Pi e tre versioni del connettore GPIO. Le prime due versioni sono solo leggermente diverse tra di loro; la terza versione (B+) è uguale alla seconda per quanto riguarda i primi 26 pin, ma sono stati aggiunti 14 nuovi pin, prima non presenti.

Indicativamente la seconda versione è in distribuzione dal settembre 2012, la terza dal luglio 2014.

La piedinatura del Rasperry Pi, prima e seconda revisione; B+

Se usate KiCad EDA Software Suite, sono disponibili le librerie Raspberry.lib.

Alcuni pin erano inizialmente indicati come DNC (italianizzando: da non connettere) perché riservati ad usi futuri. In realtà questo ipotesi è venuta meno e quindi sono perfettamente utilizzabili, con la funzione indicata.

Il bus I2C

Il bus I2C/SMBus richiede due soli pin:

Nell'installazione predefinita il modulo I2C non è attivo: per poterlo utilizzare è necessario attivarlo, come descritto nella pagina I2C con Bash. Se è stato attivato non sono di conseguenza utilizzabili i pin GPIO2 e GPIO3 (oppure GPIO0 e GPIO1 per la revisione 1).

Non è necessario inserire le due resistenze di pull-up richieste da questo bus perché già presenti sulla scheda. Entrambe sono da 1.8 kΩ (R1 e R2 sul circuito stampato) e connesse alla tensione di 3.3 V. Si fa osservare che tale valore non è compatibile con le specifiche SMBus, sebbene probabilmente questa informazione è irrilevante ai fini pratici.

Attenzione! Per evitare danni permanenti, i segnali presenti su SDA e SCL devono essere compresi tra 0 V e 3.3 V. In realtà, come già detto, il bus I2C del Raspberry Pi ha il pull-up passivo collegato a 3.3 V e quindi in teoria funziona anche con dispositivi I2C alimentati a 5 V. Il consiglio è però quello di usare tali circuiti solo se sapete esattamente quello che state facendo.

Il bus SPI

I pin utilizzati da Raspberry Pi per la comunicazione SPI sono cinque:

Quando è attivato il modulo SPI non sono disponibili i corrispondenti GPIO da 7 a 11.

Attenzione! I circuiti SPI collegati al Raspberry Pi non devono essere alimentati a 5 V per evitare danni permanenti

Il bus seriale asincrono

Raspberry Pi dispone di una porta che, dal punto di vista logico, è compatibile con RS232. Lo scopo è l'uso con un terminale, in genere emulato su PC (perlomeno se quest'ultimo possiede ancora tale interfaccia...). Ovviamente può essere utilizzato anche in altro modo.

I pin utilizzati sono l'8 e il 10 (GPIO14 e GPIO15), rispettivamente per la trasmissione (TxD) e per la ricezione (RxD). Il modulo che gestisce la seriale è attivato all'accensione: questi pin non sono di conseguenza disponibili per altri usi se nen cambiando la modalità di boot

Attenzione! La tensione standard di RS232 è ± 12 V e quindi per prevenire danni gravi è necessario prevedere uno specifico adattatore di livelli, peraltro facilmente acquistabile o realizzabile.

Il bus 1-wire

Questo bus permette di collegare un numero (teoricamente) molto elevato di dispositivi, utilizzano un numero minimo di fili. La versione implementata in Raspberry Pi è realizzata via software e quindi presenta qualche problema di compatibilità, sia a livello elettrico che di temporizzazioni, ma se dovete collegare una manciata di sensori di temperatura è perfettamente adatto.

 Il pin utilizzato di default per la connessione è GPIO4 (pin 7). Anche in questo caso il modulo non è, nella configurazione standard, caricato al boot.

Prima di creazione di questa pagina: luglio 2013
Ultima modifica: 5 marzo 2016


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima