Sisukord:

Tutvustame I2C koos Zio moodulite ja Qwiiciga: 6 sammu
Tutvustame I2C koos Zio moodulite ja Qwiiciga: 6 sammu

Video: Tutvustame I2C koos Zio moodulite ja Qwiiciga: 6 sammu

Video: Tutvustame I2C koos Zio moodulite ja Qwiiciga: 6 sammu
Video: Как использовать SSD1306 128x32 OLED-дисплей I2C с кодом Arduino 2024, November
Anonim
Tutvustame I2C koos Zio moodulite ja Qwiiciga
Tutvustame I2C koos Zio moodulite ja Qwiiciga

Robin Sharma ütles: "Väikesed igapäevased parandused aja jooksul toovad kaasa hämmastavaid tulemusi." Võib -olla mõtlete: "Oh, veel üks I2C postitus?". I2C kohta on kindlasti tuhandeid andmeid. Kuid olge lainel, see pole lihtsalt järjekordne I2C artikkel. Qwiic Connect System ja Zio välisseadmed on kindlasti I²C mängumuutjad!

Sissejuhatus

Kui ehitate elektroonilisi projekte ja teete ägedaid asju, oleksite võinud aru saada, et kui teie projektid suurenevad, hakkab teie leivaplaat välja nägema nagu maduauk (natuke segane, eks?).

Lisaks, kui teil on käsil mitu projekti, kulutate palju aega projektide vahel juhtmete vahetamiseks.

Oleme tegijad, seega mõistame võitlust. Meie viimane panus töötervishoiu ja tööohutuse kogukonda on modulaarne prototüüpimissüsteem nimega ZIO, mis võtab kasutusele Qwiic ühendussüsteemi. Qwiic on väga mugav viis edastada programmeeritav trükkplaat anduritele, täiturmehhanismidele ja kaitselülititele I²C kaudu.

Samm: mis on I²C ja miks see meile meeldib

Mis on I²C ja miks see meile meeldib
Mis on I²C ja miks see meile meeldib

I²C on kõige laialdasemalt kasutatav multimeisterbuss, mis tähendab, et samale siinile saab ühendada erinevaid kiipe. Seda kasutatakse paljudes rakendustes ülem- ja alamseadme või mitme ülem- ja alamseadme vahel. Alates mikrokontrolleritest, nutitelefonidest kuni tööstusrakendusteni, eriti videoseadmete, näiteks arvutimonitoride jaoks. Seda saab hõlpsasti rakendada paljudes elektroonilistes konstruktsioonides (ja hiljuti veelgi lihtsamaks Qwiic -pistiku abil).

Kui peaksime I²C -d kirjeldama kahe sõnaga, kasutaksime ilmselt lihtsust ja paindlikkust.

Üks I²C suurimaid eeliseid teiste kommunikatsiooniprotokollide ees on see, et see on kahejuhtmeline liides, mis tähendab, et see vajab ainult kahte signaalijuhet, SDA (Serial Data Line) ja SCL (Serial Clock Line). See ei pruugi olla kiireim protokoll, kuid see on hästi tuntud kui väga paindlik, võimaldades siinipinge paindlikkust.

Teine oluline omadus, mis muudab selle bussi atraktiivseks, on osadus peremehe ja orja vahel. Sama bussiga saab ühendada mitu seadet ja seadmete vahelist juhtmestikku pole vaja muuta, kuna igal seadmel on kordumatu aadress (kapten valib suhtlemiseks seadme).

Samm: vaatame lähemalt

Vaatame lähemalt
Vaatame lähemalt
Vaatame lähemalt
Vaatame lähemalt
Vaatame lähemalt
Vaatame lähemalt
Vaatame lähemalt
Vaatame lähemalt

Niisiis, kuidas I²C töötab? Varem mainisime, et üks olulisemaid omadusi on pingevaru, see on võimalik, kuna I²C kasutab avatud kollektorit (tuntud ka kui avatud äravool) nii SDA- kui ka SCL -sideühenduste jaoks.

SCL on kella signaal, sünkroonib andmeedastust I²C siinil olevate seadmete vahel ja selle genereerib kapten. Kuigi SDA kannab andmeid anduritele või muudele siiniga ühendatud seadmetele saatmiseks või vastuvõtmiseks.

Signaali väljund on ühendatud maapinnaga, mis tähendab, et iga seade on määratud madalaks. Signaali kõrgeks taastamiseks ühendatakse mõlemad liinid lõpetatava tõmbetakisti kaudu positiivse toitepingega.

Tänu ZIO moodulitele oleme teid katnud, kõik meie purunemisplaadid sisaldavad vajalikku tõmbe takistit.

I²C järgib sõnumiprotokolli, et suhelda masteriga alamseadmetega. Kaks rida (SCL ja SDA) on ühised kõikidel I²C alamatel, kõik bussis olevad orjad kuulavad sõnumit.

Sõnumiprotokoll järgib lisatud pildil näidatud vormingut:

Esmapilgul võib see tunduda keeruline, kuid meil on natuke häid uudiseid. Arduino IDE kasutamisel on raamatukogu Wire.h, et lihtsustada I²C sõnumiprotokolli seadistamist.

Starditingimus luuakse, kui andmeside (SDA) langeb madalale, samal ajal kui kellaliin (SCL) on endiselt kõrge. Projekti seadistamisel Arduino liidesel ei pea me tegelikult muretsema käivitustingimuse genereerimise pärast, see käivitatakse konkreetse funktsiooniga (Wire.beginTransmission (slaveAddress)).

Lisaks käivitab see funktsioon ka edastamise konkreetse alam -aadressiga. Jagatud bussis suhtlemiseks orja valimiseks jätkab kapten aadressi edastamiseks orjale. Kui aadress on seatud suhtlema vastava orjaga, järgneb teade kas lugemis- või kirjutusbittiga, sõltuvalt valitud režiimist.

Salv annab vastuse kinnitusega (ACK või NACK) ja teised bussis olevad alamseadmed soodustavad ülejäänud andmeid, kuni teade on täielik ja buss on vaba. Pärast ACK -d jätkab saatmist orjade sisemise aadressiregistri jada.

Andmete saatmisel lõpeb ülekandesõnum stopp -tingimusega. Edastamise lõpetamiseks muutub andmeliin kõrgeks ja kellajoon jääb kõrgeks.

3. samm: I²C ja ZIO

I²C ja ZIO
I²C ja ZIO

Me arvasime, et mul oleks kõige parem koostada kogu ülaltoodud teave peremehe (teise nimega Zuino, meie mikro) ja orjade (teise nimega ZIO läbilöögiplaadid) vahel.

Selles põhinäites kasutame ZIO TOF kaugusandurit ja ZIO OLED -ekraani. TOF annab kaugusteabe, samal ajal kui ZIO Oled kuvab andmed. Kasutatud komponendid ja seadmed:

  • ZUINO M UNO - Meister
  • ZIO OLED -ekraan - Slave_01
  • ZIO TOF kaugusandur - ori_02
  • Qwiic -kaabel - lihtne ühendamine I²C seadmete jaoks

Siit saate teada, kui lihtne on plaate üksteisega Qwiici abil ühendada, leivaplaati pole vaja, täiendavad kaablid või ZUINO tihvtid. ZUINO jadakella ja andmeside liin ühendatakse Qwiic -pistiku abil automaatselt kaugusanduri ja OLED -iga. Kaks muud kaablit on 3V3 ja GND.

Kõigepealt vaatame vajalikku teavet, et suhelda peremehega alamatega, mida meil on vaja unikaalsete aadresside teadmiseks.

Seade: ZIO kaugusandur

  • Osa number: RFD77402
  • I2C aadress: 0x4C
  • Andmelehe link

Seade: ZIO OLED ekraan

  • Osa number: SSD1306
  • Aadress: 0x3C
  • Andmelehe link

Alamseadmete kordumatu aadressi leidmiseks avage kaasasolev andmeleht. Kaugusanduri aadress on esitatud mooduli liidese jaotises. Igal anduril või komponendil on erinev andmeleht, mis sisaldab erinevat teavet. Mõnikord võib selle leidmine 30 -leheküljeliselt andmelehelt olla keeruline (vihje: avage PDF -vaatajas otsingutööriist ja tippige kiireks otsimiseks „aadress” või „seadme ID”).

Nüüd, kui iga seadme kordumatu aadress on teada, tuleb andmete lugemiseks/ kirjutamiseks tuvastada sisemine registriaadress (ka andmelehelt). Vaadates ZIO kaugusanduri andmelehte, vastab kauguse saamiseks aadress 0x7FF.

Sel konkreetsel juhul me tõesti ei vaja seda teavet anduri kasutamiseks, nagu raamatukogu seda juba teeb.

Järgmine samm, andke kood kätte. ZUINO M UNO ühildub Arduino IDE -ga, mis muudab seadistamise palju lihtsamaks. Selle projekti jaoks vajalikud raamatukogud on järgmised:

  • Traat.h
  • Adafruit_GFX.h
  • Adafruit_SSD1306.h
  • SparkFun_RFD77402_Arduino_Library.h

Wire.h on arduino raamatukogu, kahte Adafruit raamatukogu kasutatakse OLED -i jaoks ja viimast kasutatakse kaugussensori jaoks. Vaadake seda õpetust, kuidas siduda *.zip raamatukogud Arduino IDE -ga.

Koodi vaadates tuleb esmalt deklareerida raamatukogud ja OLED -i aadress.

Seadistuses () algab edastamine ja kuvatakse tekst kaugusanduri funktsionaalsuse kohta.

Silmus () mõõdab kaugust ja OLED prindib selle.

Kontrollige lähtekoodi näidet githubi lingilt.

Mõlema purunemisplaadi kasutamine on igas mõttes üsna lihtne. Riistvara poolel muudab Qwiic -pistik riistvara seadistamise kiiremaks ja palju vähem segaseks kui leivaplaadi ja hüppajajuhtmete olemasolu. Püsivara puhul muudavad koodi palju lihtsamaks, kasutades I2C -side jaoks vastavaid teeke, andurit ja ekraani.

Samm: milline on kaabli maksimaalne pikkus?

Maksimaalne pikkus sõltub SDA ja SCL jaoks kasutatavatest tõmbetakistitest ja kaabli mahtuvusest. Takistid määravad ka bussi kiiruse, mida madalam on bussi kiirus, seda pikem on kaabli piir. Kaabli mahtuvus piirab siinil olevate seadmete arvu ja kaabli pikkust. Tüüpilised rakendused piiravad traadi pikkust 2,5-3,5 m-ni (9-12 jalga), kuid sõltuvalt kasutatavast kaablist võib see varieeruda. Võrdluseks: maksimaalne pikkus I2C rakendustes, kasutades varjestatud 22 AWG keerdpaarkaableid, on umbes 1 m (3 jalga) 100 kbaundi juures, 10 m (30 jalga) 10 kbaud juures.

Mõned saidid, nagu mogami või WolframAlpha, võimaldavad hinnata kaabli pikkust.

Samm: kuidas ühendada mitu seadet sama bussiga?

Kuidas ühendada mitu seadet sama bussiga?
Kuidas ühendada mitu seadet sama bussiga?
Kuidas ühendada mitu seadet sama bussiga?
Kuidas ühendada mitu seadet sama bussiga?

I2C on jadasiin, kus kõik seadmed on ühendatud jagatud siiniga. Qwiic -pistiku abil saab erinevaid katkestusplaate Qwiic -pistiku abil üksteise järel ühendada. Igal plaadil on vähemalt 2 Qwiic -pistikut.

Mõne Qwiici ja I2C piirangu lahendamiseks lõime erinevad tahvlid. Zio Qwiic adapterplaati kasutatakse Qwiic -seadmete ühendamiseks ilma Qwiic -pistikuta, kasutades Qwiic -i leivaplaadi isase kaabliga. See lihtne trikk loob piiramatud võimalused.

Erinevate seadmete ühendamiseks bussi- või puuvõrku pakkusime välja Zio Qwiic Hub.

Lõpuks võimaldab Zio Qwiic MUX ühendada kahe või enama seadmega sama aadressi.

Samm: mis on I2C lõpetamine?

I2C on vaja lõpetada, nii et liinil on vabadus teiste seadmete lisamiseks. See võib olla pisut segane, kuna lõpetamisterminit kasutatakse tavaliselt siinitõmbe takistite kirjeldamiseks (vaikeseisundi andmiseks, antud juhul vooluahela varustamiseks). Zuino plaatide puhul on takisti väärtus 4,7 kΩ.

Kui lõpetamine vahele jäetakse, ei toimu siinil üldse sidepidamist- kapten ei saaks käivitustingimust genereerida, nii et sõnumit ei edastata orjadele.

Lisateavet ja Zio võimalusi vaadake Zio uusimatest toodetest. Selle artikli eesmärk on selgitada I²C kommunikatsiooni põhitõdesid ja seda, kuidas see Zio ja Qwiic -pistikuga töötab. Oodake rohkem värskendusi.

Soovitan: