विषयसूची:

TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल - Arduino और NodeMCU के साथ: 11 चरण
TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल - Arduino और NodeMCU के साथ: 11 चरण

वीडियो: TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल - Arduino और NodeMCU के साथ: 11 चरण

वीडियो: TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल - Arduino और NodeMCU के साथ: 11 चरण
वीडियो: Using Arduino, TCA9548A and I2C OLED 2024, जून
Anonim
Image
Image

क्या आप कभी ऐसी स्थिति में आए हैं, जहां आपको दो, तीन या अधिक I2C सेंसर को अपने Arduino पर वायर करना था, बस यह महसूस करने के लिए कि सेंसर का एक निश्चित या समान I2C पता है। इसके अलावा, आपके पास एक ही एसडीए/एससीएल पिन पर एक ही पते वाले दो डिवाइस नहीं हो सकते हैं!

तो आपके विकल्प क्या हैं? उन सभी को एक ही बस में एक दूसरे से बात करने के लिए TCA9548A 1-to-8 I2C मल्टीप्लेक्सर पर रखें! TCA9548A ब्रेकआउट कई I2C उपकरणों के साथ संचार को सक्षम बनाता है जिनके पास एक ही पता होता है जिससे उनके साथ इंटरफेस करना आसान हो जाता है।

चरण 1: हार्डवेयर आवश्यकता

शामिल विषय
शामिल विषय

इस ट्यूटोरियल के लिए हमें चाहिए:

- ब्रेड बोर्ड

- TCA9548A I2C मल्टीप्लेक्सर

- Arduino Uno/Nano जो कुछ भी आसान है

- नोडएमसीयू

- कुछ 0.91 और 0.96 I2C OLED डिस्प्ले

- जम्पर केबल्स, और

- यूएसबी केबल कोड अपलोड करने के लिए

चरण 2: कवर किए गए विषय

हम I2C तकनीक की मूल बातें समझकर अपनी चर्चा शुरू करेंगे

फिर हम TCA9548A मल्टीप्लेक्सर के बारे में जानेंगे और कैसे मास्टर और दास I2C तकनीक का उपयोग करके डेटा भेजता और प्राप्त करता है, फिर हम यह जांचेंगे कि हम Arduino और NodeMCU का उपयोग करके अपने प्रोजेक्ट में मल्टीप्लेक्सर को कैसे प्रोग्राम और उपयोग कर सकते हैं। अगला, मैं आपको एक त्वरित दिखाऊंगा 8 I2C OLED डिस्प्ले का उपयोग करके डेमो और अंत में हम TCA9548A मल्टीप्लेक्सर के फायदे और नुकसान पर चर्चा करके ट्यूटोरियल को समाप्त करेंगे।

चरण 3: I2C बस की मूल बातें

I2C बस की मूल बातें
I2C बस की मूल बातें
I2C बस की मूल बातें
I2C बस की मूल बातें
I2C बस की मूल बातें
I2C बस की मूल बातें

इंटर-एकीकृत सर्किट का उच्चारण I-वर्ग-सी (I²C) या I2C एक दो तार बस तकनीक है (अच्छी तरह से वास्तव में 4 तार क्योंकि आपको VCC और ग्राउंड की भी आवश्यकता होती है) जिसका उपयोग कई प्रोसेसर और सेंसर के बीच संचार के लिए किया जाता है।

दो तार हैं:

* एसडीए - सीरियल डेटा (डेटा लाइन) और

* एससीएल - सीरियल क्लॉक (घड़ी लाइन)

याद रखें, ये दोनों लाइनें 'सिंक्रोनस' 'बिडायरेक्शनल' 'ओपन-ड्रेन' हैं और 'रेसिस्टर्स के साथ पुल-अप' हैं।

I2C बस तकनीक को मूल रूप से फिलिप्स सेमीकंडक्टर्स द्वारा 80 के दशक की शुरुआत में डिजाइन किया गया था ताकि एक ही सर्किट बोर्ड पर रहने वाले घटकों के बीच आसान संचार की अनुमति मिल सके।

I2C के साथ, आप कई दासों को एक मास्टर (जैसे SPI) से जोड़ सकते हैं या आपके पास एकल या एकाधिक दासों को नियंत्रित करने वाले कई स्वामी हो सकते हैं। स्वामी और दास दोनों डेटा संचारित और प्राप्त कर सकते हैं। तो, I2C बस में एक उपकरण इन चार राज्यों में से एक में हो सकता है:

* मास्टर ट्रांसमिट - मास्टर नोड दास को डेटा भेज रहा है * मास्टर प्राप्त - मास्टर नोड दास से डेटा प्राप्त कर रहा है

* स्लेव ट्रांसमिट - स्लेव नोड मास्टर को डेटा भेज रहा है

* स्लेव रिसीव - स्लेव नोड मास्टर से डेटा प्राप्त कर रहा है

I2C एक 'शॉर्ट डिस्टेंस' 'सीरियल कम्युनिकेशन प्रोटोकॉल' है, इसलिए डेटा को सिंगल वायर या SDA लाइन के साथ 'बिट-बाय-बिट' ट्रांसफर किया जाता है। बिट्स के आउटपुट को मास्टर और स्लेव के बीच 'साझा' घड़ी सिग्नल द्वारा बिट्स के नमूने के लिए सिंक्रनाइज़ किया जाता है। घड़ी के संकेत को हमेशा गुरु द्वारा नियंत्रित किया जाता है। मास्टर घड़ी उत्पन्न करता है और दासों के साथ संचार शुरू करता है।

तो, इसे योग करने के लिए>

प्रयुक्त तारों की संख्या: 2

सिंक्रोनस या एसिंक्रोनस: सिंक्रोनस

सीरियल या समानांतर: सीरियल

क्लॉक सिग्नल द्वारा नियंत्रित: मास्टर नोड

प्रयुक्त वोल्टेज: +5 वी या +3.3 वी

मास्टर्स की अधिकतम संख्या: असीमित

दासों की अधिकतम संख्या: 1008

अधिकतम गति: मानक मोड = 100kbps

फास्ट मोड = 400kbps

हाई स्पीड मोड = 3.4 एमबीपीएस

अल्ट्रा फास्ट मोड = 5 एमबीपीएस

चरण 4: TCA9548A I2C बहुसंकेतक मॉड्यूल

TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल
TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल
TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल
TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल
TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल
TCA9548A I2C मल्टीप्लेक्सर मॉड्यूल

TCA9548A एक आठ-चैनल (द्विदिशात्मक) I2C मल्टीप्लेक्सर है जो आठ अलग-अलग I2C उपकरणों को एकल होस्ट I2C बस द्वारा नियंत्रित करने की अनुमति देता है। आपको बस I2C सेंसर को SCn / SDn मल्टीप्लेक्स बसों में वायर करने की आवश्यकता है। उदाहरण के लिए, यदि किसी एप्लिकेशन में आठ समान OLED डिस्प्ले की आवश्यकता है, तो प्रत्येक डिस्प्ले में से प्रत्येक को इनमें से प्रत्येक चैनल से जोड़ा जा सकता है: 0-7।

मल्टीप्लेक्सर माइक्रो-कंट्रोलर के VIN, GND, SDA और SCL लाइनों से जुड़ता है। ब्रेकआउट बोर्ड 1.65v से 5.5v तक VIN स्वीकार करता है। इनपुट एसडीए और एससीएल दोनों लाइनें 10K पुल-अप रेसिस्टर के माध्यम से वीसीसी से जुड़ी हैं (पुल-अप रेसिस्टर का आकार I2C लाइनों पर कैपेसिटेंस की मात्रा से निर्धारित होता है)। मल्टीप्लेक्सर सामान्य (100 kHz) और तेज़ (400 kHz) I2C प्रोटोकॉल दोनों का समर्थन करता है। TCA9548A के सभी I/O पिन 5-वोल्ट सहिष्णु हैं और इसका उपयोग उच्च से निम्न या निम्न से उच्च वोल्टेज में अनुवाद करने के लिए भी किया जा सकता है।

TCA9548A के सभी चैनलों पर पुल-अप रेसिस्टर्स लगाना एक अच्छा विचार है, भले ही वोल्टेज समान हों। इसका कारण आंतरिक NMOS स्विच है। यह उच्च वोल्टेज को बहुत अच्छी तरह से प्रसारित नहीं करता है, दूसरी ओर यह कम वोल्टेज को बहुत अच्छी तरह से प्रसारित करता है। TCA9548A का उपयोग वोल्टेज अनुवाद के लिए भी किया जा सकता है, जिससे प्रत्येक SCn/SDn जोड़ी पर अलग-अलग बस वोल्टेज के उपयोग की अनुमति मिलती है जैसे कि 1.8-V, 2.5-V, या 3.3-V भाग 5-V भागों के साथ संचार कर सकते हैं। यह मास्टर और प्रत्येक दास चैनल के लिए वांछित वोल्टेज तक बस को खींचने के लिए बाहरी पुल-अप प्रतिरोधों का उपयोग करके प्राप्त किया जाता है।

यदि माइक्रो-कंट्रोलर बस संघर्ष या अन्य अनुचित संचालन का पता लगाता है तो TCA9548A को RESET पिन को कम करके रीसेट किया जा सकता है।

चरण 5:

छवि
छवि
छवि
छवि
छवि
छवि

TCA9548 एकल माइक्रो-नियंत्रक को प्रत्येक सेंसर स्लेव सब-बस को एक अद्वितीय चैनल निर्दिष्ट करके समान या भिन्न I2C पते के साथ '64 सेंसर' तक संचार करने की अनुमति देता है।

जब हम कई उपकरणों पर 2 तारों से अधिक डेटा भेजने की बात करते हैं तो हमें उन्हें संबोधित करने के तरीके की आवश्यकता होती है। यह उसी तरह है जैसे डाकिया एक ही सड़क पर आकर डाक के पैकेट अलग-अलग घरों में छोड़ देता है क्योंकि उन पर अलग-अलग पते लिखे होते हैं।

आप एक ही I2C संबोधित भागों के 64 को नियंत्रित करने के लिए 0x70-0x77 पतों पर एक साथ जुड़े इन मल्टीप्लेक्सरों में से अधिकतम 8 हो सकते हैं। तीन एड्रेस बिट्स A0, A1 और A2 को VIN से जोड़कर आप पतों के विभिन्न संयोजन प्राप्त कर सकते हैं। इस प्रकार TCA9548A का एड्रेस बाइट दिखता है। दास पता बनाने के लिए पहले 7-बिट्स गठबंधन करते हैं। दास पते का अंतिम बिट प्रदर्शन किए जाने वाले ऑपरेशन (पढ़ने या लिखने) को परिभाषित करता है। जब यह उच्च (1) होता है, तो एक पठन का चयन किया जाता है, जबकि कम (0) एक लेखन कार्य का चयन करता है।

चरण 6: मास्टर कैसे डेटा भेजता और प्राप्त करता है

मास्टर कैसे डेटा भेजता और प्राप्त करता है
मास्टर कैसे डेटा भेजता और प्राप्त करता है
मास्टर कैसे डेटा भेजता और प्राप्त करता है
मास्टर कैसे डेटा भेजता और प्राप्त करता है

एक दास डिवाइस तक पहुंचने के लिए मास्टर के लिए सामान्य प्रक्रिया निम्नलिखित है:

1. यदि कोई मास्टर किसी दास को डेटा भेजना चाहता है (लिखता है):

- मास्टर-ट्रांसमीटर एक START कंडीशन भेजता है, जिसके बाद स्लेव-रिसीवर के पते और R/W को 0 पर सेट किया जाता है।

- मास्टर-ट्रांसमीटर '8-बिट कंट्रोल रजिस्टर' में दास-रिसीवर को डेटा भेजता है जब दास स्वीकार करता है कि यह तैयार है

- मास्टर-ट्रांसमीटर एक STOP शर्त के साथ स्थानांतरण को समाप्त करता है

2. यदि कोई मास्टर किसी दास (रीड्स) से डेटा प्राप्त करना या पढ़ना चाहता है:

- मास्टर-रिसीवर एक START कंडीशन भेजता है, उसके बाद स्लेव-रिसीवर के पते और आर/डब्ल्यू 1 पर सेट होता है

- मास्टर-रिसीवर अनुरोधित रजिस्टर को दास-ट्रांसमीटर को पढ़ने के लिए भेजता है

- मास्टर-रिसीवर दास-ट्रांसमीटर से डेटा प्राप्त करता है

- एक बार सभी बाइट प्राप्त हो जाने के बाद मास्टर संचार को रोकने और बस को छोड़ने के लिए दास को NACK सिग्नलिंग भेजता है

- मास्टर-रिसीवर एक STOP शर्त के साथ स्थानांतरण को समाप्त करता है

स्टॉप कंडीशन के बाद एसडीए और एससीएल दोनों लाइन ऊंची होने पर बस को निष्क्रिय माना जाता है।

चरण 7: कोड

कोड
कोड

अब, इंट कोड "वायर" लाइब्रेरी को शामिल करके और मल्टीप्लेक्सर्स एड्रेस को परिभाषित करके शुरू करता है।

#शामिल "वायर.एच"

#शामिल "U8glib.h"

#define MUX_Address 0x70 // TCA9548A एनकोडर पता

फिर हमें उस पोर्ट का चयन करना होगा जिससे हम संवाद करना चाहते हैं और इस फ़ंक्शन का उपयोग करके उस पर डेटा भेजना चाहते हैं:

शून्य चयनI2Cचैनल (uint8_t i) {

अगर (i> 7) वापसी;

Wire.beginTransmission (MUX_Address);

Wire.write(1 << i);

वायर.एंडट्रांसमिशन ();

}

आगे हम "u8g.begin ();" को कॉल करके सेटअप सेक्शन में डिस्प्ले को इनिशियलाइज़ करेंगे। MUX से जुड़े प्रत्येक डिस्प्ले के लिए "tcaselect(i);"

एक बार इनिशियलाइज़ हो जाने के बाद, हम केवल "tcaselect(i);" फ़ंक्शन को कॉल करके जो चाहें कर सकते हैं। जहां "i" मल्टीप्लेक्स बस का मूल्य है और फिर उसके अनुसार डेटा और घड़ी भेज रहा है।

चरण 8: I2C स्कैनर

I2C स्कैनर
I2C स्कैनर

यदि आप अपने I2C शील्ड के डिवाइस पते के बारे में सुनिश्चित नहीं हैं, तो अपने डिवाइस का हेक्स पता खोजने के लिए संलग्न 'I2C स्कैनर' कोड चलाएं। जब एक Arduino पर लोड किया जाता है, तो स्केच I2C नेटवर्क को स्कैन करेगा, जो उन पतों को दिखाएगा जो प्रतिक्रिया दे रहे हैं।

चरण 9: वायरिंग और डेमो

वायरिंग और डेमो
वायरिंग और डेमो
वायरिंग और डेमो
वायरिंग और डेमो

तारों:

मल्टीप्लेक्सर को एक NodeMCU बोर्ड से जोड़कर शुरू करते हैं। जुडिये:

VIN से 5V (या 3.3V)

जीएनडी टू ग्राउंड

एसडीए से डी२ और

SCL से D1 पिन क्रमशः

एक Arduino बोर्ड कनेक्ट के लिए:

VIN से 5V (या 3.3V)

जीएनडी टू ग्राउंड

एसडीए से ए4 और

SCL से A5 पिन क्रमशः

एक बार जब MUX को माइक्रो-कंट्रोलर से जोड़ दिया जाता है, तो आपको बस सेंसर को SCn / SDn जोड़े से कनेक्ट करने की आवश्यकता होती है।

अब, इस त्वरित डेमो को देखें जिसमें मैंने 8 OLED डिस्प्ले को TCA9548A मल्टीप्लेक्सर से जोड़ा है। चूंकि ये डिस्प्ले I2C संचार का उपयोग करते हैं, वे सिर्फ 2 पिन का उपयोग करके Arduino के साथ संचार करते हैं।

चरण 10: फायदे और नुकसान

फायदे और नुकसान
फायदे और नुकसान

फायदे

* संचार के लिए केवल दो बस लाइनों (तार) की आवश्यकता होती है

* सभी घटकों के बीच एक साधारण स्वामी / दास संबंध मौजूद हैं

* उदाहरण के लिए RS232 के साथ कोई सख्त बॉड दर की आवश्यकता नहीं है, मास्टर बस घड़ी उत्पन्न करता है

* हार्डवेयर UARTs की तुलना में कम जटिल है

* कई स्वामी और कई दासों का समर्थन करता है

* ACK/NACK बिट पुष्टि करता है कि प्रत्येक फ्रेम सफलतापूर्वक स्थानांतरित हो गया है

* I2C एक 'सच्ची मल्टी-मास्टर बस' है जो मध्यस्थता और टक्कर का पता लगाने की सुविधा प्रदान करती है

* बस से जुड़ा प्रत्येक उपकरण एक अद्वितीय पते द्वारा सॉफ्टवेयर-एड्रेसेबल है

* अधिकांश I2C डिवाइस 100kHz या 400kHz पर संचार कर सकते हैं

* I²C बाह्य उपकरणों के लिए उपयुक्त है जहां सादगी और कम निर्माण लागत गति से अधिक महत्वपूर्ण है

* प्रसिद्ध और व्यापक रूप से इस्तेमाल किया जाने वाला प्रोटोकॉल

नुकसान

* SPI की तुलना में धीमी डेटा अंतरण दर

* डेटा फ्रेम का आकार 8 बिट तक सीमित है

* SPI तकनीक की तुलना में अधिक जटिल हार्डवेयर को लागू करने की आवश्यकता है

सिफारिश की: