Comprendere il Protocollo I2C in Parole Semplici

Come il Protocollo I2C Collega i Dispositivi

20 Agosto 2024 di Alessandro Colucci
I2C protocol image

Il protocollo I2C (Inter-Integrated Circuit) è un modo semplice per i dispositivi elettronici di comunicare tra loro. È ampiamente utilizzato nei progetti con microcontrollori, come Arduino, perché consente a più dispositivi di condividere le stesse linee di comunicazione. Vediamo come funziona con esempi semplici.

Che cos'è l'I2C?

L'I2C è un protocollo di comunicazione che consente a più dispositivi "slave" di comunicare con un singolo dispositivo "master" attraverso solo due fili. Questi due fili sono:

    • SDA (Serial Data): Questo filo trasporta i dati tra i dispositivi.
    • SCL (Serial Clock): Questo filo trasporta il segnale di clock che sincronizza il trasferimento dei dati.

Come Funziona l'I2C?

Immagina di essere in una classe dove l'insegnante (dispositivo master) fa delle domande e gli studenti (dispositivi slave) alzano la mano per rispondere. Ecco come si traduce in I2C:

    1. Condizione di Inizio: L'insegnante (master) indica che sta per iniziare una domanda (comunicazione).
    2. Indirizzamento: L'insegnante chiama uno specifico studente (slave) per nome (indirizzo).
    3. Trasferimento Dati: Lo studente risponde alla domanda (invio dati) o ascolta nuove informazioni (ricezione dati) dall'insegnante.
    4. Condizione di Stop: L'insegnante indica la fine della sessione di domanda (comunicazione).

Esempio con Arduino

Supponiamo che tu abbia un Arduino (master) e due sensori (slave) – un sensore di temperatura e un sensore di umidità. Ecco come l'Arduino può comunicare con entrambi i sensori utilizzando l'I2C:

    • Cablaggio: Collega tutti i dispositivi alle stesse linee SDA e SCL. Collega anche l'alimentazione e il terreno.
    • Indirizzamento: Ogni sensore ha un indirizzo I2C unico. Ad esempio, il sensore di temperatura potrebbe avere l'indirizzo 0x48 e il sensore di umidità 0x40.
    • Esempio di Comunicazione:
      • Lettura della Temperatura: L'Arduino invia una condizione di inizio, seguita dall'indirizzo 0x48 per comunicare con il sensore di temperatura. Il sensore risponde e l'Arduino legge i dati sulla temperatura.
      • Lettura dell'Umidità: Successivamente, l'Arduino invia una condizione di inizio, seguita dall'indirizzo 0x40 per comunicare con il sensore di umidità. Il sensore risponde e l'Arduino legge i dati sull'umidità.

Ecco un semplice frammento di codice Arduino che dimostra la comunicazione I2C: Codice Arduino I2C

Punti Chiave da Ricordare

    • Master e Slave: Un dispositivo master controlla la comunicazione e più slave possono rispondere.
    • Due Fili: Solo due fili (SDA e SCL) sono utilizzati per la comunicazione.
    • Indirizzi Unici: Ogni dispositivo slave ha un indirizzo unico, che consente al master di comunicare con ciascuno individualmente.
    • Semplice ed Efficiente: L'I2C è un modo semplice ed efficiente per connettere più dispositivi, rendendolo perfetto per vari progetti elettronici.

Comprendendo questi concetti di base e vedendo un esempio pratico, puoi iniziare facilmente a utilizzare l'I2C nei tuoi progetti per collegare e controllare più dispositivi con facilità.

Condividi le tue esperienze e soluzioni nei commenti qui. 

Raggiungici su WhatsApp