Cuprins:

Vă prezentăm I2C cu module Zio și Qwiic: 6 pași
Vă prezentăm I2C cu module Zio și Qwiic: 6 pași

Video: Vă prezentăm I2C cu module Zio și Qwiic: 6 pași

Video: Vă prezentăm I2C cu module Zio și Qwiic: 6 pași
Video: How to use LCD LCD1602 with I2C module for Arduino - Robojax 2024, Iulie
Anonim
Vă prezentăm I2C cu modulele Zio și Qwiic
Vă prezentăm I2C cu modulele Zio și Qwiic

Robin Sharma a spus: „Micile îmbunătățiri zilnice în timp duc la rezultate uimitoare”. S-ar putea să vă gândiți: „Aw, încă o postare I2C?”. Ei bine, există cu siguranță mii de informații când vine vorba de I2C. Dar stați la curent, acesta nu este doar un alt articol I2C. Qwiic Connect System și plăcile de periferice Zio sunt cu siguranță schimbătoare de joc I²C!

Introducere

Dacă construiți proiecte electronice și faceți lucruri minunate, s-ar fi putut să vă dați seama că, pe măsură ce proiectele dvs. se măresc, panoul dvs. începe să arate ca o groapă de șarpe (un pic dezordonat, nu?).

În plus, dacă aveți mai multe proiecte în desfășurare, petreceți o grămadă de timp schimbând firele de la proiect la proiect.

Suntem creatori, așa că înțelegem lupta. Cea mai recentă contribuție a noastră la comunitatea OHS este un sistem modular de prototipare numit ZIO, care adoptă sistemul de conectare Qwiic. Qwiic este un mod foarte convenabil de a comunica o placă de circuit programabilă senzorilor, actuatorilor și plăcilor de rupere prin I²C.

Pasul 1: Ce este I²C și de ce ne place

Ce este I²C și de ce ne place
Ce este I²C și de ce ne place

I²C este cea mai utilizată magistrală multi-master, ceea ce înseamnă că pot fi conectate diverse cipuri la aceeași magistrală. Este utilizat în multe aplicații între un master și un slave sau mai multe dispozitive master și slave. De la microcontrolere, la smartphone-uri, la aplicații industriale, în special pentru dispozitive video precum monitoarele de computer. Poate fi ușor implementat în multe modele electronice (și recent chiar mai ușor cu conectorul Qwiic).

Dacă ar trebui să descriem I²C în două cuvinte, am folosi probabil simplitatea și flexibilitatea.

Unul dintre cele mai mari avantaje ale I²C față de alte protocoale de comunicații este că este o interfață cu două fire, ceea ce înseamnă că are nevoie doar de două fire de semnal, SDA (Serial Data Line) și SCL (Serial Clock Line). Este posibil să nu fie cel mai rapid protocol, dar este bine cunoscut pentru faptul că este foarte flexibil, permițând flexibilitate în tensiunea magistralei.

O altă caracteristică semnificativă care face acest autobuz atractiv este părtășia dintre stăpân și sclav. Mai multe dispozitive pot fi conectate la aceeași magistrală și nu este nevoie să schimbați cablajul între dispozitive, deoarece fiecare dispozitiv are o adresă unică (comandantul selectează dispozitivul pentru a comunica).

Pasul 2: Să aruncăm o privire mai atentă

Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă
Să aruncăm o privire mai atentă

Deci, cum funcționează I²C? Anterior am menționat că una dintre cele mai semnificative caracteristici este tensiunea admisă, acest lucru este posibil deoarece I²C folosește un colector deschis (cunoscut și sub denumirea de drenaj deschis) atât pentru liniile de comunicație SDA, cât și pentru SCL.

SCL este semnalul de ceas, sincronizează transferul de date între dispozitivele de pe magistrala I²C și este generat de master. În timp ce SDA transportă datele pentru a trimite sau primi de la senzori sau alte dispozitive conectate la magistrală.

Ieșirea la semnal este conectată la masă, ceea ce înseamnă că fiecare dispozitiv este impus la fel de scăzut. Pentru a recupera semnalul la mare, ambele linii sunt conectate la o tensiune de alimentare pozitivă printr-un rezistor de tracțiune care urmează să fie terminat.

Cu modulele ZIO te-am acoperit, toate plăcile noastre de breakout încorporează rezistența de tragere necesară.

I²C urmează un protocol de mesaj pentru a comunica masterul cu dispozitivele slave. Cele două linii (SCL și SDA) sunt comune în toți sclavii I²C, toți sclavii din autobuz ascultând mesajul.

Protocolul de mesaj urmează formatul afișat în imaginea atașată:

S-ar putea să pară complicat la prima vedere, dar avem o veste bună. Când utilizați Arduino IDE există biblioteca Wire.h, pentru a simplifica toate setările pentru protocolul de mesaj I²C.

Condiția de pornire este generată atunci când linia de date (SDA) scade în timp ce linia de ceas (SCL) este încă ridicată. La configurarea unui proiect pe interfața Arduino nu trebuie să ne facem griji cu privire la generarea condiției de pornire, acesta va fi inițiat cu o funcție specifică (Wire.beginTransmission (slaveAddress)).

În plus, această funcție inițiază, de asemenea, transmisia cu adresa slave specifică. Pentru a alege sclavul pentru a comunica pe magistrala partajată, stăpânul continuă să transmită adresa sclavului pentru a comunica. După ce adresa este setată pentru a comunica cu sclavul corespunzător, mesajul urmează fie cu un bit de citire, fie de scriere, în funcție de modul selectat.

Salvarea oferă un răspuns cu confirmare (ACK sau NACK), iar alte dispozitive slave din autobuz reduc restul datelor până când mesajul este complet și autobuzul este gratuit. După ACK, o secvență a unui registru intern de adresare a sclavilor continuă transmisia.

Când datele sunt trimise, mesajul de transfer se încheie cu o condiție de oprire. Pentru a încheia transmisia, linia de date se schimbă la înaltă, iar linia de ceas rămâne ridicată.

Pasul 3: I²C și ZIO

I²C și ZIO
I²C și ZIO

Ne-am dat seama că aș fi cel mai bine să schițez toate informațiile de mai sus într-o conversație între un maestru (alias Zuino, micro-ul nostru) și sclavi (alias panouri ZIO).

În acest exemplu de bază folosim senzorul de distanță ZIO TOF și afișajul ZIO OLED. TOF oferă informații despre distanță în timp ce ZIO Oled afișează datele. Componentele și dispozitivele utilizate:

  • ZUINO M UNO - Maestrul
  • Afișaj ZIO OLED - Slave_01
  • Senzor de distanță ZIO TOF - Slave_02
  • Cablu Qwiic - Conexiune ușoară pentru dispozitive I²C

Iată cât de ușor este să conectați plăcile între ele folosind Qwiic, nu este nevoie de panou de testare, cabluri suplimentare încorporate sau pini ZUINO. Linia serială Ceas și date a ZUINO este conectată automat la senzorul de distanță și OLED utilizând conectorul Qwiic. Celelalte două cabluri sunt 3V3 și GND.

În primul rând, să aruncăm o privire asupra informațiilor necesare, pentru a comunica stăpânul cu sclavii, ar trebui să cunoaștem adresele unice.

Dispozitiv: senzor de distanță ZIO

  • Număr piesă: RFD77402
  • Adresa I2C: 0x4C
  • Link foaie tehnică

Dispozitiv: Afișaj ZIO OLED

  • Număr piesă: SSD1306
  • Adresa: 0x3C
  • Link foaie tehnică

Pentru a găsi adresa unică pentru dispozitivele slave deschideți fișa tehnică furnizată. Pentru senzorul de distanță, adresa este furnizată în secțiunea Module Interface. Fiecare senzor sau componentă are o foaie de date diferită, cu informații diferite furnizate. Uneori poate fi dificil să îl găsiți într-o foaie de date de 30 de pagini (indiciu: deschideți instrumentul de căutare în vizualizatorul PDF și tastați „adresa” sau „ID-ul dispozitivului” pentru o căutare rapidă).

Acum că este cunoscută adresa unică pentru fiecare dispozitiv, pentru citirea / scrierea datelor, adresa de registru internă trebuie identificată (tot din foaia de date). Privind foaia de date a senzorului de distanță ZIO, adresa pentru a obține distanța corespunde 0x7FF.

În acest caz special, nu avem nevoie de aceste informații pentru a utiliza senzorul, așa cum o face deja biblioteca.

Pasul următor, pune mâna pe cod. ZUINO M UNO este compatibil cu Arduino IDE, ceea ce face configurarea mult mai ușoară. Bibliotecile necesare pentru acest proiect sunt următoarele:

  • Sârmă.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h este o bibliotecă arduino, cele două biblioteci Adafruit sunt utilizate pentru OLED, iar ultimele sunt utilizate pentru senzorul Distanță. Verificați acest tutorial despre cum să legați bibliotecile *.zip la Arduino IDE.

Privind codul, mai întâi trebuie declarate bibliotecile, precum și adresa pentru OLED.

În setare () transmisia începe și se afișează text pentru funcționalitatea senzorului de distanță.

Bucla () măsoară distanța și OLED o imprimă.

Verificați exemplul de cod sursă de pe linkul github.

Utilizarea ambelor plăci de separare este destul de ușoară în toate sensurile. Pe partea hardware, conectorul Qwiic face ca configurarea hardware să fie mai rapidă și mult mai puțin dezordonată decât să aveți fire de cablu și jumper. Și pentru firmware, folosind bibliotecile corespunzătoare pentru comunicația I2C, senzorul și afișajul fac codul mult mai simplu.

Pasul 4: Care este lungimea maximă a cablului?

Lungimea maximă depinde de rezistențele de tracțiune utilizate pentru SDA și SCL și de capacitatea cablului. Rezistențele determină, de asemenea, viteza autobuzului, cu cât este mai mică viteza autobuzului, cu atât este mai mare limita cablului. Capacitatea cablului limitează numărul de dispozitive de pe magistrală, precum și lungimea cablului. Aplicațiile tipice limitează lungimea firului la 2,5-3,5m (9-12ft), dar există variații în funcție de cablul utilizat. Pentru referință, lungimea maximă pentru aplicațiile I2C care utilizează cabluri blindate de 22 AWG este de aproximativ 1 m (3 ft) la 100 kbaund, 10 m (30 ft) la 10kbaud.

Există unele site-uri precum mogami sau WolframAlpha care permit estimarea lungimii cablului.

Pasul 5: Cum să conectați mai multe dispozitive pe aceeași magistrală?

Cum se conectează mai multe dispozitive pe aceeași magistrală?
Cum se conectează mai multe dispozitive pe aceeași magistrală?
Cum se conectează mai multe dispozitive pe aceeași magistrală?
Cum se conectează mai multe dispozitive pe aceeași magistrală?

I2C este o magistrală serială, unde toate dispozitivele sunt conectate la o magistrală partajată. Cu conectorul Qwiic, diferitele plăci de separare pot fi conectate una după alta folosind conectorul Qwiic. Fiecare placă are cel puțin 2 conectori Qwiic.

Am creat diferite plăci pentru a rezolva unele dintre limitările Qwiic și I2C. Placa adaptor Zio Qwiic este utilizată pentru a vă conecta prin dispozitive Qwiic fără un conector Qwiic, utilizând cablul Qwiic la header-ul masculin. Acest truc simplu creează posibilități nelimitate.

Pentru a conecta diferite dispozitive pe o rețea de autobuz sau arbore, am venit cu Hub-ul Zio Qwiic.

Nu în ultimul rând, Zio Qwiic MUX permite conectarea a două sau mai multe dispozitive folosind aceeași adresă.

Pasul 6: Care este rezilierea I2C?

I2C este necesar să se termine, astfel încât linia este liberă să adauge alte dispozitive. Acest lucru poate fi puțin confuz, deoarece termenul de terminare este utilizat în mod obișnuit pentru a descrie rezistențele de tracțiune a magistralei (pentru a furniza o stare implicită, în acest caz pentru a furniza curent circuitului). Pentru plăcile Zuino, valoarea rezistenței este de 4,7 kΩ.

Dacă rezilierea este omisă, nu va exista nicio comunicare pe autobuz - comandantul nu va putea genera condiția de pornire, astfel încât mesajul nu va fi transmis sclavilor.

Pentru informații suplimentare și capacități Zio verificați cele mai recente produse Zio. Scopul acestui articol este de a explica noțiunile de bază ale comunicării I²C și cum funcționează cu conectorul Zio și Qwiic. Rămâneți la curent pentru mai multe actualizări.

Recomandat: