Sadržaj:
- Korak 1: Što je I²C i zašto nam se sviđa
- Korak 2: Pogledajmo izbliza
- Korak 3: I²C i ZIO
- Korak 4: Kolika je najveća duljina kabela?
- Korak 5: Kako spojiti više uređaja na istu sabirnicu?
- Korak 6: Što je prekid I2C -a?
Video: Predstavljanje I2C -a sa Zio modulima i Qwiic -om: 6 koraka
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:35
Robin Sharma rekao je: ‘Mala dnevna poboljšanja s vremenom dovode do zapanjujućih rezultata’. Možda mislite: ‘Aw, još jedan I2C post?’. Pa, zasigurno postoje tisuće informacija kada je u pitanju I2C. No, pratite nas, ovo nije samo još jedan članak o I2C -u. 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 poput zmijske jame (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 sustav nazvan ZIO, koji prihvaća Qwiic sustav povezivanja. Qwiic je vrlo prikladan način za komuniciranje programabilne ploče sa senzorima, aktuatorima i razvodnim pločama putem I²C.
Korak 1: Što 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 ili više master i slave uređaja. Od mikrokontrolera, do pametnih telefona, do industrijskih aplikacija, posebno za video uređaje poput računalnih monitora. Lako se može 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 se poslužili jednostavnošću i fleksibilnošću.
Jedna od najvećih prednosti I²C -a u odnosu na druge komunikacijske protokole je to što je dvožilno sučelje što znači da su mu potrebne samo dvije signalne žice, SDA (serijska podatkovna linija) i SCL (serijska linija sata). Možda to nije najbrži protokol, ali je dobro poznat po tome što je vrlo fleksibilan i omogućuje 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 uređaj odabire uređaj za komunikaciju).
Korak 2: Pogledajmo izbliza
Dakle, kako I²C radi? Ranije smo spomenuli da je jedna od najznačajnijih značajki dopuštanje napona, što je moguće jer I²C koristi otvoreni kolektor (također poznat 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 glavni. Dok SDA prenosi podatke za slanje ili primanje sa senzora ili drugih uređaja spojenih na sabirnicu.
Izlaz na signal spojen je na masu, što znači da je svaki uređaj postavljen kao nizak. Kako bi se signal oporavio na visoku vrijednost, obje su linije spojene na pozitivni opskrbni napon preko otpornika za povlačenje koji treba 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 za komunikaciju glavnog uređaja s podređ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 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 knjižnica Wire.h, koja pojednostavljuje sve postavke za protokol poruka I²C.
Uvjet pokretanja 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 pokreće prijenos s određenom adresom slave -a. Kako bi odabrao slave za komunikaciju na zajedničkoj sabirnici, master nastavlja prosljeđivati adresu slave za komunikaciju. Nakon što je adresa postavljena za komunikaciju 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 internih registara adresiranja slave -a nastavlja prijenos.
Kada se podaci pošalju, poruka prijenosa završava uvjetom zaustavljanja. Za prekid prijenosa podatkovna linija mijenja se u visoku, a linija sata ostaje visoka.
Korak 3: I²C i ZIO
Shvatili smo da bi bilo najbolje da sve gore navedene podatke iscrtam u razgovoru između gospodara (zvanog Zuino, naš mikro) i robova (poznatih kao ZIO ploče za probijanje).
U ovom osnovnom primjeru koristimo ZIO TOF senzor udaljenosti i ZIO OLED zaslon. TOF daje podatke o udaljenosti dok ZIO Oled prikazuje podatke. Korištene komponente i uređaji:
- ZUINO M UNO - Majstor
- ZIO OLED zaslon - 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, s dodatnim kablovima ili ZUINO pinovima. Linija serijskog sata i podataka ZUINO -a automatski se povezuje s senzorom udaljenosti i OLED -om pomoću konektora Qwiic. Druga dva kabela su 3V3 i GND.
Prije svega, pogledajmo potrebne podatke, da bismo za komunikaciju s nadređenim robovima trebali znati jedinstvene adrese.
Uređaj: ZIO senzor udaljenosti
- Broj dijela: RFD77402
- I2C Adresa: 0x4C
- Veza na podatkovnu tablicu
Uređaj: ZIO OLED zaslon
- Broj dijela: SSD1306
- Adresa: 0x3C
- Veza na podatkovnu tablicu
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 podatkovni list s različitim podacima. Ponekad može biti izazovno pronaći ga na podatkovnom listu od 30 stranica (savjet: otvorite alat 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 identificirati adresa unutarnjeg registra (također iz podatkovne tablice). Ako pogledate podatkovni list ZIO senzora udaljenosti, adresa za dobivanje udaljenosti odgovara 0x7FF.
U ovom konkretnom slučaju zaista nam nisu potrebni ti podaci za korištenje senzora kao što to knjižnica već čini.
Sljedeći korak, predajte kôd. ZUINO M UNO kompatibilan je s Arduino IDE -om, što znatno olakšava postavljanje. Knjižnice potrebne za ovaj projekt su sljedeće:
- Žica.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h
- SparkFun_RFD77402_Arduino_Library.h
Wire.h je arduino knjižnica, dvije Adafruit knjižnice koriste se za OLED, a posljednja se koristi za senzor udaljenosti. Provjerite ovaj vodič o tome kako povezati *.zip knjižnice s Arduino IDE -om.
Gledajući kod, prvo se moraju deklarirati knjižnice kao i adresa za OLED.
U postavci () počinje prijenos i prikazuje se tekst za funkciju senzora udaljenosti.
Petlja () vrši mjerenje udaljenosti i OLED ispisuje.
Provjerite primjer izvornog koda na github poveznici.
Korištenje obje ploče za razbijanje prilično je jednostavno u svakom smislu. Što se hardvera tiče, Qwiic konektor čini postavljanje hardvera bržim i mnogo manje neurednim nego što ima matičnu ploču i kratkospojne žice. A za firmver, pomoću odgovarajućih knjižnica za I2C komunikaciju, senzor i zaslon čine kod mnogo jednostavnijim.
Korak 4: Kolika je najveća duljina kabela?
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, to je granica kabela dulja. Kapacitet kabela ograničava broj uređaja na sabirnici, kao i duljinu kabela. Uobičajene primjene ograničavaju duljinu žice na 2,5-3,5 m (9-12 stopa), ali postoje razlike ovisno o korištenom kabelu. Za referencu, maksimalna duljina u I2C aplikacijama koje koriste oklopljene kabele od 22 AWG upletene parice iznosi oko 1 m (3 ft) na 100 kbaund, 10 m (30ft) na 10 kbaud.
Postoje neka web mjesta poput mogamija ili WolframAlpha koja omogućuju procjenu duljine kabela.
Korak 5: 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 ograničenja Qwiic -a i I2C -a. Zio Qwiic adapterska ploča koristi se za povezivanje putem Qwiic uređaja bez Qwiic konektora, pomoću Qwiic -a za muški kabel 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ćuje povezivanje dva ili više uređaja koji koriste istu adresu.
Korak 6: Što je prekid I2C -a?
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 na sabirnicu (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- glavni ne bi mogao generirati uvjete 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 ona radi sa Zio i Qwiic konektorom. Pratite nas za više ažuriranja.
Preporučeni:
RSSI do udaljenosti s RF modulima (Xbees): 4 koraka
RSSI do udaljenosti s RF modulima (Xbees): Xbees su mali radiofrekvencijski moduli koji mogu biti korisni za slanje informacija naprijed -natrag i neke druge specifičnije upotrebe. Za ovaj projekt koristim ih za dobivanje vrijednosti pokazatelja primljene jačine signala (RSSI) kako bih procijenio dis
Samostalno trostruko (3x 250W) laboratorijsko napajanje s DPS5005 i USB modulima: 7 koraka
Samostalno trostruko (3x 250W) laboratorijsko napajanje s DPS5005 i USB modulima: Lako se izrađuje i jeftino vrhunsko laboratorijsko napajanje s 3x 250W (50Vdc & 5A svaka ploča). Možete povezati svaki DPS5005 s računalom za zasebno upravljanje panelima. Za izgradnju ovog Powersuplyja bit će potrebno 4 do 8 sati, vrijeme ovisi
HiFive1 web poslužitelj s WiFi modulima ESP32 / ESP8266 Vodič: 5 koraka
HiFive1 web poslužitelj s WiFi modulima ESP32 / ESP8266 Vodič: HiFive1 je prva ploča kompatibilna s Arduino RISC-V izgrađena sa FE310 CPU-om iz SiFive-a. Ploča je oko 20 puta brža od Arduino UNO -a, ali UNO -ovoj ploči HiFive1 nedostaje bežično povezivanje. Srećom, postoji nekoliko jeftinih
Robotska ruka sa Zio modulima Dio 3: 4 koraka
Robotska ruka sa Zio modulima 3. dio: Ovaj blog je dio Zio Robotics serije.Uvod U naš prethodni blog objavili smo 1. i 2. dio uputstva o tome kako upravljati robotskom rukom pomoću Zio modula. Dio 1 uglavnom je koncentriran na automatsko upravljanje kandžom vašeg robotskog kraka
Robotska ruka sa Zio modulima 2. dio: 11 koraka
Robotska ruka sa Zio modulima 2. dio: U današnjem vodiču koristit ćemo sva 4 servo servera i PS2 bežični kontroler za upravljanje robotskom rukom. Ovaj blog je dio Zio Robotics serije. Uvod U naš prethodni blog objavili smo 1. dio vodič o upravljanju robotskim ar