सभी को नमस्कार! मेरा नाम एंटोन है। और मैं रोबोटिक्स में अपने पहले कदम की कहानी साझा करना चाहता हूं और विशेष रूप से मेरे रास्पबेरी पाई + ईएसपी 32 ड्रोन के बारे में। (मैंने इसके बारे में एक वीडियो भी बनाया और लेख के अंत में संलग्न किया)
कहानी की शुरुआत में मैं एक वेब डेवलपर (रिएक्ट, टाइपस्क्रिप्ट, आदि) के रूप में काम कर रहा था, कुछ सी ++ ज्ञान था, जैसे कि इलेक्ट्रॉनिक्स कौशल के लिए - मैं हेडफोन के तारों को मिलाप कर सकता था। समस्या यह थी कि एक वेब डेवलपर होने के नाते मैं असंतुष्ट महसूस करने लगा क्योंकि मैं जो करता हूं वह भौतिक दुनिया को किसी भी तरह से प्रभावित नहीं करता है। बेशक, बहुत सारे सॉफ्टवेयर-ओनली प्रोजेक्ट हैं जो वास्तविक दुनिया को प्रभावित करते हैं लेकिन मैंने सबसे सीधा तरीका अपनाने और रोबोटिक्स में गोता लगाने का फैसला किया।
इसलिए मैंने इस विषय पर कुछ किताबें पढ़ीं, यूट्यूब पर कुछ वीडियो देखे, कुछ लेख पढ़े, और सोल्डरिंग उपकरण और एक 3 डी प्रिंटर खरीदा, क्योंकि आजकल 3डी प्रिंटर सस्ते और उपलब्ध हैं और मुझे खाद्य कंटेनरों से पुर्जे बनाने के सिरदर्द से बचा सकते हैं। समान कबाड़।
मेरा पहला रोबोट यह कैटरपिलर प्लेटफॉर्म था:
मैंने ब्लेंडर में पुर्जे डिजाइन किए और फिर उन्हें प्रिंट किया। मैंने रास्पबेरी पाई को इसके दिमाग के रूप में और एक पावर बैंक को आपूर्ति के रूप में इस्तेमाल किया। मैंने मोटर नियंत्रक को रिले और ट्रांजिस्टर से बाहर निकाला। इस चीज़ को बनाने की प्रक्रिया में मुझे एक समस्या का सामना करना पड़ा, जब मैंने सब कुछ इकट्ठा किया, तो मोटरें मुश्किल से चल रही थीं। यह पता चला कि मैंने ट्रांजिस्टर के कलेक्टर और एमिटर को मिलाया, और उन्हें फिर से मिलाने के बाद सब कुछ काम करने लगा। इस चीज़ को रोबोट कहना मुश्किल है क्योंकि यह अपने आप कुछ नहीं करता है और केवल दूर से नियंत्रित होता है। वैसे भी, मैंने इसे बनाने के बारे में बहुत अच्छा महसूस किया, खुद पर विश्वास किया, और एक ही चीज़ बनाने का फैसला किया, लेकिन एक उड़ने वाला।
कुछ शोध के बाद, मैंने कुछ पारंपरिक क्वाडकॉप्टर भागों जैसे ब्रशलेस मोटर्स, इलेक्ट्रॉनिक स्पीड कंट्रोलर और एक लाइपो बैटरी का उपयोग करने का फैसला किया, जो मोटर्स को उच्च धारा प्रदान करने में सक्षम है। एक मस्तिष्क के रूप में, मैंने अभी भी उसी रास्पबेरी पाई का उपयोग किया है। जब मुझे पता चला कि रास्पबेरी पाई को ईएससी के साथ कैसे इंटरफ़ेस किया जाए, तो मैंने सभी भागों को पकड़ने के लिए एक फ्रेम डिजाइन करना शुरू कर दिया। मैं इस उम्मीद में केवल अंतर्ज्ञान पर भरोसा कर रहा था कि फ्रेम की आवश्यकताएं बहुत सख्त नहीं हैं क्योंकि मैंने ऐसे अजीब आकार के ड्रोन देखे जो अभी भी उड़ने में सक्षम थे।
मैंने i2c बस में जाइरोस्कोप, एक्सेलेरोमीटर, बैरोमीटर और मैग्नेटोमीटर को शामिल करते हुए एक बोर्ड भी खरीदा। इससे पहले कि मैं यह भी सीखता कि पीआईडी नियंत्रक क्या है, मेरा पहला सहज दृष्टिकोण इसके पी घटक के काम करने के तरीके के समान था - क्षैतिज विमान से ड्रोन के विचलन के कोण के अनुपात में मोटर गति को आनुपातिक रूप से बढ़ाएं या घटाएं।
शुरुआत में, मैंने सोचा था कि यह बहुत मुश्किल काम नहीं होगा लेकिन सभी असफल प्रयासों के बाद मुझे नहीं पता था कि इसे सही तरीके से कैसे किया जाए क्योंकि बहुत सी चीजें हैं जो ठीक से काम नहीं कर सकती हैं। और केवल कुछ सॉफ्टवेयर बनाने के विपरीत, प्रत्येक रन शारीरिक क्षति के साथ समाप्त हो सकता है और अगला प्रयास क्षतिग्रस्त भागों को बदलने के बाद ही संभव होगा। साथ ही किराए के छोटे से फ्लैट में इस चीज को परखना इतना आसान नहीं है। अगर मेरे पास एक बड़ा गैरेज, शेड या ऐसा कुछ होता तो मैं ऐसा निर्माण कर सकता था जो ड्रोन की गति को प्रतिबंधित कर दे।
इसके बजाय, मुझे फावड़ियों और अपने हाथों को सुधारना और उपयोग करना पड़ा, जिससे कभी-कभी मामूली लेकिन अप्रिय चोटें आती थीं।
कुछ बिंदु पर, मैंने सोचा कि माउस और कीबोर्ड के साथ ड्रोन को नियंत्रित करना सुविधाजनक नहीं है और एक नियंत्रक ऐप बनाने का फैसला किया, जहां मैं पैरामीटर बदल सकता हूं, सेंसर रीडिंग की निगरानी कर सकता हूं, और धीरे-धीरे एनालॉग-जैसे यूआई के साथ ड्रोन को नियंत्रित कर सकता हूं।
प्रारंभ में, किसी कारण से, मैंने केवल यह महसूस करने के लिए क्षैतिज लेवलिंग नियंत्रण पर ध्यान केंद्रित किया कि मैं इसका सुरक्षित रूप से परीक्षण नहीं कर सकता और मुझे जो अधिक चाहिए वह स्वचालित ऊंचाई नियंत्रण है। मेरा पहला विचार बैरोमीटर रीडिंग का उपयोग करना था, लेकिन वे घर के अंदर ऊंचाई को नियंत्रित करने के लिए पर्याप्त सटीक नहीं थे (या शायद मैंने उन्हें गलत तरीके से इस्तेमाल किया था) इसलिए मैंने एक स्थानीय इलेक्ट्रॉनिक घटक की दुकान में एक अल्ट्रासोनिक सेंसर खरीदा। दरअसल, इसका एक अजीब इंटरफ़ेस था जो माप के दौरान एक पिन को ऊंचा कर देता है और आपको दूरी निकालने के लिए समय गिनना पड़ता है। जब रास्पबेरी पाई अपेक्षाकृत निष्क्रिय थी तो इसने ठीक काम किया लेकिन कम्प्यूटेशनल लोड के तहत यह सिर्फ समय चूक गया और रीडिंग कचरा थी। इसलिए मुझे एसपीआई इंटरफेस पर सुविधाजनक डिजिटल रूप में इन समय और आउटपुट परिणामों को मापने के लिए पूरी तरह से परियोजना में एक अतिरिक्त एवीआर नियंत्रक जोड़ना पड़ा।
मैंने ड्रोन की गति को ऊपर और नीचे तक सीमित करने के लिए दो साइकिल ब्रेक केबल और मुद्रित गाइड भी खरीदे ताकि मैं स्वतंत्रता की अन्य डिग्री को नियंत्रित करने के बारे में सोचे बिना ऊंचाई नियंत्रण पर ध्यान केंद्रित कर सकूं।
और यह उस मामले को छोड़कर काम करता है जब प्रोपेलर काम कर रहे थे, अशांति पैदा कर रहे थे जो 40 सेमी से ऊपर की ऊंचाई पर अल्ट्रासोनिक सेंसर रीडिंग में हस्तक्षेप करता था। जब मुझे अंततः इसका पता चला तो मुझे अल्ट्रासोनिक सेंसर को लेजर से बदलना पड़ा।
उस समय, मेरे पास पहले से ही ऊंचाई नियंत्रण था, लेकिन फिर भी स्थिर क्षैतिज स्तर प्राप्त नहीं कर सका, भले ही मैंने इसके लिए पीआईडी नियंत्रण लागू किया था। मैंने इसके कई कारणों का अनुमान लगाया और मुझे यकीन नहीं है कि उनमें से किसने समस्या में सबसे ज्यादा योगदान दिया। लेकिन यहाँ वे हैं:
विकास प्रक्रिया में कहीं न कहीं, मैं मॉड्यूल के बीच तारों की संख्या और उन्हें लगाने के तरीके से निराश हो गया। इसलिए मैंने कस्टम पीसीबी बनाने के कौशल में कुछ समय लगाने का फैसला किया। मैंने इसके बारे में लंबे समय तक सोचा लेकिन महंगे उपकरण खरीदने और रसायनों से निपटने की आवश्यकता से हतोत्साहित हो गया।
वास्तव में, यह मेरे विचार से आसान निकला, मैंने अपने पीसीबी का डिज़ाइन बनाने के लिए KiCAD पर कुछ ट्यूटोरियल देखे। मैंने 40 डॉलर में एक सेकेंड-हैंड लेजर प्रिंटर खरीदा, 5 डॉलर में बिना छेद वाला एक नियमित लोहा भी खरीदा, और सबसे महंगा उपकरण 75 डॉलर में ड्रिलिंग प्रेस था। रसायन इतने खतरनाक नहीं निकले, अगर आप उन्हें छूते हैं तो वे आपकी त्वचा को भंग नहीं करेंगे।
इसलिए मैंने चौथे प्रयास में यह पीसीबी बनाया। सबसे कठिन हिस्सा वास्तव में सोल्डर मास्क लगाना था। यह पीसीबी क्या करता है कि यह सेंसर, ESP32 और रास्पबेरी पाई को आपस में जोड़ता है और विभिन्न भागों में उपयुक्त वोल्टेज वितरित करता है।
ऐप में वर्तमान सेंसर रीडिंग दिखाने वाले फैंसी चार्ट ड्रोन को दुर्घटनाग्रस्त होने से रोकने की कोशिश करते समय विश्लेषण करना मुश्किल हो गया। इसलिए मैंने सेंसर डेटा को रिकॉर्ड करने की क्षमता को जोड़ा और उड़ान के वीडियो रिकॉर्ड के साथ फ्रेम द्वारा फ्रेम का विश्लेषण करने के लिए एक पायथन स्क्रिप्ट लिखी।
अगर मैंने पहले ऐसा किया होता तो मैं दोषपूर्ण अल्ट्रासोनिक सेंसर के कारण होने वाली समस्याओं की जांच में बहुत कम समय लगाता, जिसका मैंने पहले उल्लेख किया था।
कुछ बिंदु पर, मैंने अपेक्षाकृत स्थिर ऊंचाई, दिशा और क्षैतिज समतल नियंत्रण प्राप्त किया लेकिन फिर भी क्षैतिज बहाव से बच नहीं सका। और अगर किसी को पता है कि क्या केवल IMU सेंसर का उपयोग करके क्षैतिज बहाव से छुटकारा पाना संभव है, तो कृपया मुझे टिप्पणियों में बताएं।
मैंने कुछ शोध किया और मुझे पता चला कि कुछ ड्रोन पोजिशन होल्ड के लिए जीपीएस का इस्तेमाल करते हैं और मैंने उसी तकनीक को लागू करने की कोशिश की। लेकिन समस्या यह है कि यह केवल बाहर काम करता है, लेकिन बाहर भी मैं कोई संतोषजनक परिणाम प्राप्त नहीं कर सका। उस मौसम में हवा, बारिश और बर्फ के साथ मौसम भयानक था, इसलिए मैंने बहुत प्रयास नहीं किए, जीपीएस के साथ जमानत दी, और कंप्यूटर दृष्टि दृष्टिकोण की कोशिश की।
मैंने ड्रोन के नीचे एक कैमरा लगाया और ओपनसीवी लाइब्रेरी का उपयोग करके इस नीले निशान को फर्श पर रखने की कोशिश की। कई प्रयासों और बदलावों के बाद यहाँ परिणाम है:
https://www.youtube.com/watch?v=poqQmvoBlP8
अब यह बिना किसी मैनुअल नियंत्रण और बिना किसी तार के एक बिंदु पर होवर कर सकता है। यह मेरा मध्यवर्ती लक्ष्य था जिसे मैंने आखिरकार हासिल कर लिया, इसलिए मैंने अपनी प्रगति का दस्तावेजीकरण और साझा करने का फैसला किया।
मैंने ड्रोन से ऐप में एक वीडियो स्ट्रीम का स्थानांतरण भी जोड़ा है, इसलिए अब मैं फर्श पर विशेष चिह्नों के बिना सामान्य स्थिति को बनाए रखने और अन्य सुविधाओं को बनाने के लिए विभिन्न दृष्टिकोणों को आजमाने के लिए कंप्यूटर दृष्टि के साथ प्रयोग कर सकता हूं।
वर्तमान कॉन्फ़िगरेशन में, ड्रोन इस तरह बनाया गया है: ESP32 ऊंचाई, दिशा और समतल नियंत्रण के लिए जिम्मेदार है। यह IMU सेंसर और नीचे की तरफ एक लेज़र डिस्टेंस सेंसर से डेटा लेता है। यह मोटर नियंत्रकों को आदेश देता है और यह रास्पबेरी पाई से भी आदेश लेता है, जो स्वयं कैमरे से डेटा का उपयोग करके ऐप और स्थिति नियंत्रण के साथ संचार के लिए जिम्मेदार है।
अगर किसी को कोड देखने में दिलचस्पी है
कोड बहुत साफ नहीं है, क्योंकि मैंने इसे ठीक से काम करने के लिए अक्सर कार्यान्वयन को बदल दिया है। शायद मैं इसे भविष्य में साफ कर दूंगा :)
इसके अलावा, मैंने इसके बारे में एक वीडियो बनाया:
https://www.youtube.com/watch?v=3mAFEW0YOJ0
ध्यान देने के लिए आपको धन्यवाद! प्रोत्साहित करना!