- आवश्यक घटक:
- MPU6050 गायरो सेंसर:
- विवरण:
- सर्किट आरेख और स्पष्टीकरण:
- MPU6050 गायरो सेंसर के लिए रास्पबेरी पाई को कॉन्फ़िगर करना:
- प्रोग्रामिंग स्पष्टीकरण:
MPU6050 सेंसर में सिंगल चिप पर कई कार्य हैं। इसमें एक एमईएमएस एक्सेलेरोमीटर, एक एमईएमएस गायरो और तापमान सेंसर होता है। एनालॉग मॉड्यूल को डिजिटल में परिवर्तित करते समय यह मॉड्यूल बहुत सटीक है क्योंकि इसमें प्रत्येक चैनल के लिए डिजिटल कनवर्टर हार्डवेयर के लिए 16 बिट एनालॉग है। यह मॉड्यूल एक ही समय में x, y और z चैनल को पकड़ने में सक्षम है। होस्ट नियंत्रक के साथ संवाद करने के लिए इसमें I2C इंटरफ़ेस है। यह MPU6050 मॉड्यूल एक कॉम्पैक्ट चिप है जिसमें एक्सेलेरोमीटर और जाइरो दोनों हैं । यह ड्रोन, रोबोट, मोशन सेंसर जैसे कई अनुप्रयोगों के लिए एक बहुत ही उपयोगी उपकरण है। इसे गायरोस्कोप या ट्रिपल एक्सिस एक्सेलेरोमीटर भी कहा जाता है ।
आज इस लेख में हम रास्पबेरी पाई के साथ इस MPU6050 को इंटरफ़ेस करने जा रहे हैं और 16x2 एलसीडी पर मान दिखा रहे हैं।
आवश्यक घटक:
- रास्पबेरी पाई
- MPU-6050
- 10K पॉट
- जम्पर तार
- ब्रेड बोर्ड
- बिजली की आपूर्ति
MPU6050 गायरो सेंसर:
MPU-6050 एक सिंगल चिप में 8 पिन 6 एक्सिस गायरो और एक्सेलेरोमीटर है। यह मॉड्यूल डिफ़ॉल्ट रूप से I2C सीरियल संचार पर काम करता है लेकिन इसे एसपीआई इंटरफ़ेस के लिए कॉन्फ़िगर करके इसे रजिस्टर किया जा सकता है। I2C के लिए इसमें SDA और SCL लाइनें हैं। लगभग सभी पिन बहु-कार्यशील हैं लेकिन यहाँ हम केवल I2C मोड पिन के साथ आगे बढ़ रहे हैं।
पिन कॉन्फ़िगरेशन:
Vcc: - इस पिन का प्रयोग MPU6050 मॉड्यूल को ग्राउंडिंग के संबंध में शक्ति प्रदान करने के लिए किया जाता है
जीएनडी: - यह एक ग्राउंड पिन है
SDA: - SDA पिन का उपयोग कंट्रोलर और mpu6050 मॉड्यूल के बीच डेटा के लिए किया जाता है
SCL: - SCL पिन का उपयोग क्लॉक इनपुट के लिए किया जाता है
XDA: - यह सेंसर I2C एसडीए डेटा लाइन है जो बाहरी सेंसर से कॉन्फ़िगर करने और पढ़ने के लिए है ((वैकल्पिक) जिसका उपयोग हमारे मामले में नहीं किया गया है)
XCL: - यह सेंसर I2C SCL क्लॉक लाइन है जो बाहरी सेंसर से कॉन्फ़िगर करने और पढ़ने के लिए ((वैकल्पिक) हमारे मामले में उपयोग नहीं किया गया है)
ADO: - I2C स्लेव एड्रेस LSB (हमारे मामले में लागू नहीं)
INT: - तैयार डेटा के संकेत के लिए इंटरप्ट पिन।
हमने पहले Arduino के साथ MPU6050 को इंटर किया है।
विवरण:
इस लेख में, हम रास्पबेरी पाई के साथ MPU6050 का उपयोग करते हुए एलसीडी पर तापमान, gyro और एक्सेलेरोमीटर रीडिंग दिखा रहे हैं । यदि आप रास्पबेरी पाई के लिए नए हैं, तो हमारे रास्पबेरी पाई ट्यूटोरियल अनुभाग के माध्यम से जाएं और रास्पबेरी पाई के साथ शुरुआत करना सीखें।
इस परियोजना में, हमने पहले एलसीडी पर तापमान मान दिखाया है और कुछ समय बाद हम gyro मान दिखाते हैं और फिर कुछ समय बाद हमारे पास त्वरकमापी रीडिंग होती है जैसा कि नीचे दी गई छवियों में दिखाया गया है:
सर्किट आरेख और स्पष्टीकरण:
रास्पबेरी पाई के साथ MPU6050 के इंटरफेस के लिए सर्किट आरेख, बहुत सरल है यहां हमने एक एलसीडी और एमपीयू 6050 का उपयोग किया है। एलसीडी की चमक को नियंत्रित करने के लिए 10k पॉट का उपयोग किया जाता है। MPU6050 के संबंध में, हमने 4 कनेक्शन किए हैं जिसमें हमने 3.3v की बिजली आपूर्ति और MPU6050 की जमीन को 3.3v और रास्पबेरी पाई के ग्राउंड से जोड़ा है। MPU6050 का SCL और SDA पिन रास्पबेरी के भौतिक पिन 3 (GPIO2) और पिन 5 (GPIO3) से जुड़ा है। LCD का RS, RW, और EN सीधे GPIO18, और 23 रास्पबेरी पाई से जुड़ा हुआ है। डेटा पिन सीधे डिजिटल पिन नंबर GPIO24, GPIO25, GPIO8 और GPIO7 से जुड़ा है। यहाँ रास्पबेरी पाई के साथ एलसीडी को बदलने के बारे में अधिक जानें।
MPU6050 गायरो सेंसर के लिए रास्पबेरी पाई को कॉन्फ़िगर करना:
प्रोग्रामिंग शुरू करने से पहले, हमें दिए गए तरीके का उपयोग करके रास्पबेरी पाई के i2c को सक्षम करने की आवश्यकता है:
चरण 1: I2C संचार सक्षम करें
Adafruit SSD1306 पुस्तकालय स्थापित करने से पहले हमें रास्पबेरी पाई में I2C संचार को सक्षम करने की आवश्यकता है ।
रास्पबेरी पाई कंसोल में इस प्रकार करने के लिए:
sudo raspi -config
और फिर एक नीली स्क्रीन दिखाई देगी। अब इंटरफ़ेस विकल्प चुनें
इसके बाद, हमें I2C का चयन करने की आवश्यकता है
उन्होंने कहा कि इस तरह की घटनाओं को रोकने के लिए सरकार ने कई कदम उठाए हैं।
इसके बाद, हमें हां का चयन करना होगा और एंटर दबाना होगा और फिर ओके करना होगा
इसके बाद, हमें नीचे कमांड जारी करके रास्पबेरी पाई को रिबूट करने की आवश्यकता है:
सोडो रिबूट
चरण 2: अजगर-पाइप और GPIO लाइब्रेरी स्थापित करें
sudo apt-get install बिल्ड-एसेंशियल पायथन-देव पायथन-पाइप
इसके बाद, हमें रास्पबेरी पाई GPIO लाइब्रेरी स्थापित करने की आवश्यकता है
sudo pip ने RPi.GPIO को स्थापित किया
चरण 3: smbus पुस्तकालय स्थापित करें
अंत में, हमें दिए गए कमांड का उपयोग करके रास्पबेरी पाई में smbus लाइब्रेरी स्थापित करने की आवश्यकता है:
sudo apt-get Install python-smbus
चरण 4: लाइब्रेरी MPU6050 स्थापित करें
इसके बाद हमें दिए गए कमांड का उपयोग करके MPU6050 लाइब्रेरी स्थापित करना होगा
sudo pip इंस्टॉल करें mpu6050
अब हम उदाहरणों में उदाहरण कोड पा सकते हैं। उपयोगकर्ता रास्पबेरी पाई पर सीधे अपलोड करके उस कोड का परीक्षण कर सकता है या आवश्यकता के अनुसार इसे अनुकूलित कर सकता है। यहां हमने 16x2 एलसीडी पर एमपीयू 6050 के एक्स, वाई और जेड अक्ष मूल्यों को प्रदर्शित किया है। आप ट्यूटोरियल के अंत में पूर्ण पायथन कोड पा सकते हैं ।
प्रोग्रामिंग स्पष्टीकरण:
पूर्ण पायथन कोड अंत में दिया गया है, हम कोड के कुछ महत्वपूर्ण भाग के बारे में बता रहे हैं।
पायथन प्रोग्राम में, हमने कुछ आवश्यक लाइब्रेरी जैसे समय, स्मबस और जीपीआईओ का आयात किया है।
आयात smbus आयात समय gpio के रूप में RPi.GPIO आयात करें
इसके बाद, हमें MPU6050 को कॉन्फ़िगर करने और उसी से मान प्राप्त करने के लिए कुछ रजिस्टर पता लेने की आवश्यकता है। हमने I2C के लिए बस को कैलिब्रेट करने और प्रारंभिक करने के लिए कुछ चर भी लिए हैं।
PW_ AxCal = 0 AyCal = 0 AzCal = 0 GxCal = 0 GyCal = 0 GzCal = 0
फिर हमने 16x2LCD ड्राइविंग के लिए कुछ कार्य लिखे हैं जैसे def start (), def cmd (ch), def लिखना (ch), def Print (str), def clear () आदि । आप आगे रास्पबेरी पाई के साथ एलसीडी के इंटरफैसिंग की जांच कर सकते हैं।
इसके बाद, हमें MPU6050 मॉड्यूल को इनिशियलाइज़ करने की आवश्यकता है
def InitMPU (): Bus.write_byte_data (Device_Address, DIV, 7) Bus.write_byte_data (Device_Address, PWR_M, 1) बस.write_byte_data (Device_Address, CONFIG, 0) बस.लेखक_byte_byte_byte_byte_data, INT_EN, 1) time.sleep (1)
इसके बाद, हमें एमपीयू 6050 से मूल्यों को पढ़ने और एलसीडी पर प्रदर्शित करने के लिए कुछ फ़ंक्शन लिखने की आवश्यकता है। दिए गए फ़ंक्शन का उपयोग MPU6050 के डेटा को पढ़ने के लिए किया जाता है
def readMPU (addr): high = bus.read_byte_data (Device_Address, addr) low = bus.read_byte_data (Device_Address, addr + 1) value = ((high << 8) - low (if> 32768): value = value = value - 65536 रिटर्न वैल्यू
एक्सेलेरोमीटर और जायरो मीटर डेटा को पढ़ने के लिए दिए गए फ़ंक्शन का उपयोग किया जाता है
डिफ एक्सीलेंस (): x = readMPU (ACCEL_X) y = readMPU (ACCEL_Y) z = readMPU (ACCEL_Z) Ax = (x / 16384.0-AxCal) Ay = (y / 16384.0-AyCal) Az = (z / 16384.0-AzCal) #print "X =" + str (Ax) डिस्प्ले (Ax, Ay, Az) time.sleep (.01) def gyro (): ग्लोबल GxCal ग्लोबल GyCal ग्लोबल GzCal x = readMPU (GYRO_X) y = readMPU (GYRO_Y) z। = readMPU (GYRO_Z) Gx = x / 131.0 - GxCal Gy = y / 131.0 - GyCal Gz = z / 131.0 - GzCal #print "X =" + str (Gx) डिस्प्ले (Gx, Gy, Gz) time.sleep (। 01)
इसके बाद, हमने एक तापमान रीडिंग फ़ंक्शन लिखा है
def temp (): tempRow = readMPU (TEMP) tempC = (tempRow / 340.0) + 36.53 tempC = "%") time.sleep (.2)
def कैलिब्रेट () फ़ंक्शन का उपयोग MPU6050 को कैलिब्रेट करने के लिए किया जाता है और एलसीडी पर मान प्रदर्शित करने के लिए डिफ डिस्प्ले () फ़ंक्शन का उपयोग किया जाता है। नीचे दिए गए पूर्ण कोड में इन कार्यों की जांच करें।
इस के बाद, हम एलसीडी शुरू कर दिया है, इनिशियलाइज़ और MPU6050 जांच और उसके बाद में , जबकि पाश हम सभी तीनों MPU- से मूल्यों का वह समूह कहा जाता है तापमान, accelerometer और जायरो और उन्हें एलसीडी के ऊपर से पता चला है।
शुरू(); प्रिंट ("MPU6050 इंटरफ़ेस") सेटसुर (0,1) प्रिंट ("सर्किट डाइजेस्ट") time.sleep (2) InitMPU () को कैलिब्रेट () जबकि 1: InitMPU () स्पष्ट () के लिए (रेंज में): 20p () स्पष्ट () प्रिंट ("एक्सेल") time.sleep (1) i के लिए रेंज में (30): त्वरण () स्पष्ट () प्रिंट ("Gyro") time.sleep (1) i in रेंज (30) के लिए: ग्यारो ()
MPU6050 gyro और एक्सेलेरोमीटर दोनों का उपयोग किसी भी डिवाइस की स्थिति और अभिविन्यास का पता लगाने के लिए किया जाता है। गायरो गति के परिवर्तन की दर के आधार पर x, y और z- अक्ष स्थिति और एक्सेलेरोमीटर का पता लगाने के लिए पृथ्वी के गुरुत्वाकर्षण का उपयोग करता है। हमने पहले ही अपनी कई परियोजनाओं में Arduino के साथ एक्सेलेरोमीटर का उपयोग किया है:
- एक्सेलेरोमीटर आधारित हैंड जेस्चर नियंत्रित रोबोट
- Arduino आधारित वाहन दुर्घटना चेतावनी प्रणाली
- Arduino का उपयोग करके भूकंप डिटेक्टर अलार्म