INHOUDSOPGAWE:
- Stap 1: Hardewarevereiste
- Stap 2: Onderwerpe behandel
- Stap 3: Basiese beginsels van I2C -bus
- Stap 4: TCA9548A I2C Multiplexer -module
- Stap 5:
- Stap 6: Hoe die meester data stuur en ontvang
- Stap 7: Kode
- Stap 8: I2C -skandeerder
- Stap 9: Bedrading en demonstrasie
- Stap 10: Voordele en nadele
- Stap 11: Dankie
Video: TCA9548A I2C Multiplexer Module - Met Arduino en NodeMCU: 11 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
Het u ooit in 'n situasie beland dat u twee, drie of meer I2C -sensors na u Arduino moes koppel net om te besef dat die sensors 'n vaste of dieselfde I2C -adres het. Boonop kan u nie twee toestelle met dieselfde adres op dieselfde SDA/SCL -penne hê nie!
So, wat is u opsies? Plaas hulle almal op die TCA9548A 1-tot-8 I2C-multiplexer om almal op dieselfde bus met mekaar te laat praat! Die TCA9548A Breakout maak kommunikasie moontlik met verskeie I2C -toestelle met dieselfde adres, wat dit maklik maak om met hulle te koppel.
Stap 1: Hardewarevereiste
Vir hierdie tutoriaal benodig ons:
- Broodbord
- TCA9548A I2C Multiplexer
- Arduino Uno/Nano, alles wat handig is
- NodeMCU
- Paar 0.91 en 0.96 I2C OLED -skerms
- Springkabels, en
- USB -kabel om die kode op te laai
Stap 2: Onderwerpe behandel
Ons sal ons bespreking begin deur die basiese beginsels van die I2C -tegnologie te verstaan
Dan leer ons meer oor die TCA9548A Multiplexer en hoe die meester en slaaf data stuur en ontvang met behulp van die I2C -tegnologie. Dan sal ons kyk hoe ons die multiplexer in ons projek kan programmeer en gebruik met behulp van Arduino en NodeMCU. demo met behulp van 8 I2C OLED -skerms en uiteindelik eindig ons die tutoriaal deur die voordele en nadele van die TCA9548A Multiplexer te bespreek
Stap 3: Basiese beginsels van I2C -bus
Inter-geïntegreerde stroombaan wat uitgespreek word I-squared-C (I²C) of I2C is 'n tweedraads bus-tegnologie (eintlik 4 drade omdat u ook die VCC en Ground benodig) wat gebruik word vir kommunikasie tussen verskeie verwerkers en sensors.
Die twee drade is:
* SDA - Serial Data (data line) en
* SCL - Serial Clock (kloklyn)
Onthou, albei hierdie lyne is 'sinchroon' 'tweerigting' 'oop-drein' en 'opgetrek met weerstande'.
Die I2C -bustegnologie is oorspronklik ontwerp deur Philips Semiconductors in die vroeë 80's om maklike kommunikasie moontlik te maak tussen komponente wat op dieselfde printplaat is.
Met I2C kan u verskeie slawe aan 'n enkele meester (soos SPI) koppel, of u kan meer as een of meer slawe beheer. Beide meesters en slawe kan data oordra en ontvang. 'N Toestel op die I2C -bus kan dus in een van hierdie vier toestande wees:
* Master transmit - master node stuur data na 'n slaaf* Master ontvang - master node ontvang data van 'n slaaf
* Slawe -oordrag - slaafknoop stuur data na die meester
* Slawe ontvang - slaafknoop ontvang data van die meester
I2C is 'n 'kort afstand' 'seriële kommunikasieprotokol', sodat data 'bit-by-bit' langs die enkele draad of die SDA-lyn oorgedra word. Die uitset van bisse word gesinchroniseer met die bemonstering van bisse deur 'n kloksignaal wat 'gedeel' is tussen die meester en die slaaf. Die kloksein word altyd deur die meester beheer. Die Meester genereer die klok en begin kommunikasie met slawe.
Dus, om dit op te som>
Aantal drade wat gebruik word: 2
Synchrone of asynchrone: sinchrone
Reeks of parallel: Reeks
Kloksignaal beheer deur: Master Node
Gebruikte spanning: +5 V of +3,3 V
Maksimum aantal meesters: onbeperk
Maksimum aantal slawe: 1008
Maksimum spoed: standaardmodus = 100 kbps
Vinnige modus = 400 kbps
Hoë spoed af = 3,4 Mbps
Ultra vinnige modus = 5 Mbps
Stap 4: TCA9548A I2C Multiplexer -module
TCA9548A is 'n agt-kanaals (tweerigting) I2C-multiplexer waarmee agt afsonderlike I2C-toestelle deur 'n enkele gasheer I2C-bus beheer kan word. U hoef net die I2C -sensors aan te sluit op die SCn / SDn -multiplexbusse. As daar byvoorbeeld agt identiese OLED-skerms in 'n toepassing benodig word, kan een van elke skerm op elk van hierdie kanale gekoppel word: 0-7.
Die multiplexer maak verbinding met VIN-, GND-, SDA- en SCL-lyne van die mikrobeheerder. Die uitbreekbord aanvaar VIN van 1.65v tot 5.5v. Beide ingang SDA- en SCL-lyne is met 'n 10K-optrekweerstand aan VCC gekoppel (die grootte van die optrekweerstand word bepaal deur die hoeveelheid kapasitansie op die I2C-lyne). Die multiplexer ondersteun beide normale (100 kHz) en vinnige (400 kHz) I2C -protokolle. Alle I/O-penne van TCA9548A is 5-volt verdraagsaam en kan ook gebruik word om van hoog na laag of laag na hoog spanning te vertaal.
Dit is 'n goeie idee om optelweerstands op alle kanale van TCA9548A te plaas, selfs al is die spannings dieselfde. Die rede hiervoor is die interne NMOS -skakelaar. Dit stuur hoogspanning nie baie goed nie, aan die ander kant stuur dit baie goed lae spanning. Die TCA9548A kan ook vir spanningsvertaling gebruik word, sodat verskillende busspannings op elke SCn/SDn-paar gebruik kan word sodat 1.8-V, 2.5-V of 3.3-V onderdele met 5-V onderdele kan kommunikeer. Dit word bereik deur eksterne optelweerstands te gebruik om die bus tot by die gewenste spanning vir die meester en elke slaafkanaal te trek.
As die mikrobeheerder 'n buskonflik of ander onbehoorlike werking opspoor, kan die TCA9548A teruggestel word deur 'n laagtepunt op die RESET-pen te bevestig.
Stap 5:
Met TCA9548 kan 'n enkele mikrobeheerder met tot '64 sensors 'kommunikeer met almal met dieselfde of verskillende I2C-adres deur 'n unieke kanaal aan elke sensorslaaf-subbus toe te ken.
As ons praat oor die stuur van data oor 2 drade na verskeie toestelle, benodig ons 'n manier om dit aan te spreek. Dit is dieselfde as die posman wat op 'n enkele pad kom en die pospakkies na verskillende huise afgee omdat daar verskillende adresse op is.
U kan by die maksimum 8 van hierdie multiplexers op 0x70-0x77-adresse saam verbind om 64 van dieselfde I2C-aangepaste dele te beheer. Deur die drie adresstukkies A0, A1 en A2 aan VIN te koppel, kan u 'n ander kombinasie van die adresse kry. So lyk 'n adresbyte van die TCA9548A. Eerste 7-bisse kombineer om die slaafadres te vorm. Die laaste bietjie van die slawe -adres definieer die bewerking (lees of skryf) wat uitgevoer moet word. As dit hoog is (1), word 'n les gekies, terwyl 'n lae (0) 'n skryfbewerking kies.
Stap 6: Hoe die meester data stuur en ontvang
Die volgende is die algemene prosedure vir 'n meester om toegang tot 'n slawe -toestel te verkry:
1. As 'n meester data aan 'n slaaf wil stuur (SKRYFTE):
-Meestersender stuur 'n START-toestand gevolg deur die adresse van die slawe-ontvanger en R/W op 0
-Meestersender stuur data in die '8-bis-beheerregisters' na die slawe-ontvanger wanneer die slaaf erken dat dit gereed is
-Meestersender beëindig die oordrag met 'n STOP-toestand
2. As 'n meester data van 'n slaaf wil ontvang of lees (LEES):
-Master-ontvanger stuur 'n START-toestand gevolg deur die adresse van die slawe-ontvanger en R/W op 1
-Meester-ontvanger stuur die gevraagde register om na slawe-sender te lees
-Meester-ontvanger ontvang data van die slawe-sender
- Sodra alle grepe ontvang is, stuur Meester NACK -sein na die slaaf om kommunikasie te stop en die bus los te laat
- Master-ontvanger beëindig die oordrag met 'n STOP-toestand
'N Bus word as ledig beskou as die SDA- en SCL -lyne hoog is na 'n STOP -toestand.
Stap 7: Kode
Nou kan Int die kode begin deur die "Wire" -biblioteek in te sluit en deur die multiplexers -adres te definieer.
#sluit "Wire.h" in
#sluit "U8glib.h" in
#define MUX_Address 0x70 // TCA9548A Encoders address
Dan moet ons die poort kies met wie ons wil kommunikeer en die data daarop stuur met behulp van hierdie funksie:
void selectI2CChannels (uint8_t i) {
as (i> 7) terugkeer;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Vervolgens sal ons die vertoning in die opstelafdeling inisialiseer deur 'u8g.begin ();' vir elke skerm wat aan die MUX "tcaselect (i);"
As ons eers geïnitialiseer is, kan ons dan doen wat ons wil deur die funksie "tcaselect (i);" waar "i" die waarde van die veelvoudige bus is, en dan die data en die klok daarvolgens stuur.
Stap 8: I2C -skandeerder
As u nie seker is oor die toesteladres van u I2C -skild nie, voer dan die aangehegte 'I2C Scanner' -kode uit om die hexadres van u toestel te vind. As dit na 'n Arduino gelaai word, sal die skets die I2C -netwerk skandeer met die adresse wat reageer.
Stap 9: Bedrading en demonstrasie
Bedrading:
Laat ons begin deur die multiplexer aan te sluit op 'n NodeMCU -bord. Koppel:
VIN tot 5V (of 3.3V)
GND tot op die grond
SDA tot D2 en
SCL tot D1 penne onderskeidelik
Koppel vir 'n Arduino -bord:
VIN tot 5V (of 3.3V)
GND tot op die grond
SDA tot A4 en
SCL tot A5 penne onderskeidelik
Sodra die MUX aan die mikrobeheerder gekoppel is, hoef u net die sensors aan die SCn / SDn-pare te koppel.
Kyk nou na hierdie vinnige demo waarin ek 8 OLED -skerms aan die TCA9548A Multiplexer gekoppel het. Aangesien hierdie skerms I2C -kommunikasie gebruik, kommunikeer hulle met die Arduino met slegs 2 penne.
Stap 10: Voordele en nadele
VOORDELE
* Kommunikasie benodig slegs twee buslyne (drade)
* Daar bestaan 'n eenvoudige meester/slaaf -verhouding tussen alle komponente
* Geen streng baud -tempovereistes soos byvoorbeeld met RS232 nie, die meester genereer 'n busklok
* Hardeware is minder ingewikkeld as UART's
* Ondersteun verskeie meesters en verskeie slawe
* ACK/NACK -bit gee 'n bevestiging dat elke raam suksesvol oorgedra is
* I2C is 'n 'ware multi-meester-bus' wat arbitrasie en botsingsopsporing bied
* Elke toestel wat aan die bus gekoppel is, kan deur 'n unieke adres deur sagteware aangespreek word
* Die meeste I2C -toestelle kan teen 100kHz of 400kHz kommunikeer
* I²C is geskik vir randapparatuur waar eenvoud en lae vervaardigingskoste belangriker is as spoed
* Bekende en wyd gebruikte protokol
NADELE
* Stadiger data -oordragstempo as SPI
* Die grootte van die datarame is beperk tot 8 bisse
* Meer ingewikkelde hardeware wat nodig is om te implementeer as die SPI -tegnologie
Aanbeveel:
Tutoriaal: Hoe Arduino verskeie dieselfde adresapparate beheer deur TCA9548A I2C -multiplexer te gebruik: 3 stappe
Tutoriaal: Hoe Arduino verskeie dieselfde adres toestelle beheer deur TCA9548A I2C Multiplexer te gebruik: Beskrywing: Die TCA9548A I2C Multiplexer -module is in staat om toestelle met dieselfde I2C -adres (tot 8 dieselfde adres I2C) wat aan een mikrobeheerder gekoppel is, aan te sluit. Die multiplexer dien as 'n poortwagter en stuur die opdragte na die geselekteerde stel
HALL MULTIPLEXER: 4 stappe
HALL MULTIPLEXER: (Opgedateer op 24 Mei 2019, toekomstige opdaterings sal volg) Hallo. Ek lees op 'n ander forum (kan ek nie meer onthou nie) van hierdie man wat 'n slim manier gesoek het om die vlak van 'n 'vloeistof' in 'n groot (diep) tenk te meet? Die probleem vir hom was die behoefte
RF -module 433MHZ - Maak ontvanger en sender vanaf 433MHZ RF -module sonder enige mikrobeheerder: 5 stappe
RF -module 433MHZ | Maak 'n ontvanger en sender van 'n 433MHZ RF -module sonder enige mikrobeheerder: wil u draadlose data stuur? maklik en sonder 'n mikrobeheerder nodig? Hier gaan ons, in hierdie instruksies, sal ek u die basiese RF -sender en ontvanger wys wat gereed is om gebruik te word! In hierdie instruksies kan u data stuur en ontvang met behulp van baie ver
E32-433T LoRa-module-tutoriaal - DIY Breakout Board vir E32 -module: 6 stappe
E32-433T LoRa-module-tutoriaal | DIY Breakout Board vir E32 -module: Hey, wat gaan aan, ouens! Akarsh hier van CETech. Hierdie projek van my is meer 'n leerkurwe om die werking van die E32 LoRa-module van eByte te verstaan, wat 'n hoë-krag 1-watt-ontvangersmodule is. Sodra ons die werk verstaan, het ek ontwerp
Knipper LED deur ESP32 NodeMCU WiFi- en Bluetooth -module -tutoriaal te gebruik: 5 stappe
Knipper LED deur gebruik te maak van ESP32 NodeMCU WiFi- en Bluetooth -module -tutoriaal: BeskrywingNodeMCU is 'n open source IoT -platform. Dit word geprogrammeer deur die Lua -scripttaal te gebruik. Die platform is gebaseer op eLua open source -projekte. Die platform gebruik baie open source-projekte, soos lua-cjson, spiffs. Hierdie ESP32 NodeMc