Kazalo:
- 1. korak: Zahteve po strojni opremi
- Korak: Zajete teme
- 3. korak: Osnove vodila I2C
- Korak: TCA9548A I2C Multiplekser modul
- 5. korak:
- 6. korak: Kako poveljnik pošilja in sprejema podatke
- 7. korak: Koda
- 8. korak: I2C skener
- 9. korak: Ožičenje in predstavitev
- 10. korak: prednosti in slabosti
- 11. korak: Hvala
Video: TCA9548A I2C Multiplekser modul - z Arduinom in NodeMCU: 11 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:06
Ste kdaj prišli v situacijo, ko ste morali na svoj Arduino priključiti dva, tri ali več senzorjev I2C, samo da bi ugotovili, da imajo tipala fiksni ali enak naslov I2C. Poleg tega ne morete imeti dveh naprav z istim naslovom na istih zatičih SDA/SCL!
Kakšne so torej vaše možnosti? Vse jih postavite na multipleksor TCA9548A 1 do 8 I2C, da se vsi pogovarjajo na istem vodilu! TCA9548A Breakout omogoča komunikacijo z več napravami I2C z istim naslovom, kar olajša vmesnik z njimi.
1. korak: Zahteve po strojni opremi
Za to vadnico potrebujemo:
- Ogledna plošča
- TCA9548A I2C Multiplekser
- Arduino Uno/Nano, kar je pri roki
- NodeMCU
- Nekaj zaslonov OLED 0,91 in 0,96 I2C
- Mostični kabli in
- USB kabel za nalaganje kode
Korak: Zajete teme
Razpravo bomo začeli z razumevanjem osnov tehnologije I2C
Nato se bomo naučili o multipleksatorju TCA9548A in o tem, kako glavni in podrejeni pošiljata in sprejemata podatke s tehnologijo I2C. Nato bomo preverili, kako lahko programiramo in uporabljamo multiplekser v našem projektu z uporabo Arduina in NodeMCU Nato vam bom pokazal hiter predstavitev z 8 zasloni I2C OLED, na koncu pa bomo vadnico zaključili z razpravo o prednostih in slabostih multipleksorja TCA9548A
3. korak: Osnove vodila I2C
Vmesno integrirano vezje z izrazitim I-kvadrat-C (I²C) ali I2C je tehnologija dvožičnega vodila (pravzaprav 4 žice, ker potrebujete tudi VCC in ozemljitev), ki se uporablja za komunikacijo med več procesorji in senzorji.
Dve žici sta:
* SDA - Serijski podatki (podatkovna vrstica) in
* SCL - Serijska ura (vrstica ure)
Ne pozabite, da sta ti dve liniji "sinhroni" "dvosmerni" "odprti odtok" in "vlečeni navzgor z upori".
Tehnologijo vodila I2C je prvotno oblikoval Philips Semiconductors v zgodnjih 80. letih, da bi omogočila enostavno komunikacijo med komponentami, ki so na istem vezju.
Z I2C lahko povežete več podrejenih naprav z enim samim nadrejenim (na primer SPI) ali pa imate več nadrejenih, ki nadzorujejo enega ali več podrejenih. Tako gospodarji kot podrejeni lahko prenašajo in sprejemajo podatke. Tako je lahko naprava na vodilu I2C v enem od teh štirih stanj:
* Glavni prenos - glavno vozlišče pošilja podatke podrejenemu* Glavno sprejemanje - glavno vozlišče sprejema podatke od podrejenega
* Slave prenos - pomožno vozlišče pošilja podatke glavnemu
* Slave sprejem - pomožno vozlišče sprejema podatke od glavnega
I2C je "protokol za serijsko komunikacijo" na kratke razdalje, zato se podatki prenašajo "bit-by-bit" po eni žici ali liniji SDA. Izhod bitov je sinhroniziran z vzorčenjem bitov z urnim signalom, ki se "deli" med glavnim in podrejenim. Signal ure vedno nadzira glavni. Poveljnik generira uro in začne komunikacijo s podrejenimi.
Torej, če povzamem>
Število uporabljenih žic: 2
Sinhrono ali asinhrono: Sinhrono
Serijski ali vzporedni: serijski
Signal ure nadzira: Glavno vozlišče
Uporabljene napetosti: +5 V ali +3.3 V
Največje število mojstrov: neomejeno
Največje število podrejenih: 1008
Največja hitrost: standardni način = 100kbps
Hitri način = 400kbps
Način visoke hitrosti = 3,4 Mbps
Ultra hiter način = 5 Mbps
Korak: TCA9548A I2C Multiplekser modul
TCA9548A je osemkanalni (dvosmerni) multipleksor I2C, ki omogoča upravljanje osmih ločenih naprav I2C z enim gostiteljskim vodilom I2C. Samo priključiti senzorje I2C na multipleksna vodila SCn / SDn. Če na primer v aplikaciji potrebujete osem enakih zaslonov OLED, lahko na vsakega od teh kanalov povežete enega od vsakega zaslona: 0-7.
Multiplekser se poveže z linijami VIN, GND, SDA in SCL mikrokrmilnika. Odklopna plošča sprejema VIN od 1.65v do 5.5v. Tako vhodni vodi SDA kot SCL sta povezani z VCC prek 10K vlečnega upora (velikost vlečnega upora je določena s količino kapacitivnosti na vodilih I2C). Multiplekser podpira tako običajne (100 kHz) kot hitre (400 kHz) protokole I2C. Vsi V/I zatiči TCA9548A so 5-voltni in jih je mogoče uporabiti tudi za prevajanje iz visokih v nizke ali nizke v visoke napetosti.
Priporočljivo je, da vlečne upore postavite na vse kanale TCA9548A, tudi če so napetosti enake. Razlog za to je notranje stikalo NMOS. Ne prenaša visoko napetosti, po drugi strani pa zelo dobro prenaša nizke napetosti. TCA9548A se lahko uporablja tudi za prevajanje napetosti, kar omogoča uporabo različnih napetosti vodila na vsakem paru SCn/SDn, tako da lahko deli 1,8-V, 2,5-V ali 3,3-V komunicirajo s 5-V deli. To dosežemo z uporabo zunanjih vlečnih uporov, da potegnemo vodilo do želene napetosti za glavni in vsak podrejeni kanal.
Če mikrokrmilnik zazna konflikt vodila ali drugo nepravilno delovanje, lahko TCA9548A ponastavite tako, da potrdite nizko vrednost na pin RESET.
5. korak:
TCA9548 omogoča, da en sam mikrokrmilnik komunicira z največ '64 senzorji', vse z istim ali drugačnim naslovom I2C, tako da vsakemu pod-vodilu senzorja dodeli edinstven kanal.
Ko govorimo o pošiljanju podatkov po dveh žicah na več naprav, potrebujemo način, kako jih nasloviti. Enako kot poštar, ki prihaja na eno samo cesto in odlaga pakete pošte v različne hiše, ker imajo na njih napisane različne naslove.
Za nadzor 64 istih naslovljenih delov I2C bi lahko imeli največ 8 teh multiplektorjev, povezanih skupaj na naslove 0x70-0x77. S priključitvijo treh naslovnih bitov A0, A1 in A2 na VIN lahko dobite različne kombinacije naslovov. Tako izgleda bajt naslova TCA9548A. Prvih 7 bitov skupaj tvori podrejeni naslov. Zadnji bit naslova pomožnika določa operacijo (branje ali pisanje), ki jo je treba izvesti. Ko je visoko (1), je izbrano branje, nizko (0) pa izbere operacijo pisanja.
6. korak: Kako poveljnik pošilja in sprejema podatke
Spodaj je splošen postopek za glavni dostop do podrejene naprave:
1. Če želi poveljnik poslati podatke podrejenemu (NAPIŠE):
-Glavni oddajnik pošlje pogoj START, ki mu sledijo naslovi pomožnega sprejemnika in R/W nastavljeno na 0
-Glavni oddajnik pošlje podatke v "8-bitnih upravljalnih registrih" podrejenemu sprejemniku, ko podrejeni potrdil, da je pripravljen
-Glavni oddajnik prekine prenos s pogojem STOP
2. Če hoče master sprejeti ali prebrati podatke od podrejenega (READS):
-Glavni sprejemnik pošlje pogoj START, ki mu sledijo naslovi podrejenega sprejemnika in R/W nastavljeno na 1
-Glavni sprejemnik pošlje zahtevani register v branje pomožnemu oddajniku
-Glavni sprejemnik sprejema podatke od podrejenega oddajnika
- Ko so vsi bajti prejeti, Master pošlje signalizacijo NACK podrejenemu, da ustavi komunikacijo in sprosti vodilo
- Glavni sprejemnik prekine prenos s pogojem STOP
Vodilo se šteje za nedejavno, če sta liniji SDA in SCL po stanju STOP visoki.
7. korak: Koda
Zdaj, koda omogoča, da začnemo z vključitvijo knjižnice "Wire" in z definiranjem naslova multiplekserjev.
#include "Wire.h"
#vključi "U8glib.h"
#define MUX_Address 0x70 // TCA9548A Naslov kodirnikov
Nato moramo izbrati vrata, na katera želimo komunicirati, in s to funkcijo poslati podatke na njih:
void selectI2CChannels (uint8_t i) {
če (i> 7) vrne;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Nato bomo zaslon v razdelku za nastavitev inicializirali tako, da pokličemo "u8g.begin ();" za vsak zaslon, priključen na MUX "tcaselect (i);"
Ko smo enkrat inicializirani, lahko naredimo, kar hočemo, samo s klicem funkcije "tcaselect (i);" kjer je "i" vrednost multipleksiranega vodila in nato ustrezno pošlje podatke in uro.
8. korak: I2C skener
Če niste prepričani o naslovu naprave vašega I2C ščita, zaženite priloženo kodo 'I2C Scanner', da poiščete šestnajstiški naslov vaše naprave. Ko je naložena v Arduino, bo skica skenirala omrežje I2C in prikazala naslove, ki se odzivajo.
9. korak: Ožičenje in predstavitev
Ožičenje:
Začnimo s priključitvijo multiplekserja na ploščo NodeMCU. Poveži:
VIN do 5V (ali 3.3V)
GND na tla
SDA do D2 in
Zatiči SCL do D1
Za ploščo Arduino povežite:
VIN do 5V (ali 3.3V)
GND na tla
SDA do A4 in
Zatiči SCL na A5
Ko je MUX priključen na mikrokrmilnik, morate senzorje priključiti na pare SCn / SDn.
Zdaj pa si oglejmo to hitro predstavitev, v kateri sem na multiplekser TCA9548A priključil 8 zaslonov OLED. Ker ti zasloni uporabljajo komunikacijo I2C, komunicirajo z Arduinom z uporabo samo 2 zatičev.
10. korak: prednosti in slabosti
PREDNOSTI
* Za komunikacijo sta potrebni le dve vodili (žice)
* Med vsemi komponentami obstajajo preprosti odnosi master/slave
* Ni strogih zahtev po hitrosti prenosa podatkov, kot na primer pri RS232, glavni ustvari uro vodila
* Strojna oprema je manj zapletena kot UART
* Podpira več gospodarjev in več podrejenih
* ACK/NACK bit potrjuje, da je vsak okvir uspešno prenesen
* I2C je „pravo vodilo z več glavnimi vodili“, ki zagotavlja arbitražo in odkrivanje trkov
* Vsaka naprava, priključena na vodilo, je programsko naslovljiva z edinstvenim naslovom
* Večina naprav I2C lahko komunicira pri 100kHz ali 400kHz
* I²C je primeren za zunanje naprave, kjer sta preprostost in nizki proizvodni stroški pomembnejši od hitrosti
* Dobro znan in široko uporabljen protokol
PREDNOSTI
* Počasnejša hitrost prenosa podatkov kot SPI
* Velikost podatkovnega okvirja je omejena na 8 bitov
* Za izvedbo je potrebna bolj zapletena strojna oprema kot tehnologija SPI
Priporočena:
Kako uporabljati modul RFID-RC522 z Arduinom: 5 korakov
Kako uporabljati modul RFID-RC522 z Arduinom: V tem navodilu bom predstavil temeljno načelo delovanja modula RFID skupaj z njegovimi oznakami in čipi. Predstavil bom tudi kratek primer projekta, ki sem ga naredil z uporabo tega modula RFID z RGB LED. Kot ponavadi z mojimi Insi
Pošiljanje SMS z Arduinom -- GSM modul TC35: 5 korakov
Pošiljanje SMS z Arduinom || Modul TC35 GSM: V tem majhnem projektu vam bom pokazal, kako pravilno uporabljati modul TC35 GSM in kako ga uporabiti z Arduino Uno za pošiljanje SMS -a z njim
Vadnica: Kako Arduino nadzoruje več istih naslovnih naprav z uporabo multipleksorja TCA9548A I2C: 3 koraki
Vadnica: Kako Arduino nadzoruje več naprav z istim naslovom z uporabo multipleksatorja TCA9548A I2C: Opis: Modul multiplekserja TCA9548A I2C omogoča povezavo naprav z istim naslovom I2C (do 8 istih naslovov I2C), priključenih na en mikrokrmilnik. Multiplekser deluje kot vratar in ukaze preusmeri v izbrani niz o
DVORNI MULTIPLEKSER: 4 koraki
HALL MULTIPLEXER: (Posodobljeno 24. maja 2019, sledijo prihodnje posodobitve) Pozdravljeni. Na drugem forumu (ne spomnim se katerega?) Sem prebral tega fanta, ki je iskal pameten način za merjenje ravni neke "tekočine" v velikem (globokem) rezervoarju? Težava zanj je bila potreba
I2C / IIC LCD zaslon - Uporabite SPI LCD za LCD zaslon I2C z uporabo modula SPI do IIC z Arduinom: 5 korakov
I2C / IIC LCD zaslon | Uporabite SPI LCD za LCD zaslon I2C z uporabo modula SPI do IIC z Arduinom: Pozdravljeni, saj ima navaden SPI LCD 1602 preveč žic za povezavo, zato ga je zelo težko povezati z arduinom, vendar je na trgu na voljo en modul, ki lahko pretvorite zaslon SPI v zaslon IIC, tako da morate priključiti samo 4 žice