- सामग्री की आवश्यकता:
- बाधा से बचने रोबोट की अवधारणा:
- सर्किट आरेख और स्पष्टीकरण:
- प्रोग्रामिंग आप PIC माइक्रोकंट्रोलर:
- एक्शन में बाधा से बचने वाला रोबोट:
बाधा टालने वाला रोबोट एक और प्रसिद्ध रोबोट है जो एम्बेडेड परियोजनाओं को मसाले देता है। जो लोग नए बाधा बाधा रोबोट हैं, उनके लिए यह सिर्फ एक सामान्य पहिएदार रोबोट है जो बिना किसी बाधा के अपने रास्ते को नेविगेट कर सकता है। परियोजना में एक बाधा अवरोधक रोबोट बनाने के कई तरीके हैं हम एक अल्ट्रासोनिक सेंसर (सामने) और दो आईआर सेंसर (बाएं / दाएं) का उपयोग करने जा रहे हैं ताकि हमारे रोबोट की तीनों दिशाओं में आँखें हों। इस तरह से आप इसे तीनों तरफ की वस्तुओं का पता लगाकर और उसके अनुसार पैंतरेबाज़ी करके इसे अधिक स्मार्ट और तेज़ बना सकते हैं। यहां हम रोबोट से बचने वाली बाधा के लिए PIC माइक्रोकंट्रोलर PIC16F877A पर मुकदमा कर रहे हैं ।
रोबोट से बचने की बाधा का संचालन एक वास्तविक समय उत्पाद से किया जा सकता है जिसे होम क्लीनिंग रोबोट कहा जाता है। हालाँकि इनमें इस्तेमाल की जाने वाली तकनीक और सेंसर ज्यादा जटिल हैं, लेकिन अवधारणा एक ही है। देखते हैं कि हम अपने सामान्य सेंसर और PIC माइक्रोकंट्रोलर का उपयोग करके कितना पूरा कर सकते हैं।
इसके अलावा हमारे अन्य बाधा से बचने रोबोटों की जाँच करें:
- रास्पबेरी पाई आधारित बाधा रोबोट से बचना
- Arduino का उपयोग करके DIY स्मार्ट वैक्यूम क्लीनिंग रोबोट
सामग्री की आवश्यकता:
- PIC16F877A
- आईआर सेंसर (2Nos)
- अल्ट्रासोनिक सेंसर (1Nos)
- डीसी गियर मोटर (2Nos)
- L293D मोटर चालक
- चेज़ (आप कार्डबोर्ड का उपयोग करके भी अपना निर्माण कर सकते हैं)
- पावर बैंक (कोई भी उपलब्ध बिजली स्रोत)
बाधा से बचने रोबोट की अवधारणा:
बाधा से बचने वाले रोबोट की अवधारणा बहुत सरल है। हम रोबोट के चारों ओर वस्तुओं की उपस्थिति का पता लगाने के लिए सेंसर का उपयोग करते हैं और इस डेटा का उपयोग उन वस्तुओं पर रोबोट को नहीं टकराने के लिए करते हैं। किसी ऑब्जेक्ट का पता लगाने के लिए हम IR सेंसर और अल्ट्रासोनिक सेंसर जैसे किसी भी उपयोग सेंसर का उपयोग कर सकते हैं ।
हमारे रोबोट में हमने यूएस सेंसर का उपयोग फ्रंट सेंसर और दो आईआर सेंसर क्रमशः बाएं और दाएं के लिए किया है। रोबोट तब आगे बढ़ेगा जब उसके सामने कोई वस्तु मौजूद न हो। इसलिए रोबोट तब तक आगे बढ़ेगा जब तक कि अल्ट्रासोनिक (यूएस) सेंसर किसी वस्तु का पता नहीं लगा लेता ।
जब अमेरिकी सेंसर द्वारा किसी वस्तु का पता लगाया जाता है, तो रोबोट की दिशा बदलने का समय आ जाता है। हम या तो बाएं या दाएं मुड़ सकते हैं, मोड़ दिशा तय करने के लिए हम आईआर सेंसर की मदद का उपयोग करके यह जांच सकते हैं कि रोबोट के बाईं या दाईं ओर कोई वस्तु मौजूद है या नहीं।
अगर रोबोट के सामने और दाईं ओर एक ऑब्जेक्ट का पता चला है, तो रोबोट वापस आ जाएगा और बाएं मुड़ जाएगा। हम रोबोट को एक निश्चित दूरी के लिए पीछे की ओर चलाने के लिए बनाते हैं ताकि वह मोड़ बनाते समय वस्तु पर न टकराए।
अगर रोबोट के सामने और बाईं ओर एक ऑब्जेक्ट का पता चला है, तो रोबोट वापस आ जाएगा और दाएं मुड़ जाएगा।
अगर रोबोट कमरे के एक कोने में पहुंच जाता है तो उसे चारों में मौजूद वस्तु समझ में आ जाएगी। इस मामले में हमें रोबोट को पीछे की ओर चलाना होगा जब तक कि कोई भी पक्ष मुक्त नहीं हो जाता।
एक अन्य संभावित मामला यह है कि सामने कोई वस्तु होगी लेकिन हो सकता है कि कोई वस्तु न तो बाईं ओर हो और न ही दाईं ओर, इस मामले में हमें किसी भी दिशा में बेतरतीब ढंग से मुड़ना होगा।
आशा है कि इसने एक बाधाकारक विचार दिया होगा कि एक बाधा अवरोधक कैसे काम करता है, अब चलो इस बॉट के निर्माण के लिए सर्किट आरेख के साथ आगे बढ़ते हैं और कार्रवाई में आनंद लेते हैं।
सर्किट आरेख और स्पष्टीकरण:
रोबोट से बचने वाले इस पीआईसी आधारित बाधा का पूरा सर्किट आरेख उपरोक्त चित्र में दिखाया गया है। जैसा कि आप देख सकते हैं कि हमने रोबोट के आगे मौजूद वस्तु की दूरी को मापने के लिए क्रमश: रोबोट के बाएं और दाएं पर वस्तुओं का पता लगाने के लिए दो IR सेंसर का इस्तेमाल किया है। हमने इस परियोजना में मौजूद दो मोटर को चलाने के लिए एक L293D मोटर चालक मॉड्यूल का भी उपयोग किया है । ये पहियों के लिए सिर्फ साधारण डीसी गियर मोटर्स हैं और इसलिए इन्हें बहुत आसानी से प्राप्त किया जा सकता है। निम्न तालिका कनेक्शन में आपकी सहायता करेगी।
एस.एन.ओ. |
से जुड़ा हुआ |
से जुड़ा |
1 |
आईआर सेंसर पिन बाहर छोड़ दिया |
RD2 (पिन 21) |
२ |
IR सेंसर पिन को राइट आउट करें |
RD3 (पिन 22) |
४ |
मोटर 1 चैनल एक पिन |
RC4 (पिन 23) |
५ |
मोटर 1 चैनल बी पिन |
RC5 (पिन 25) |
६ |
मोटर 2 चैनल एक पिन |
RC6 (पिन 26) |
। |
मोटर 2 चैनल बी पिन |
RC7 (पिन 27) |
। |
यूएस ट्रिगर पिन |
आरबी 1 (पिन 34) |
९ |
यूएस इको पिन |
आरबी 2 (पिन 35) |
L293D जैसे एक मोटर चालक मॉड्यूल अनिवार्य है, क्योंकि DC गियर मोटर को चलाने के लिए आवश्यक वर्तमान की मात्रा को PIC माइक्रोकंट्रोलर के I / O पिन से सॉर्ट नहीं किया जा सकता है। सेंसर और मॉड्यूल + 5V आपूर्ति द्वारा संचालित है जिसे 7805 द्वारा विनियमित किया जा रहा है। मोटर चालक मॉड्यूल को + 12 वी का उपयोग करके भी संचालित किया जा सकता है, लेकिन इस परियोजना के लिए मैं अभी उपलब्ध + 5 वी पर अटक गया हूं।
पूरा रोबोट मेरे मामले में एक पावर बैंक द्वारा संचालित है । आप किसी भी साधारण पावर बैंक का उपयोग कर सकते हैं और नियामक अनुभाग को पास कर सकते हैं या उपरोक्त सर्किट का उपयोग कर सकते हैं और ऊपर दिए गए सर्किट आरेख में दिखाए गए अनुसार रोबोट के लिए किसी भी 9 वी या 12 वी बैटरी का उपयोग कर सकते हैं। आपके कनेक्शन हो जाने के बाद यह नीचे कुछ इस तरह दिखाई देगा
प्रोग्रामिंग आप PIC माइक्रोकंट्रोलर:
प्रोग्रामिंग आप एक बाधा से बचने के लिए काम करने के लिए PIC वास्तव में आसान है। हमें बस इन तीन सेंसर का मूल्य पढ़ना है और तदनुसार मोटर्स को चलाना है। इस परियोजना में हम एक अल्ट्रासोनिक सेंसर का उपयोग कर रहे हैं। हमने पहले ही जान लिया है कि पीआईसी माइक्रोकंट्रोलर के साथ अल्ट्रासोनिक को कैसे इंटरफ़ेस किया जाता है, अगर आप नए हैं तो कृपया यह समझने के लिए कि ट्यूटोरियल कैसे वापस आते हैं, यह समझने के लिए कि यूएस सेंसर पीआईसी के साथ कैसे काम करता है, क्योंकि मैं पुनरावृत्ति से बचने के लिए यहां इसके बारे में विवरण छोड़ रहा हूं।
पूरा कार्यक्रम या इस रोबोट इस पृष्ठ के अंत में दिया जाता है, मैं आगे नीचे कार्यक्रम का महत्वपूर्ण हिस्सा समझा दिया है।
जैसा कि हम जानते हैं कि सभी कार्यक्रम इनपुट और आउटपुट पिन घोषणाओं के साथ शुरू होते हैं । यहां मोटर चालक मॉड्यूल के चार पिन और ट्रिगर पिन आउटपुट पिन हैं, जबकि इको पिन और दो आईआर आउट इनपुट होंगे। हमें अल्ट्रासोनिक सेंसर के साथ इसका उपयोग करने के लिए टाइमर 1 मॉड्यूल को इनिशियलाइज़ करना चाहिए।
TRISD = 0x00; // एलसीडी TRISB1 = 0 को इंटरफेस करने के लिए PORTD को आउटपुट घोषित किया गया; // US सेंसर का ट्रिगर पिन आउटपुट पिन TRISB2 = 1 के रूप में भेजा जाता है; // यूएस सेंसर का इको पिन इनपुट पिन TRISB3 = 0 के रूप में सेट किया गया है; // RB3 एलईडी TRISD2 = 1 के लिए आउटपुट पिन है; TRISD3 = 1; // दोनों IR सेंसर पिन को TRISC4 = 0 के रूप में घोषित किया गया है; TRISC5 = 0; // मोटर 1 पिन आउटपुट TRISC6 = 0 के रूप में घोषित किया गया; TRISC7 = 0; // मोटर 2 पिन आउटपुट T1CON = 0x20;
इस कार्यक्रम में हमें सेंसर और ऑब्जेक्ट के बीच की दूरी के लिए अक्सर जांच करनी होगी, इसलिए हमने एक फ़ंक्शन बनाया है जिसका नाम calcul_distance () है जिसके अंदर हम यूएस सेंसर इंटरफेसिंग ट्यूटोरियल में चर्चा की गई विधि द्वारा दूरी को मापेंगे। कोड नीचे दिखाया गया है
शून्य गणना_दशा () // अमेरिका की दूरी की गणना करने के लिए कार्य {TMR1H = 0; TMR1L = 0; // स्पष्ट टाइमर बिट्स ट्रिगर = 1; __delay_us (10); ट्रिगर = 0; जबकि (इको == 0); TMR1ON = 1; जबकि (इको == 1); TMR1ON = 0; time_taken = (TMR1L - (TMR1H << 8)); दूरी = (0.0272 * time_taken) / 2; }
अगला कदम अल्ट्रासोनिक सेंसर और आईआर सेंसर के मूल्यों की तुलना करना और तदनुसार रोबोट को स्थानांतरित करना होगा । यहाँ इस कार्यक्रम में मैंने महत्वपूर्ण दूरी के रूप में सेमी के मान का उपयोग किया है जिसके नीचे रोबोट को दिशा में परिवर्तन करना शुरू करना चाहिए। आप अपने पसंदीदा मूल्यों का उपयोग कर सकते हैं। अगर ऑब्जेक्ट नहीं है तो रोबोट बस आगे बढ़ता है
if (दूरी> 5) {RC4 = 0; RC5 = 1; // मोटर 1 आगे RC6 = 1; आरसी 7 = 0; // मोटर 2 आगे}
यदि किसी वस्तु का पता लगाया जाता है, तो दूरी सेमी से नीचे चली जाएगी। इस मामले में हम बाएं और दाएं अल्ट्रासोनिक सेंसर के मूल्यों पर विचार करते हैं। इस मूल्य के आधार पर हम निर्णय लेते हैं कि या तो बाएं मुड़ें या दाएं मुड़ें। एमएस की देरी का उपयोग किया जाता है ताकि परिवर्तन दिशा दिखाई दे।
if (RD2 == 0 && RD3 == 1 && दूरी <= 5) // लेफ्ट सेंसर अवरुद्ध है {back_off (); RC4 = 1; RC5 = 1; // मोटर 1 स्टॉप RC6 = 1; आरसी 7 = 0; // मोटर 2 आगे __delay_ms (500); } calcul_distance (); if (RD2 == 1 && RD3 == 0 && दूरी <= 5) // राइट सेंसर अवरुद्ध है {back_off (); RC4 = 0; RC5 = 1; // मोटर 1 आगे RC6 = 1; आरसी 7 = 1; // मोटर 2 स्टॉप __delay_ms (500); }
कभी-कभी अल्ट्रासोनिक सेंसर एक ऑब्जेक्ट का पता लगाता है, लेकिन आईआर सेंसर द्वारा पता लगाया गया कोई ऑब्जेक्ट नहीं होगा । इस स्थिति में रोबोट डिफ़ॉल्ट रूप से छोड़ दिया जाता है। आप इसे अपनी प्राथमिकताओं के आधार पर सही या यादृच्छिक दिशा में मोड़ सकते हैं। यदि दोनों तरफ वस्तुएं हैं तो हम इसे पीछे की ओर ले जाते हैं। समान करने के लिए कोड नीचे दिखाया गया है।
calcul_distance (); if (RD2 == 0 && RD3 == 0 && दूरी <= 5) // दोनों सेंसर खुला है {back_off (); RC4 = 0; RC5 = 1; // मोटर 1 आगे RC6 = 1; आरसी 7 = 1; // मोटर 2 स्टॉप __delay_ms (500); } calcul_distance (); if (RD2 == 1 && RD3 == 1 && दूरी <= 5) // दोनों सेंसर को अवरुद्ध किया गया है {back_off (); RC4 = 1; RC5 = 0; // मोटर 1 रिवर्स RC6 = 1; आरसी 7 = 1; // मोटर 2 स्टॉप __delay_ms (1000); }
एक्शन में बाधा से बचने वाला रोबोट:
प्रोजेक्ट का काम देखना बहुत दिलचस्प और मजेदार है। एक बार जब आप अपने सर्किट और कोड के साथ काम करते हैं, तो बस अपने बॉट पर शक्ति डालें और इसे जमीन पर छोड़ दें। यह बाधाओं की पहचान करने और उन्हें स्मार्ट तरीके से बचने में सक्षम होना चाहिए। लेकिन, यहाँ मज़ा हिस्सा आता है। आप कोड को संशोधित कर सकते हैं और इसे और अधिक सामान बना सकते हैं जैसे कि इसे एक सीढ़ी से बचने के लिए, यह कीमती घुमावों को संग्रहीत करके इसे स्मार्ट बनाता है और क्या नहीं?
यह रोबोट आपको प्रोग्रामिंग के मूल को समझने में मदद करेगा और सीखेगा कि एक वास्तविक हार्डवेयर आपके कोड पर कैसे प्रतिक्रिया देगा। इस रोबोट को प्रोग्राम करना और वास्तविक दुनिया में कोड के लिए यह कैसे व्यवहार करता है, यह देखना हमेशा मजेदार होता है।
यहां हमने उसी PIC perf बोर्ड का उपयोग किया है जो हमने PIC microcontroller का उपयोग करके एलईडी ब्लिंकिंग के लिए बनाया है और PIC ट्यूटोरियल श्रृंखला की अन्य परियोजनाओं में इस बोर्ड का उपयोग किया है।
आपका रोबोट ऊपर चित्र में दिखाए गए के समान कुछ दिखना चाहिए। इस परियोजना का पूरा काम नीचे दिए गए वीडियो में दिखाया गया है ।
आशा है कि आप इस परियोजना को समझ गए हैं और एक निर्माण का आनंद लिया है। यदि आपको कोई संदेह है या आप फंस गए हैं तो आप अपने प्रश्नों को पोस्ट करने के लिए टिप्पणी अनुभाग का उपयोग कर सकते हैं और मैं उन्हें जवाब देने के लिए अपनी पूरी कोशिश करूंगा।