Përmbajtje:

Moduli Multiplekser TCA9548A I2C - Me Arduino dhe NodeMCU: 11 hapa
Moduli Multiplekser TCA9548A I2C - Me Arduino dhe NodeMCU: 11 hapa

Video: Moduli Multiplekser TCA9548A I2C - Me Arduino dhe NodeMCU: 11 hapa

Video: Moduli Multiplekser TCA9548A I2C - Me Arduino dhe NodeMCU: 11 hapa
Video: Как использовать ESP32 WiFi и Bluetooth с Arduino IDE, полная информация с примерами и кодом. 2024, Qershor
Anonim
Image
Image

A keni hasur ndonjëherë në një situatë kur ju është dashur të lidhni dy, tre ose më shumë Sensorë I2C në Arduino tuaj vetëm për të kuptuar se sensorët kanë një adresë I2C fikse ose të njëjtë. Për më tepër, nuk mund të keni dy pajisje me të njëjtën adresë në të njëjtat kunja SDA/SCL!

Pra, cilat janë opsionet tuaja? Vendosini të gjithë në multiplexerin TCA9548A 1-to-8 I2C për t'i bërë të gjithë të flasin me njëri-tjetrin në të njëjtin autobus! Breakout TCA9548A mundëson komunikim me pajisje të shumta I2C që kanë të njëjtën adresë duke e bërë të thjeshtë ndërfaqen me to.

Hapi 1: Kërkesa për harduer

Temat e Mbuluara
Temat e Mbuluara

Për këtë tutorial na duhen:

- Tabela e bukës

- Multiplekser TCA9548A I2C

- Arduino Uno/Nano çdo gjë që është e dobishme

- NodeMCU

- Disa ekrane OLED 0.91 & 0.96 I2C

- Kabllot e bluzave, dhe

- Kabllo USB për të ngarkuar kodin

Hapi 2: Temat e Mbuluara

Ne do të fillojmë diskutimin tonë duke kuptuar bazat e teknologjisë I2C

Pastaj do të mësojmë për Multiplekserin TCA9548A dhe se si mjeshtri dhe skllavi dërgon dhe merr të dhëna duke përdorur teknologjinë I2C Pastaj do të shikojmë se si mund të programojmë dhe përdorim multiplexerin në projektin tonë duke përdorur Arduino dhe NodeMCU Tjetra, do t'ju tregoj një të shpejtë demonstrim duke përdorur 8 ekrane OLED I2C dhe më në fund do të përfundojmë mësimin duke diskutuar mbi avantazhet dhe disavantazhet e Multiplekserit TCA9548A

Hapi 3: Bazat e autobusit I2C

Bazat e autobusit I2C
Bazat e autobusit I2C
Bazat e autobusit I2C
Bazat e autobusit I2C
Bazat e autobusit I2C
Bazat e autobusit I2C

Qarku i integruar i shqiptuar I-katror-C (I²C) ose I2C është një teknologji me autobus me dy tela (në të vërtetë 4 tela sepse ju keni nevojë edhe për VCC dhe Ground) që përdoret për komunikim midis shumë përpunuesve dhe sensorëve.

Dy telat janë:

* SDA - Të dhënat serike (linja e të dhënave) dhe

* SCL - Ora Seriale (vija e orës)

Mbani mend, të dyja këto rreshta janë 'sinkronike' dydrejtimëshe '' kullimi i hapur 'dhe janë' tërhequr me rezistorë '.

Teknologjia e autobusëve I2C u krijua fillimisht nga Philips Semiconductors në fillim të viteve '80 për të lejuar komunikim të lehtë midis përbërësve që banojnë në të njëjtën tabelë qarkore.

Me I2C, ju mund të lidhni skllevër të shumtë me një master të vetëm (si SPI) ose mund të keni shumë master që kontrollojnë skllevër të vetëm ose të shumëfishtë. Të dy zotërit dhe skllevërit mund të transmetojnë dhe marrin të dhëna. Pra, një pajisje në autobusin I2C mund të jetë në njërën nga këto katër gjendje:

* Transmetimi Master - nyja kryesore po dërgon të dhëna te një skllav* Master merr - nyja kryesore po merr të dhëna nga një skllav

* Transmetimi i skllevërve - nyja e skllavit po i dërgon të dhëna masterit

* Marrja e skllevërve - nyja e skllavit po merr të dhëna nga masteri

I2C është një "protokoll komunikimi serik" në distancë të shkurtër, kështu që të dhënat transferohen "pak nga pak" përgjatë telit të vetëm ose linjës SDA. Dalja e bitëve sinkronizohet me marrjen e mostrave të bitëve nga një sinjal i orës 'i ndarë' midis masterit dhe skllavit. Sinjali i orës kontrollohet gjithmonë nga mjeshtri. Master krijon orën dhe fillon komunikimin me skllevërit.

Pra, për ta përmbledhur>

Numri i telave të përdorur: 2

Sinkron ose Asinkron: Sinkron

Serial ose Paralel: Serial

Sinjali i orës i kontrolluar nga: Nyja Master

Tensionet e përdorura: +5 V ose +3.3 V

Numri maksimal i Masterit: I Pafund

Numri maksimal i skllevërve: 1008

Shpejtësia maksimale: Modaliteti Standard = 100 kbps

Modaliteti i shpejtë = 400kbps

Modaliteti i Shpejtësisë së Lartë = 3.4 Mbps

Modaliteti Ultra i Shpejtë = 5 Mbps

Hapi 4: Moduli i Multiplekserit TCA9548A I2C

Moduli i Multiplekserit TCA9548A I2C
Moduli i Multiplekserit TCA9548A I2C
Moduli i Multiplekserit TCA9548A I2C
Moduli i Multiplekserit TCA9548A I2C
Moduli i Multiplekserit TCA9548A I2C
Moduli i Multiplekserit TCA9548A I2C

TCA9548A është një multiplexer I2C me tetë kanale (bidirectional) i cili lejon që tetë pajisje të veçanta I2C të kontrollohen nga një autobus I2C i vetëm pritës. Thjesht duhet të lidhni sensorët I2C në autobusët e shumëfishtë SCn / SDn. Për shembull, nëse nevojiten tetë ekrane OLED identike në një aplikacion, një nga secila ekran mund të lidhet në secilin nga këto kanale: 0-7.

Multiplekseri lidhet me linjat VIN, GND, SDA dhe SCL të mikrokontrolluesit. Bordi i shpërthimit pranon VIN nga 1.65v në 5.5v. Të dy linjat hyrëse SDA dhe SCL janë të lidhura me VCC përmes një rezistence tërheqëse 10K (Madhësia e rezistencës tërheqëse përcaktohet nga sasia e kapacitetit në linjat I2C). Multiplekseri mbështet protokollet normale (100 kHz) dhe të shpejtë (400 kHz) I2C. Të gjitha kunjat I/O të TCA9548A janë 5 volt toleruese dhe gjithashtu mund të përdoren për të përkthyer nga tensione të larta në të ulëta ose të ulëta në tensione të larta.

Ideashtë një ide e mirë të vendosni rezistencë tërheqëse në të gjitha kanalet e TCA9548A, edhe nëse tensionet janë të njëjta. Arsyeja për këtë është për shkak të ndërprerësit të brendshëm NMOS. Nuk transmeton shumë mirë tensionin e lartë, nga ana tjetër transmeton shumë mirë tensione të ulëta. TCA9548A gjithashtu mund të përdoret për Përkthimin e Tensionit, duke lejuar përdorimin e tensioneve të ndryshme të autobusëve në secilën palë SCn/SDn në mënyrë që pjesët 1.8-V, 2.5-V, ose 3.3-V të mund të komunikojnë me pjesët 5-V. Kjo arrihet duke përdorur rezistorë të jashtëm tërheqës për të tërhequr autobusin deri në tensionin e dëshiruar për masterin dhe secilin kanal skllav.

Nëse mikrokontrolluesi zbulon një konflikt autobusi ose funksionim tjetër të pahijshëm, TCA9548A mund të rivendoset duke pohuar një nivel të ulët në kunjin RESET.

Hapi 5:

Imazhi
Imazhi
Imazhi
Imazhi
Imazhi
Imazhi

TCA9548 lejon një mikrokontrollues të vetëm të komunikojë me deri në '64 sensorë 'të gjithë me të njëjtën adresë ose të ndryshme I2C duke caktuar një kanal unik për secilën nën-autobus të skllevërve të sensorëve.

Kur flasim për dërgimin e të dhënave mbi 2 tela në pajisje të shumta, atëherë kemi nevojë për një mënyrë për t'i adresuar ato. Sameshtë njësoj si postieri të vijë në një rrugë të vetme dhe të lëshojë paketat e postës në shtëpi të ndryshme sepse ato kanë adresa të ndryshme të shkruara mbi to.

Ju mund të keni në maksimum 8 nga këta multiplexerë të lidhur së bashku në adresat 0x70-0x77 në mënyrë që të kontrolloni 64 të njëjtat pjesë të adresuara I2C. Duke lidhur tre bitet e adresave A0, A1 dhe A2 me VIN ju mund të merrni kombinim të ndryshëm të adresave. Kështu duket një byte adrese e TCA9548A. 7-bitët e parë kombinohen për të formuar adresën e skllavit. Pjesa e fundit e adresës së skllavit përcakton operacionin (lexoni ose shkruani) që duhet kryer. Kur është e lartë (1), zgjidhet leximi, ndërsa i ulët (0) zgjedh një operacion shkrimi.

Hapi 6: Si Master Dërgon dhe Merr të dhëna

Si Master Dërgon & Merr të dhëna
Si Master Dërgon & Merr të dhëna
Si Master Dërgon & Merr të dhëna
Si Master Dërgon & Merr të dhëna

Më poshtë është procedura e përgjithshme për një master për të hyrë në një pajisje skllave:

1. Nëse një master dëshiron t'i dërgojë të dhëna një skllavi (WRITES):

-Transmetuesi kryesor dërgon një kusht START i ndjekur nga adresat e marrësit skllav dhe R/W të vendosur në 0

-Transmetuesi kryesor dërgon të dhëna në 'regjistrat e kontrollit 8-bit' te marrësi i skllavit kur skllavi pranon se është gati

-Master-transmetuesi përfundon transferimin me një kusht STOP

2. Nëse një master dëshiron të marrë ose lexojë të dhëna nga një skllav (LEXON):

-Pranuesi kryesor dërgon një kusht START i ndjekur nga adresat e marrësit skllav dhe R/W të vendosur në 1

-Pranuesi kryesor dërgon regjistrin e kërkuar për t'i lexuar skllevër-transmetuesit

-Pranuesi kryesor merr të dhëna nga transmetuesi i skllevërve

- Sapo të merren të gjitha bajtët, Master dërgon sinjalin NACK te skllavi për të ndaluar komunikimet dhe liruar autobusin

- Pranuesi kryesor përfundon transferimin me një kusht STOP

Një autobus konsiderohet i papunë nëse të dy linjat SDA dhe SCL janë të larta pas një gjendje STOP.

Hapi 7: Kodi

Kodi
Kodi

Tani, kodi Int ju lejon të filloni duke përfshirë bibliotekën "Wire" dhe duke përcaktuar adresën e multiplexerëve.

#përfshi "Wire.h"

#përfshi "U8glib.h"

#përcaktoni adresën MUX_Adresa 0x70 // Adresa e koduesve TCA9548A

Pastaj ne duhet të zgjedhim portën ku duam të komunikojmë dhe të dërgojmë të dhënat mbi të duke përdorur këtë funksion:

void selectI2CChannels (uint8_t i) {

nëse (i> 7) kthehet;

Wire.beginTransmission (MUX_Adresa);

Wire.write (1 << i);

Wire.endTransmission ();

}

Tjetra ne do të fillojmë shfaqjen në seksionin e konfigurimit duke thirrur "u8g.begin ();" për çdo ekran të bashkangjitur në MUX "tcaselect (i);"

Pasi të jetë inicializuar, atëherë mund të bëjmë çfarë të duam vetëm duke e quajtur funksionin "tcaselect (i);" ku "i" është vlera e autobusit të shumëfishtë dhe pastaj dërgimi i të dhënave dhe orës në përputhje me rrethanat.

Hapi 8: Skaneri I2C

Skaneri I2C
Skaneri I2C

Vetëm në rast se nuk jeni të sigurt për adresën e pajisjes së mburojës tuaj I2C, atëherë ekzekutoni kodin e bashkangjitur 'Skanuesi I2C' për të gjetur adresën gjashtëkëndore të pajisjes tuaj. Kur ngarkohet në një Arduino, skica do të skanojë rrjetin I2C, duke treguar adresat që po përgjigjen.

Hapi 9: Instalime dhe Demo

Instalime dhe Demo
Instalime dhe Demo
Instalime dhe Demo
Instalime dhe Demo

Instalime elektrike:

Le të fillojmë duke lidhur multiplexerin me një bord NodeMCU. Lidhu:

VIN në 5V (ose 3.3V)

GND në tokë

SDA në D2 dhe

Kunjat SCL në D1 respektivisht

Për një bord Arduino lidheni:

VIN në 5V (ose 3.3V)

GND në tokë

SDA në A4 dhe

Këmbët SCL në A5 respektivisht

Pasi MUX të lidhet me mikrokontrolluesin, ju vetëm duhet të lidhni sensorët me çiftet SCn / SDn.

Tani, le të shikojmë këtë demonstrim të shpejtë në të cilin kam lidhur 8 ekrane OLED me Multiplekserin TCA9548A. Ndërsa këto ekrane përdorin komunikimin I2C, ata komunikojnë me Arduino duke përdorur vetëm 2 kunja.

Hapi 10: Avantazhet dhe Disavantazhet

Avantazhet dhe disavantazhet
Avantazhet dhe disavantazhet

PËRPARËSITË

* Komunikimi kërkon vetëm dy linja autobusësh (tela)

* Ekziston një marrëdhënie e thjeshtë mjeshtër/skllav midis të gjithë përbërësve

* Nuk ka kërkesa të rrepta për normën e baudit si për shembull me RS232, mjeshtri gjeneron një orë autobusi

* Pajisjet kompjuterike janë më pak të ndërlikuara sesa UART -et

* Mbështet mjeshtra të shumtë dhe skllevër të shumtë

* Bit ACK/NACK jep konfirmimin se çdo kornizë është transferuar me sukses

* I2C është një 'autobus i vërtetë multi-master' që siguron arbitrazh dhe zbulim të përplasjes

* Çdo pajisje e lidhur me autobusin është e adresueshme nga softueri me një adresë unike

* Shumica e pajisjeve I2C mund të komunikojnë në 100kHz ose 400kHz

* I²C është i përshtatshëm për pajisjet periferike ku thjeshtësia dhe kostoja e ulët e prodhimit janë më të rëndësishme se shpejtësia

* Protokoll i mirënjohur dhe i përdorur gjerësisht

MUNDSIT

* Shkalla më e ngadaltë e transferimit të të dhënave sesa SPI

* Madhësia e kornizës së të dhënave është e kufizuar në 8 bit

* Pajisje më të ndërlikuara të nevojshme për tu zbatuar sesa teknologjia SPI

Recommended: