GPIO: General Purpose Input Output I parte Raspberry GPIO: General Purpose Input Output I parte
Raspberry model A/B
Pin raspberry Pi 2 e raspberry Pi3
Piedinatura Il model A/B di Raspberry è dotato di 20 uscite GPIO, tutte di tipo maschio Il model Pi2/Pi3 è dotato di 40 uscite GPIO, tutte di tipo maschio Come si nota dalle immagini precedenti, non ci sono differenze tra i pin di raspberry pi2 e i pin di raspberry pi3 In entrambe i casi,non sono riportati i numeri dei singoli pin sulla scheda e bisogna non solo contarli ma ricordare la funzione di ciascuno I pin sono 40 e sono disposti su due file di 20 con una spaziatura di 2.54 mm, spaziatura standard degli integrati; la numerazione viene fatta dall’alto verso il basso Dalla piedinatura riportata nelle slide precedenti, si vede che i pin con le stesse funzioni sono stati colorati del medesimo colore Alcuni pin sono dedicati e altri generici I pin dedicati non possono essere utilizzati per scopi generici I pin generici possono essere utilizzati per qualsiasi scopo
Colori e funzioni GROUND (6, 9, 14, 20, 25, 30, 34, 39) 5 Volt (2,4) TXD0 RXD0 (8==GPIO14,10==GPIO15) I2C (3==GPIO2 SDA1, 5==GPIO3 SCL1) ID SD ( 27) ID SC (28) (I2C ID EEPROM) GPIO controllo ingresso/uscita, sono in tutto 17
Alimentazione e livello logico Raspberry ha quattro pin di alimentazione: I pin2 e 4 di 5 Volt I pin 1 e 17 di 3.3 Volt I circuiti interni di Raspberry lavorano a 3.3 volt perché si basano su livelli della logica TTL Quando si collegano circuiti esterni bisogna tenere conto di ciò Nei circuiti digitali, il livello logico 0 è a 0 Volt mentre il livello logico 1 è a 5 Volt. Tuttavia esiste una tolleranza che va bene sia per componenti TTL che per componenti CMOS, basta guardare la seguente tabella: Tecnologia Livello logico 0 Livello logico 1 CMOS 0 – 2 V 2 – 18 V TTL 0 -0.8 V 2 – 5.25 V
BUS I Raspberry gestisce tramite i GPIO, le comunicazioni seriali. I bus sono: Bus seriale UART Bus seriale I2C Bus SPI
Bus UART Universal Asynchronous Receiver/Trasmitter Fornisce una semplice interfaccia seriale Il collegamento avviene tramite due pin: Pin 8 per la trasmissione TX Pin 10 per la ricezione RX La velocità di trasmissione è per default pari 115200 bit al secondo bps La velocità di trasmissione viene impostata sul file cmdline.txt Per modificare tale velocità bisogna aprire il file digitando dal prompt dei comandi: sudo nano /boot/cmdline.txt Il file è formato da una sola riga che serve ad istruire il kernel della velocità di trasmissione Nella riga c’è scritto il seguente codice: dwc_otg.lpm_enable=0 console=ttyAMAO, 115200 kgdboc=ttyAMAO, 115200 console=tty1 root=/dev/mcblk0p2 rootstype=ext4 rootwait Non importa ricordare tale codice. Per cambiare la velocità, basta sostituire a 115200, una delle velocità standard di trasmissione riportate di seguito
Velocità di trasmissione seriale 9600 14400 19200 28800 38400 56000 57600 115200
Bus I2C Inter Integrated Circuit: bus sincrono per consentire la comunicazione tra più circuiti integrati In generale, nella comunicazione I2C c’è sempre un dispositivo master e uno o più dispositivi slave La comunicazione è gestita da: una sola linea dati SDA (Serial Data) sul pin 3 Una linea di clock SCL (Serial Clock Line) sul pin 5 La comunicazione avviene collegando in cascata i dispositivi slave ed in parallelo con il master La comunicazione è gestita dal software
Collegamento I2C
Bus SPI Serial Peripheral Interface, bus seriale asincrono per la programmazione ISP In System Programming di microprocessori e altri dispositivi I pin per tale programmazione sono i seguenti: MOSI (Master Output Slave Input) uscita SPI master sul pin 19 MISO(Master Input Slave Output) ingresso SPI master sul pin21 SLCK (SeriaL CloK) clock di sincronizzazione sul pin 23 CS0 (Chip Select 0) selezione chip sul pin 23 CS1 (Chip Select 1) selezione chip sul pin 24
Bus SPI
GPIO Input/Output Per il controllo degli ingressi e delle uscite raspberry pi 3 dispone di 17 pin digitali con d.d.p pari a 3.3 V: 7, 11, 12, 13, 15, 16, 18, 22, 29, 31, 32, 33, 35, 36, 37, 38, 40 Per un uso corretto della scheda e per non danneggiarla, bisogna mettere sempre una resistenza di protezione. Es. se si utilizzano dei led su una GPIO, bisogna utilizzare una resistenza di 220 Ω Per ulteriori approfondimenti http://pinout.xyz/