Interfaccia I2C E Arduino

Sommario:

Interfaccia I2C E Arduino
Interfaccia I2C E Arduino

Video: Interfaccia I2C E Arduino

Video: Interfaccia I2C E Arduino
Video: Подключение нескольких устройств по шине i2c 2024, Maggio
Anonim

In questo articolo vedremo cos'è un'interfaccia I2C (ay-tu-si, i-two-tse), quali sono le sue caratteristiche e come lavorarci.

Interfaccia I2c
Interfaccia I2c

È necessario

  • -Arduino;
  • - potenziometro digitale AD5171;
  • - Diodo ad emissione luminosa;
  • - Resistenza da 220 ohm;
  • - 2 resistori per 4,7 kOhm;
  • - fili di collegamento.

Istruzioni

Passo 1

Il protocollo di comunicazione seriale IIC (chiamato anche I2C - Inter-Integrated Circuits) utilizza due linee di comunicazione bidirezionali per trasferire i dati, chiamate bus SDA (Serial Data) e bus SCL (Serial Clock). Ci sono anche due linee elettriche. I bus SDA e SCL sono collegati al bus di alimentazione tramite resistori.

Nella rete è presente almeno un Master che avvia la trasmissione dei dati e genera segnali di sincronizzazione. La rete dispone anche di slave che trasmettono dati su richiesta del master. Ogni dispositivo slave ha un indirizzo univoco al quale il master lo indirizza. L'indirizzo del dispositivo è indicato nel passaporto (scheda tecnica). È possibile collegare fino a 127 dispositivi a un bus I2C, inclusi diversi master. I dispositivi possono essere collegati al bus durante il funzionamento, ad es. supporta il collegamento a caldo.

Schema di collegamento I2C
Schema di collegamento I2C

Passo 2

Arduino utilizza due porte per lavorare sull'interfaccia I2C. Ad esempio, in Arduino UNO e Arduino Nano, la porta analogica A4 corrisponde a SDA, la porta analogica A5 corrisponde a SCL.

Per altri modelli di scheda:

Arduino Pro e Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Mappatura dei pin Arduino su bus SDA e SCL
Mappatura dei pin Arduino su bus SDA e SCL

Passaggio 3

Per facilitare lo scambio di dati con i dispositivi tramite il bus I2C, è stata scritta una libreria standard "Wire" per Arduino. Ha le seguenti funzioni:

inizio (indirizzo) - inizializzazione della libreria e connessione al bus I2C; se non viene specificato alcun indirizzo, il dispositivo connesso è considerato il master; Viene utilizzato l'indirizzamento a 7 bit;

requestFrom() - utilizzato dal master per richiedere un certo numero di byte allo slave;

beginTransmission (address) - l'inizio del trasferimento dei dati al dispositivo slave a un indirizzo specifico;

endTransmission() - terminazione della trasmissione dei dati allo slave;

write() - scrittura di dati dallo slave in risposta a una richiesta;

available() - restituisce il numero di byte di informazioni disponibili per la ricezione dallo slave;

read() - legge un byte trasferito dallo slave al master o dal master allo slave;

onReceive() - indica la funzione da chiamare quando lo slave riceve una trasmissione dal master;

onRequest() - Indica una funzione da chiamare quando il master riceve una trasmissione dallo slave.

Passaggio 4

Vediamo come lavorare con il bus I2C utilizzando Arduino.

Innanzitutto, assembleremo il circuito, come mostrato in figura. Controlleremo la luminosità del LED utilizzando il potenziometro digitale a 64 posizioni AD5171, che si collega al bus I2C. L'indirizzo a cui faremo riferimento al potenziometro è 0x2c (44 in decimale).

Circuito di controllo LED tramite potenziometro digitale e Arduino
Circuito di controllo LED tramite potenziometro digitale e Arduino

Passaggio 5

Ora apriamo uno schizzo dagli esempi della libreria "Wire":

File -> Campioni -> Filo -> potenziometro_digitale. Carichiamolo nella memoria di Arduino. Accendiamolo.

Vedete, la luminosità del LED aumenta ciclicamente e poi si spegne improvvisamente. In questo caso, controlliamo il potenziometro utilizzando Arduino tramite il bus I2C.

Consigliato: