#16 Arduino: Protocollo I2C

Con i2c si indica un metodo di comunicazione usato per la trasmissione dati fra varie periferiche, tale protocollo a volte viene chiamato TWI (two wire interface), cioè interfaccia a due fili.

Questo tipo di comunicazione molto pratico perché permette di fare collegamenti mediante 2 fili (oltre l’alimentazione in alcuni casi), ha però una velocità di comunicazione un po lenta, che va tenuta in considerazione in base al progetto che si vuole realizzare.

Il principio di funzionamento è quello di master-slave, vi sarà un master (Arduino), che comunica con i vari slave (le periferiche), si può anche mettere in comunicazione due Arduino indicando un master ed uno slave nello sketch.

Lo scambio dati tra master e slave avviene dai pin SDA (Serial Data) e SCL (Serial Clock), questi nelle versioni più recenti di Arduino, si trovano sia di fianco al pin 13 che nei pin A4 ed A5; a differenza dei collegamenti seriali dove i collegamenti vanno intrecciati (RX-TX e TX-RX), qui i collegamenti sono paralleli, SDA-SDA e SCL-SCL.

Schema collegamento master-slave

Come detto in precedenza il principio di funzionamento è master-slave, ogni slave ha un suo indirizzo univoco, questo viene usato dal master per interrogarlo, in breve il master invia un comando con l’indirizzo slave da interrogare, una volta ottenuta la risposta, sempre il master continua la comunicazione con un segnale start, che serve soltanto ad avvisare lo slave dell’inizio della comunicazione, successivo a questo segnale il master invia il primo byte, l’indirizzo dello slave seguito dal bit che indica il tipo di dati, che potrà essere “0” per la ricezione oppure “1” per la trasmissione.

La libreria principale per la gestione delle comunicazioni i2c è la wire, ma in base al progetto potrebbe essere necessario inserire altre librerie specifiche per determinate periferiche.

/ 5
Grazie per aver votato!