Obsah:
- Krok 1: Hardvérová požiadavka
- Krok 2: Zahrnuté témy
- Krok 3: Základy zbernice I2C
- Krok 4: Modul multiplexera TCA9548A I2C
- Krok 5:
- Krok 6: Ako majster odosiela a prijíma údaje
- Krok 7: Kód
- Krok 8: Skener I2C
- Krok 9: Zapojenie a ukážka
- Krok 10: Výhody a nevýhody
- Krok 11: Ďakujem
Video: Modul multiplexera TCA9548A I2C - s Arduino a NodeMCU: 11 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Dostali ste sa niekedy do situácie, keď ste museli k svojmu Arduinu zapojiť dva, tri alebo viac senzorov I2C, aby ste si uvedomili, že senzory majú pevnú alebo rovnakú adresu I2C. Navyše nemôžete mať dve zariadenia s rovnakou adresou na rovnakých pinoch SDA/SCL!
Aké sú teda vaše možnosti? Dajte ich všetky do multiplexera TCA9548A 1 až 8 I2C TCA9548A, aby ich všetky mohli navzájom hovoriť v tej istej zbernici! TCA9548A Breakout umožňuje komunikáciu s viacerými zariadeniami I2C, ktoré majú rovnakú adresu, a uľahčuje tak s nimi prepojenie.
Krok 1: Hardvérová požiadavka
Na tento tutoriál potrebujeme:
- Breadboard
- Multiplexor TCA9548A I2C
- Arduino Uno/Nano, čo je praktické
- NodeMCU
- Niekoľko displejov OLED 0,91 a 0,96 I2C
- prepojovacie káble a
- Kábel USB na nahranie kódu
Krok 2: Zahrnuté témy
Začneme našu diskusiu porozumením základov technológie I2C
Potom sa dozvieme o multiplexore TCA9548A a o tom, ako master a slave odosiela a prijíma údaje pomocou technológie I2C. Potom sa pozrieme na to, ako môžeme programovať a používať multiplexor v našom projekte pomocou Arduino a NodeMCU. Ďalej vám ukážem rýchly demo pomocou 8 I2C OLED displejov a nakoniec tutoriál ukončíme diskusiou o výhodách a nevýhodách multiplexera TCA9548A
Krok 3: Základy zbernice I2C
Interintegrovaný obvod vyslovovaný I-squared-C (I²C) alebo I2C je technológia dvojvodičovej zbernice (v skutočnosti je to 4vodičová, pretože potrebujete aj VCC a uzemnenie), ktorá sa používa na komunikáciu medzi viacerými procesormi a snímačmi.
Dva drôty sú:
* SDA - Sériové údaje (dátový riadok) a
* SCL - Sériové hodiny (hodinový riadok)
Pamätajte si, že obidva tieto riadky sú „synchrónne“, „obojsmerné“a „vypúšťané“a sú „natiahnuté s odpormi“.
Technológia zbernice I2C bola pôvodne navrhnutá spoločnosťou Philips Semiconductors na začiatku 80. rokov, aby umožňovala jednoduchú komunikáciu medzi komponentmi, ktoré sa nachádzajú na tej istej doske s plošnými spojmi.
S I2C môžete k jednému masteru (napríklad SPI) pripojiť viac podradených zariadení alebo môžete mať viacero nadradených zariadení ovládajúcich jedného alebo viacerých podradených zariadení. Master aj slave môžu prenášať a prijímať údaje. Zariadenie na zbernici I2C môže byť teda v jednom z týchto štyroch stavov:
* Hlavný prenos - hlavný uzol odosiela údaje do podriadeného zariadenia* Hlavný príjem - hlavný uzol prijíma údaje z podriadeného zariadenia
* Podriadený prenos - podradený uzol odosiela údaje do hlavného zariadenia
* Slave príjem - podriadený uzol prijíma údaje z masteru
I2C je sériový komunikačný protokol „na krátku vzdialenosť“, takže údaje sa prenášajú „bit po bite“po jednom vodiči alebo linke SDA. Výstup bitov je synchronizovaný so vzorkovaním bitov hodinovým signálom „zdieľaným“medzi masterom a slave. Hodinový signál je vždy riadený majstrom. Master vygeneruje hodiny a zaháji komunikáciu s otrokmi.
Aby som to zhrnul>
Počet použitých drôtov: 2
Synchrónne alebo asynchrónne: Synchrónne
Sériové alebo paralelné: Sériové
Hodinový signál riadený: Master Node
Použité napätie: +5 V alebo +3,3 V
Maximálny počet majstrov: Neobmedzený
Maximálny počet otrokov: 1008
Maximálna rýchlosť: Štandardný režim = 100 kbps
Rýchly režim = 400 kbps
Vysokorýchlostný režim = 3,4 Mbps
Ultra rýchly režim = 5 Mbps
Krok 4: Modul multiplexera TCA9548A I2C
TCA9548A je osemkanálový (obojsmerný) multiplexor I2C, ktorý umožňuje ovládať osem samostatných zariadení I2C jednou hostiteľskou zbernicou I2C. Stačí pripojiť senzory I2C k multiplexovaným autobusom SCn / SDn. Napríklad, ak je v aplikácii potrebných osem rovnakých OLED displejov, jeden z každého displeja môže byť pripojený ku každému z týchto kanálov: 0-7.
Multiplexor sa pripája k linkám VIN, GND, SDA a SCL mikroovládača. Odlomová doska akceptuje VIN od 1,65v do 5,5v. Vstupné vedenia SDA aj SCL sú k VCC pripojené pomocou 10K pull-up rezistora (veľkosť pull-up rezistora je daná veľkosťou kapacity na linkách I2C). Multiplexor podporuje bežné (100 kHz) aj rýchle (400 kHz) protokoly I2C. Všetky I/O piny TCA9548A sú tolerantné voči 5 voltom a môžu byť tiež použité na preklad z vysokého na nízke alebo z nízkeho na vysoké napätie.
Je dobré umiestniť pull-up odpory na všetky kanály TCA9548A, aj keď sú napätia rovnaké. Dôvodom je interný prepínač NMOS. Neprenáša veľmi dobre vysoké napätie, na druhej strane veľmi dobre prenáša nízke napätie. TCA9548A môže byť tiež použitý na preklad napätia, ktorý umožňuje použitie rôznych zbernicových napätí na každom páre SCn/SDn tak, že časti 1,8 V, 2,5 V alebo 3,3 V môžu komunikovať s časťami 5 V. To sa dosiahne použitím externých výsuvných odporov na vytiahnutie zbernice na požadované napätie pre hlavný a každý podradený kanál.
Ak mikrokontrolér zistí konflikt zbernice alebo inú nesprávnu činnosť, je možné TCA9548A resetovať nastavením nízkeho kolíka na RESET.
Krok 5:
TCA9548 umožňuje jednému mikroprocesoru komunikovať až s '64 senzormi ', všetkými s rovnakou alebo odlišnou adresou I2C, priradením jedinečného kanála ku každej zbernici slave snímača.
Keď hovoríme o odosielaní údajov dvoma káblami na viac zariadení, potrebujeme spôsob, ako ich adresovať. Je to rovnaké, ako keby poštár prichádzal po jednej ceste a hádzal poštové balíky do rôznych domov, pretože sú na nich napísané rôzne adresy.
Môžete mať maximálne 8 týchto multiplexorov spojených dohromady na adresách 0x70-0x77, aby ste mohli ovládať 64 rovnakých adresovaných častí I2C. Pripojením troch bitov adresy A0, A1 a A2 k VIN získate rôznu kombináciu adries. Takto vyzerá adresový bajt TCA9548A. Prvých 7 bitov sa skombinuje a vytvorí adresu slave. Posledný bit adresy slave definuje operáciu (čítanie alebo zápis), ktorá sa má vykonať. Keď je vysoká (1), vyberie sa čítanie, zatiaľ čo nízka (0) vyberie operáciu zápisu.
Krok 6: Ako majster odosiela a prijíma údaje
Nasleduje všeobecný postup, akým má majster prístup k podradenému zariadeniu:
1. Ak chce kapitán odoslať údaje podriadenému systému (WRITES):
-Hlavný vysielač vysiela podmienku START, za ktorou nasledujú adresy podriadeného prijímača a R/W nastavené na 0
-Hlavný vysielač odosiela údaje v „8-bitových riadiacich registroch“podriadenému prijímaču, keď podriadený potvrdí, že je pripravený
-Hlavný vysielač ukončí prenos s podmienkou STOP
2. Ak chce kapitán prijímať alebo čítať údaje z podriadeného zariadenia (READS):
-Master-receiver vysiela podmienku START, za ktorou nasledujú adresy podriadeného prijímača a R/W nastavené na 1
-Master-receiver pošle požadovaný register na čítanie do podradeného vysielača
-Hlavný prijímač prijíma údaje z podradeného vysielača
- Akonáhle sú prijaté všetky bajty, Master pošle NACK signalizáciu podriadenému, aby zastavil komunikáciu a uvoľnil zbernicu
- Master-receiver ukončí prenos s podmienkou STOP
Autobus sa považuje za nečinný, ak sú linky SDA aj SCL po stave STOP vysoké.
Krok 7: Kód
Teraz kód Int umožňuje začať zahrnutím knižnice „Wire“a definovaním adresy multiplexorov.
#include "Wire.h"
#include "U8glib.h"
#define Adresa MUX_Address 0x70 // TCA9548A Adresa snímača
Potom musíme vybrať port, s ktorým chceme komunikovať, a odoslať naň údaje pomocou tejto funkcie:
zrušiť selectI2CChannels (uint8_t i) {
ak (i> 7) vráti;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Ďalej budeme inicializovať zobrazenie v sekcii nastavenia volaním „u8g.begin ();“pre každý displej pripojený k MUX „tcaselect (i);“
Po inicializácii potom môžeme robiť, čo chceme, iba volaním funkcie „tcaselect (i);“kde „i“je hodnota multiplexovanej zbernice a potom sa podľa toho odošlú údaje a hodiny.
Krok 8: Skener I2C
V prípade, že si nie ste istí adresou zariadenia vášho štítu I2C, spustite priložený kód „skenera I2C“a vyhľadajte hexadecimálnu adresu svojho zariadenia. Po načítaní do Arduina skica naskenuje sieť I2C a zobrazí adresy, ktoré odpovedajú.
Krok 9: Zapojenie a ukážka
Elektrické vedenie:
Začnime pripojením multiplexora k doske NodeMCU. Pripojiť:
VIN až 5 V (alebo 3,3 V)
GND na zem
SDA až D2 a
Kolíky SCL až D1
Pre dosku Arduino pripojte:
VIN až 5 V (alebo 3,3 V)
GND na zem
SDA na A4 a
Piny SCL až A5
Akonáhle je MUX zapojený do mikrokontroléra, stačí pripojiť senzory k párom SCn / SDn.
Teraz sa pozrime na toto rýchle demo, v ktorom som k multiplexeru TCA9548A pripojil 8 OLED displejov. Pretože tieto displeje používajú komunikáciu I2C, komunikujú s Arduino iba pomocou 2 pinov.
Krok 10: Výhody a nevýhody
VÝHODY
* Komunikácia vyžaduje iba dve zbernicové linky (vodiče)
* Medzi všetkými komponentmi existuje jednoduchý vzťah master/slave
* Žiadne prísne požiadavky na prenosovú rýchlosť, ako napríklad pri RS232, master generuje hodiny zbernice
* Hardvér je menej komplikovaný ako UART
* Podporuje viacerých majstrov a viacerých otrokov
* Bit ACK/NACK poskytuje potvrdenie o úspešnom prenose každého rámca
* I2C je „skutočná zbernica s viacerými mastermi“, ktorá poskytuje detekciu arbitráží a kolízií
* Každé zariadenie pripojené k zbernici je softvérovo adresovateľné jedinečnou adresou
* Väčšina zariadení I2C môže komunikovať na frekvencii 100 kHz alebo 400 kHz
* I²C je vhodný pre periférne zariadenia, kde jednoduchosť a nízke výrobné náklady sú dôležitejšie ako rýchlosť
* Známy a široko používaný protokol
NEVÝHODY
* Pomalšia rýchlosť prenosu dát ako SPI
* Veľkosť dátového rámca je obmedzená na 8 bitov
* Na implementáciu je potrebný komplikovanejší hardvér ako technológia SPI
Odporúča:
Výučba: Ako Arduino ovláda viac zariadení s rovnakou adresou pomocou multiplexora TCA9548A I2C: 3 kroky
Tutorial: How Arduino Control Multiple Same Address Devices by Using TCA9548A I2C Multiplexer: Popis: The TCA9548A I2C Multiplexer Module is to allow to connect devices with the same I2C address (up to 8 same address I2C) hookled up to one microcontroller. Multiplexor funguje ako strážca brány a prenáša príkazy do zvolenej sady
LCD displej I2C / IIC - Použite SPI LCD na I2C LCD displej pomocou modulu SPI až IIC s Arduino: 5 krokov
LCD displej I2C / IIC | Použite SPI LCD na I2C LCD displej pomocou modulu SPI až IIC s Arduino: Ahoj, pretože normálny SPI LCD 1602 má príliš veľa káblov na pripojenie, takže je veľmi ťažké prepojiť ho s arduino, ale na trhu je k dispozícii jeden modul, ktorý môže preveďte displej SPI na displej IIC, takže potom potrebujete pripojiť iba 4 vodiče
Modul ovládača LCD Uber I2C: 6 krokov
Modul ovládača LCD Uber I2C: Preamble Tento návod popisuje, ako vytvoriť modul ovládača na báze LCD HD44780 (obrázok 1 vyššie). Modul umožňuje užívateľovi ovládať všetky aspekty LCD programovo cez I2C, vrátane; LCD a displej, kontrast a podsvietenie zosilňujú
Modul štítu klávesnice LCD 1602 s batohom I2C: 6 krokov
Modul štítu klávesnice LCD 1602 s batohom I2C: Ako súčasť väčšieho projektu som chcel mať LCD displej a klávesnicu na navigáciu v niektorých jednoduchých ponukách. Budem používať veľa I/O portov na Arduine na iné úlohy, takže som chcel rozhranie I2C pre LCD. Kúpil som si teda nejaký hardvér,
LCD displej I2C / IIC - Premeňte SPI LCD na I2C LCD displej: 5 krokov
LCD displej I2C / IIC | Premeňte SPI LCD na I2C LCD displej: používanie spi LCD displeja vyžaduje príliš veľa pripojení, čo je skutočne ťažké. Našiel som modul, ktorý dokáže previesť i2c LCD na spi LCD, takže môžeme začať