Mundarija:
- 1 -qadam: Uskuna talablari
- 2 -qadam: Mavzular
- 3 -qadam: I2C avtobusining asoslari
- 4 -qadam: TCA9548A I2C multipleksor moduli
- 5 -qadam:
- 6 -qadam: usta ma'lumotni qanday yuboradi va oladi
- 7 -qadam: kod
- 8 -qadam: I2C skaneri
- 9 -qadam: simlar va demo
- 10 -qadam: afzalliklari va kamchiliklari
- 11 -qadam: Rahmat
Video: TCA9548A I2C Multiplexer moduli - Arduino va NodeMCU bilan: 11 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Siz qachondir shunday vaziyatga tushib qolganmisizki, datchiklar I2C -ning aniq yoki bir xil manziliga ega ekanligini bilish uchun Arduino -ga ikki, uch yoki undan ko'p I2C sensorlarini ulashingiz kerak bo'ladi. Bundan tashqari, siz bir xil SDA/SCL pinlarida bir xil manzilga ega ikkita qurilmaga ega bo'lolmaysiz!
Xo'sh, sizning variantlaringiz qanday? Hammasini bitta avtobusda bir-birlari bilan gaplashish uchun TCA9548A 1 dan 8 gacha I2C multipleksoriga qo'ying! TCA9548A Breakout bir xil manzilga ega bo'lgan bir nechta I2C qurilmalari bilan aloqa o'rnatishga imkon beradi, ular bilan aloqa o'rnatishni osonlashtiradi.
1 -qadam: Uskuna talablari
Bu darslik uchun bizga kerak:
- Non paneli
- TCA9548A I2C multipleksor
- Arduino Uno/Nano nima qulay bo'lsa
- NodeMCU
- Bir nechta 0,91 va 0,96 I2C OLED displeylari
- o'tish kabellari va
- Kodni yuklash uchun USB kabeli
2 -qadam: Mavzular
Biz munozaramizni I2C texnologiyasi asoslarini tushunishdan boshlaymiz
Keyin biz TCA9548A Multiplexer va xo'jayin va qul I2C texnologiyasidan foydalangan holda ma'lumotlarni qanday yuborishi va qabul qilishi haqida bilib olamiz, keyin biz Arduino va NodeMCU yordamida loyihamizda multipleksorni qanday dasturlashimiz va ishlatishimiz mumkinligini ko'rib chiqamiz. demo 8 I2C OLED -displey yordamida va nihoyat biz TCA9548A Multiplexer -ning afzalliklari va kamchiliklarini muhokama qilib, darslikni yakunlaymiz.
3 -qadam: I2C avtobusining asoslari
I-kvadratli C (I²C) yoki I2C deb nomlangan birlashtirilgan elektron sxemasi-bu ikkita protsessor va sensorlar o'rtasida aloqa qilish uchun ishlatiladigan ikkita simli avtobus texnologiyasi (aslida 4 simli, chunki sizga VCC va Ground ham kerak).
Ikkita sim:
* SDA - ketma -ket ma'lumotlar (ma'lumotlar liniyasi) va
* SCL - Seriyali soat (soat chizig'i)
Esingizda bo'lsin, bu ikkala chiziq ham "sinxron" ikki tomonlama "ochiq drenaj" va "qarshilik bilan tortilgan".
I2C avtobus texnologiyasi dastlab 80 -yillarning boshlarida Philips Semiconductors tomonidan bitta elektron platada joylashgan komponentlar o'rtasida oson aloqa o'rnatish uchun ishlab chiqilgan.
I2C yordamida siz bir nechta qullarni bitta masterga ulashingiz mumkin (SPI kabi) yoki bitta yoki bir nechta qulni boshqaradigan bir nechta ustalar bo'lishi mumkin. Xo'jayinlar ham, qullar ham ma'lumotlarni uzatishi va qabul qilishi mumkin. Shunday qilib, I2C avtobusidagi qurilma ushbu to'rt holatning birida bo'lishi mumkin:
* Asosiy uzatish - asosiy tugun ma'lumotni qulga yuboradi* Asosiy qabul - asosiy tugun ma'lumotni quldan oladi
* Qul uzatish - qul tugunlari ma'lumotlarni masterga yuboradi
* Qulni qabul qilish - qul tuguni xo'jayindan ma'lumotlarni oladi
I2C-"qisqa masofali" ketma-ket aloqa protokoli, shuning uchun ma'lumotlar bitta sim yoki SDA chizig'i bo'ylab "bit-byt" uzatiladi. Bitlarning chiqishi xo'jayin va qul o'rtasida "ulashilgan" soat signallari yordamida bitlarni tanlash bilan sinxronlashtiriladi. Soat signali har doim usta tomonidan boshqariladi. Usta soatni ishlab chiqaradi va qullar bilan muloqotni boshlaydi.
Xulosa qilib aytganda>
Ishlatilgan simlar soni: 2
Sinxron yoki asenkron: sinxron
Seriyali yoki parallel: ketma -ket
Soat signalini boshqaruvchi: Master tugun
Ishlatiladigan kuchlanish: +5 V yoki +3,3 V
Magistrlarning maksimal soni: cheksiz
Qullarning maksimal soni: 1008
Maksimal tezlik: standart rejim = 100 kbit / s
Tez rejim = 400 kbit / s
Yuqori tezlik rejimi = 3,4 Mbit / s
Ultra tez rejim = 5 Mbit / s
4 -qadam: TCA9548A I2C multipleksor moduli
TCA9548A-sakkiz kanalli (ikki tomonlama) I2C multipleksor bo'lib, u sakkizta alohida I2C qurilmasini bitta mezbon I2C avtobusi bilan boshqarishga imkon beradi. Siz faqat I2C datchiklarini SCn / SDn multipleksli avtobuslariga ulashingiz kerak. Masalan, agar ilovaga sakkizta bir xil OLED-displey kerak bo'lsa, har bir displeydan bittasi bu kanallarning har biriga ulanishi mumkin: 0-7.
Multiplexer mikro-boshqaruvchining VIN, GND, SDA va SCL liniyalariga ulanadi. Ajratish paneli VINni 1.65v dan 5.5v gacha qabul qiladi. Ikkala kirish SDA va SCL liniyalari VCC ga 10K tortish qarshiligi orqali ulanadi (tortish qarshiligining o'lchami I2C chiziqlaridagi sig'im miqdori bilan belgilanadi). Multipleksor oddiy (100 kHz) va tez (400 kHz) I2C protokollarini qo'llab -quvvatlaydi. TCA9548A-ning barcha kirish-chiqish pinlari 5 voltli bardoshli bo'lib, ular yuqori kuchlanishdan pastgacha yoki pastdan yuqori kuchlanishlarga o'tish uchun ham ishlatilishi mumkin.
TCA9548A ning barcha kanallariga, hatto kuchlanishlari bir xil bo'lsa ham, tortish rezistorlarini qo'yish yaxshi bo'ladi. Buning sababi ichki NMOS kaliti. U yuqori kuchlanishni juda yaxshi o'tkazmaydi, boshqa tomondan past kuchlanishlarni juda yaxshi o'tkazadi. TCA9548A kuchlanish tarjimasi uchun ham ishlatilishi mumkin, bu har bir SCn/SDn juftida har xil avtobus kuchlanishlarini ishlatishga imkon beradi, shunday qilib 1,8-V, 2,5-V yoki 3,3-V qismlari 5-V qismlari bilan aloqa qila oladi. Bunga avtobusni magistral va har bir qul kanal uchun kerakli kuchlanishga olib chiqish uchun tashqi tortuvchi rezistorlar yordamida erishiladi.
Agar mikrokontrolder avtobusda to'qnashuv yoki boshqa noto'g'ri ishlashni aniqlasa, TCA9548A ni RESET pinini past darajaga o'rnatish orqali tiklash mumkin.
5 -qadam:
TCA9548 bitta mikrokontrolderga har bir sensorli sub-avtobusga yagona kanal tayinlash orqali bir xil yoki har xil I2C manzili bo'lgan "64 ta sensorlar" bilan aloqa o'rnatishga imkon beradi.
Ma'lumotni bir nechta qurilmalarga 2 ta sim orqali yuborish haqida gapirganda, biz ularni hal qilish yo'lini topamiz. Bu pochtachining bitta yo'lda kelishi va pochta paketlarini har xil uylarga tashlab yuborishi bilan bir xil, chunki ular ustida turli manzillar yozilgan.
Siz bir xil I2C manzilli 64 qismni boshqarish uchun 0x70-0x77 manzillarga birlashtirilgan 8 ta multipleksorni ulashingiz mumkin. A0, A1 va A2 uchta manzil bitlarini VIN -ga ulash orqali siz manzillarning har xil kombinatsiyasini olishingiz mumkin. TCA9548A manzil bayti shunday ko'rinadi. Birinchi 7-bit birlashib, qul manzilini hosil qiladi. Qul manzilining oxirgi biti bajariladigan operatsiyani (o'qish yoki yozishni) belgilaydi. Agar u baland bo'lsa (1), o'qish tanlanadi, past (0) esa yozish jarayonini tanlaydi.
6 -qadam: usta ma'lumotni qanday yuboradi va oladi
Quyidagi uskuna qul qurilmaga kirishining umumiy tartibi:
1. Agar xo'jayin qulga ma'lumotlarni yubormoqchi bo'lsa (YOZADI):
-Master-transmitter START shartini yuboradi, keyin qul qabul qiluvchining manzillari va R/V 0 ga o'rnatiladi.
-Master-transmitter "8-bitli boshqaruv registrlari" dagi ma'lumotlarni qul qabul qiluvchiga yuboradi, agar qul tayyor ekanligini tan olganda.
-Master-transmitter STOP sharti bilan uzatishni to'xtatadi
2. Agar xo'jayin quldan ma'lumot olishni yoki o'qishni xohlasa (READS):
-Asosiy qabul qilgich START shartini yuboradi, keyin qul qabul qiluvchining manzillari va R/V 1 ga o'rnatiladi.
-Qabul qiluvchi-qabul qiluvchi talab qilingan registrni qul-uzatuvchiga o'qish uchun yuboradi
-Master-qabul qiluvchi ma'lumot uzatuvchi-uzatuvchi ma'lumotni oladi
- Barcha baytlar qabul qilingandan so'ng, Master NACK signalini xizmatkorga uzatishni to'xtatadi va avtobusni qo'yib yuboradi
- Master-qabul qiluvchi STOP sharti bilan uzatishni to'xtatadi
Agar STA holatidan keyin SDA va SCL liniyalari baland bo'lsa, avtobus bo'sh deb hisoblanadi.
7 -qadam: kod
Endi Int kodi "Wire" kutubxonasini qo'shish va multipleksorlarning manzilini aniqlash bilan boshlanadi.
#"Wire.h" ni qo'shing
#"U8glib.h" ni qo'shing
#dex MUX_Address 0x70 // TCA9548A Encoders manzilini aniqlang
Keyin biz aloqa qilmoqchi bo'lgan portni tanlashimiz va undagi ma'lumotlarni ushbu funktsiyadan foydalanib yuborishimiz kerak:
bekor qilingan IICChannels (uint8_t i) {
agar (i> 7) qaytsa;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Keyin "u8g.begin ();" deb qo'ng'iroq qilib, sozlash bo'limidagi displeyni ishga tushiramiz. MUX ga biriktirilgan har bir displey uchun "tcaselect (i);"
Boshlangandan so'ng, biz "tcaselect (i);" funktsiyasini chaqirib, xohlagan narsani qilishimiz mumkin. bu erda "i" - multipleksli avtobusning qiymati, so'ngra ma'lumot va soatni mos ravishda yuboradi.
8 -qadam: I2C skaneri
Agar siz I2C qalqonining qurilma manziliga ishonchingiz komil bo'lmasa, qurilmangizning oltilik manzilini topish uchun biriktirilgan 'I2C skaneri' kodini ishlating. Arduino -ga yuklanganda, eskiz javob berayotgan manzillarni ko'rsatib, I2C tarmog'ini skanerlaydi.
9 -qadam: simlar va demo
Ulanish:
Multiplexerni NodeMCU kartasiga ulashdan boshlaylik. Ulanmoq:
VIN - 5V (yoki 3.3V)
GND erga
SDA dan D2 gacha
SCL - D1 pinlari mos ravishda
Arduino platasi uchun ulang:
VIN - 5V (yoki 3.3V)
GND erga
SDA - A4 va boshqalar
SCL - A5 pinlari
MUX mikro-kontrollerga ulanganidan so'ng, datchiklarni SCn / SDn juftlariga ulash kifoya.
Keling, 8 ta OLED displeyni TCA9548A Multiplexer -ga ulagan tezkor demoni ko'rib chiqaylik. Bu displeylar I2C aloqasidan foydalanganligi uchun ular Arduino bilan atigi 2 ta pin yordamida aloqa o'rnatadilar.
10 -qadam: afzalliklari va kamchiliklari
Afzalliklari
* Aloqa uchun faqat ikkita avtobus liniyasi kerak (simlar)
* Barcha komponentlar o'rtasida oddiy xo'jayin/qul munosabatlari mavjud
* RS232 singari, tezlik uzatishda qat'iy talablar yo'q, usta avtobus soatini ishlab chiqaradi
* Uskuna UARTlarga qaraganda ancha murakkab
* Bir nechta xo'jayin va bir nechta qullarni qo'llab -quvvatlaydi
* ACK/NACK biti har bir freym muvaffaqiyatli o'tkazilganligini tasdiqlaydi
* I2C-bu hakamlik va to'qnashuvlarni aniqlashni ta'minlaydigan "haqiqiy ko'p tarmoqli avtobus"
* Avtobusga ulangan har bir qurilma o'ziga xos manzillar bilan dasturiy ta'minot bilan ta'minlanadi
* Aksariyat I2C qurilmalari 100 kHz yoki 400 kHz tezlikda muloqot qila oladi
* I²C periferiya qurilmalariga mos keladi, bu erda ishlab chiqarishning soddaligi va arzonligi tezlikdan muhimroq
* Ma'lum va keng qo'llaniladigan protokol
Kamchiliklari
* Ma'lumot uzatish tezligi SPIga qaraganda sekinroq
* Ma'lumotlar ramkasining o'lchami 8 bit bilan cheklangan
* SPI texnologiyasidan ko'ra murakkabroq uskunalar kerak
Tavsiya:
NodeMCU + eski noutbukning kamera moduli bilan CCTV kamerasi (Blynk bilan va ishlatmasdan): 5 qadam
NodeMCU + eski noutbukning kamera moduli bilan CCTV kamerasi (Blynk bilan va ishlatmasdan): Salom bolalar! Bu ko'rsatmada men sizga eski noutbukning kamera moduli va nodeMCU -dan CCTV -ga o'xshash narsalarni qanday ishlatganimni ko'rsataman
Bir nechta PZEM 004T ni Nodemcu moduli bilan ulang: 3 qadam
Bir nechta PZEM 004T -ni Nodemcu moduli bilan ulang: Quvvatni o'g'irlashni aniqlash tizimi yoki energiyani kuzatish tizimi kabi ba'zi loyihalarda bir nechta PZEM 004T modullari talab qilinadi, shuning uchun men bu erda Nodemcu kodini va 3 PZEM 004T modullarini Nodemcu.if bilan ulashini ta'minladim. keyin k
I2C xalta bilan 1602 LCD klaviatura qalqoni moduli: 6 qadam
I2C ryukzakli 1602 ta LCD klaviatura qalqoni moduli: Katta loyihaning bir qismi sifatida menda LCD displey va ba'zi oddiy menyularni boshqarish uchun klaviatura bo'lishi kerak edi. Men boshqa ishlarda Arduino -dagi ko'p kirish -chiqish portlaridan foydalanaman, shuning uchun men LCD uchun I2C interfeysini xohlardim. Shunday qilib, men qo'shimcha uskunalar sotib oldim
LCD displeyni I2C moduli bilan haydash: 8 qadam
LCD displeyni I2C moduli bilan boshqarish: Ushbu qo'llanmada biz LCD displey qanday ishlashini va uni I2C moduli bilan qanday osonroq ishlatishni bilib olamiz
E32-433T LoRa moduli bo'yicha qo'llanma - E32 moduli uchun DIY kesish taxtasi: 6 qadam
E32-433T LoRa moduli bo'yicha qo'llanma | E32 moduli uchun DIY Breakout Board: Hey, nima bo'ldi, bolalar! Akarsh bu erda CETech.Bu mening loyiham-E32 LoRa modulining ishlashini tushunish uchun eByte-dan, bu yuqori quvvatli 1 vattli qabul qiluvchi moduli. Ishni tushunganimizda, menda dizayn bor