Obsah:

Predstavujeme I2C s modulmi Zio a Qwiic: 6 krokov
Predstavujeme I2C s modulmi Zio a Qwiic: 6 krokov

Video: Predstavujeme I2C s modulmi Zio a Qwiic: 6 krokov

Video: Predstavujeme I2C s modulmi Zio a Qwiic: 6 krokov
Video: Arduino Nano, BME280 и SSD1306 OLED-метеостанция 2024, Júl
Anonim
Predstavujeme I2C s modulmi Zio a Qwiic
Predstavujeme I2C s modulmi Zio a Qwiic

Robin Sharma povedal: „Malé každodenné zlepšovania v priebehu času vedú k ohromujúcim výsledkom“. Môžete si myslieť: „Ach, ďalší príspevok na I2C?“. Pokiaľ ide o I2C, určite existujú tisíce informácií. Zostaňte však naladení, nie je to len ďalší článok z I2C. Systém Qwiic Connect System a Zio periférne oddeľovacie dosky určite menia hry I²C!

Úvod

Ak staviate elektronické projekty a robíte úžasné veci, možno ste si uvedomili, že keď sa vaše projekty zväčšujú, váš doska na pečenie začne vyzerať ako hadia jama (trochu neporiadne, však?).

Navyše, ak prebieha viacero projektov, strávite veľa času prepínaním káblov z projektu na projekt.

Sme tvorcovia, takže chápeme boj. Našim najnovším prínosom pre komunitu OHS je modulárny prototypovací systém s názvom ZIO, ktorý využíva spojovací systém Qwiic. Qwiic je veľmi pohodlný spôsob, ako komunikovať programovateľnú dosku so snímačmi, akčnými členmi a oddeľovacími doskami cez I²C.

Krok 1: Čo je I²C a prečo sa nám to páči

Čo je to I²C a prečo sa nám to páči
Čo je to I²C a prečo sa nám to páči

I²C je najpoužívanejšia zbernica s viacerými mastermi, čo znamená, že k tej istej zbernici je možné pripojiť rôzne čipy. Používa sa v mnohých aplikáciách medzi zariadeniami master a slave alebo viacerými zariadeniami master a slave. Od mikrokontrolérov, cez smartfóny až po priemyselné aplikácie, najmä pre video zariadenia, ako sú počítačové monitory. Dá sa ľahko implementovať v mnohých elektronických prevedeniach (a v poslednej dobe ešte jednoduchšie s konektorom Qwiic).

Ak by sme mali popísať I²C dvoma slovami, pravdepodobne by sme použili jednoduchosť a flexibilitu.

Jednou z najväčších výhod I²C oproti iným komunikačným protokolom je, že je to dvojvodičové rozhranie, čo znamená, že potrebuje iba dva signálne vodiče, SDA (sériová dátová linka) a SCL (sériová hodinová linka). Možno to nie je najrýchlejší protokol, ale je známe, že je veľmi flexibilný a umožňuje flexibilitu napätia zbernice.

Ďalšou významnou charakteristikou, ktorá robí tento autobus atraktívnym, je spoločenstvo medzi pánom a otrokom. K tej istej zbernici je možné pripojiť viacero zariadení a nie je potrebné meniť zapojenie medzi zariadeniami, pretože každé zariadenie má jedinečnú adresu (zariadenie vyberá zariadenie na komunikáciu).

Krok 2: Pozrime sa bližšie

Pozrime sa bližšie
Pozrime sa bližšie
Pozrime sa bližšie
Pozrime sa bližšie
Pozrime sa bližšie
Pozrime sa bližšie
Pozrime sa bližšie
Pozrime sa bližšie

Ako teda I²C funguje? Predtým sme spomenuli, že jednou z najdôležitejších vlastností je príkon napätia, čo je možné, pretože I²C používa otvorený komunikačný kolektor (známy tiež ako otvorený odtok) pre komunikačné linky SDA aj SCL.

SCL je hodinový signál, synchronizuje prenos údajov medzi zariadeniami na zbernici I²C a generuje ho master. Kým SDA prenáša údaje na odosielanie alebo prijímanie zo senzorov alebo iných zariadení pripojených k zbernici.

Výstup signálu je spojený so zemou, čo znamená, že každé zariadenie je nastavené ako nízke. Aby sa signál obnovil na vysokú úroveň, obe vedenia sú pripojené k kladnému napájaciemu napätiu pomocou ukončovacieho odporu.

S modulmi ZIO, ktoré sme vám poskytli, sú všetky naše oddeľovacie dosky vybavené potrebným vyťahovacím odporom.

I²C dodržiava protokol správ, aby komunikoval master s podradenými zariadeniami. Dva riadky (SCL a SDA) sú spoločné pre všetky podradené zariadenia I²C, všetci podriadení v zbernici počúvajú správu.

Protokol správ má formát zobrazený na priloženom obrázku:

Na prvý pohľad to môže vyzerať komplikovane, ale máme trochu dobrých správ. Pri použití Arduino IDE existuje knižnica Wire.h, ktorá zjednodušuje všetky nastavenia pre protokol správ I²C.

Štartovacia podmienka sa generuje, keď dátový riadok (SDA) klesne na nízku úroveň, zatiaľ čo hodinový riadok (SCL) je stále vysoký. Pri nastavovaní projektu na rozhraní Arduino si nemusíme robiť starosti s generovaním štartovacej podmienky, bude iniciovaný so špecifickou funkciou (Wire.beginTransmission (slaveAddress)).

Táto funkcia navyše iniciuje prenos so špecifickou adresou slave. Aby sa vybral slave na komunikáciu na zdieľanej zbernici, master pokračuje v odosielaní adresy slave na komunikáciu. Potom, čo je adresa nastavená na komunikáciu s príslušným zariadením slave, nasleduje správa buď s čítacím alebo zapisovacím bitom, v závislosti od zvoleného režimu.

Salve dáva odpoveď s potvrdením (ACK alebo NACK) a ostatné podriadené zariadenia na zbernici zľavňujú ostatné údaje, kým nie je správa kompletná a zbernica je voľná. Po ACK pokračuje v prenose sekvencia interného adresného registra otrokov.

Po odoslaní údajov sa prenosová správa skončí s podmienkou zastavenia. Na ukončenie prenosu sa dátový riadok zmení na vysoký a hodinový riadok zostane vysoký.

Krok 3: I²C a ZIO

I²C a ZIO
I²C a ZIO

Zistili sme, že by bolo najlepšie navrhnúť všetky vyššie uvedené informácie v rozhovore medzi majstrom (známy tiež ako Zuino, náš mikro) a otrokmi (známy tiež ako oddeľovacie dosky ZIO).

V tomto základnom prípade používame snímač vzdialenosti ZIO TOF a ZIO OLED displej. TOF poskytuje informácie o vzdialenosti, zatiaľ čo ZIO Oled zobrazuje údaje. Použité komponenty a zariadenia:

  • ZUINO M UNO - majster
  • ZIO OLED displej - Slave_01
  • Senzor vzdialenosti ZIO TOF - Slave_02
  • Kábel Qwiic - jednoduché pripojenie pre zariadenia I²C

Takto jednoducho je možné dosky navzájom prepojiť pomocou Qwiic, nie sú potrebné žiadne dosky, dodatočné káble alebo konektory ZUINO. Sériové hodiny a dáta ZUINO sa automaticky pripoja k senzoru vzdialenosti a OLED pomocou konektora Qwiic. Dva ďalšie káble sú 3V3 a GND.

Najprv sa pozrime na potrebné informácie, aby sme mohli komunikovať master s otrokmi, potrebovali by sme poznať jedinečné adresy.

Zariadenie: Senzor vzdialenosti ZIO

  • Číslo dielu: RFD77402
  • Adresa I2C: 0x4C
  • Odkaz na technický list

Zariadenie: ZIO OLED displej

  • Číslo dielu: SSD1306
  • Adresa: 0x3C
  • Odkaz na technický list

Ak chcete nájsť jedinečnú adresu pre podradené zariadenia, otvorte poskytnutý hárok s údajmi. Adresa snímača vzdialenosti je uvedená v sekcii rozhrania modulu. Každý snímač alebo komponent má iný technický list s inými poskytnutými informáciami. Nájsť ho v 30 -stranovom údajovom hárku môže byť niekedy náročné (rada: otvorte nástroj na vyhľadávanie v prehliadači PDF a pre rýchle vyhľadávanie zadajte „adresu“alebo „ID zariadenia“).

Teraz, keď je známa jedinečná adresa pre každé zariadenie, na čítanie/ zápis údajov je potrebné identifikovať adresu vnútorného registra (aj z údajového listu). Keď sa pozriete na technický list senzora vzdialenosti ZIO, adresa na získanie vzdialenosti zodpovedá 0x7FF.

V tomto konkrétnom prípade tieto informácie skutočne nepotrebujeme na používanie senzora, ako to už robí knižnica.

Ďalší krok, odovzdajte kód. ZUINO M UNO je kompatibilný s Arduino IDE, čo výrazne uľahčuje nastavenie. Knižnice potrebné pre tento projekt sú tieto:

  • Wire.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h je arduino knižnica, dve knižnice Adafruit sa používajú pre OLED a posledná sa používa pre snímač vzdialenosti. Pozrite sa na tento návod, ako prepojiť knižnice *.zip s Arduino IDE.

Pri pohľade na kód treba najskôr deklarovať knižnice a adresu OLED.

V nastavení () sa spustí prenos a zobrazí sa text pre funkciu snímača vzdialenosti.

Smyčka () meria vzdialenosť a OLED ju vytlačí.

Pozrite si ukážkový zdrojový kód na odkaze github.

Používanie oboch oddeľovacích dosiek je celkom jednoduché vo všetkých zmysloch. Na strane hardvéru vďaka konektoru Qwiic je nastavenie hardvéru rýchlejšie a oveľa menej chaotické ako v prípade prepojovacej lišty a prepojovacích káblov. A pre firmvér, ktorý používa zodpovedajúce knižnice na komunikáciu I2C, snímač a displej robia kód oveľa jednoduchším.

Krok 4: Aká je maximálna dĺžka kábla?

Maximálna dĺžka závisí od pull up rezistorov použitých pre SDA a SCL a od kapacity kábla. Odpory tiež určujú rýchlosť zbernice, čím nižšia je rýchlosť zbernice, tým dlhšia je hranica kábla. Kapacita kábla obmedzuje počet zariadení na zbernici, ako aj dĺžku kábla. Typické aplikácie obmedzujú dĺžku drôtu na 2,5-3,5 m (9-12 stôp), ale existujú rozdiely v závislosti od použitého kábla. Na porovnanie, maximálna dĺžka v aplikáciách I2C používajúcich tienené krútené páry 22 AWG je asi 1 m (3 stopy) pri 100 kbaundoch, 10 m (30 stôp) pri 10 kbaudoch.

Existujú weby ako mogami alebo WolframAlpha, ktoré umožňujú odhadnúť dĺžku kábla.

Krok 5: Ako pripojiť viac zariadení k tej istej zbernici?

Ako pripojiť viac zariadení k tej istej zbernici?
Ako pripojiť viac zariadení k tej istej zbernici?
Ako pripojiť viac zariadení k tej istej zbernici?
Ako pripojiť viac zariadení k tej istej zbernici?

I2C je sériová zbernica, kde sú všetky zariadenia pripojené k zdieľanej zbernici. S konektorom Qwiic je možné rôzne oddeľovacie dosky spájať jeden za druhým pomocou konektora Qwiic. Každá doska má najmenej 2 konektory Qwiic.

Vytvorili sme rôzne dosky na vyriešenie niektorých obmedzení Qwiic a I2C. Doska adaptéra Zio Qwiic sa používa na pripojenie prostredníctvom zariadení Qwiic bez konektora Qwiic pomocou káblového konektora samec Qwiic - breadboard. Tento jednoduchý trik vytvára neobmedzené možnosti.

Na pripojenie rôznych zariadení k zbernicovej alebo stromovej sieti sme vytvorili Zio Qwiic Hub.

V neposlednom rade Zio Qwiic MUX umožňuje pripojenie dvoch alebo viacerých zariadení s rovnakou adresou.

Krok 6: Čo je ukončenie I2C?

I2C je potrebné ukončiť, takže na linku je možné pridať ďalšie zariadenia. To môže byť trochu mätúce, pretože terminačný termín sa bežne používa na opis odpínačov zbernice (na poskytnutie predvoleného stavu, v tomto prípade na napájanie obvodu). Pre dosky Zuino je hodnota odporu 4,7 kΩ.

Ak je ukončenie vynechané, nebude na zbernici vôbec žiadna komunikácia- master by nebol schopný vygenerovať štartovaciu podmienku, takže správa nebude odoslaná do podriadených zariadení.

Ďalšie informácie a možnosti Zio nájdete v najnovších produktoch Zio. Cieľom tohto článku je vysvetliť základy komunikácie I²C a ich fungovanie s konektormi Zio a Qwiic. Sledujte ďalšie aktualizácie.

Odporúča: