Obsah:

Představujeme I2C s moduly Zio a Qwiic: 6 kroků
Představujeme I2C s moduly Zio a Qwiic: 6 kroků

Video: Představujeme I2C s moduly Zio a Qwiic: 6 kroků

Video: Představujeme I2C s moduly Zio a Qwiic: 6 kroků
Video: How to Use I2C LCD with Arduino | Very Easy Arduino LCD I2C Tutorial | Arduino 16x2 LCD I2C Tutorial 2024, Červenec
Anonim
Představujeme I2C s moduly Zio a Qwiic
Představujeme I2C s moduly Zio a Qwiic

Robin Sharma řekl: „Malé každodenní zlepšování v průběhu času vede k ohromujícím výsledkům“. Možná si říkáte: „Ach, další příspěvek na I2C?“. Pokud jde o I2C, určitě existují tisíce informací. Ale zůstaňte naladěni, toto není jen další článek I2C. Systémy Qwiic Connect System a Zio periferní odpočinkové desky rozhodně mění hry I²C!

Úvod

Pokud stavíte elektronické projekty a děláte úžasné věci, možná jste si uvědomili, že jak se vaše projekty zvětšují, vaše prkénko začne vypadat jako hadí jáma (trochu nepořádné, že?).

Pokud navíc probíhá více projektů, strávíte spoustu času přepínáním vodičů z projektu na projekt.

Jsme tvůrci, takže chápeme boj. Naším nejnovějším příspěvkem do komunity OHS je modulární prototypovací systém s názvem ZIO, který využívá připojovací systém Qwiic. Qwiic je velmi pohodlný způsob komunikace programovatelných obvodových desek se senzory, akčními členy a rozpojovacími deskami přes I²C.

Krok 1: Co je I²C a proč se nám to líbí

Co je to I²C a proč se nám to líbí
Co je to I²C a proč se nám to líbí

I²C je nejpoužívanější sběrnice více hlavních sběrnic, což znamená, že ke stejné sběrnici lze připojit různé čipy. Používá se v mnoha aplikacích mezi zařízením master a slave nebo více zařízení master a slave. Od mikrokontrolérů, přes smartphony až po průmyslové aplikace, zejména pro video zařízení, jako jsou počítačové monitory. Lze jej snadno implementovat v mnoha elektronických provedeních (a v poslední době ještě snadněji s konektorem Qwiic).

Pokud bychom měli I²C popsat dvěma slovy, pravděpodobně bychom použili jednoduchost a flexibilitu.

Jednou z největších výhod I²C oproti jiným komunikačním protokolům je, že je to dvouvodičové rozhraní, což znamená, že potřebuje pouze dva signálové vodiče, SDA (Serial Data Line) a SCL (Serial Clock Line). Možná to není nejrychlejší protokol, ale je dobře známo, že je velmi flexibilní a umožňuje flexibilitu napětí sběrnice.

Další významnou charakteristikou, která činí tento autobus atraktivní, je společenství mezi pánem a otrokem. Ke stejné sběrnici lze připojit více zařízení a není nutné měnit zapojení mezi zařízeními, protože každé zařízení má jedinečnou adresu (master komunikuje se zařízením).

Krok 2: Podívejme se blíže

Podívejme se blíže
Podívejme se blíže
Podívejme se blíže
Podívejme se blíže
Podívejme se blíže
Podívejme se blíže
Podívejme se blíže
Podívejme se blíže

Jak tedy I²C funguje? Dříve jsme zmínili, že jednou z nejvýznamnějších vlastností je přídavek napětí, což je možné, protože I²C používá otevřený kolektor (známý také jako otevřený odtok) pro komunikační linky SDA i SCL.

SCL je hodinový signál, synchronizuje přenos dat mezi zařízeními na sběrnici I²C a je generován masterem. Zatímco SDA přenáší data k odesílání nebo přijímání ze senzorů nebo jiných zařízení připojených ke sběrnici.

Výstup signálu je připojen k zemi, což znamená, že každé zařízení je uloženo jako nízké. Aby byl signál obnoven na vysokou hodnotu, jsou obě vedení připojena k kladnému napájecímu napětí prostřednictvím ukončovacího odporu.

S moduly ZIO, které jsme vám poskytli, jsou všechny naše desky vybaveny nezbytným odporem.

I²C dodržuje protokol zpráv, aby mohl komunikovat master s podřízenými zařízeními. Tyto dva řádky (SCL a SDA) jsou společné pro všechny podřízené I²C, všichni slave v sběrnici poslouchají zprávu.

Protokol zpráv má formát zobrazený na přiloženém obrázku:

Na první pohled to může vypadat složitě, ale máme trochu dobré zprávy. Při použití Arduino IDE existuje knihovna Wire.h, která zjednodušuje veškeré nastavení pro protokol zpráv I²C.

Počáteční podmínka je generována, když datová linka (SDA) klesá nízko, zatímco hodinová linka (SCL) je stále vysoká. Při nastavování projektu na rozhraní Arduino si nemusíme dělat starosti s generováním počáteční podmínky, bude zahájen s konkrétní funkcí (Wire.beginTransmission (slaveAddress)).

Tato funkce navíc iniciuje přenos se specifickou adresou slave. Chcete -li zvolit slave pro komunikaci na sdílené sběrnici, master pokračuje v předávání adresy slave ke komunikaci. Poté, co je adresa nastavena tak, aby komunikovala s příslušným slave, následuje zpráva de s bitem pro čtení nebo zápis, v závislosti na zvoleném režimu.

Salve dává odpověď s potvrzením (ACK nebo NACK) a ostatní podřízená zařízení na sběrnici slevují zbytek dat, dokud není zpráva kompletní a sběrnice je volná. Po ACK pokračuje v přenosu sekvence vnitřního adresovacího registru podřízených.

Když jsou data odeslána, přenosová zpráva končí podmínkou zastavení. Pro ukončení přenosu se datová linka změní na vysokou a hodinová zůstane vysoká.

Krok 3: I²C a ZIO

I²C a ZIO
I²C a ZIO

Přišli jsme na to, že všechny informace výše budu nejlépe navrhnout v rozhovoru mezi pánem (známým jako Zuino, náš mikro) a otroky (známými jako oddělovací desky ZIO).

V tomto základním příkladu používáme snímač vzdálenosti ZIO TOF a ZIO OLED displej. TOF poskytuje informace o vzdálenosti, zatímco ZIO Oled zobrazuje data. Použité součásti a zařízení:

  • ZUINO M UNO - mistr
  • ZIO OLED displej - Slave_01
  • Senzor vzdálenosti ZIO TOF - Slave_02
  • Kabel Qwiic - snadné připojení pro zařízení I²C

Zde je návod, jak snadno propojit desky k sobě pomocí Qwiic, není potřeba žádné prkénko, další kabely nedded nebo piny ZUINO. Sériové hodiny a data linky ZUINO se automaticky připojí ke snímači vzdálenosti a OLED pomocí konektoru Qwiic. Dva další kabely jsou 3V3 a GND.

Nejprve se podívejme na potřebné informace, abychom mohli komunikovat s masterem s otroky, potřebovali bychom znát jedinečné adresy.

Zařízení: Senzor vzdálenosti ZIO

  • Číslo dílu: RFD77402
  • Adresa I2C: 0x4C
  • Odkaz na datový list

Zařízení: ZIO OLED displej

  • Číslo dílu: SSD1306
  • Adresa: 0x3C
  • Odkaz na datový list

Chcete -li najít jedinečnou adresu pro podřízená zařízení, otevřete dodaný datový list. Pro snímač vzdálenosti je adresa uvedena v sekci Rozhraní modulu. Každý senzor nebo komponenta má jiný datový list s různými poskytnutými informacemi. Někdy může být náročné najít jej na 30stránkovém datasheetu (nápověda: otevřete si vyhledávací nástroj v prohlížeči PDF a pro rychlé vyhledávání zadejte „adresu“nebo „ID zařízení“).

Nyní, když je známa jedinečná adresa pro každé zařízení, pro čtení/ zápis dat je třeba identifikovat adresu vnitřního registru (také z datového listu). Když se podíváte na datový list senzoru vzdálenosti ZIO, adresa pro získání vzdálenosti odpovídá 0x7FF.

V tomto konkrétním případě tyto informace pro použití senzoru opravdu nepotřebujeme, protože knihovna to již dělá.

Další krok, předejte kód. ZUINO M UNO je kompatibilní s Arduino IDE, což výrazně usnadňuje nastavení. Knihovny potřebné pro tento projekt jsou následující:

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

Wire.h je arduino knihovna, dvě knihovny Adafruit jsou použity pro OLED a poslední jsou použity pro snímač vzdálenosti. Podívejte se na tento návod, jak propojit knihovny *.zip s Arduino IDE.

Při pohledu na kód je třeba nejprve deklarovat knihovny a adresu OLED.

V nastavení () začne přenos a zobrazí se text pro funkci snímače vzdálenosti.

Smyčka () měří vzdálenost a OLED ji vytiskne.

Zkontrolujte zdrojový kód příkladu na odkazu github.

Použití obou desek je docela snadné ve všech smyslech. Na straně hardwaru díky konektoru Qwiic je nastavení hardwaru rychlejší a mnohem méně komplikované než v případě propojovacího kabelu a propojovacích kabelů. A pokud jde o firmware, použití odpovídajících knihoven pro komunikaci I2C, snímač a displej dělají kód mnohem jednodušší.

Krok 4: Jaká je maximální délka kabelu?

Maximální délka závisí na pull up rezistorech použitých pro SDA a SCL a kapacitě kabelu. Odpory také určují rychlost sběrnice, čím nižší je rychlost sběrnice, tím delší je limit kabelu. Kapacitní kapacita kabelu omezuje počet zařízení na sběrnici a také délku kabelu. Typické aplikace omezují délku drátu na 2,5-3,5 m (9-12 stop), ale existují rozdíly v závislosti na použitém kabelu. Pro informaci, maximální délka v aplikacích I2C pomocí stíněných kroucených párů 22 AWG je asi 1 m (3 ft) při 100 kbaund, 10 m (30 ft) při 10 kbaud.

Existují weby jako mogami nebo WolframAlpha, které umožňují odhadnout délku kabelu.

Krok 5: Jak připojit více zařízení ke stejné sběrnici?

Jak připojit více zařízení ke stejné sběrnici?
Jak připojit více zařízení ke stejné sběrnici?
Jak připojit více zařízení ke stejné sběrnici?
Jak připojit více zařízení ke stejné sběrnici?

I2C je sériová sběrnice, kde jsou všechna zařízení připojena ke sdílené sběrnici. S konektorem Qwiic lze pomocí konektoru Qwiic propojit postupně za sebou různé rozbíjecí desky. Každá deska má alespoň 2 konektory Qwiic.

Vytvořili jsme různé desky, abychom vyřešili některá omezení Qwiic a I2C. Deska adaptéru Zio Qwiic se používá k připojení prostřednictvím zařízení Qwiic bez konektoru Qwiic pomocí kabelu samčího konektoru Qwiic do breadboardu. Tento jednoduchý trik vytváří neomezené možnosti.

Pro připojení různých zařízení na sběrnici nebo stromové síti jsme vytvořili Zio Qwiic Hub.

V neposlední řadě umožňuje Zio Qwiic MUX připojení dvou nebo více zařízení pomocí stejné adresy.

Krok 6: Co je ukončení I2C?

K ukončení je vyžadováno I2C, takže linka je zdarma pro přidání dalších zařízení. To může být trochu matoucí, protože terminační termín se běžně používá k popisu sběrnicových odpínačů (k zajištění výchozího stavu, v tomto případě k napájení proudu do obvodu). U desek Zuino je hodnota odporu 4,7 kΩ.

Pokud je ukončení vynecháno, nebude na sběrnici vůbec žádná komunikace- master by nebyl schopen vygenerovat počáteční podmínku, takže zpráva nebude přenášena na podřízené jednotky.

Další informace a možnosti Zio najdete v nejnovějších produktech Zio. Cílem tohoto článku je vysvětlit základy komunikace I²C a jak to funguje s konektorem Zio a Qwiic. Sledujte další aktualizace.

Doporučuje: