विषयसूची:

रास्पबेरी पाई के साथ 3-एक्सिस गायरोस्कोप सेंसर बीएमजी 160 का इंटरफेसिंग: 5 कदम
रास्पबेरी पाई के साथ 3-एक्सिस गायरोस्कोप सेंसर बीएमजी 160 का इंटरफेसिंग: 5 कदम

वीडियो: रास्पबेरी पाई के साथ 3-एक्सिस गायरोस्कोप सेंसर बीएमजी 160 का इंटरफेसिंग: 5 कदम

वीडियो: रास्पबेरी पाई के साथ 3-एक्सिस गायरोस्कोप सेंसर बीएमजी 160 का इंटरफेसिंग: 5 कदम
वीडियो: ADXL335: Raspberry Pi Interfacing with MEMS Sensor - 3 Axis Accelerometer 2024, जुलाई
Anonim
Image
Image

आज की दुनिया में, आधे से अधिक युवा और बच्चे गेमिंग के शौकीन हैं और वे सभी जो इसके शौकीन हैं, गेमिंग के तकनीकी पहलुओं से मोहित हैं, इस डोमेन में मोशन सेंसिंग के महत्व को जानते हैं। हम भी उसी चीज़ से चकित थे और बस इसे बोर्ड पर लाने के लिए, हमने एक जाइरोस्कोप सेंसर पर काम करने के बारे में सोचा जो किसी भी वस्तु की कोणीय दर को माप सकता है। तो, इस कार्य से निपटने के लिए हमने जो सेंसर लिया वह BMG160 है। BMG160 एक 16-बिट, डिजिटल, त्रिअक्षीय, जाइरोस्कोप सेंसर है जो तीन लंबवत कमरे के आयामों में कोणीय दर को माप सकता है।

इस ट्यूटोरियल में, हम जावा को प्रोग्रामिंग भाषा के रूप में उपयोग करते हुए रास्पबेरी पाई के साथ BMG160 के कार्य को प्रदर्शित करने जा रहे हैं।

इस उद्देश्य के लिए आपको जिन हार्डवेयर की आवश्यकता होगी वे इस प्रकार हैं:

1. बीएमजी160

2. रास्पबेरी पाई

3. I2C केबल

4. रास्पबेरी पाई के लिए I2C शील्ड

5. ईथरनेट केबल

चरण 1: BMG160 अवलोकन:

जिसकी आपको जरूरत है..!!
जिसकी आपको जरूरत है..!!

सबसे पहले हम आपको सेंसर मॉड्यूल की बुनियादी विशेषताओं से परिचित कराना चाहते हैं जो कि BMG160 है और संचार प्रोटोकॉल जिस पर यह काम करता है।

BMG160 मूल रूप से एक 16-बिट, डिजिटल, त्रिअक्षीय, जाइरोस्कोप सेंसर है जो कोणीय दरों को माप सकता है। यह तीन लंबवत कमरे के आयामों, x-, y- और z- अक्ष में कोणीय दरों की गणना करने और संबंधित आउटपुट सिग्नल प्रदान करने में सक्षम है। यह I2C संचार प्रोटोकॉल का उपयोग करके रास्पबेरी पाई बोर्ड के साथ संचार कर सकता है। यह विशेष मॉड्यूल उपभोक्ता अनुप्रयोगों के साथ-साथ औद्योगिक उद्देश्यों के लिए आवश्यकताओं को पूरा करने के लिए डिज़ाइन किया गया है।

संचार प्रोटोकॉल जिस पर सेंसर काम करता है I2C है। I2C का मतलब इंटर-इंटीग्रेटेड सर्किट है। यह एक संचार प्रोटोकॉल है जिसमें संचार एसडीए (सीरियल डेटा) और एससीएल (सीरियल क्लॉक) लाइनों के माध्यम से होता है। यह एक ही समय में कई उपकरणों को जोड़ने की अनुमति देता है। यह सबसे सरल और सबसे कुशल संचार प्रोटोकॉल में से एक है।

चरण 2: आपको क्या चाहिए..

जिसकी आपको जरूरत है..!!
जिसकी आपको जरूरत है..!!
जिसकी आपको जरूरत है..!!
जिसकी आपको जरूरत है..!!
जिसकी आपको जरूरत है..!!
जिसकी आपको जरूरत है..!!

अपने लक्ष्य को पूरा करने के लिए हमें जिन सामग्रियों की आवश्यकता होती है, उनमें निम्नलिखित हार्डवेयर घटक शामिल हैं:

1. बीएमजी160

2. रास्पबेरी पाई

3. I2C केबल

4. रास्पबेरी पाई के लिए I2C शील्ड

5. ईथरनेट केबल

चरण 3: हार्डवेयर हुकअप:

हार्डवेयर हुकअप
हार्डवेयर हुकअप
हार्डवेयर हुकअप
हार्डवेयर हुकअप

हार्डवेयर हुकअप सेक्शन मूल रूप से सेंसर और रास्पबेरी पाई के बीच आवश्यक वायरिंग कनेक्शन की व्याख्या करता है। वांछित आउटपुट के लिए किसी भी सिस्टम पर काम करते समय सही कनेक्शन सुनिश्चित करना मूलभूत आवश्यकता है। तो, अपेक्षित कनेक्शन इस प्रकार हैं:

BMG160 I2C पर काम करेगा। यहाँ उदाहरण वायरिंग आरेख है, जिसमें दिखाया गया है कि सेंसर के प्रत्येक इंटरफ़ेस को कैसे वायर किया जाए।

आउट-ऑफ-द-बॉक्स, बोर्ड को I2C इंटरफ़ेस के लिए कॉन्फ़िगर किया गया है, जैसे कि यदि आप अन्यथा अज्ञेयवादी हैं तो हम इस हुकअप का उपयोग करने की सलाह देते हैं। आपको बस चार तार चाहिए!

केवल चार कनेक्शन की आवश्यकता होती है Vcc, Gnd, SCL और SDA पिन और ये I2C केबल की मदद से जुड़े होते हैं।

इन कनेक्शनों को ऊपर की तस्वीरों में दिखाया गया है।

चरण 4: जावा कोड का उपयोग करके 3-अक्ष Gyroscope मापन:

जावा कोड का उपयोग करके 3-एक्सिस जाइरोस्कोप मापन
जावा कोड का उपयोग करके 3-एक्सिस जाइरोस्कोप मापन
जावा कोड का उपयोग करके 3-एक्सिस जाइरोस्कोप मापन
जावा कोड का उपयोग करके 3-एक्सिस जाइरोस्कोप मापन

रास्पबेरी पाई का उपयोग करने का लाभ यह है कि यह आपको उस प्रोग्रामिंग भाषा का लचीलापन प्रदान करता है जिसमें आप सेंसर को इंटरफेस करने के लिए बोर्ड को प्रोग्राम करना चाहते हैं। इस बोर्ड के इस लाभ का उपयोग करते हुए, हम यहां जावा में इसकी प्रोग्रामिंग का प्रदर्शन कर रहे हैं। BMG160 के लिए जावा कोड हमारे जीथब समुदाय से डाउनलोड किया जा सकता है जो कि Dcube Store समुदाय है।

साथ ही उपयोगकर्ताओं की आसानी के लिए, हम यहां कोड भी समझा रहे हैं: कोडिंग के पहले चरण के रूप में आपको जावा के मामले में pi4j लाइब्रेरी डाउनलोड करने की आवश्यकता है, क्योंकि यह लाइब्रेरी कोड में उपयोग किए गए कार्यों का समर्थन करती है। तो, पुस्तकालय डाउनलोड करने के लिए आप निम्न लिंक पर जा सकते हैं:

pi4j.com/install.html

आप इस सेंसर के लिए काम कर रहे जावा कोड को यहां से भी कॉपी कर सकते हैं:

आयात com.pi4j.io.i2c. I2CBus;

आयात com.pi4j.io.i2c. I2CDउपकरण;

आयात com.pi4j.io.i2c. I2CFactory;

java.io. IOException आयात करें;

पब्लिक क्लास BMG160

{

सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग तर्क ) अपवाद फेंकता है

{

// I2C बस बनाएं

I2CBus बस = I2CFactory.getInstance(I2CBus. BUS_1);

// I2C डिवाइस प्राप्त करें, BMG160 I2C पता 0x68 (104) है

I2CDevice डिवाइस = bus.getDevice(0x68);

// रेंज रजिस्टर चुनें

// पूर्ण स्केल रेंज कॉन्फ़िगर करें, 2000 डीपीएस

डिवाइस.राइट (0x0F, (बाइट) 0x80);

// बैंडविड्थ रजिस्टर चुनें

// बैंडविड्थ 200 हर्ट्ज

डिवाइस.राइट (0x10, (बाइट) 0x04);

थ्रेड.स्लीप (500);

// डेटा के 6 बाइट्स पढ़ें

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb

बाइट डेटा = नया बाइट [6];

डिवाइस.रीड (0x02, डेटा, 0, 6);

// डेटा कनवर्ट करें

int xGyro = ((डेटा [1] और 0xFF) * 256 + (डेटा [0] और 0xFF));

अगर (xGyro> 32767)

{

xGyro - = ६५५३६;

}

int yGyro = ((डेटा [3] और 0xFF) * 256 + (डेटा [2] और 0xFF));

अगर (yGyro> 32767)

{

yGyro -= ६५५३६;

}

int zGyro = ((डेटा [5] और 0xFF) * 256 + (डेटा [4] और 0xFF));

अगर (zGyro> 32767)

{

zGyro -= ६५५३६;

}

// स्क्रीन पर आउटपुट डेटा

System.out.printf ("रोटेशन का एक्स-एक्सिस:% d% n", xGyro);

System.out.printf ("रोटेशन का वाई-अक्ष:% d% n", yGyro);

System.out.printf ("रोटेशन का Z-अक्ष:% d% n", zGyro);

}

}

पुस्तकालय जो सेंसर और बोर्ड के बीच i2c संचार की सुविधा प्रदान करता है, वह है pi4j, इसके विभिन्न पैकेज I2CBus, I2CDevice और I2CFactory कनेक्शन स्थापित करने में मदद करते हैं।

आयात com.pi4j.io.i2c. I2CBus;आयात com.pi4j.io.i2c. I2CDउपकरण; आयात com.pi4j.io.i2c. I2CFactory; java.io. IOException आयात करें;

कोड का यह हिस्सा लिखने () फ़ंक्शन का उपयोग करके संबंधित कमांड लिखकर सेंसर को कोणीय दर को मापने के लिए बनाता है और फिर डेटा को रीड () फ़ंक्शन का उपयोग करके पढ़ा जाता है।

// रेंज रजिस्टर चुनें // फुल स्केल रेंज कॉन्फ़िगर करें, 2000 डीपीएस डिवाइस। राइट (0x0F, (बाइट) 0x80); // बैंडविड्थ रजिस्टर चुनें // बैंडविड्थ 200 हर्ट्ज डिवाइस। लिखें (0x10, (बाइट) 0x04); थ्रेड.स्लीप (500);

// डेटा के 6 बाइट्स पढ़ें

// xGyro lsb, xGyro msb, yGyro lsb, yGyro msb, zGyro lsb, zGyro msb बाइट डेटा = नया बाइट [6]; डिवाइस.रीड (0x02, डेटा, 0, 6);

सेंसर से प्राप्त डेटा को निम्नलिखित का उपयोग करके उपयुक्त प्रारूप में परिवर्तित किया जाता है:

int xGyro = ((डेटा [1] और 0xFF) * 256 + (डेटा [0] और 0xFF)); अगर(xGyro > ३२७६७) { xGyro -= ६५५३६; } int yGyro = ((डेटा [3] और 0xFF) * 256 + (डेटा [2] और 0xFF)); अगर(yGyro> ३२७६७) { yGyro -= ६५५३६; } int zGyro = ((डेटा [5] और 0xFF) * 256 + (डेटा [4] और 0xFF)); अगर(zGyro > ३२७६७) {zGyro -= ६५५३६; }

आउटपुट को System.out.println () फ़ंक्शन का उपयोग करके निम्न प्रारूप में प्रिंट किया जाता है।

System.out.println ("रोटेशन का एक्स-एक्सिस:% d% n", xGyro); System.out.println ("रोटेशन का वाई-अक्ष:% d% n", yGyro); System.out.println ("रोटेशन का Z-अक्ष:% d% n", zGyro);

सेंसर का आउटपुट ऊपर की तस्वीर में दिखाया गया है।

चरण 5: आवेदन:

अनुप्रयोग
अनुप्रयोग

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

सिफारिश की: