- Arduino आधारित फ़्लोर क्लीनिंग रोबोट बनाने के लिए आवश्यक सामग्री
- पोर्टेबल वैक्यूम क्लीनर
- HC-SR04 अल्ट्रासोनिक सेंसर मॉड्यूल
- सीढ़ी पहचान के लिए फ्लोर सेंसर (आईआर सेंसर)
- Arduino आधारित फ़्लोर क्लीनर रोबोट का सर्किट आरेख
- Arduino आधारित फ़्लोर क्लीनिंग रोबोट के लिए सर्किट का निर्माण
- Arduino
आजकल के परिदृश्य में, हम सभी अपने काम में इतने व्यस्त हैं कि हमारे पास अपने घर की ठीक से सफाई करने का समय नहीं है। समस्या का समाधान बहुत सरल है, आपको बस एक घरेलू वैक्यूम क्लीनर रोबोट खरीदने की आवश्यकता है जैसे कि इरोबोट रूमबा जो आपके घर को एक बटन के प्रेस से साफ करेगा। लेकिन ऐसे वाणिज्यिक उत्पाद ई सामान्य मुद्दा है, जो लागत है। इसलिए आज, हमने एक साधारण फ्लोर क्लीनर रोबोट बनाने का फैसला किया , जो न केवल बनाने में आसान है, बल्कि बाजार में उपलब्ध वाणिज्यिक उत्पादों की तुलना में बहुत कम है। बार-बार पाठक हमारे Arduino वैक्यूम क्लीनिंग रोबोट को याद कर सकते हैं, जिसे हमने एक लंबे समय पहले बनाया था, लेकिन वह बहुत भारी था और चारों ओर जाने के लिए एक बड़ी सीसा-एसिड बैटरी की आवश्यकता थी। नई Arduino वैक्यूम क्लीनर हम यहां निर्माण करने जा रहे हैं, यह कॉम्पैक्ट और अधिक व्यावहारिक होगा। उसके शीर्ष पर, इस रोबोट में अल्ट्रासोनिक सेंसर और एक आईआर निकटता सेंसर होगा। अल्ट्रासोनिक सेंसर रोबोट को बाधाओं से बचने की अनुमति देगा ताकि यह कमरे में ठीक से साफ होने तक स्वतंत्र रूप से आगे बढ़ सके, और निकटता सेंसर इसे सीढ़ियों से गिरने से बचाने में मदद करेगा। इन सभी विशेषताओं को दिलचस्प लगता है, है ना? तो चलो शुरू करते है।
हमारे पिछले लेखों में से एक में, हमने सेल्फ बैलेंसिंग रोबोट, ऑटोमेटेड सर्फेस डिसिनफेक्टिंग रोबोट और ऑब्सटैलल अवॉइडिंग रोबोट जैसे कई बॉट बनाए। अगर आपके लिए यह दिलचस्प लगता है, तो उनकी जाँच करें।
Arduino आधारित फ़्लोर क्लीनिंग रोबोट बनाने के लिए आवश्यक सामग्री
जैसा कि हमने वैक्यूम क्लीनर रोबोट के हार्डवेयर अनुभाग के निर्माण के लिए बहुत सामान्य घटकों का उपयोग किया है, आपको अपने स्थानीय शौक स्टोर में उन सभी को खोजने में सक्षम होना चाहिए। यहां सभी घटकों की छवि के साथ आवश्यक सामग्री की पूरी सूची दी गई है।
- अरुडिनो प्रो मिनी - 1
- HC-SR04 अल्ट्रासोनिक मॉड्यूल - 3
- L293D मोटर चालक - 1
- 5 वोल्ट एन 20 मोटर्स और बढ़ते ब्रैकेट - 2
- एन 20 मोटर पहियों - 2
- स्विच - 1
- LM7805 वोल्टेज नियामक - 1
- 7.4V लिथियम-आयन बैटरी - 1
- आईआर मॉड्यूल - 1
- इत्र - १
- कैस्टर व्हील - 1
- एमडीएफ
- जेनेरिक पोर्टेबल वैक्यूम क्लीनर
पोर्टेबल वैक्यूम क्लीनर
घटक आवश्यकता खंड में, हमने एक पोर्टेबल वैक्यूम क्लीनर के बारे में बात की है , नीचे दी गई छवियां बिल्कुल वैसा ही दिखाती हैं। यह अमेज़ॅन से एक पोर्टेबल वैक्यूम क्लीनर है। यह एक बहुत ही सरल तंत्र के साथ आता है। इसके तल में तीन भाग होते हैं (धूल के भंडारण के लिए एक छोटा कक्ष, मध्य भाग में मोटर, पंखा और शीर्ष पर बैटरी सॉकेट होता है (बैटरी के लिए एक आवरण या टोपी होती है)। इसमें एक डीसी मोटर होती है। एक पंखा। यह मोटर एक साधारण स्विच के माध्यम से सीधे 3V (2 * 1.5volt AA बैटरी) से जुड़ा होता है। जैसा कि हम अपने रोबोट को 7.4V बैटरी से पावर दे रहे हैं, हम आंतरिक बैटरी से कनेक्शन काट देंगे और इसे 5V से पावर देंगे। बिजली की आपूर्ति। इसलिए, हमने सभी अनावश्यक हिस्सों को हटा दिया है और केवल दो-तार वाले मोटर ही हैं। आप नीचे दी गई छवि में देख सकते हैं।
HC-SR04 अल्ट्रासोनिक सेंसर मॉड्यूल
बाधाओं का पता लगाने के लिए, हम लोकप्रिय HC-SR04 अल्ट्रासोनिक दूरी सेंसर का उपयोग कर रहे हैं या हम इसे बाधा बचाव सेंसर कह सकते हैं । काम करना बहुत सरल है, पहले, ट्रांसमीटर मॉड्यूल एक अल्ट्रासोनिक तरंग भेजता है जो हवा के माध्यम से यात्रा करता है, एक बाधा को हिट करता है, और वापस उछलता है और रिसीवर उस लहर को प्राप्त करता है। Arduino के साथ समय की गणना करके, हम दूरी निर्धारित कर सकते हैं। Arduino आधारित अल्ट्रासोनिक दूरी सेंसर परियोजना पर पिछले लेख में, हमने इस सेंसर के काम सिद्धांत पर बहुत अच्छी तरह से चर्चा की है। यदि आप HC-SR04 अल्ट्रासोनिक दूरी सेंसर मॉड्यूल के बारे में अधिक जानना चाहते हैं, तो आप यह देख सकते हैं।
सीढ़ी पहचान के लिए फ्लोर सेंसर (आईआर सेंसर)
फीचर्स सेक्शन में, हमने एक ऐसे फीचर के बारे में बात की है जहाँ रोबोट सीढ़ियों का पता लगा सकता है और खुद को गिरने से रोक सकता है। ऐसा करने के लिए, हम एक IR सेंसर का उपयोग कर रहे हैं । हम IR सेंसर और Arduino के बीच एक इंटरफ़ेस बनाएंगे । की कार्यप्रणाली आईआर निकटता सेंसर बहुत सरल है, यह एक आईआर एलईडी और एक फोटो डायोड, आईआर एलईडी का उत्सर्जन करता है आईआर प्रकाश है और किसी भी बाधा को इस उत्सर्जित प्रकाश के सामने आता है, यह परिलक्षित होगा, और परिलक्षित प्रकाश पता लगाया जाएगा फोटोडायोड द्वारा। लेकिन प्रतिबिंब से उत्पन्न वोल्टेज बहुत कम होगा। इसे बढ़ाने के लिए, हम एक op-amp तुलनित्र का उपयोग कर सकते हैं, हम आउटपुट बढ़ा सकते हैं और प्राप्त कर सकते हैं। एक आईआर मॉड्यूलतीन पिन हैं - Vcc, ग्राउंड, और आउटपुट। आमतौर पर, सेंसर के सामने एक बाधा आने पर आउटपुट कम हो जाता है। इसलिए, हम इसका उपयोग फर्श का पता लगाने के लिए कर सकते हैं। यदि एक दूसरे विभाजन के लिए, हम सेंसर से एक उच्च का पता लगाते हैं, तो हम रोबोट को रोक सकते हैं, इसे वापस कर सकते हैं या कुछ भी कर सकते हैं जिसे हम सीढ़ी से गिरने से रोकना चाहते हैं। पिछले लेख में, हमने IR प्रॉक्सिमिटी सेंसर मॉड्यूल का एक ब्रेडबोर्ड संस्करण बनाया है और विवरण में काम करने वाले सिद्धांत को समझाया है, आप इस बात की जांच कर सकते हैं कि क्या आप इस सेंसर के बारे में अधिक जानना चाहते हैं।
Arduino आधारित फ़्लोर क्लीनर रोबोट का सर्किट आरेख
हमारे पास तीन अल्ट्रासोनिक सेंसर हैं जो बाधाओं का पता लगाते हैं। इसलिए, हमें अल्ट्रासोनिक सेंसर के सभी आधारों को जोड़ने और उन्हें आम जमीन से जोड़ने की आवश्यकता है। इसके अलावा, हम सेंसर के सभी तीन Vcc को जोड़ते हैं और उसको आम VCC पिन से जोड़ते हैं। अगला, हम Arduino के PWM पिन को ट्रिगर और इको पिंस कनेक्ट करते हैं। हम IR मॉड्यूल के VCC को 5V से भी जोड़ते हैं और Arduino के ग्राउंड पिन को ग्राउंड करते हैं, IR सेंसर मॉड्यूल का आउटपुट पिन Arduino के डिजिटल पिन D2 में जाता है। मोटर चालक के लिए, हम दो इनेबल पिंस को 5 वी से कनेक्ट करते हैं और ड्राइवर वोल्टेज पिन को 5 वी से भी जोड़ते हैं क्योंकि हम 5vol मोटर्स का उपयोग कर रहे हैं। पिछले लेख में, हमने एक Arduino Motor Driver Shield बनाया है, आप L29380 मोटर चालक IC के बारे में अधिक जानने के लिए जाँच कर सकते हैंऔर इसके संचालन। Arduino, अल्ट्रासोनिक मॉड्यूल, मोटर ड्राइवर, और मोटर्स 5 वोल्ट पर काम करते हैं, उच्च वोल्टेज इसे मार देगा और हम 7.4 वोल्ट की बैटरी का उपयोग कर रहे हैं, यह परिवर्तित करने के लिए कि 5 वोल्ट में, LM7805 वोल्टेज नियामक का उपयोग किया जाता है। वैक्यूम क्लीनर को सीधे मुख्य सर्किट से कनेक्ट करें।
Arduino आधारित फ़्लोर क्लीनिंग रोबोट के लिए सर्किट का निर्माण
अपने रोबोट के बारे में कुछ विचार प्राप्त करने के लिए, मैंने वैक्यूम क्लीनर रोबोटों की ऑनलाइन खोज की और गोल आकार के रोबोटों की कुछ छवियां प्राप्त कीं। इसलिए, मैंने एक गोल-आकार का रोबोट बनाने का फैसला किया। रोबोट के पीछा और शरीर के निर्माण के लिए, मेरे पास फोम शीट, एमडीएफ, कार्डबोर्ड आदि जैसे बहुत सारे विकल्प हैं, लेकिन मैं एमडीएफ का चयन करता हूं क्योंकि यह कठिन है और इसमें कुछ पानी प्रतिरोधी गुण हैं। यदि आप ऐसा कर रहे हैं, तो आप तय कर सकते हैं कि आप अपने बॉट के लिए कौन सी सामग्री चुनेंगे।
रोबोट का निर्माण करने के लिए, मैंने एमडीएफ शीट ली, फिर 8 CM त्रिज्या के साथ दो वृत्त खींचे , और उस वृत्त के अंदर, मैंने एक और वृत्त खींचा है जिसमें ४ CM का त्रिज्या है।वैक्यूम क्लीनर की फिटिंग के लिए। फिर मैंने मंडलियों को काट दिया। इसके अलावा, मैंने पहिया पथ के लिए उपयुक्त टुकड़ों को काट दिया है और हटा दिया है (बेहतर समझ के लिए छवियों को देखें)। अंत में, मैंने कैस्टर व्हील के लिए तीन छोटे छेद किए। अगला कदम अपने ब्रैकेट का उपयोग करके आधार पर मोटर्स को फिटिंग कर रहा है, साथ ही कैस्टर व्हील को उसकी स्थिति के लिए भी ठीक कर रहा है। उसके बाद, अल्ट्रासोनिक सेंसर को बाएं, दाएं और रोबोट के बीच में रखें। इसके अलावा, आईआर मॉड्यूल को रोबोट के निचले हिस्से से कनेक्ट करें। बाहर पर स्विच जोड़ने के लिए मत भूलना। यह सब रोबोट के निर्माण के बारे में है, यदि आप इस बिंदु पर भ्रमित हो रहे हैं, तो आप निम्नलिखित छवियों का उल्लेख कर सकते हैं।
शीर्ष भाग के लिए, मैंने फोम शीट पर त्रिज्या में 11 सीएम का एक चक्र भी खींचा है और इसे काट दिया है। ऊपर और नीचे के हिस्से के बीच अंतर के लिए, मैंने एक प्लास्टिक ट्यूब के तीन 4 सीएम लंबे टुकड़ों को काट दिया था। उसके बाद, मैंने नीचे के हिस्से पर प्लास्टिक के स्पेसर्स को चिपकाया और फिर मैंने शीर्ष भाग को चिपकाया। यदि आप चाहते हैं तो आप प्लास्टिक या इसी तरह की सामग्री के साथ बॉट के साइड पार्ट्स को कवर कर सकते हैं।
Arduino
इस परियोजना के लिए पूरा कोड दस्तावेज़ के अंत में दिया गया है। यह Arduino कोड Arduino आधारित अल्ट्रासोनिक दूरी सेंसर कोड के समान है, एकमात्र परिवर्तन मंजिल का पता लगाने में है। निम्नलिखित लाइनों में, मैं समझा रहा हूं कि कोड कैसे काम करता है। इस मामले में, हम किसी अतिरिक्त लाइब्रेरी का उपयोग नहीं कर रहे हैं। नीचे हमने चरण-दर-चरण तरीके से कोड का वर्णन किया है। हम HC-SR04 सेंसर से दूरी डेटा को डीकोड करने के लिए किसी भी अतिरिक्त पुस्तकालयों का उपयोग नहीं कर रहे हैं, क्योंकि यह बहुत सरल है। निम्नलिखित पंक्तियों में, हमने बताया कि कैसे। सबसे पहले, हमें सभी तीन अल्ट्रासोनिक दूरी सेंसर के लिए ट्रिगर पिन और इको पिन को परिभाषित करने की आवश्यकता है जो कि Arduino बोर्ड से जुड़े हैं। इस परियोजना में, हमारे पास तीन इको पिन और तीन ट्रिगर पिन हैं। ध्यान दें कि 1 बाएं सेंसर है, 2 फ्रंट सेंसर है, और 3 सही सेंसर है।
const int trigPin1 = 3; const int echoPin1 = 5; const int trigPin2 = 6; const int echoPin2 = 9; const int trigPin3 = 10; const int echoPin3 = 11; int irpin = 2;
फिर हमने दूरी के लिए वैरिएबल परिभाषित किए जो सभी (इंट) टाइप वैरिएबल हैं और अवधि के लिए, हमने (लंबी) का उपयोग करना चुना। फिर, हमारे पास प्रत्येक के तीन हैं। इसके अलावा, मैंने आंदोलन की स्थिति को संग्रहीत करने के लिए एक पूर्णांक को परिभाषित किया है, हम इस अनुभाग में बाद में इसके बारे में बात करेंगे।
लंबी अवधि 1; लंबी अवधि 2; लंबी अवधि 3; int दूरी; int दूरी; इंट डिस्टेंकाइट; int a = 0;
अगला, सेटअप अनुभाग में, हमें पिनकोड () फ़ंक्शन का उपयोग करके सभी परिप्रेक्ष्य पिन को इनपुट या आउटपुट के रूप में बनाना होगा । मॉड्यूल से अल्ट्रासोनिक तरंगों को भेजने के लिए, हमें ट्रिगर पिन को उच्च करने में सक्षम होना चाहिए अर्थात सभी ट्रिगर पिनों को OUTPUT के रूप में परिभाषित करना चाहिए । और प्रतिध्वनि प्राप्त करने के लिए, हमें प्रतिध्वनि की स्थिति को पढ़ने की आवश्यकता है ताकि सभी प्रतिध्वनि पिन को INPUT के रूप में परिभाषित करें । साथ ही, हम समस्या निवारण के लिए सीरियल मॉनिटर को सक्षम करते हैं। आईआर-मॉड्यूल की स्थिति को पढ़ने के लिए, मैंने इरपिन को इनपुट के रूप में परिभाषित किया है ।
पिनमोड (trigPin1, OUTPUT); पिनमोड (trigPin2, OUTPUT); pinMode (trigPin3, OUTPUT); pinMode (echoPin1, INPUT); pinMode (echoPin2, INPUT); pinMode (echoPin3, INPUT); पिनमोड (irpin, INPUT);
और इन डिजिटल पिंस को मोटर चालक के इनपुट के लिए OUTPUT के रूप में परिभाषित किया गया है ।
पिनमोड (4, बाहर); पिनमोड (7, OUTPUT); पिनमोड (8, OUTPUT); पिनमोड (12, OUTPUT);
मुख्य लूप में, हमारे पास तीन सेंसर के लिए तीन खंड हैं। सभी अनुभाग समान हैं, लेकिन प्रत्येक अलग-अलग सेंसर के लिए काम करते हैं। इस खंड में, हम प्रत्येक सेंसर से बाधा दूरी को पढ़ते हैं और इसे प्रत्येक परिभाषित पूर्णांक में संग्रहीत करते हैं। दूरी को पढ़ने के लिए, पहले, हमें यह सुनिश्चित करना होगा कि ट्रिगर पिन स्पष्ट हैं, इसके लिए, हमें ट्रिगर पिन को 2 pin के लिए LOW पर सेट करने की आवश्यकता है । अब, अल्ट्रासोनिक लहर पैदा करने के लिए, हम ट्रिगर पिन चालू करने की आवश्यकता उच्च 10 μs के लिए। यह अल्ट्रासोनिक ध्वनि भेजेगा और पल्स इन () फ़ंक्शन की सहायता से, हम यात्रा के समय को पढ़ सकते हैं, और उस मान को चर " अवधि " में संग्रहीत कर सकते हैं । इस फ़ंक्शन के 2 पैरामीटर हैं, पहला ईको पिन का नाम है और दूसरे के लिए, आप या तो लिख सकते हैंउच्च या कम । उच्च का मतलब है कि pulseIn () समारोह पिन जाने के लिए इंतजार करेंगे उच्च वजह से ध्वनि तरंग बाउंस और यह गिनती शुरू कर देंगे से है, तो यह पिन जाने के लिए इंतजार करेंगे कम जब ध्वनि तरंग खत्म हो जाएगा, जो गिनती बंद हो जाएगा। यह फ़ंक्शन माइक्रोसेकंड में नाड़ी की लंबाई देता है। दूरी की गणना के लिए, हम अवधि को 0.034 से गुणा करेंगे (हवा में ध्वनि की गति 340 मीटर / सेकंड) और इसे 2 से विभाजित करें (यह ध्वनि तरंग के पीछे और आगे की यात्रा के कारण है)। अंत में, हम प्रत्येक सेंसर की दूरी को इसी पूर्णांक में संग्रहीत करते हैं।
digitalWrite (trigPin1, LOW); देरीमाइक्रोसेकंड (2); digitalWrite (trigPin1, HIGH); देरीमाइक्रोसेकंड (10); digitalWrite (trigPin1, LOW); अवधि 1 = पल्स इन (इकोपिन 1, हाई); दूरी = अवधि 1 * 0.034 / 2;
प्रत्येक सेंसर से दूरी प्राप्त करने के बाद, हम एक बयान की मदद से मोटर्स को नियंत्रित कर सकते हैं और इस प्रकार हम रोबोट की गति को नियंत्रित करते हैं। यह बहुत सरल है, सबसे पहले, हमने एक बाधा दूरी मूल्य दिया, इस मामले में, यह 15 सेमी है (इस मूल्य को अपनी इच्छा के रूप में बदलें)। फिर हमने उस मूल्य के अनुसार शर्तें दीं। उदाहरण के लिए, जब बायाँ सेंसर के सामने कोई बाधा आती है (अर्थात बाएँ सेंसर की दूरी 15 सेमी के बराबर होनी चाहिए) और अन्य दो दूरी अधिक होती हैं (इसका मतलब है कि कोई बाधा उस सेंसर के सामने नहीं है), फिर डिजिटल राइट फंक्शन की मदद से हम मोटर्स को दाईं ओर चला सकते हैं। बाद में, मैंने आईआर सेंसर की स्थिति की जांच की। यदि रोबोट फर्श पर है, तो IR पिन का मान LOW होगा, और यदि नहीं, तो मान होगाउच्च । फिर मैंने उस मान को इंट एस वेरिएबल में स्टोर कर लिया । हम इस स्थिति के अनुसार रोबोट को नियंत्रित करने जा रहे हैं।
कोड का यह खंड रोबोट फॉरवर्ड और बैकवर्ड को स्थानांतरित करने के लिए उपयोग किया जाता है :
if (s == हाई) { digitalWrite (4, LOW); digitalWrite (7, उच्च); digitalWrite (8, LOW); digitalWrite (12, उच्च); देरी (1000); a = 1; }
लेकिन इस पद्धति के साथ एक समस्या है जब मोटर पीछे जाती है, तो फर्श वापस आता है और बॉट आगे बढ़ेगा, और यह बॉट को अटक कर दोहराएगा। उस पर काबू पाने के लिए, हम एक मान को स्टोर करते हैं (1) int के बाद फर्श मौजूद नहीं है। हम अन्य आंदोलनों के लिए भी इस स्थिति की जांच करते हैं।
फर्श की अनुपस्थिति का पता लगाने के बाद, रोबोट आगे नहीं बढ़ेगा। इसके बजाय, यह बाएं ओर जाएगा, इस तरह, हम समस्या से बच सकते हैं।
if ((a == 0) && (s == LOW) && (दूरी <= 15 और& दूरी) 15 && दूरी (<15) - (a == 0) और& (s == कम) && (दूरी) 15 && दूरी का भाग> 15 और& भेदक> 15))
उपरोक्त अवस्था में। सबसे पहले, रोबोट फर्श की स्थिति और पूर्णांक मूल्य की जांच करेगा। यदि सभी शर्तें पूरी हो जाती हैं, तो बॉट केवल आगे बढ़ेगा।
अब, हम मोटर चालक के लिए कमांड लिख सकते हैं। यह दाएं-मोटर को पीछे और बाएं-मोटर को आगे बढ़ाएगा, जिससे रोबोट को दाईं ओर मोड़ दिया जाएगा।
कोड का यह खंड रोबोट राइट को स्थानांतरित करने के लिए उपयोग किया जाता है:
digitalWrite (4, उच्च); digitalWrite (7, LOW); digitalWrite (8, उच्च); digitalWrite (12, LOW);
यदि बॉट का पता चलता है कि फर्श अनुपस्थित है, तो मान 1 में बदल जाता है, और बॉट बाईं ओर चला जाएगा। बाएं मुड़ने के बाद, 'a' का मान 1 से 0 में बदल जाता है।
if ((a == 1) && (s == LOW) - (s == LOW) और& (दूरी <= 15 && दूरी (<15) और& distanceright> 15) - (s == LOW) && (दूरी) <= 15 && डिस्टेंसेफ़ <= 15 && डिस्टेंसराइट> 15) - (s == कम) और& (दूरी <= 15 और& डिस्टेंफ़्रेंस> 15 और& डिस्टेंसराइट> 15) - (दूरी </ 15> और दूरी <15> और डिस्टेंफ़लाइट> 15)) { digitalWrite (4, उच्च); digitalWrite (7, LOW); digitalWrite (8, LOW); digitalWrite (12, उच्च); देरी (100); a = 0; }
कोड का यह खंड रोबोट वामपंथियों को स्थानांतरित करने के लिए उपयोग किया जाता है:
if (s == LOW) && (दूरी = 15 && दूरी) <= 15 और& distanceright = = 15) - (s == LOW) && (दूरी + 15 && दूरी)> 15 और + दूरी ~ <= 15) - (s == LOW) && (दूरी + 15 और& दूरी) <= 15 && distanceright> 15)) { digitalWrite (4, LOW); digitalWrite (7, उच्च); digitalWrite (8, उच्च); digitalWrite (12, LOW); }
यह Arduino आधारित स्मार्ट वैक्यूम क्लीनर रोबोट बनाने के लिए है। परियोजना का पूरा काम इस पृष्ठ के निचले भाग से जुड़े वीडियो में पाया जा सकता है । यदि आपके कोई प्रश्न हैं, तो नीचे टिप्पणी करें।