विषयसूची:

रास्पबेरी पीआई एकाधिक I2C डिवाइस: 3 चरण
रास्पबेरी पीआई एकाधिक I2C डिवाइस: 3 चरण

वीडियो: रास्पबेरी पीआई एकाधिक I2C डिवाइस: 3 चरण

वीडियो: रास्पबेरी पीआई एकाधिक I2C डिवाइस: 3 चरण
वीडियो: Arduino interface with Raspberry Pi using I2C 2024, जुलाई
Anonim
रास्पबेरी पीआई एकाधिक I2C डिवाइस
रास्पबेरी पीआई एकाधिक I2C डिवाइस
रास्पबेरी पीआई एकाधिक I2C डिवाइस
रास्पबेरी पीआई एकाधिक I2C डिवाइस

निराश हैं क्योंकि आप अपने प्रोजेक्ट में समान I2C उपकरणों के गुणकों का उपयोग नहीं कर सकते हैं। धीमी मल्टीप्लेक्सर्स का उपयोग करने की आवश्यकता नहीं है। नवीनतम रास्पियन कर्नेल GPIO पिन का उपयोग करके कई I2C बसों के निर्माण का समर्थन करता है। यह समाधान सुपर फास्ट है।

चरण 1: कुछ शेल कमांड

कुछ शैल कमांड
कुछ शैल कमांड

अपने रास्पबेरी पाई के होने पर अपने i2c उपकरणों में से एक को कनेक्ट करें, अपना रास्पबेरी पाई शुरू करें और चलाएं

sudo i2cdetect -y 1

आपको संलग्न आकृति की तरह एक तालिका दिखाई देगी। मैंने एक BMP280 अस्थायी और बैरोमीटर का दबाव सेंसर संलग्न किया है। तालिका के अनुसार i2c पता 0x76 है। इस पते पर ध्यान दें।

अपने सभी i2c उपकरणों के लिए ऐसा करें।

चरण 2: केस वन: I2c डिवाइसेस का पता समान होता है

केस वन: I2c डिवाइसेस का एक ही पता है
केस वन: I2c डिवाइसेस का एक ही पता है

यह हमेशा समस्याग्रस्त मामला था। एक i2c बस कई उपकरणों को संभाल सकती है, लेकिन उनके पास अलग-अलग i2c पते होने चाहिए। कुछ i2c उपकरणों में अन्य i2c पते सेट करने के लिए जम्पर होते हैं, लेकिन कई नहीं। इस मामले में आप i2c एसडीए (डेटा) और एससीएल (घड़ी) को घुमाने के लिए i2c मल्टीप्लेक्सर (हार्डवेयर) का उपयोग कर सकते हैं या आप एक अतिरिक्त i2c बस या अधिक बना सकते हैं।

मैं दो अतिरिक्त बसें बनाऊंगा, nl बस 3 और 4

क्ली खोलें और रन करें

सीडी / बूट

सुडो नैनो config.txt

कोड की निम्न पंक्ति जोड़ें, उस अनुभाग में बेहतर है जहां spi और i2c सक्षम है।

dtoverlay=i2c-gpio, बस=4, i2c_gpio_delay_us=1, i2c_gpio_sda=23, i2c_gpio_scl=24

यह लाइन GPIO 23 पर SDA और GPIO 24 पर SCL (GPIO 23 और 24 डिफ़ॉल्ट है) के रूप में एक अतिरिक्त i2c बस (बस 4) बनाएगी।

i2c बस 3 बनाने के लिए निम्न पंक्ति भी जोड़ें:

dtoverlay=i2c-gpio, बस=3, i2c_gpio_delay_us=1, i2c_gpio_sda=17, i2c_gpio_scl=27

GPIO 17 SDA होगा और GPIO 27 i2c बस 4 के लिए SCL होगा।

बाहर निकलने के लिए X को नियंत्रित करें।

बस नंबरिंग और ऑर्डर पर नोट:

बस 0 और 2 का कभी भी उपयोग न करें, यह बोर्ड में अन्य चीजों के लिए उपयोग किया जाता है जैसे टोपी पर एप्रोम आदि

अप्रैल 2019 रास्पियन रिलीज़ के लिए:

आपको हमेशा अपने config.txt में उच्चतम बस (इस मामले में बस 4) से शुरू करना चाहिए और सबसे कम बस (बस 3) के माध्यम से काम करना चाहिए।

सबसे कम बस हमेशा 3. की बस होनी चाहिए

यदि आपको 5 अतिरिक्त बसों की आवश्यकता है, तो बसों को 7, 6, 5, 4, 3. के क्रम में द्विगुणित करना होगा

बस आदेश पर यह समस्या तब नहीं थी जब यह निर्देश मूल रूप से लिखा गया था। ऐसा लगता है कि कर्नेल में परिवर्तन किए गए थे।

अपना पीआई बंद करें, इसे स्विच करें। अपने i2c उपकरणों को बस 4 (SDA से GPIO 23 और SCL से GPIO 24) और दूसरे को i2c बस 3 (SDA से GPIO 17 और SCL से GPIO 27) से कनेक्ट करें।

पीआई चालू करें।

Daud:

sudo i2cdetect -l (लोअर केस L)

अब आप देखेंगे कि i2c बस 3 और 4 भी सूचीबद्ध है। यह भी चलाएं:

सूडो i2cdetect -y 3

sudo i2cdetect -y 4

अब आप अपने सेंसर का उपयोग अपनी प्रोग्रामिंग भाषा में कर सकते हैं। सही i2c बसों को निर्दिष्ट करना याद रखें।

अटैच लोकप्रिय BMP280 तापमान और दबाव सेंसर के लिए एक उदाहरण है। कोई भी मल्टीप्लेक्सर इतनी तेजी से 2 बीएमपी280 नहीं पढ़ सकता।

2 Sensirion SDP 810 सेंसर का एक उदाहरण भी संलग्न है। मैं अतीत में इस्तेमाल किए गए मल्टीप्लेक्सर की तुलना में फिर से बहुत तेजी से काम कर रहा हूं

मैंने एडफ्रूट से दो नए बीएमपी 388 पढ़ने के लिए पायथन कोड बनाया है।

मैं भविष्य में https://github.com/JJSlabbert/Raspberry_PI_i2C_conficts में अन्य सेंसर भी जोड़ सकता हूं

चरण 3: केस 2: विभिन्न I2c पते।

सरल। i2c एक बस है। एक बस का उद्देश्य कई उपकरणों के साथ संचार करना है। उपकरणों को समान i2c बस के समानांतर कनेक्ट करें। आप बस एक का उपयोग कर सकते हैं।

Daud:

sudo i2cdetect -y 1

आप सूचीबद्ध उपकरणों को देखेंगे।

सिफारिश की: