INHOUDSOPGAWE:

TCA9548A I2C Multiplexer Module - Met Arduino en NodeMCU: 11 stappe
TCA9548A I2C Multiplexer Module - Met Arduino en NodeMCU: 11 stappe

Video: TCA9548A I2C Multiplexer Module - Met Arduino en NodeMCU: 11 stappe

Video: TCA9548A I2C Multiplexer Module - Met Arduino en NodeMCU: 11 stappe
Video: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU 2024, Junie
Anonim
Image
Image

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

Onderwerpe gedek
Onderwerpe gedek

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

Basiese beginsels van I2C Bus
Basiese beginsels van I2C Bus
Basiese beginsels van I2C Bus
Basiese beginsels van I2C Bus
Basiese beginsels van I2C Bus
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 I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
TCA9548A I2C Multiplexer Module
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:

Beeld
Beeld
Beeld
Beeld
Beeld
Beeld

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

Hoe die meester data stuur en ontvang
Hoe die meester data stuur en ontvang
Hoe die meester data stuur en ontvang
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

Kode
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

I2C skandeerder
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 en demonstrasie
Bedrading en demonstrasie
Bedrading en demonstrasie
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 en nadele
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: