Interfață I2C și Arduino

Cuprins:

Interfață I2C și Arduino
Interfață I2C și Arduino

Video: Interfață I2C și Arduino

Video: Interfață I2C și Arduino
Video: How I2C Communication Works and How To Use It with Arduino 2024, Mai
Anonim

În acest articol vom analiza ce este o interfață I2C (ay-tu-si, i-two-tse), care sunt caracteristicile sale și cum să lucrați cu ea.

Interfață I2c
Interfață I2c

Este necesar

  • - Arduino;
  • - potențiometru digital AD5171;
  • - Dioda electro luminiscenta;
  • - rezistor de 220 ohm;
  • - 2 rezistențe pentru 4,7 kOhm;
  • - conectarea firelor.

Instrucțiuni

Pasul 1

Protocolul de comunicație serial IIC (numit și I2C - Circuite inter-integrate) utilizează două linii de comunicații bidirecționale pentru a transfera date, numite magistrala SDA (Serial Data) și magistrala SCL (Serial Clock). Există, de asemenea, două linii electrice. Autobuzele SDA și SCL sunt trase până la magistrala de alimentare prin rezistențe.

Există cel puțin un Master în rețea care inițiază transmisia de date și generează semnale de sincronizare. Rețeaua are și sclavi care transmit date la cererea masterului. Fiecare dispozitiv sclav are o adresă unică la care se adresează comandantul. Adresa dispozitivului este indicată în pașaport (fișă tehnică). Până la 127 de dispozitive pot fi conectate la o singură magistrală I2C, inclusiv mai multe master-uri. Dispozitivele pot fi conectate la magistrală în timpul funcționării, adică acceptă conectarea la cald.

Diagrama conexiunii I2C
Diagrama conexiunii I2C

Pasul 2

Arduino folosește două porturi pentru a lucra pe interfața I2C. De exemplu, în Arduino UNO și Arduino Nano, portul analog A4 corespunde SDA, portul analog A5 corespunde SCL.

Pentru alte modele de bord:

Arduino Pro și 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

Maparea pinilor Arduino la autobuzele SDA și SCL
Maparea pinilor Arduino la autobuzele SDA și SCL

Pasul 3

Pentru a facilita schimbul de date cu dispozitive prin intermediul magistralei I2C, pentru Arduino a fost scrisă o bibliotecă standard „Wire”. Are următoarele funcții:

begin (adresa) - inițializarea bibliotecii și conexiunea la magistrala I2C; dacă nu este specificată nicio adresă, atunci dispozitivul conectat este considerat master; Se utilizează adresarea pe 7 biți;

requestFrom () - folosit de comandant pentru a solicita un anumit număr de octeți de la sclav;

beginTransmission (adresa) - începutul transferului de date către dispozitivul slave la o anumită adresă;

endTransmission () - încetarea transmiterii datelor către sclav;

write () - scrierea datelor de la sclav ca răspuns la o cerere;

available () - returnează numărul de octeți de informații disponibile pentru primirea de la sclav;

read () - citiți un octet transferat de la sclav la stăpân sau de la stăpân la sclav;

onReceive () - indică funcția care trebuie apelată atunci când sclavul primește o transmisie de la master;

onRequest () - Indică o funcție care trebuie apelată atunci când comandantul primește o transmisie de la sclav.

Pasul 4

Să vedem cum să funcționăm cu autobuzul I2C folosind Arduino.

În primul rând, vom asambla circuitul, așa cum se arată în figură. Vom controla luminozitatea LED-ului folosind potentiometrul digital AD5171 pe 64 de poziții, care se conectează la magistrala I2C. Adresa la care ne vom referi la potențiometru este 0x2c (44 în zecimal).

Circuit de control LED folosind potențiometru digital și Arduino
Circuit de control LED folosind potențiometru digital și Arduino

Pasul 5

Acum să deschidem o schiță din exemplele bibliotecii „Sârmă”:

Fișier -> Eșantioane -> Sârmă -> digital_potentiometru. Să-l încărcăm în memoria Arduino. Să-l pornim.

Vedeți, luminozitatea LED-ului crește ciclic și apoi se stinge brusc. În acest caz, controlăm potențiometrul folosind Arduino prin intermediul magistralei I2C.

Recomandat: