- MPU6050 गायरोस्कोपिक और एक्सेलेरोमीटर सेंसर
- फ्लेक्स सेंसर
- 3 डी मुद्रित रोबोट एआरएम तैयार हो रहा है:
- आवश्यक घटक:
- सर्किट आरेख:
- बढ़ते MPU6050 और दस्ताने के लिए फ्लेक्स सेंसर
- रोबोट आर्म के लिए Arduino नैनो प्रोग्रामिंग
- अरूस्टीनो के उपयोग से जेस्चर को रोबोटिक आर्म को नियंत्रित करना
रोबोटिक आर्म्स आकर्षक इंजीनियरिंग कृतियों में से एक हैं और इन चीजों को झुकाव और पैन को देखने के लिए हमेशा आकर्षक होता है ताकि मानव बांह की तरह जटिल चीजें प्राप्त कर सकें। इन रोबोटिक हथियारों को आमतौर पर वेल्डिंग, ड्रिलिंग, पेंटिंग इत्यादि जैसे गहन यांत्रिक कार्य करने वाले असेंबली लाइन में उद्योगों में पाया जा सकता है, हाल ही में उच्च सटीकता के साथ उन्नत रोबोटिक हथियार भी जटिल सर्जिकल ऑपरेशन करने के लिए विकसित किए जा रहे हैं। पहले हम 3D ने एक रोबोट आर्म प्रिंट किया और ARM7 माइक्रोकंट्रोलर का उपयोग करके एक DIY पिक एंड प्लेस रोबोट बांह बनाया। हम फिर से Arduino Nano, MPU6050 Gyroscope और flex सेंसर का उपयोग करके हाथ से नियंत्रित रोबोट एआरएम बनाने के लिए एक ही 3 डी प्रिंटेड रोबोटिक आर्म का उपयोग करेंगे।
यह 3 डी प्रिंटेड रोबोटिक आर्म पोजिशन एक हाथ के दस्ताने के माध्यम से नियंत्रित की जाती है जो MPU6050 गायरोस्कोप और एक फ्लेक्स सेंसर के साथ जुड़ी होती है । फ्लेक्स सेंसर का उपयोग रोबोट आर्म के ग्रिपर सर्वो को नियंत्रित करने के लिए किया जाता है और MPU6050 का उपयोग एक्स और वाई-अक्ष में रोबोट की आवाजाही के लिए किया जाता है। यदि आपके पास प्रिंटर नहीं है, तो आप अपने कार्ड को साधारण कार्डबोर्ड से भी बना सकते हैं, जैसा कि हमने अपने Arduino Robotic Arm Project के लिए बनाया था। प्रेरणा के लिए, आप रिकॉर्ड और प्ले रोबोट आर्म का भी उल्लेख कर सकते हैं, जिसे हमने पहले Arduino का उपयोग करके बनाया था।
विस्तार में जाने से पहले, पहले MPU6050 सेंसर और फ्लेक्स सेंसर के बारे में जानें।
MPU6050 गायरोस्कोपिक और एक्सेलेरोमीटर सेंसर
MPU6050 माइक्रो-मैकेनिकल सिस्टम (एमईएमएस) तकनीक पर आधारित है। इस सेंसर में 3-एक्सिस एक्सेलेरोमीटर, 3-एक्सिस जीरोस्कोप और एक इन-बिल्ट टेम्परेचर सेंसर है । यह त्वरण, वेग, अभिविन्यास, विस्थापन, आदि जैसे मापदंडों को मापने के लिए इस्तेमाल किया जा सकता है। हमने पहले Arduino और Raspberry pi के साथ MPU6050 को इंटरफेज किया है और कुछ प्रोजेक्ट्स का भी निर्माण किया है, जैसे- सेल्फ बैलेंसिंग रोबोट, Arduino Digital Protractor, और Arduino Inclinometer।
MPU6050 सेंसर में विशेषताएं:
- संचार: I2C प्रोटोकॉल विन्यास योग्य I2C पते के साथ
- इनपुट पावर सप्लाई: 3-5 वी
- अंतर्निहित 16-बिट एडीसी उच्च सटीकता प्रदान करता है
- निर्मित डीएमपी उच्च कम्प्यूटेशनल शक्ति प्रदान करता है
- मैग्नेटोमीटर जैसे अन्य I2C उपकरणों के साथ इंटरफेस करने के लिए इस्तेमाल किया जा सकता है
- इन-बिल्ट तापमान सेंसर
MPU6050 का पिन-आउट विवरण:
पिन | प्रयोग |
Vcc | मॉड्यूल के लिए शक्ति प्रदान करता है, 3 वी से + 5 वी तक हो सकता है। आमतौर पर + 5 वी का उपयोग किया जाता है |
भूमि | सिस्टम के ग्राउंड से जुड़े |
सीरियल क्लॉक (SCL) | I2C संचार के लिए घड़ी नाड़ी प्रदान करने के लिए उपयोग किया जाता है |
सीरियल डेटा (एसडीए) | I2C संचार के माध्यम से डेटा स्थानांतरित करने के लिए उपयोग किया जाता है |
सहायक सीरियल डेटा (XDA) | MPU6050 के साथ अन्य I2C मॉड्यूल को इंटरफ़ेस करने के लिए उपयोग किया जा सकता है |
सहायक सीरियल क्लॉक (XCL) | MPU6050 के साथ अन्य I2C मॉड्यूल को इंटरफ़ेस करने के लिए उपयोग किया जा सकता है |
AD0 | यदि एक से अधिक MPU6050 एक एकल MCU का उपयोग किया जाता है, तो इस पिन का उपयोग पते को अलग करने के लिए किया जा सकता है |
इंटरप्ट (INT) | यह इंगित करने के लिए इंटरप्ट पिन कि डेटा MCU के पढ़ने के लिए उपलब्ध है |
फ्लेक्स सेंसर
फ्लेक्स सेंसर एक चर अवरोधक के अलावा कुछ भी नहीं हैं। जब सेंसर मुड़ा हुआ होता है तो फ्लेक्स सेंसर प्रतिरोध बदल जाता है। वे आम तौर पर दो आकारों में उपलब्ध हैं 2.2 इंच और 4.5 इंच।
हम अपनी परियोजना में फ्लेक्स सेंसर का उपयोग क्यों करते हैं?
इस Gureure ने Robotic Arm को नियंत्रित किया, एक फ्लेक्स सेंसर का उपयोग रोबोट आर्म के ग्रिपर को नियंत्रित करने के लिए किया जाता है। जब हाथ के दस्ताने पर फ्लेक्स सेंसर मुड़ा हुआ होता है, तो ग्रिपर से जुड़ी सर्वो मोटर घूमती है और ग्रिपर खुल जाता है।
फ्लेक्स सेंसर कई अनुप्रयोगों में उपयोगी हो सकते हैं और हमने फ्लेक्स सेंसर जैसे गेम कंट्रोलर, टोन जनरेटर आदि का उपयोग करके कुछ प्रोजेक्ट बनाए हैं।
3 डी मुद्रित रोबोट एआरएम तैयार हो रहा है:
इस ट्यूटोरियल में उपयोग किए गए 3 डी प्रिंटेड रोबोटिक आर्म को EEZYbotARM द्वारा दिए गए डिज़ाइन का अनुसरण करके बनाया गया था जो कि थाइरिवर्स में उपलब्ध है। 3D प्रिंटेड रोबोटिक आर्म बनाने की पूरी प्रक्रिया और वीडियो के साथ असेंबलिंग डिटेल Thingiverse लिंक में मौजूद है, जिसे ऊपर साझा किया गया है।
ऊपर 4 सर्वो मोटर्स के साथ संयोजन के बाद मेरे 3 डी मुद्रित रोबोटिक आर्म की छवि है।
आवश्यक घटक:
- अरुडिनो नैनो
- फ्लेक्स सेंसर
- 10k रेसिस्टर
- MPU6050
- हाथ के दस्ताने
- तारों को जोड़ना
- ब्रेड बोर्ड
सर्किट आरेख:
निम्नलिखित छवि Arduino आधारित हावभाव नियंत्रित रोबोट आर्म के लिए सर्किट कनेक्शन दिखाती है ।
MPU6050 और Arduino नैनो के बीच सर्किट कनेक्शन:
MPU6050 |
अरुडिनो नैनो |
वीसीसी |
+ 5 वी |
GND |
GND |
एसडीए |
ए 4 |
एससीएल |
A5 |
सर्वो मोटर्स और अरुडिनो नैनो के बीच सर्किट कनेक्शन:
अरुडिनो नैनो |
सर्वो मोटर |
बिजली अनुकूलक |
डी 2 |
सर्वो 1 ऑरेंज (PWM पिन) |
- |
डी 3 |
सर्वो 2 ऑरेंज (PWM पिन) |
- |
डी 4 |
सर्वो 3 ऑरेंज (PWM पिन) |
- |
D5 |
सर्वो 4 ऑरेंज (PWM पिन) |
- |
GND |
सर्वो 1,2,3,4 ब्राउन (GND पिन) |
GND |
- |
सर्वो 1,2,3,4 रेड (+ 5 वी पिन) |
+ 5 वी |
एक फ्लेक्स सेंसर में दो पिन होते हैं। इसमें ध्रुवीकृत टर्मिनल शामिल नहीं हैं। तो पिन वन P1 10k के पुल-अप रोकने वाले के साथ Arduino नैनो के एनालॉग पिन A0 से जुड़ा है और पिन दो P2 Arduino पर आधारित है।
बढ़ते MPU6050 और दस्ताने के लिए फ्लेक्स सेंसर
हमने हाथ के दस्ताने पर MPU6050 और फ्लेक्स सेंसर लगाया है। यहां दस्ताने और रोबोटिक आर्म को जोड़ने के लिए एक वायर्ड कनेक्शन का उपयोग किया जाता है लेकिन इसे आरएफ कनेक्शन या ब्लूटूथ कनेक्शन का उपयोग करके वायरलेस बनाया जा सकता है।
हर कनेक्शन के बाद, जेस्चर-नियंत्रित रोबोट आर्म के लिए अंतिम सेटअप नीचे की छवि जैसा दिखता है:
रोबोट आर्म के लिए Arduino नैनो प्रोग्रामिंग
हमेशा की तरह, इस ट्यूटोरियल के अंत में वर्किंग वीडियो के साथ पूरा कोड दिया गया है। यहाँ कोड की कुछ महत्वपूर्ण पंक्तियाँ बताई गई हैं।
1. सबसे पहले, आवश्यक लाइब्रेरी फ़ाइलों को शामिल करें। वायर.एच लाइब्रेरी का उपयोग इमू मोटर के नियंत्रण के लिए Arduino Nano & MPU6050 और servo.h के बीच I2C संचार के लिए किया जाता है ।
#शामिल
2. अगला, वर्ग सर्वो के लिए ऑब्जेक्ट घोषित किया जाता है। जैसा कि हम चार सर्वो मोटर्स का उपयोग करते हैं, चार ऑब्जेक्ट्स जैसे कि सर्वो 1, सर्वो 2, सर्वो_3, सर्वो_4 बनाए जाते हैं।
सर्वो सर्वो; सर्वो सर्वो २; सर्वो सर्वो 3; सर्वो सर्वो_4;
३। अगला, MPU6050 का I2C पता और उपयोग किए जाने वाले चर घोषित किए जाते हैं।
const int MPU_addr = 0x68; // MPU6050 I2C पता int16_t axis_X, axis_Y, axis_Z; int minVal = 265; int maxVal = 402; डबल एक्स; डबल वाई; डबल जेड;
4. शून्य सेटअप में अगला, सीरियल संचार के लिए 9600 की बॉड दर निर्धारित है।
सीरियल.बेगिन (9600);
और Arduino नैनो और MPU6050 के बीच I2C संचार स्थापित किया गया है:
तार.बेगिन (); // I2C संचार वायर Inbeilize.beginTransmission (MPU_addr); // MPU6050 वायर के साथ संचार शुरू करें। राइट (0x6B); // 6 बी वायर रजिस्टर करने के लिए लिखता है। राइट (0); // लिखता है 0 में 6B रजिस्टर करने के लिए रीसेट वायर ।endTransmission (सच); // I2C ट्रांसमिशन को समाप्त करता है
इसके अलावा, चार PWM पिन सर्वो मोटर कनेक्शन के लिए परिभाषित किए गए हैं।
servo_1.attach (2); // फ़ॉरवर्ड / रिवर्स_मोटर सर्वो २.कट (३); // ऊपर / नीचे_मोटर सर्वो_3.टैच (4); // ग्रिपर_मोटर सर्वो_4.टैच (5); // वाम / अधिकार_मोटर
5. शून्य लूप फ़ंक्शन में अगला, फिर से MPU6050 और Arduino नैनो के बीच I2C कनेक्शन स्थापित करें और फिर MPU6050 के रजिस्टर से एक्स, वाई, जेड-एक्सिस डेटा पढ़ना शुरू करें और उन्हें समान चर में संग्रहीत करें।
वायर.beginTransmission (MPU_addr); वायर.राइट (0x3B); // regsiter से शुरू करें 0x3B वायर.endTransmission (झूठा); वायर.requestFrom (MPU_addr, 14, सच); // 14 रजिस्टरों को पढ़ें ax_X = Wire.read () << 8-Wire.read (); ax_Y = Wire.read () << 8-Wire.read (); ax_Z = Wire.read () << 8-Wire.read ();
उसके बाद, -90 से 90 की सीमा में MPU6050 सेंसर से अक्ष डेटा के न्यूनतम और अधिकतम मान को मैप करें।
int xAng = map (axis_X, minVal, maxVal, -90,90); int yAng = map (axis_Y, minVal, maxVal, -90,90); int zAng = map (axis_Z, minVal, maxVal, -90,90);
फिर 0, 360 के संदर्भ में x, y, z मानों की गणना करने के लिए निम्न सूत्र का उपयोग करें।
x = RAD_TO_DEG * (atan2 -yAng, -zAng) + PI); y = RAD_TO_DEG * (atan2 (-xAng, -zAng) + PI); z = RAD_TO_DEG * (atan2 -yAng, -xAng) + PI);
फिर Arduino नैनो के A0 पिन पर फ्लेक्स सेंसर एनालॉग आउटपुट डेटा पढ़ें और फ्लेक्स सेंसर के डिजिटल मूल्य के अनुसार ग्रिपर के सर्वो एंगल को सेट करें। इसलिए यदि फ्लेक्स सेंसर डेटा 750 से अधिक है तो ग्रिपर का सर्वो मोटर कोण 0 डिग्री है और यदि 750 से कम है तो 180 डिग्री है।
इंट ग्रिपर; int flex_sensorip = analogRead (A0); अगर (flex_sensorip> 750) { ग्रिपर = 0; } और { ग्रिपर = 180; } servo_3.write (ग्रिपर);
फिर 0 से 60 तक X- अक्ष पर MPU6050 की गति को सर्वो मोटर के फॉरवर्ड / रिवर्स मोशन फॉर रोबोटिक आर्म के लिए 0 से 90 डिग्री के संदर्भ में मैप किया गया है।
अगर (x> = 0 && x <= 60) { int mov1 = map (x, 0,60,0,90); Serial.print ("एफ / आर =" में आंदोलन); सीरियल.प्रिंट (Mov1); सीरियल.प्रिंटलेन (चार) 176); servo_1.write (mov1); }
और 250 से 360 तक एक्स-एक्सिस पर MPU6050 का मूवमेंट सर्वो मोटर के UP / DOWN मोशन रोबोट आर्म के लिए 0 से 90 डिग्री के संदर्भ में मैप किया गया है।
अगर (x> = 300 && x <= 360) { int mov2 = map (x, 360,250,0,90); Serial.print ("ऊपर / नीचे =" में आंदोलन); सीरियल.प्रिंट (Mov2); सीरियल.प्रिंटलेन (चार) 176); servo_2.write (mov2); }
0 से 60 तक Y- अक्ष पर MPU6050 का मूवमेंट रोबोटिक आर्म के सर्वो मोटर के लेफ्ट मूवमेंट के लिए 90 से 180 डिग्री के संदर्भ में मैप किया जाता है।
if (y> = 0 && y <= 60) { int mov3 = map (y, 0,60,90,180); सीरियल.प्रिंट ("लेफ्ट में आंदोलन ="); सीरियल.प्रिंट (Mov3); सीरियल.प्रिंटलेन (चार) 176); servo_4.write (mov3); }
300 से 360 तक वाई-अक्ष में MPU6050 के मूवमेंट को रोबोटिक आर्म के सर्वो मोटर के राइट मूवमेंट के लिए 0 से 90 डिग्री के संदर्भ में मैप किया जाता है।
और अगर (y> = 300 && y <= 360) { int mov3 = map (y, 360,300,90,0); सीरियल.प्रिंट ("राइट में आंदोलन ="); सीरियल.प्रिंट (Mov3); सीरियल.प्रिंटलेन (चार) 176); servo_4.write (mov3); }
अरूस्टीनो के उपयोग से जेस्चर को रोबोटिक आर्म को नियंत्रित करना
अंत में, Arduino नैनो को कोड अपलोड करें और MPU6050 और फ्लेक्स सेंसर के साथ घुड़सवार हाथ दस्ताने पहनें।
1. अब रोबोट की भुजा को आगे बढ़ाने के लिए हाथ को नीचे ले जाएं और ऊपर की ओर ले जा कर रोबोटिक भुजा को ऊपर ले जाएं।
2. फिर बाएं हाथ को दाएं या दाएं मुड़ने के लिए बाएं हाथ को दाएं तरफ झुकाएं।
3. ग्रिपर को खोलने के लिए हाथ की दस्ताने की उंगली से जुड़ी फ्लेक्स केबल को मोड़ें और फिर इसे बंद करने के लिए छोड़ दें।
पूरा काम नीचे दिए गए वीडियो में दिखाया गया है।