Taula de continguts:
- Pas 1: requisit de maquinari
- Pas 2: Temes tractats
- Pas 3: Conceptes bàsics del bus I2C
- Pas 4: mòdul de multiplexor TCA9548A I2C
- Pas 5:
- Pas 6: Com envia i rep les dades el mestre
- Pas 7: Codi
- Pas 8: escàner I2C
- Pas 9: cablejat i demostració
- Pas 10: avantatges i desavantatges
- Pas 11: Gràcies
Vídeo: TCA9548A Mòdul multiplexor I2C: amb Arduino i NodeMCU: 11 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
Alguna vegada heu arribat a una situació en què hagueu de connectar dos, tres o més sensors I2C al vostre Arduino només per adonar-vos que els sensors tenen una adreça I2C fixa o la mateixa. A més, no podeu tenir dos dispositius amb la mateixa adreça als mateixos pins SDA / SCL.
Quines són les vostres opcions? Poseu-los tots al multiplexor I2C TCA9548A 1 a 8 per aconseguir que tots parlin entre ells al mateix autobús. El TCA9548A Breakout permet la comunicació amb diversos dispositius I2C que tenen la mateixa adreça, cosa que facilita la interfície amb ells.
Pas 1: requisit de maquinari
Per a aquest tutorial necessitem:
- Taula de pa
- Multiplexor TCA9548A I2C
- Arduino Uno / Nano tot el que sigui útil
- NodeMCU
Poques pantalles OLED I2C de 0,91 i 0,96
- Cables de pont, i
- Cable USB per carregar el codi
Pas 2: Temes tractats
Començarem la nostra discussió comprenent els conceptes bàsics de la tecnologia I2C
A continuació, coneixerem el multiplexor TCA9548A i com el mestre i l’esclau envien i reben dades mitjançant la tecnologia I2C. A continuació, comprovarem com podem programar i utilitzar el multiplexor al nostre projecte mitjançant Arduino i NodeMCU. A continuació, us mostraré una ràpida demostració amb 8 pantalles OLED I2C i, finalment, acabarem el tutorial discutint els avantatges i desavantatges del multiplexor TCA9548A
Pas 3: Conceptes bàsics del bus I2C
El circuit inter-integrat pronunciat I-squared-C (I²C) o I2C és una tecnologia de bus de dos fils (de fet, 4 cables perquè també necessiteu el VCC i la terra) que s’utilitza per a la comunicació entre múltiples processadors i sensors.
Els dos cables són:
* SDA - Dades de sèrie (línia de dades) i
* SCL: rellotge de sèrie (línia de rellotge)
Recordeu, aquestes dues línies són "síncrones" "bidireccionals" "de drenatge obert" i estan "estirades amb resistències".
La tecnologia de bus I2C va ser dissenyada originalment per Philips Semiconductors a principis dels anys 80 per permetre una comunicació fàcil entre components que resideixen a la mateixa placa de circuit.
Amb I2C, podeu connectar diversos esclaus a un sol mestre (com SPI) o podeu tenir diversos mestres que controlen esclaus individuals o múltiples. Tant els amos com els esclaus poden transmetre i rebre dades. Per tant, un dispositiu al bus I2C pot estar en un d’aquests quatre estats:
* Transmissió principal: el node principal envia dades a un esclau * Recepció principal: el node principal rep dades d’un esclau
* Transmissió esclau: el node esclau envia dades al mestre
* Recepció esclau: el node esclau està rebent dades del mestre
I2C és un "protocol de comunicació en sèrie" a curta distància ", de manera que les dades es transfereixen" a poc a poc "al llarg del cable únic o de la línia SDA. La sortida de bits se sincronitza amb el mostreig de bits mitjançant un senyal de rellotge "compartit" entre el mestre i l'esclau. El senyal del rellotge sempre el controla el mestre. El Mestre genera el rellotge i inicia la comunicació amb els esclaus.
Per tant, per resumir-ho>
Nombre de cables utilitzats: 2
Síncrona o asíncrona: síncrona
En sèrie o en paral·lel: en sèrie
Senyal de rellotge controlat per: Master Node
Voltatges utilitzats: +5 V o +3,3 V
Nombre màxim de màsters: il·limitat
Nombre màxim d'esclaus: 1008
Velocitat màxima: mode estàndard = 100 kbps
Mode ràpid = 400 kbps
Mode d'alta velocitat = 3,4 Mbps
Mode ultra ràpid = 5 Mbps
Pas 4: mòdul de multiplexor TCA9548A I2C
El TCA9548A és un multiplexor I2C de vuit canals (bidireccional) que permet controlar vuit dispositius I2C separats mitjançant un únic bus I2C amfitrió. Només cal connectar els sensors I2C als busos multiplexats SCn / SDn. Per exemple, si es necessiten vuit pantalles OLED idèntiques en una aplicació, es pot connectar una de cada pantalla a cadascun d'aquests canals: 0-7.
El multiplexor es connecta a les línies VIN, GND, SDA i SCL del microcontrolador. El tauler de ruptura accepta VIN d’1,65v a 5,5v. Tant les línies SDA com SCL d’entrada estan connectades a VCC mitjançant una resistència de tracció de 10K (La mida de la resistència de tracció està determinada per la quantitat de capacitat de les línies I2C). El multiplexor admet protocols I2C normals (100 kHz) i ràpids (400 kHz). Tots els pins d'E / S del TCA9548A són tolerants a 5 volts i també es poden utilitzar per traduir de tensions altes a baixes o baixes a altes.
És una bona idea posar resistències de tracció a tots els canals del TCA9548A, encara que les tensions siguin les mateixes. La raó d'això és a causa del commutador NMOS intern. No transmet molt bé l’alta tensió, en canvi transmet molt bé les baixes tensions. El TCA9548A també es pot utilitzar per a la traducció de tensió, permetent l'ús de diferents voltatges de bus a cada parell SCn / SDn de manera que les parts 1,8-V, 2,5-V o 3,3-V puguin comunicar-se amb parts de 5 V. Això s'aconsegueix mitjançant l'ús de resistències d'extracció externes per treure el bus fins a la tensió desitjada per al canal mestre i cada esclau.
Si el microcontrolador detecta un conflicte de bus o un altre funcionament incorrecte, es pot restablir el TCA9548A fent valer un mínim al PIN RESET.
Pas 5:
TCA9548 permet a un únic microcontrolador comunicar-se amb fins a '64 sensors 'tots amb la mateixa o diferent adreça I2C assignant un canal únic a cada sub-bus esclau del sensor.
Quan parlem d’enviar dades a través de 2 cables a diversos dispositius, necessitem una manera d’abordar-los. És el mateix que el carter que arriba per una sola carretera i que deixa els paquets de correu a diferents cases perquè tenen diferents adreces escrites.
Podríeu tenir com a màxim 8 d'aquests multiplexors connectats entre si en adreces 0x70-0x77 per controlar 64 de les mateixes parts adreçades d'I2C. En connectar els tres bits d’adreces A0, A1 i A2 a VIN podeu obtenir una combinació diferent de les adreces. Així és com sembla un byte d’adreça del TCA9548A. Els primers 7 bits es combinen per formar l'adreça esclava. L'últim bit de l'adreça esclava defineix l'operació (lectura o escriptura) a realitzar. Quan és alta (1), se selecciona una lectura, mentre que una baixa (0) selecciona una operació d'escriptura.
Pas 6: Com envia i rep les dades el mestre
El següent és el procediment general perquè un mestre accedeixi a un dispositiu esclau:
1. Si un mestre vol enviar dades a un esclau (ESCRIU):
- El transmissor mestre envia una condició START seguida de les adreces del receptor esclau i R / W establert a 0
- El transmissor principal envia les dades dels "registres de control de 8 bits" al receptor esclau quan l'esclau reconeix que està preparat
- El transmissor mestre finalitza la transferència amb una condició STOP
2. Si un mestre vol rebre o llegir dades d'un esclau (LLEGEIX):
- El receptor mestre envia una condició START seguida de les adreces del receptor esclau i R / W establert a 1
- El receptor mestre envia el registre sol·licitat per llegir-lo al transmissor esclau
- El receptor mestre rep dades de l’esclau transmissor
- Un cop rebuts tots els bytes, el mestre envia senyalització NACK a l'esclau per aturar les comunicacions i deixar anar el bus
- El receptor mestre finalitza la transferència amb una condició STOP
Un autobús es considera inactiu si les línies SDA i SCL són altes després d’una condició STOP.
Pas 7: Codi
Ara, Int code permet començar incloent la biblioteca "Wire" i definint l'adreça dels multiplexors.
#include "Wire.h"
#include "U8glib.h"
#define MUX_Address 0x70 // TCA9548A Adreça dels codificadors
A continuació, hem de seleccionar el port al qual volem comunicar-nos i enviar-ne les dades mitjançant aquesta funció:
void selectI2CChannels (uint8_t i) {
si (i> 7) torna;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
A continuació, inicialitzarem la pantalla a la secció de configuració trucant a "u8g.begin ();" per a cada pantalla connectada al MUX "tcaselect (i);"
Un cop inicialitzats, podem fer el que vulguem només anomenant la funció "tcaselect (i);" on "i" és el valor del bus multiplexat i, a continuació, envia les dades i el rellotge en conseqüència.
Pas 8: escàner I2C
Per si de cas no esteu segur de l’adreça del dispositiu del vostre escut I2C, executeu el codi adjunt “Escàner I2C” per trobar l’adreça hexadecimal del vostre dispositiu. Quan es carrega a un Arduino, l'esbós escanejarà la xarxa I2C, mostrant les adreces que responen.
Pas 9: cablejat i demostració
Cablejat:
Comencem connectant el multiplexor a una placa NodeMCU. Connecta:
VIN a 5V (o 3,3V)
GND a terra
SDA a D2 i
Pins SCL a D1 respectivament
Per a una placa Arduino connecteu-vos:
VIN a 5V (o 3,3V)
GND a terra
SDA a A4 i
SCL a pins A5 respectivament
Un cop connectat el MUX al microcontrolador, només cal que connecteu els sensors als parells SCn / SDn.
Ara, fem una ullada a aquesta demostració ràpida en què he connectat 8 pantalles OLED al multiplexor TCA9548A. Com que aquestes pantalles utilitzen comunicació I2C, es comuniquen amb l'Arduino utilitzant només 2 pins.
Pas 10: avantatges i desavantatges
AVANTATGES
* La comunicació requereix només dues línies de bus (cables)
* Hi ha relacions mestre / esclau senzilles entre tots els components
* No hi ha requisits de velocitat de transmissió estrictes, com per exemple amb RS232, el mestre genera un rellotge de bus
* El maquinari és menys complicat que els UART
* Admet múltiples mestres i múltiples esclaus
* El bit ACK / NACK permet confirmar que cada fotograma es transfereix amb èxit
* I2C és un "autèntic bus multi-master" que proporciona arbitratge i detecció de col·lisions
* Tots els dispositius connectats al bus es poden programar amb una adreça única
* La majoria de dispositius I2C es poden comunicar a 100kHz o 400kHz
* I²C és adequat per a perifèrics on la simplicitat i el baix cost de fabricació són més importants que la velocitat
* Protocol ben conegut i àmpliament utilitzat
DESAVANTATGES
* Taxa de transferència de dades més lenta que SPI
* La mida del marc de dades es limita a 8 bits
* Cal implementar maquinari més complicat que la tecnologia SPI
Recomanat:
Càmera de circuit tancat de televisió amb mòdul de càmera NodeMCU + Old Laptop (amb i sense utilitzar Blynk): 5 passos
Càmera de circuit tancat de televisió amb mòdul de càmera NodeMCU + Old Laptop (amb i sense utilitzar Blynk): Hola, nois! En aquest instructiu, us mostraré com he utilitzat el mòdul de càmera i el nodeMCU d’un ordinador portàtil antic per fer alguna cosa semblant al CCTV
Tutorial: Com Arduino controla diversos dispositius de la mateixa adreça mitjançant el multiplexor TCA9548A I2C: 3 passos
Tutorial: Com Arduino controla diversos dispositius de la mateixa adreça mitjançant el multiplexor TCA9548A I2C: Descripció: El mòdul de multiplexor TCA9548A I2C permet habilitar la connexió de dispositius amb la mateixa adreça I2C (fins a 8 mateixes adreces I2C) connectades a un microcontrolador. El multiplexor actua com un gatekeeper, transferint les ordres al conjunt seleccionat o
Pantalla LCD I2C / IIC - Utilitzeu un LCD SPI a la pantalla LCD I2C mitjançant el mòdul SPI a IIC amb Arduino: 5 passos
Pantalla LCD I2C / IIC | Utilitzeu un LCD SPI a la pantalla LCD I2C Utilitzant el mòdul SPI a IIC amb Arduino: Hola, ja que un SPI LCD 1602 normal té massa cables per connectar-se, de manera que és molt difícil connectar-lo amb arduino, però hi ha un mòdul disponible al mercat. converteix la pantalla SPI en pantalla IIC, de manera que només heu de connectar 4 cables
Comandament a distància sense fils que utilitza el mòdul NRF24L01 de 2,4 Ghz amb Arduino - Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter - Helicòpter Rc - Avió Rc amb Arduino: 5 passos (amb imatges)
Comandament sense fils que utilitza un mòdul NRF24L01 de 2,4 Ghz amb Arduino | Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter | Helicòpter Rc | Avió Rc amb Arduino: per fer funcionar un cotxe Rc | Quadcopter | Drone | Avió RC | Vaixell RC, sempre necessitem un receptor i un transmissor, suposem que per RC QUADCOPTER necessitem un transmissor i un receptor de 6 canals i aquest tipus de TX i RX és massa costós, així que en farem un al nostre
Arduino + Java (Multiplexor): 16 passos
Arduino + Java (Multiplexor): Herramientas a necessitar: 1 Arduino Uno with cable USB.1 Protoboard.8 Cables.5 Leds.1 Resistencia 330