मैं सेंसर से बात करने के लिए I2C का उपयोग कैसे कर सकता हूं?


29

I²C इंटरफ़ेस पर मैं डिजिटल सेंसर से कैसे बात कर सकता हूं?

हार्डवेयर:
रास्पबेरी पाई के GPIO पर कौन से पिन का उपयोग कर सकता हूं?

सॉफ्टवेयर:
I²C लाइब्रेरी क्या उपलब्ध हैं?

जवाबों:


23

आरपीआई के GPIO के बारे में बहुत सारी जानकारी यहाँ है: http://elinux.org/Rpi_Low-level_peripherals

इसके अनुसार, आप I ,C के लिए कोई भी GPIO पिन प्रोग्राम कर सकते हैं, लेकिन:

पिन 3 (SDA0) और पिन 5 (SCL0) I toC इंटरफ़ेस के रूप में उपयोग किए जाने के लिए पूर्व निर्धारित हैं। तो इन पिनों के लिए बोर्ड पर 1.8 किलोहोम पुल को रोकने वाले होते हैं।

उस विकी पृष्ठ में विभिन्न भाषाओं के लिए कुछ निम्न-स्तरीय GPIO कोड उदाहरण हैं जो आपको आरंभ करने चाहिए। यदि आपको I²C वास्तव में क्या है पर एक पुनश्चर्या की आवश्यकता है, तो यहां एक है जो आरपीआई को भी ध्यान में रखता है।

विशिष्ट I libraryC नियंत्रण के लिए, यह अजगर पुस्तकालय सहायक हो सकता है, इस ब्लॉग पोस्ट में इसकी चर्चा की गई है , जिसमें एक कोड नमूना शामिल है।


I2C के लिए एडिसन स्पार्कफुन GPIO पिन को गोद लेने की क्षमता पर कोई टिप्पणी?
जियोथैरी

7

इसे लेकर काफी चर्चाएं चल रही हैं। यहाँ मेरे पढ़ने और मेरे साथ खिलवाड़ करने के बारे में बताया गया है:

  1. I2C समर्थन को डेबियन "निचोड़" के साथ डिफ़ॉल्ट कर्नेल में नहीं बनाया गया है
  2. एक कस्टम कर्नेल को i2cspi मॉड्यूल के साथ संकलित करना होगा ( यहाँ GIT ट्री अंश है )
  3. अब तक लिखे गए ड्राइवर केवल 3.2 कर्नेल और बाद के लिए हैं, और लेखक को सुरक्षा छेदों के अंतराल के कारण 3.1.9+ का समर्थन करने का कोई इरादा नहीं है ( क्रिस बूट ड्राइवर पर चर्चा करता है )
  4. भाग्य के साथ, डेबियन "मट्ठा" वितरण, वर्तमान में रासपी के लिए बीटा में है, इस पर इस ड्राइवर होगा। यह 3.2 कर्नेल के साथ आता है।

2
हां, जैसा कि आप उल्लेख करते हैं कि इसे अब मानक कर्नेल में बनाया गया है - आधिकारिक रास्पियन और डेबियन मित्ज़ी डिस्ट्रोस दोनों। मैंने यहां कुछ सलाह का पालन किया, जिसका पालन करना आसान है और मेरे पास I2C डिवाइसेज़ / देव में दिख रहे हैं ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 आवश्यकता होने पर थोड़ा और विस्तार करें: रोबोट- Electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

अधिक विस्तृत जानकारी प्राप्त करने के लिए, वेबलिंक्स के बजाय यहां डेटा रखें, और उम्मीद है कि यह तारीख से बाहर नहीं निकलेगा: जैसा कि Wheezy 2012-09-18 की छवि के लिए, आप संपादित /etc/modprobe.d/raspi-blacklist.confकरते हैं और प्रविष्टि के लिए टिप्पणी करते हैं i2c-bcm2708; फिर संपादित करें /etc/modulesऔर संलग्न करें i2c-dev; फिर रिबूट। अब आपके पास एक /dev/i2c-0विशेष फ़ाइल होनी चाहिए , जिसका उपयोग करना बहुत आसान है।
डेमियन


2

हार्डवेयर:

जैसा कि टैपिओ ने उल्लेख किया है, हार्डवेयर http://elinux.org/Rpi_Low-level_peripherals पर अच्छी तरह से प्रलेखित है

सॉफ्टवेयर:

लिनक्स यूजरस्पेस ( #include <linux/i2c-dev.h>) में एक i2c-dev हेडर है । इसके अलावा आपको पढ़ने के लिए एक चरित्र निर्णायक की आवश्यकता है। यह सही मॉड्यूल लोड करके किया जा सकता है। i2c_bcm2708निम्न स्तर के चालक के लिए और i2c-devचरित्रों के लिए निर्णय लेने के लिए। लागू करें ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

मक्खी पर उन्हें लोड करने के लिए। लागू करें ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

और unblacklist i2c_bcm2708में /etc/modprobe.d/raspi-blacklist.confबनाने के लिए /dev/i2c-0और /dev/i2c-1स्थायी रूप से दिखाई देते हैं।

अब से आप I delC डेल मेस्ट्रो का उपयोग करने के तरीके के संकेतों का अनुसरण कर सकते हैं ।

मैं इस विधि को दूसरों पर पसंद करता हूं, क्योंकि यह प्लेटफ़ॉर्नास्टिक है। आपका linux/i2c-dev.hअन्य उपकरणों के साथ भी उपयोग कर सकता है, जब तक कि निम्न स्तर का I driverC ड्राइवर मौजूद है।

सादर

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.