Kazalo:

Predstavljamo I2C z Zio moduli in Qwiic: 6 korakov
Predstavljamo I2C z Zio moduli in Qwiic: 6 korakov

Video: Predstavljamo I2C z Zio moduli in Qwiic: 6 korakov

Video: Predstavljamo I2C z Zio moduli in Qwiic: 6 korakov
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, Julij
Anonim
Predstavljamo I2C z Zio moduli in Qwiic
Predstavljamo I2C z Zio moduli in Qwiic

Robin Sharma je dejal: "Majhne dnevne izboljšave sčasoma vodijo do osupljivih rezultatov". Morda razmišljate: 'Aw, še ena objava I2C?'. No, o I2C je zagotovo na tisoče informacij. Ostanite z nami, to ni samo še en članek I2C. Qwiic Connect System in Zio periferne odklopne plošče zagotovo spreminjajo I²C igre!

Uvod

Če gradite elektronske projekte in delate super stvari, ste morda ugotovili, da z večanjem vaših projektov vaša plošča začne izgledati kot kačja jama (nekoliko grdo kajne?).

Poleg tega, če imate v teku več projektov, porabite kar nekaj časa za preklapljanje žic od projekta do projekta.

Mi smo ustvarjalci, zato razumemo boj. Naš najnovejši prispevek k skupnosti OHS je modularni prototipni sistem, imenovan ZIO, ki prevzema povezovalni sistem Qwiic. Qwiic je zelo priročen način za komuniciranje programabilnega vezja s senzorji, aktuatorji in odklopnimi ploščami prek I²C.

1. korak: Kaj je I²C in zakaj nam je všeč

Kaj je I²C in zakaj nam je všeč
Kaj je I²C in zakaj nam je všeč

I²C je najpogosteje uporabljeno vodilo z več glavnimi napravami, kar pomeni, da je mogoče na isto vodilo priključiti različne čipe. Uporablja se v številnih aplikacijah med glavno in pomožno napravo ali več glavnimi in podrejenimi napravami. Od mikrokrmilnikov, pametnih telefonov do industrijskih aplikacij, zlasti za video naprave, kot so računalniški monitorji. Z lahkoto ga je mogoče implementirati v številne elektronske zasnove (v zadnjem času pa še lažje s priključkom Qwiic).

Če bi morali I²C opisati v dveh besedah, bi verjetno uporabili preprostost in prilagodljivost.

Ena največjih prednosti I²C pred drugimi komunikacijskimi protokoli je, da je dvožični vmesnik, kar pomeni, da potrebuje le dve signalni žici, SDA (Serial Data Line) in SCL (Serial Clock Line). Morda ni najhitrejši protokol, vendar je znan po tem, da je zelo prilagodljiv in omogoča prilagodljivost napetosti vodila.

Druga pomembna značilnost, zaradi katere je ta avtobus privlačen, je druženje med gospodarjem in sužnjem. Na isto vodilo je mogoče povezati več naprav in ni treba spreminjati ožičenja med napravami, saj ima vsaka naprava edinstven naslov (poveljnik izbere napravo za komunikacijo).

2. korak: Oglejmo si podrobneje

Poglejmo si od blizu
Poglejmo si od blizu
Poglejmo si od blizu
Poglejmo si od blizu
Poglejmo si od blizu
Poglejmo si od blizu
Poglejmo si od blizu
Poglejmo si od blizu

Torej, kako deluje I²C? Prej smo omenili, da je ena najpomembnejših značilnosti dodatek napetosti, kar je mogoče, saj I²C uporablja odprti kolektor (znan tudi kot odprti odtok) za komunikacijske linije SDA in SCL.

SCL je signal ure, sinhronizira prenos podatkov med napravami na vodilu I²C in ga ustvari glavni. Medtem ko SDA prenaša podatke za pošiljanje ali sprejemanje s senzorjev ali drugih naprav, povezanih z vodilom.

Izhod na signal je povezan z maso, kar pomeni, da je vsaka naprava nizka. Če želite signal obnoviti na visoko, sta oba voda povezana s pozitivno napajalno napetostjo prek vlečnega upora, ki ga je treba zaključiti.

Z moduli ZIO smo vas pokrili, vse naše odklopne plošče vključujejo potreben uporovni upor.

I²C sledi protokolu sporočil za komunikacijo glavnega z pomožnimi napravami. Dve liniji (SCL in SDA) sta skupni znotraj vseh podrejenih I²C, vsi podrejeni na vodilu poslušajo sporočilo.

Protokol sporočila sledi obliki, prikazani na priloženi sliki:

Morda se na prvi pogled zdi zapleteno, vendar imamo nekaj dobrih novic. Ko uporabljate Arduino IDE, obstaja knjižnica Wire.h, ki poenostavi vse nastavitve protokola sporočil I²C.

Začetni pogoj se ustvari, ko podatkovna linija (SDA) pade nizko, medtem ko je vrstica ure (SCL) še vedno visoka. Pri nastavljanju projekta na vmesniku Arduino nam ni treba skrbeti za ustvarjanje pogoja za zagon, začel se bo s posebno funkcijo (Wire.beginTransmission (slaveAddress)).

Poleg tega ta funkcija tudi sproži prenos s posebnim naslovom pomožnika. Če želite izbrati podrejenega za komunikacijo na skupnem vodilu, nadaljuje nadrejeni, da posreduje naslov podrejenemu za komunikacijo. Ko je naslov nastavljen za komuniciranje z ustreznim podrejenim, sledi sporočilo de z branjem ali zapisom, odvisno od izbranega načina.

Rešitev daje odgovor s potrditvijo (ACK ali NACK), druge pomožne naprave na vodilu pa znižajo preostale podatke, dokler sporočilo ni dokončano in vodilo je brezplačno. Po ACK nadaljuje prenos zaporedje notranjega naslovnega registra podrejenih.

Ko so podatki poslani, se sporočilo o prenosu konča s pogojem ustavitve. Za prekinitev prenosa se podatkovna linija spremeni v visoko, linija ure pa ostane visoka.

3. korak: I²C in ZIO

I²C in ZIO
I²C in ZIO

Ugotovili smo, da bi bilo najbolje, da vse zgornje podatke začrtam v pogovoru med mojstrom (znanim tudi Zuino, naš mikro) in sužnji (aka ZIO odklopne plošče).

V tem osnovnem primeru uporabljamo senzor razdalje ZIO TOF in zaslon ZIO OLED. TOF podaja podatke o razdalji, medtem ko ZIO Oled prikazuje podatke. Uporabljene komponente in naprave:

  • ZUINO M UNO - mojster
  • ZIO OLED zaslon - Slave_01
  • ZIO TOF senzor razdalje - Slave_02
  • Qwiic Cable - Enostavna povezava za naprave I²C

Evo, kako enostavno je povezati plošče med seboj z uporabo Qwiic, brez potrebe po matični plošči, z dodatnimi kabli ali z zatiči ZUINO. Vrstica Ura in podatki ZUINO se samodejno poveže s senzorjem razdalje in OLED s priključkom Qwiic. Druga dva kabla sta 3V3 in GND.

Najprej si poglejmo potrebne podatke, da bi za povezovanje gospodarja s sužnji morali poznati edinstvene naslove.

Naprava: ZIO senzor razdalje

  • Številka dela: RFD77402
  • Naslov I2C: 0x4C
  • Povezava do podatkovnega lista

Naprava: ZIO OLED zaslon

  • Številka dela: SSD1306
  • Naslov: 0x3C
  • Povezava do podatkovnega lista

Če želite poiskati edinstven naslov za podrejene naprave, odprite priloženi podatkovni list. Za senzor razdalje je naslov naveden v rubriki Module Interface. Vsak senzor ali komponenta ima drugačen podatkovni list z različnimi informacijami. Včasih je težko najti to na podatkovnem listu za 30 strani (namig: odprite orodje za iskanje v pregledovalniku PDF in vnesite »naslov« ali »ID naprave« za hitro iskanje).

Zdaj, ko je za vsako napravo znan edinstven naslov, je za branje/ pisanje podatkov treba identificirati naslov notranjega registra (tudi iz podatkovnega lista). Če pogledate podatkovni list senzorja razdalje ZIO, naslov, da dobite razdaljo, ustreza 0x7FF.

V tem konkretnem primeru teh podatkov za uporabo senzorja res ne potrebujemo, kot to knjižnica že počne.

Naslednji korak, predajte kodo. ZUINO M UNO je združljiv z Arduino IDE, kar olajša nastavitev. Za ta projekt so potrebne naslednje knjižnice:

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

Wire.h je arduino knjižnica, dve knjižnici Adafruit se uporabljata za OLED, zadnja pa za senzor razdalje. Oglejte si to vadnico o tem, kako knjižnice *.zip povezati z Arduino IDE.

Če pogledamo kodo, moramo najprej deklarirati knjižnice in naslov za OLED.

V nastavitvi () se začne prenos in prikaže se besedilo za delovanje senzorja razdalje.

Zanka () meri razdaljo in OLED jo natisne.

Preverite primer izvorne kode na povezavi github.

Uporaba obeh plošč je v vseh pogledih precej enostavna. Na strani strojne opreme povezovalnik Qwiic olajša nastavitev strojne opreme in naredi veliko manj grdo, kot če bi imeli ploščico in mostične žice. Za vdelano programsko opremo pa uporaba ustreznih knjižnic za komunikacijo I2C, senzor in zaslon poenostavi kodo.

4. korak: Kakšna je največja dolžina kabla?

Največja dolžina je odvisna od uporovnih uporov, ki se uporabljajo za SDA in SCL, in kapacitivnosti kabla. Upori določajo tudi hitrost vodila, nižja je hitrost vodila, daljša je omejitev kabla. Kapaciteta kabla omejuje število naprav na vodilu in dolžino kabla. Tipične aplikacije omejujejo dolžino žice na 2,5-3,5 m (9-12ft), vendar se razlikujejo glede na uporabljeni kabel. Za referenco je največja dolžina v aplikacijah I2C z oklopljenimi kabli z zvitim parom 22 AWG približno 1 m (3 ft) pri 100 kbaund, 10 m (30ft) pri 10 kbaud.

Obstaja nekaj spletnih mest, kot sta mogami ali WolframAlpha, ki omogočajo oceno dolžine kabla.

5. korak: Kako priključiti več naprav na isto vodilo?

Kako priključiti več naprav na isto vodilo?
Kako priključiti več naprav na isto vodilo?
Kako priključiti več naprav na isto vodilo?
Kako priključiti več naprav na isto vodilo?

I2C je zaporedno vodilo, kjer so vse naprave povezane na vodilo v skupni rabi. S priključkom Qwiic lahko različne priključne plošče povežete eno za drugo s priključkom Qwiic. Vsaka plošča ima vsaj 2 priključka Qwiic.

Ustvarili smo različne plošče za reševanje nekaterih omejitev Qwiic in I2C. Vmesniška plošča Zio Qwiic se uporablja za povezovanje prek naprav Qwiic brez priključka Qwiic z uporabo moškega kabla za napajanje Qwiic na ploščo. Ta preprost trik ustvarja neomejene možnosti.

Za povezovanje različnih naprav v avtobusnem ali drevesnem omrežju smo pripravili Zio Qwiic Hub.

Nenazadnje Zio Qwiic MUX omogoča povezavo dveh ali več naprav z istim naslovom.

6. korak: Kaj je prekinitev I2C?

I2C je treba prekiniti, zato lahko prosta linija dodaja druge naprave. To je lahko nekoliko zmedeno, saj se termin za zaključek običajno uporablja za opis vlečnih uporov vodila (za zagotovitev privzetega stanja, v tem primeru za napajanje toka v vezje). Za plošče Zuino je vrednost upora 4,7 kΩ.

Če je zaključitev izpuščena, na vodilu sploh ne bo komunikacije- voditelj ne bi mogel ustvariti pogoja za zagon, zato sporočilo ne bo poslano podrejenim.

Za dodatne informacije in zmogljivosti Zio preverite najnovejše izdelke Zio. Cilj tega članka je razložiti osnove komunikacije I²C in kako deluje s priključkom Zio in Qwiic. Ostanite z nami za več posodobitev.

Priporočena: