Sadržaj:

Predstavljanje I2C sa Zio modulima i Qwiic -om: 6 koraka
Predstavljanje I2C sa Zio modulima i Qwiic -om: 6 koraka

Video: Predstavljanje I2C sa Zio modulima i Qwiic -om: 6 koraka

Video: Predstavljanje I2C sa Zio modulima i Qwiic -om: 6 koraka
Video: #18 Расширенные входы и выходы I2C | Внешний ПЛК Arduino 2024, Novembar
Anonim
Predstavljamo I2C sa Zio modulima i Qwiic -om
Predstavljamo I2C sa Zio modulima i Qwiic -om

Robin Sharma je rekao: ‘Mala dnevna poboljšanja s vremenom dovode do zapanjujućih rezultata’. Možda mislite: ‘Aw, još jedan I2C post?’. Pa, sigurno postoje hiljade informacija kada je u pitanju I2C. No, pratite nas, ovo nije samo još jedan članak o I2C. Qwiic Connect System i Zio periferne ploče za probijanje definitivno mijenjaju I²C igre!

Uvod

Ako gradite elektroničke projekte i radite sjajne stvari, možda ste shvatili da s povećanjem vaših projekata vaša ploča počinje izgledati kao zmijska jama (pomalo neuredno, zar ne?).

Osim toga, ako imate više projekata u tijeku, trošite hrpu vremena mijenjajući žice s projekta na projekt.

Mi smo tvorci, pa razumijemo borbu. Naš najnoviji doprinos OHS zajednici je modularni prototipni sistem nazvan ZIO, koji usvaja Qwiic sistem povezivanja. Qwiic je vrlo zgodan način za komunikaciju programabilne ploče sa senzorima, aktuatorima i razvodnim pločama putem I²C.

Korak 1: Šta je I²C i zašto nam se sviđa

Šta je I²C i zašto nam se sviđa
Šta je I²C i zašto nam se sviđa

I²C je najčešće korištena magistralna sabirnica, što znači da se različiti čipovi mogu spojiti na istu sabirnicu. Koristi se u mnogim aplikacijama između master i slave uređaja ili više master i slave uređaja. Od mikrokontrolera, preko pametnih telefona, do industrijskih aplikacija, posebno za video uređaje poput računarskih monitora. Može se lako implementirati u mnoge elektroničke dizajne (a odnedavno i lakše s Qwiic konektorom).

Kad bismo morali opisati I²C u dvije riječi, vjerojatno bismo koristili jednostavnost i fleksibilnost.

Jedna od najvećih prednosti I²C -a u odnosu na druge komunikacijske protokole je ta što je dvožilni interfejs što znači da su mu potrebne samo dvije signalne žice, SDA (Serijska linija podataka) i SCL (Serijska linija sata). Možda nije najbrži protokol, ali je dobro poznat po tome što je vrlo fleksibilan, omogućavajući fleksibilnost napona sabirnice.

Još jedna značajna karakteristika koja ovaj autobus čini privlačnim je zajedništvo između gospodara i roba. Više uređaja može se povezati na istu sabirnicu i nema potrebe za promjenom ožičenja između uređaja jer svaki uređaj ima jedinstvenu adresu (glavni odabire uređaj za komunikaciju).

Korak 2: Pogledajmo izbliza

Pogledajmo izbliza
Pogledajmo izbliza
Pogledajmo izbliza
Pogledajmo izbliza
Pogledajmo izbliza
Pogledajmo izbliza
Pogledajmo izbliza
Pogledajmo izbliza

Dakle, kako I²C funkcionira? Ranije smo spomenuli da je jedna od najznačajnijih karakteristika dopuštanje napona, što je moguće jer I²C koristi otvoreni kolektor (poznat i kao otvoreni odvod) za SDA i SCL komunikacijske linije.

SCL je signal sata, sinkronizira prijenos podataka između uređaja na sabirnici I²C i generira ga master. Dok SDA prenosi podatke za slanje ili primanje sa senzora ili drugih uređaja povezanih na sabirnicu.

Izlaz na signal je spojen na masu, što znači da je svaki uređaj postavljen kao nizak. Za oporavak signala na visoku vrijednost, obje linije su spojene na pozitivni opskrbni napon preko otpornika koji se mora prekinuti.

Sa ZIO modulima smo vas pokrili, sve naše ploče za razbijanje uključuju potrebni otpornik za podizanje.

I²C slijedi protokol poruke kako bi komunicirao s nadređenim uređajima. Dvije linije (SCL i SDA) zajedničke su za sve I²C podređene uređaje, svi robovi na sabirnici slušaju poruku.

Protokol za poruke slijedi format prikazan na priloženoj slici:

Na prvi pogled može izgledati komplicirano, ali imamo malo dobrih vijesti. Kada koristite Arduino IDE, postoji biblioteka Wire.h, koja pojednostavljuje sva podešavanja za protokol poruka I²C.

Uvjet za pokretanje generira se kada podatkovna linija (SDA) padne nisko dok je linija takta (SCL) još uvijek visoka. Prilikom postavljanja projekta na Arduino sučelju ne moramo se brinuti o stvaranju uvjeta pokretanja, on će se pokrenuti s određenom funkcijom (Wire.beginTransmission (slaveAddress)).

Osim toga, ova funkcija također započinje prijenos sa specifičnom adresom slave -a. Da bi odabrao slave za komunikaciju na zajedničkoj sabirnici, master nastavlja prosljeđivati adresu slave za komunikaciju. Nakon što je adresa postavljena da komunicira s odgovarajućim podređenim uređajem, slijedi de poruka s bitom za čitanje ili pisanje, ovisno o odabranom načinu rada.

Mehanizam daje odgovor s potvrdom (ACK ili NACK), a drugi slave uređaji na sabirnici umanjuju ostatak podataka sve dok poruka ne bude potpuna i sabirnica je besplatna. Nakon ACK -a, niz internog registra adresiranja slave -a nastavlja prenos.

Kada se podaci pošalju, poruka o prijenosu završava uvjetom zaustavljanja. Da biste prekinuli prijenos, podatkovna linija se mijenja u visoku, a linija sata ostaje visoka.

Korak 3: I²C i ZIO

I²C i ZIO
I²C i ZIO

Shvatili smo da bi bilo najbolje da sve gore navedene informacije iscrtam u razgovoru između gospodara (zvanog Zuino, naš mikro) i robova (poznatih i kao ZIO ploče za razbijanje).

U ovom osnovnom primjeru koristimo ZIO TOF senzor udaljenosti i ZIO OLED zaslon. TOF daje informacije o udaljenosti dok ZIO Oled prikazuje podatke. Komponente i uređaji koji se koriste:

  • ZUINO M UNO - Majstor
  • ZIO OLED ekran - Slave_01
  • ZIO TOF senzor udaljenosti - Slave_02
  • Qwiic kabel - Jednostavno povezivanje za I²C uređaje

Evo kako je jednostavno povezati ploče jedna s drugom pomoću Qwiic -a, bez potrebe za matičnom pločom, dodatnim kablovima ili ZUINO pinovima. Linija serijskog sata i podataka ZUINO -a automatski se povezuje s senzorom udaljenosti i OLED -om pomoću Qwiic konektora. Druga dva kabela su 3V3 i GND.

Prije svega, pogledajmo potrebne informacije, za komunikaciju gospodara sa robnim jedinicama potrebne su nam jedinstvene adrese.

Uređaj: ZIO senzor udaljenosti

  • Broj dijela: RFD77402
  • I2C Adresa: 0x4C
  • Veza sa podacima

Uređaj: ZIO OLED ekran

  • Broj dijela: SSD1306
  • Adresa: 0x3C
  • Veza sa podacima

Da biste pronašli jedinstvenu adresu za slave uređaje, otvorite priloženi podatkovni list. Za senzor udaljenosti adresa je navedena u odjeljku Module Interface. Svaki senzor ili komponenta ima drugačiji list s različitim podacima. Ponekad može biti izazov pronaći ga na podatkovnom listu od 30 stranica (savjet: otvorite alatku za pronalaženje u pregledniku PDF -a i upišite “adresa” ili “ID uređaja” za brzo pretraživanje).

Sada kada je jedinstvena adresa za svaki uređaj poznata, za čitanje/ pisanje podataka mora se identifikovati adresa internog registra (takođe iz lista sa podacima). Ako pogledate tehnički list ZIO senzora udaljenosti, adresa za dobijanje udaljenosti odgovara 0x7FF.

U ovom konkretnom slučaju zaista nam nisu potrebne ove informacije za korištenje senzora kao što biblioteka to već čini.

Sljedeći korak, predajte kôd. ZUINO M UNO kompatibilan je s Arduino IDE -om, što znatno olakšava postavljanje. Biblioteke potrebne za ovaj projekat su sljedeće:

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

Wire.h je arduino biblioteka, dvije Adafruit biblioteke se koriste za OLED, a posljednja se koristi za senzor udaljenosti. Provjerite ovaj vodič o tome kako povezati *.zip biblioteke s Arduino IDE.

Gledajući kôd, prvo se moraju deklarirati biblioteke, kao i adresa za OLED.

U postavci () prijenos počinje i prikazuje se tekst za funkciju senzora udaljenosti.

Petlja () vrši merenje udaljenosti i OLED ga štampa.

Provjerite primjer izvornog koda na github linku.

Korištenje obje razbijačke ploče prilično je jednostavno u svakom smislu. Što se hardvera tiče, Qwiic konektor čini postavljanje hardvera bržim i mnogo manje neurednim od posedovanja matične ploče i kratkospojnih žica. A za firmver, pomoću odgovarajućih biblioteka za I2C komunikaciju, senzor i zaslon čine kod mnogo jednostavnijim.

Korak 4: Kolika je maksimalna dužina kabla?

Maksimalna duljina ovisi o otpornicima koji se koriste za SDA i SCL i kapacitetu kabela. Otpornici također određuju brzinu sabirnice, što je manja brzina sabirnice, duže je ograničenje kabela. Kapacitet kabela ograničava broj uređaja na sabirnici, kao i dužinu kabela. Uobičajene aplikacije ograničavaju dužinu žice na 2,5-3,5 m (9-12 stopa), ali postoje varijacije ovisno o korištenom kabelu. Za referencu, maksimalna dužina u I2C aplikacijama koje koriste oklopljene kablove od 22 AWG upletene parice je oko 1 m (3 ft) na 100 kbaund, 10 m (30ft) na 10 kbaud.

Postoje neke web lokacije poput mogamija ili WolframAlpha koje omogućuju procjenu duljine kabela.

Korak 5: Kako spojiti više uređaja na istu sabirnicu?

Kako spojiti više uređaja na istu sabirnicu?
Kako spojiti više uređaja na istu sabirnicu?
Kako spojiti više uređaja na istu sabirnicu?
Kako spojiti više uređaja na istu sabirnicu?

I2C je serijska sabirnica, gdje su svi uređaji povezani na zajedničku sabirnicu. S Qwiic konektorom različite ploče za razbijanje mogu se povezati jedna za drugom pomoću Qwiic konektora. Svaka ploča ima najmanje 2 Qwiic konektora.

Stvorili smo različite ploče za rješavanje nekih Qwiic i I2C ograničenja. Zio Qwiic adapterska ploča koristi se za povezivanje putem Qwiic uređaja bez Qwiic konektora, pomoću Qwiic -a za matičnu ploču muškog kabela zaglavlja. Ovaj jednostavan trik stvara neograničene mogućnosti.

Za povezivanje različitih uređaja na sabirnici ili mreži stabala osmislili smo Zio Qwiic Hub.

Na kraju, ali ne i najmanje važno, Zio Qwiic MUX omogućava povezivanje dva ili više uređaja koji koriste istu adresu.

Korak 6: Šta je prekid I2C?

I2C je potrebno prekinuti, pa je linija slobodna za dodavanje drugih uređaja. To može biti pomalo zbunjujuće, jer se termin završetka obično koristi za opisivanje otpornika za sabiranje sabirnice (kako bi se osiguralo zadano stanje, u ovom slučaju za napajanje struje krugu). Za Zuino ploče vrijednost otpornika je 4,7 kΩ.

Ako je završetak izostavljen, uopće neće biti komunikacije na sabirnici- master neće moći generirati uvjet pokretanja, pa se poruka neće prenijeti na slave.

Za dodatne informacije i Zio mogućnosti provjerite najnovije Zio proizvode. Cilj ovog članka je objasniti osnove komunikacije I²C i kako funkcionira sa Zio i Qwiic konektorom. Pratite nas za više ažuriranja.

Preporučuje se: