कैसे एक DIY Arduino और ब्लूटूथ नियंत्रित रोबोट शाखा बनाने के लिए?

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



रोबोट आर्म

इस परियोजना में, हम एक रोबोटिक आर्म बनाने जा रहे हैं जिसे एक Arduino माइक्रोकंट्रोलर द्वारा नियंत्रित किया जाएगा। इसे एंड्रॉइड रिमोट कंट्रोल ऐप की मदद से ब्लूटूथ के माध्यम से नियंत्रित किया जाएगा।



कैसे Arduino का उपयोग कर एक रोबोट शाखा को नियंत्रित करने के लिए?

अब जैसा कि हम अपनी परियोजना के सार को जानते हैं। चलिए हम सर्किट्री के बारे में कुछ और जानकारी इकट्ठा करते हैं और ब्लूटूथ नियंत्रित रोबोट आर्म का निर्माण शुरू करते हैं और ब्लूटूथ के माध्यम से इसे नियंत्रित करते हैं।



चरण 1: घटकों को एकत्रित करना

किसी भी परियोजना को शुरू करने के लिए सबसे अच्छा तरीका घटकों की एक पूरी सूची बनाना है। यह न केवल एक परियोजना शुरू करने का एक बुद्धिमान तरीका है, बल्कि यह हमें परियोजना के बीच में कई असुविधाओं से भी बचाता है। इस परियोजना के घटकों की एक सूची नीचे दी गई है:



  • HC-05 वायरलेस ब्लूटूथ सीरियल ट्रांसीवर
  • 6V एडाप्टर
  • जम्पर तार
  • ब्रेड बोर्ड

चरण 2: घटकों का अध्ययन

जैसा कि हमारे पास उन सभी घटकों की पूरी सूची है, जिनका हम उपयोग करने जा रहे हैं, चलो एक कदम आगे बढ़ते हैं और सभी घटकों का एक संक्षिप्त अध्ययन करते हैं।

अरुडिनो नैनो एक माइक्रोकंट्रोलर बोर्ड है जो विभिन्न सर्किट में विभिन्न ऑपरेशन करता है। यह एक की आवश्यकता है C कोड यह बताता है कि बोर्ड को क्या कार्य करना है और कैसे करना है। इसमें 13 डिजिटल I / O पिंस हैं, जिसका मतलब है कि हम 13 विभिन्न उपकरणों को संचालित कर सकते हैं। Arduino Nano की Arduino Uno जैसी ही कार्यक्षमता है लेकिन काफी छोटे आकार में। Arduino नैनो बोर्ड पर माइक्रोकंट्रोलर है ATmega328p। यदि आप 13 से अधिक उपकरणों को नियंत्रित करना चाहते हैं, तो Arduino Mega का उपयोग करें।

अरुडिनो नैनो



HC-05 वायरलेस ब्लूटूथ सीरियल ट्रांसीवर : हमें इस परियोजना में वायरलेस संचार की आवश्यकता है, इसलिए हम ब्लूटूथ तकनीक का उपयोग करेंगे और उस मॉड्यूल के लिए जिसका उपयोग किया जाएगा HC-05। इस मॉड्यूल में कई प्रोग्राम योग्य बॉड दरें हैं लेकिन डिफ़ॉल्ट बॉड दर 9600 बीपीएस है। इसे या तो मास्टर या दास के रूप में कॉन्फ़िगर किया जा सकता है, जबकि एक अन्य मॉड्यूल HC-06 केवल दास मोड में काम कर सकता है। इस मॉड्यूल में चार पिन हैं। VCC (5V) के लिए एक और GND, TX और RX के लिए शेष तीन। इस मॉड्यूल का डिफ़ॉल्ट पासवर्ड है 1234 या 0000 । अगर हम दो माइक्रोकंट्रोलर के बीच संचार करना चाहते हैं या किसी फोन या लैपटॉप HC-05 जैसी ब्लूटूथ कार्यक्षमता के साथ संचार करना चाहते हैं तो हमें ऐसा करने में मदद करता है। कई Android एप्लिकेशन पहले से ही उपलब्ध हैं जो इस प्रक्रिया को बहुत आसान बनाता है।

HC-05 ब्लूटूथ मॉड्यूल

एक ठेठ रोबोट आर्म कई खंडों से बना होता है और आमतौर पर इसमें 6 जोड़ होते हैं। इसमें न्यूनतम 4 स्टेपर मोटर्स होते हैं जो कंप्यूटर द्वारा नियंत्रित होते हैं। स्टेपर मोटर्स अन्य डीसी मोटर्स से अलग हैं। वे सटीक वेतन वृद्धि में सटीक रूप से आगे बढ़ते हैं। इन रोबोटिक हथियारों का इस्तेमाल विभिन्न ऑपरेशनों को अंजाम देने के लिए किया जाता है। हम उन्हें रिमोट कंट्रोल के माध्यम से मैन्युअल रूप से संचालित कर सकते हैं या हम उन्हें स्वायत्त रूप से काम करने के लिए प्रोग्राम कर सकते हैं।

रोबोट आर्म।

चरण 3: घटकों को असेंबल करना

अब जैसा कि हम सभी मुख्य घटकों के काम करने के बारे में जानते हैं। आइए उन्हें इकट्ठा करना शुरू करें और रिमोट-नियंत्रित रोबोट शाखा बनाने के लिए एक सर्किट बनाएं।

  1. ब्रेडबोर्ड पर Arduino नैनो बोर्ड लगाओ। Arduino एडॉप्टर के सकारात्मक और नकारात्मक तार के माध्यम से संचालित किया जाएगा।
  2. ब्रेडबोर्ड पर भी ब्लूटूथ मॉड्यूल रखें। Arduino के माध्यम से ब्लूटूथ मॉड्यूल को पावर करें। Arduino Nan Board के Rx पिन से ब्लूटूथ मॉड्यूल का Tx पिन कनेक्ट करें और Arduino नैनो बोर्ड के Tx पिन से ब्लूटूथ मॉड्यूल के Rx पिन को कनेक्ट करें।
  3. जैसा कि हम जानते हैं कि 4 स्टेपर मोटर्स हैं। हर एक का तकनीकी नाम है। वे कहते हैं कोहनी , कंधा , बेस, तथा ग्रिपर । सभी मोटर्स का Vcc और ग्राउंड सामान्य होगा और 6V एडाप्टर के सकारात्मक और नकारात्मक से जुड़ा होगा। सभी चार मोटर्स के सिग्नल पिन को Arduino Nano के pin5, pin6, pin9 और pin11 से जोड़ा जाएगा।
  4. सुनिश्चित करें कि आपके द्वारा बनाए गए कनेक्शन निम्नलिखित सर्किट आरेख के अनुसार हैं।

    सर्किट आरेख

चरण 4: Arduino के साथ शुरुआत करना

यदि आप पहले से ही Arduino IDE से परिचित नहीं हैं, तो चिंता न करें क्योंकि एक माइक्रोकंट्रोलर बोर्ड के साथ Arduino IDE को सेट-अप और उपयोग करने के लिए कदम प्रक्रिया का एक चरण नीचे बताया गया है।

  1. से Arduino IDE का नवीनतम संस्करण डाउनलोड करें Arduino।
  2. अपने Arduino नैनो बोर्ड को अपने लैपटॉप से ​​कनेक्ट करें और कंट्रोल पैनल खोलें। फिर, पर क्लिक करें हार्डवेयर और ध्वनि । अब, पर क्लिक करें उपकरणों और छापक यंत्रों। यहां, वह पोर्ट ढूंढें जिसमें आपका माइक्रोकंट्रोलर बोर्ड जुड़ा हुआ है। मेरे मामले में यह है COM14 लेकिन यह विभिन्न कंप्यूटरों पर अलग है।

    पोर्ट ढूँढना

  3. टूल मेनू पर क्लिक करें और बोर्ड को सेट करें अरुडिनो नैनो ड्रॉप-डाउन मेनू से।

    बोर्ड की स्थापना

  4. उसी टूल मेनू में, पोर्ट को उस पोर्ट संख्या पर सेट करें जिसे आपने पहले देखा था उपकरणों और छापक यंत्रों

    पोर्ट की स्थापना

  5. उसी टूल मेनू में, प्रोसेसर को सेट करें ATmega328P (पुराना बूटलोडर)।

    प्रोसेसर

  6. सर्वो मोटर्स को संचालित करने के लिए कोड लिखने के लिए, हमें विशेष पुस्तकालय की आवश्यकता होती है जो हमें सर्वो मोटर्स के लिए कई कार्य लिखने में मदद करेगा। यह लाइब्रेरी कोड के साथ संलग्न है, नीचे दिए गए लिंक में। लाइब्रेरी को शामिल करने के लिए, पर क्लिक करें स्केच> लाइब्रेरी शामिल करें> ज़िप जोड़ें। लाइब्रेरी।

    लाइब्रेरी शामिल करें

  7. नीचे दिए गए कोड को डाउनलोड करें और इसे अपने Arduino IDE में पेस्ट करें। पर क्लिक करें डालना अपने माइक्रोकंट्रोलर बोर्ड पर कोड को जलाने के लिए बटन।

    डालना

कोड डाउनलोड करने के लिए, यहाँ क्लिक करें।

चरण 5: ऐप डाउनलोड करना

जैसा कि हमने अब पूरे सर्किट्री को इकट्ठा किया है और कोड को माइक्रोकंट्रोलर बोर्ड में अपलोड किया है। एक मोबाइल ऐप डाउनलोड करने देता है जो रोबोटिक आर्म के लिए रिमोट कंट्रोल का काम करेगा। एक फ्री ऐप google play store पर उपलब्ध है। ऐप का नाम है ऐप लिटिल आर्म रोबोट कंट्रोल । ब्लूटूथ कनेक्शन बनाने के लिए, अपने मोबाइल पर ब्लूटूथ चालू करें। सेटिंग्स पर जाएं और अपने मोबाइल को HC-05 मॉड्यूल के साथ पेयर करें। ऐसा करने के बाद, ऐप में ब्लूटूथ बटन दबाएं। यदि यह हरा हो जाता है, तो इसका मतलब है कि ऐप अब जुड़ा हुआ है और रोबोट आर्म को संचालित करने के लिए तैयार है। वांछित के रूप में रोबोट बांह को संचालित करने के लिए स्लाइडर्स हैं।

एप्लिकेशन

चरण 6: कोड को समझना

कोड अच्छी तरह से टिप्पणी की है और समझने में आसान है। बर अभी भी, यह संक्षेप में नीचे समझाया गया है।

1. शुरुआत में, एक पुस्तकालय को इमदादी मोटर्स को संचालित करने के लिए एक कोड लिखने के लिए शामिल किया गया है। एक और पुस्तकालय math.h कोड में विभिन्न गणितीय कार्य करने के लिए शामिल है। चार ऑब्जेक्ट्स को चार इमदादी मोटरों के लिए उपयोग किए जाने के लिए आरम्भ किया जाता है।

#include // arduino Library #include // मानक c लाइब्रेरी #define PI 3.141 सर्वो बेसस्वेरो; सर्वो कंधेसर्वो; सर्वो कोहनी; सर्वो ग्रिपरसर्वो; int कमांड;

2. फिर एक संरचना को आधार, कंधे और कोहनी सर्वो मोटर्स के लिए मान लेने के लिए घोषित किया जाता है।

संरचना संयुक्तअंकल {// एक संरचना int आधार की घोषणा; int कंधे; int कोहनी; };

3. इसके बाद, कुछ चर को इमदादी मोटर की वांछित पकड़, देरी और स्थिति को संग्रहीत करने के लिए प्रारंभ किया जाता है। गति 15 पर सेट है, और संरचना में कोण के मूल्य को लेने के लिए एक ऑब्जेक्ट बनाया गया है।

इंट वांछितग्रीप; int gripperPos; int वांछितडेल; int servoSpeed ​​= 15; int तैयार = 0; संयुक्त संरचना; // सर्वोस के वांछित कोण

चार। व्यर्थ व्यवस्था() एक फ़ंक्शन है जिसका उपयोग Arduino के पिन को INPUT या OUTPUT के रूप में सेट करने के लिए किया जाता है। यहां इस फ़ंक्शन में, हमने घोषणा की है कि मोटर्स का पिन Arduino के किस पिन से जुड़ा होगा। यह भी सुनिश्चित किया जाता है कि Arduino बहुत लंबे समय तक धारावाहिक इनपुट नहीं पढ़ता है। इस समारोह में प्रारंभिक स्थिति और बॉड दर भी निर्धारित की गई है। बॉड रेट वह गति है जिसके द्वारा माइक्रोकंट्रोलर बोर्ड संलग्न सर्वो और ब्लूटूथ मॉड्यूल के साथ संचार करेगा।

शून्य सेटअप () {Serial.begin (9600); baseServo.attach (9); // बेस सर्वो को पिन 9 पर सर्वो ऑब्जेक्ट शोल्डर से जोड़ता है। सरवा.टच (10); // 9 को सर्वो ऑब्जेक्ट elbowServo.attach (11) पर कंधे सर्वो संलग्न करता है; // पिन 9 पर एल्बो सर्वो को सर्वो वस्तु gripperServo.attach (6) से जोड़ता है; // ग्रॉपर सर्वो को पिन 9 पर सर्वो ऑब्जेक्ट से जोड़ता है Serial.setTimeout (50); // यह सुनिश्चित करता है कि आर्डिनो बहुत लंबे सीरियल के लिए सीरियल नहीं पढ़ता है। छाप ('शुरू'); baseServo.write (90); // सर्वोस शोल्डर का पद कंधे सेर्वो.राइट (150); elbowServo.write (110); तैयार = 0; }

5। सर्वोपयोगीकंट्रोल () एक ऐसा कार्य है जिसका उपयोग रोबोट हाथ की वर्तमान स्थिति का पता लगाने और मोबाइल ऐप के माध्यम से दी गई कमांड के अनुसार इसे स्थानांतरित करने के लिए किया जाता है। यदि वर्तमान स्थिति वास्तविक से कम है, तो हाथ ऊपर जाएगा और इसके विपरीत। यह फ़ंक्शन वर्तमान स्थिति और सर्वो की गति का मान लौटाएगा।

int servoParallelControl (int thePos, सर्वो एसर्वो, int theSpeed) {int startPos = theServo.read (); // वर्तमान स्थिति को पढ़ें int newPos = startPos; // int theSpeed ​​= speed; // परिभाषित करें कि स्थिति कमांड के संबंध में कहां है / यदि वर्तमान स्थिति कम है तो वास्तविक चाल चलें यदि (startPos (5P + 5)) {newPos = newPos - 1; theServo.write (newPos); देरी (theSpeed); वापसी 0; } और {वापसी 1; }}

6। शून्य लूप () एक फ़ंक्शन है जो एक लूप में बार-बार चलता है। यह फ़ंक्शन क्रमिक रूप से आने वाले डेटा को पढ़ता है और संरचना में प्रत्येक सर्वो के कोण को संग्रहीत करता है। प्रारंभ में, सभी सर्वोस की स्थिति शून्य पर सेट है। यहाँ एक समारोह सर्वोपयोगीकंट्रोल () कहा जाता है और इसमें पैरामीटर पारित किए जाते हैं। यह फ़ंक्शन मान लौटाएगा और इसे स्थिति के एक चर में संग्रहीत किया जाएगा।

शून्य लूप () {if (सीरियल। उपलब्ध ()) {तैयार = १; वांछितअंगले.बेस = सीरियल.परसेन्ट (); वांछितअंगेल.शोल्डर = सीरियल.परसेन्ट (); वांछितअनले.एलबो = सीरियल.परसेन्ट (); वांछितगिर = = सियाल ।परसेन्ट (); वांछितडेली = सीरियल.परसेन्ट (); if (Serial.read () == ' n') {// यदि अंतिम बाइट 'd' है, तो पढ़ना बंद कर दें और कमांड 'd' को 'किया' Serial.flush () के लिए खड़ा करें; // बफ़र में ढेर किए गए अन्य सभी आदेशों को स्पष्ट करें // कमांड पूरा करने के लिए भेजें Serial.print ('d'); }} int status1 = 0; int status2 = 0; int status3 = 0; int status4 = 0; int किया = 0; जबकि (किया == 0 && तैयार == 1) {// सर्वो को वांछित स्थिति में ले जाएं स्थिति 1 = सर्वो समानांतर (कंटीन्यूअंगले.बेस, बेससर्वो, वांछितडेल); status2 = servoParallelControl (वांछितअंगेल.शोल्डर, शोल्डरवॉ, वांछितडेल); status3 = servoParallelControl (वांछितअंगेल.बेलो, कोहनीस्वेरो, वांछितडेलय); status4 = servoParallelControl (इच्छितGrip, gripperServo, वांछितDelay); if (status1 == 1 & status2 == 1 & status3 == 1 & status4 == 1) {किया = 1}} // जबकि अंत}

अब, यह एक रोबोटिक हाथ बनाने की पूरी प्रक्रिया थी। कोड को जलाने और ऐप डाउनलोड करने के बाद, रोबोट को पूरी तरह से ठीक काम करना चाहिए जब ऐप पर स्लाइडर्स स्थानांतरित हो जाते हैं। आप वांछित कार्य करने के लिए स्वायत्त रूप से काम करने के लिए हाथ को भी प्रोग्राम कर सकते हैं।