Tartalomjegyzék:
- 1. lépés: Hardverkövetelmények
- 2. lépés: Tárgyalt témák
- 3. lépés: Az I2C busz alapjai
- 4. lépés: TCA9548A I2C multiplexer modul
- 5. lépés:
- 6. lépés: Hogyan küldi és fogadja a mester az adatokat
- 7. lépés: Kód
- 8. lépés: I2C szkenner
- 9. lépés: Kábelezés és bemutató
- 10. lépés: Előnyök és hátrányok
- 11. lépés: Köszönöm
Videó: TCA9548A I2C multiplexer modul - Arduino és csomóponttal MCU: 11 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
Voltál már olyan helyzetben, hogy két, három vagy több I2C érzékelőt kellett csatlakoztatnod az Arduino -hoz, hogy rájöjj, hogy az érzékelők fix vagy azonos I2C címmel rendelkeznek. Ezenkívül nem rendelkezhet két azonos címmel rendelkező eszközzel ugyanazon SDA/SCL csapokon!
Szóval, mik a lehetőségei? Tegye őket mind a TCA9548A 1-8-as I2C multiplexerre, hogy mindegyikük ugyanazon a buszon beszéljen egymással! A TCA9548A Breakout lehetővé teszi a kommunikációt több, ugyanazzal a címmel rendelkező I2C eszközzel, ami megkönnyíti az interfészt velük.
1. lépés: Hardverkövetelmények
Ehhez az oktatóanyaghoz szükségünk van:
- Kenyeretábla
- TCA9548A I2C multiplexer
- Arduino Uno/Nano, ami kéznél van
- NodeMCU
- Kevés 0,91 és 0,96 I2C OLED kijelző
- Jumper kábelek, és
- USB kábel a kód feltöltéséhez
2. lépés: Tárgyalt témák
A vitát azzal kezdjük, hogy megértjük az I2C technológia alapjait
Ezután megismerjük a TCA9548A multiplexert, és azt, hogy a mester és a szolga hogyan küld és fogad adatokat az I2C technológia segítségével. Ezután megvizsgáljuk, hogyan programozhatjuk és használhatjuk a multiplexert projektünkben az Arduino és a NodeMCU segítségével. bemutató 8 I2C OLED kijelző használatával, és végül befejezzük az oktatóanyagot a TCA9548A multiplexer előnyeinek és hátrányainak megvitatásával
3. lépés: Az I2C busz alapjai
Az integrált áramkör kiejtett I-négyzet-C (I²C) vagy I2C egy kétvezetékes busz technológia (valójában 4 vezeték, mert szüksége van a VCC-re és a földre is), amelyet több processzor és érzékelő közötti kommunikációra használnak.
A két vezeték:
* SDA - Soros adatok (adatvonal) és
* SCL - Soros óra (óra vonal)
Ne feledje, hogy mindkét vonal „szinkron” „kétirányú” „nyitott elvezetésű” és „ellenállással felhúzott”.
Az I2C busz technológiát eredetileg a Philips Semiconductors tervezte a 80 -as évek elején, hogy lehetővé tegye az egyszerű kommunikációt az ugyanazon áramköri lapon található alkatrészek között.
Az I2C segítségével több slave -t csatlakoztathat egyetlen mesterhez (például az SPI -hez), vagy több master is vezérelhet egyetlen vagy több slave -t. Mind a mesterek, mind a szolgák tudnak adatokat továbbítani és fogadni. Tehát az I2C buszon lévő eszköz a következő négy állapot egyikében lehet:
* Fő adás - a fő csomópont adatokat küld egy szolga szolgálatnak* Master fogadás - a fő csomópont adatokat fogad egy slave -től
* Slave továbbítás - a slave csomópont adatokat küld a masternek
* Slave fogadás - a slave csomópont adatokat fogad a mestertől
Az I2C egy „rövid távolságú” soros kommunikációs protokoll, így az adatok „bitről-bitre” kerülnek továbbításra az egyetlen vezetéken vagy az SDA vonalon. A bitek kimenetét a master és a szolga között „megosztott” órajel szinkronizálja a bitmintavétellel. Az órajelet mindig a mester vezérli. A Mester generálja az órát, és kezdeményezi a kommunikációt a rabszolgákkal.
Összefoglalva tehát>
Használt vezetékek száma: 2
Szinkron vagy aszinkron: Szinkron
Soros vagy párhuzamos: Soros
Az órajel vezérlése: Master Node
Használt feszültségek: +5 V vagy +3,3 V
A mesterek maximális száma: korlátlan
A rabszolgák maximális száma: 1008
Maximális sebesség: normál mód = 100 kbps
Gyors mód = 400 kbps
Nagy sebességű mód = 3,4 Mbps
Ultra gyors mód = 5 Mbps
4. lépés: TCA9548A I2C multiplexer modul
A TCA9548A egy nyolccsatornás (kétirányú) I2C multiplexer, amely lehetővé teszi nyolc különálló I2C eszköz vezérlését egyetlen host I2C busszal. Csak be kell kötni az I2C érzékelőket az SCn / SDn multiplex buszokhoz. Például, ha nyolc azonos OLED kijelzőre van szükség egy alkalmazásban, akkor mindegyik kijelzőhöz csatlakoztatható mindegyik csatorna: 0-7.
A Multiplexer csatlakozik a mikrovezérlő VIN, GND, SDA és SCL vonalaihoz. A kitörő tábla elfogadja a VIN -t 1,65 V -tól 5,5 V -ig. Mind a bemeneti SDA, mind az SCL vezeték 10K felhúzó ellenálláson keresztül csatlakozik a VCC-hez (A felhúzó ellenállás méretét az I2C vonalak kapacitása határozza meg). A multiplexer támogatja a normál (100 kHz) és a gyors (400 kHz) I2C protokollokat is. A TCA9548A összes I/O csapja 5 voltos tűrőképességű, és használható a magasról az alacsonyra, vagy az alacsonyról a magasra történő feszültségre.
Célszerű felhúzó ellenállásokat elhelyezni a TCA9548A összes csatornáján, még akkor is, ha a feszültség azonos. Ennek oka a belső NMOS kapcsoló. A magas feszültséget nem nagyon továbbítja, másrészt nagyon jól továbbítja az alacsony feszültséget. A TCA9548A feszültségátalakításra is használható, lehetővé téve a különböző buszfeszültségek használatát minden SCn/SDn páron úgy, hogy az 1,8 V, 2,5 V vagy 3,3 V alkatrészek kommunikálni tudjanak az 5 V-os alkatrészekkel. Ezt úgy érik el, hogy külső felhúzó ellenállásokkal húzzák fel a buszt a master és minden slave csatorna kívánt feszültségére.
Ha a mikrovezérlő buszütközést vagy más nem megfelelő működést észlel, a TCA9548A alaphelyzetbe állítható a RESET érintkező alacsony szintjének beállításával.
5. lépés:
A TCA9548 lehetővé teszi, hogy egyetlen mikrovezérlő kommunikáljon akár '64 érzékelővel ', amelyek mindegyike azonos vagy eltérő I2C címmel rendelkezik, és egyedi csatornát rendel hozzá minden érzékelő szolga al-buszhoz.
Amikor arról beszélünk, hogy két vezetéken keresztül több eszközre kell adatokat küldeni, akkor meg kell találnunk a módját, hogy hogyan kezeljük őket. Ugyanaz, mint a postás, aki egyetlen úton érkezik, és különböző házakba dobja a postacsomagokat, mert különböző címek vannak ráírva.
Legfeljebb 8 ilyen multiplexer csatlakoztatható 0x70-0x77 címekre annak érdekében, hogy 64 azonos I2C címzett részt vezéreljen. A három A0, A1 és A2 címbit VIN -hez történő csatlakoztatásával különböző címkombinációkat kaphat. Így néz ki a TCA9548A címbájta. Az első 7 bites összekapcsolva létrehozza a szolga címet. A slave cím utolsó bitje határozza meg a végrehajtandó műveletet (olvasás vagy írás). Ha magas (1), akkor olvasás van kiválasztva, míg alacsony (0) írási műveletet választ.
6. lépés: Hogyan küldi és fogadja a mester az adatokat
Az alábbiakban ismertetjük az általános eljárást, amellyel a master hozzáférhet egy slave eszközhöz:
1. Ha egy mester adatokat akar küldeni egy slave -nek (WRITES):
-A mester-adó START feltételt küld, majd a szolga-vevő címét és az R/W értékét 0-ra állítja
-A master-adó adatokat küld a „8 bites vezérlőregiszterekben” a slave-vevőnek, amikor a slave tudomásul veszi, hogy készen áll
-A fő-adó leállítja az átvitelt STOP feltétellel
2. Ha a mester adatokat akar fogadni vagy olvasni egy slave -től (READS):
-A Master-vevő egy START feltételt küld, majd a slave-vevő és az R/W címét 1-re állítja
-A Master-vevő elküldi a kért regisztert a slave-adónak
-A master-vevő adatokat fogad a slave-adótól
- Az összes bájt beérkezése után a Mester NACK jelzést küld a slave -nek a kommunikáció leállításához és a busz elengedéséhez
- A Master-vevő STOP feltétellel fejezi be az átvitelt
A busz tétlennek minősül, ha mind az SDA, mind az SCL vonalak magasak a STOP feltétel után.
7. lépés: Kód
Most, Int a kódot a "Wire" könyvtár bevonásával és a multiplexerek címének meghatározásával kezdhetjük.
#include "Wire.h"
#include "U8glib.h"
#define MUX_Address 0x70 // TCA9548A Kódolók címe
Ezután ki kell választanunk a portot, amelyhez kommunikálni szeretnénk, és el kell küldenünk az adatokat ezen a funkción keresztül:
void selectI2CChannels (uint8_t i) {
ha (i> 7) visszatér;
Wire.beginTransmission (MUX_Address);
Drót.írás (1 << i);
Wire.endTransmission ();
}
Ezután inicializáljuk a kijelzőt a beállítási részben az "u8g.begin ();" a MUX "tcaselect (i);"
Az inicializálás után azt tehetünk, amit akarunk, csak a "tcaselect (i);" függvény meghívásával. ahol "i" a multiplexelt busz értéke, majd ennek megfelelően elküldi az adatokat és az órát.
8. lépés: I2C szkenner
Csak abban az esetben, ha nem biztos az I2C pajzs eszközcímében, futtassa a mellékelt „I2C Scanner” kódot, hogy megtalálja az eszköz hexadecimális címét. Arduino -ba betöltve a vázlat beolvassa az I2C hálózatot, és megjeleníti a válaszoló címeket.
9. lépés: Kábelezés és bemutató
Vezeték:
Kezdjük a multiplexer csatlakoztatásával a NodeMCU kártyához. Csatlakozás:
VIN - 5V (vagy 3.3V)
GND a földre
SDA - D2 és
SCL - D1 csapok
Arduino tábla csatlakoztatásához:
VIN - 5V (vagy 3.3V)
GND a földre
SDA -tól A4 -ig és
SCL - A5 csapok
Miután a MUX csatlakoztatva van a mikrovezérlőhöz, csak csatlakoztatnia kell az érzékelőket az SCn / SDn párokhoz.
Most nézzük meg ezt a gyors bemutatót, amelyben 8 OLED kijelzőt csatlakoztattam a TCA9548A multiplexerhez. Mivel ezek a kijelzők I2C kommunikációt használnak, mindössze 2 érintkezővel kommunikálnak az Arduino -val.
10. lépés: Előnyök és hátrányok
ELŐNYÖK
* A kommunikáció csak két buszvonalat (vezetéket) igényel
* Egy egyszerű master/slave kapcsolat létezik az összes komponens között
* Nincsenek szigorú adatátviteli követelmények, mint például az RS232 esetében, a master buszórát generál
* A hardver kevésbé bonyolult, mint az UART -ok
* Több mestert és több rabszolgát támogat
* Az ACK/NACK bit megerősíti, hogy minden képkocka sikeresen átvitt
* Az I2C egy "valódi, több mesterből álló busz", amely választottbírósági és ütközési érzékelést biztosít
* Minden, a buszhoz csatlakoztatott eszköz szoftver címezhető egyedi címmel
* A legtöbb I2C eszköz képes kommunikálni 100 kHz vagy 400 kHz frekvencián
* Az I²C olyan perifériákhoz alkalmas, ahol az egyszerűség és az alacsony gyártási költség fontosabb, mint a sebesség
* Jól ismert és széles körben használt protokoll
Hátrányok
* Lassabb adatátviteli sebesség, mint az SPI
* Az adatkeret mérete 8 bit
* Bonyolultabb hardver szükséges a megvalósításhoz, mint az SPI technológia
Ajánlott:
Plug & Play CO2 -érzékelő kijelző csomóponttal MCU/ESP8266 iskoláknak, óvodáknak vagy otthonának: 7 lépés
Plug & Play CO2 -érzékelő kijelző NodeMCU/ESP8266 -mal iskoláknak, óvodáknak vagy otthonának: Megmutatom, hogyan lehet gyorsan kiépíteni a dugót & játssza le a CO2 -érzékelőt, ahol a projekt minden eleme DuPont vezetékekkel lesz csatlakoztatva. Csak 5 pontot kell forrasztani, mert egyáltalán nem forrasztottam a projekt előtt
ESP32 Lora Thingspeak Gateway érzékelő csomóponttal: 9 lépés
ESP32 Lora Thingspeak Gateway érzékelő csomóponttal: ebben az IoT projektben ESP32 LoRa átjárót terveztem & ESP32 LoRa érzékelőcsomópont is, amely néhány kilométeres távolságból vezeték nélkül figyeli az érzékelő leolvasását. A küldő a DHT11 érzékelő segítségével leolvassa a páratartalom és a hőmérséklet adatait. Aztán továbbítja
IOT kezdőknek-csomóponttal Mcu: 7 lépés
IOT kezdőknek-csomóponttal Mcu: Szia, Sam Sam, ebben az oktatóanyagban megtanítom, hogyan hozhat létre saját IOT-projekteket a NODE MCU wifi modul és a Blynk alkalmazás segítségével
Talajnedvesítés csomóponttal: 7 lépés
Talajnedvesítő csomóponttal: Ebben a kézikönyvben megmutatom, hogyan készítsen házi talajérzékelőt a kertészségügyi rendszerhez. Megmutatom, mire van szüksége, adok néhány példát a kódra, és hogyan kell végrehajtani a kódot. Az utasítások végén tudni fogja, hogyan kell megváltoztatni a led szalagot
Csatlakozó szervomotor csomóponttal MCU: 6 lépés (képekkel)
Szervo motor illesztése a NodeMCU -val: Hello mindenkinek! Ez az első Instructable projektem. Tehát el szeretné kezdeni a NodeMCU -t? Nos, itt vagyok, hogy megosszam veletek. Ma megmutatom, hogyan kell elkezdeni a NodeMCU használatát. Induljunk! A NodeMCU ESP8266-12E fedélzetén a b