विषयसूची:

Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं: 15 कदम (चित्रों के साथ)
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं: 15 कदम (चित्रों के साथ)

वीडियो: Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं: 15 कदम (चित्रों के साथ)

वीडियो: Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं: 15 कदम (चित्रों के साथ)
वीडियो: Arduino And Raspberry Pi Projects | Arduino & Raspberry Pi In IoT | Internet of Things | Simplilearn 2024, जुलाई
Anonim
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं
Arduino और रास्पबेरी पाई के साथ अपना इंटरनेट नियंत्रित वीडियो-स्ट्रीमिंग रोबोट बनाएं

मैं @RedPhantom (उर्फ लिक्विड क्रिस्टल डिस्प्ले / इटे) हूं, जो इज़राइल का एक 14 वर्षीय छात्र है जो मैक्स शीन जूनियर हाई स्कूल फॉर एडवांस साइंस एंड मैथमेटिक्स में सीख रहा है। मैं इस प्रोजेक्ट को सभी के लिए सीखने और साझा करने के लिए बना रहा हूँ!

आपने खुद सोचा होगा: हम्म… मैं एक गीक हूं… और मेरे बच्चे चाहते हैं कि मैं उनके साथ एक प्रोजेक्ट बनाऊं… वह एक रोबोट बनाना चाहता था। वह इसे एक छोटे पिल्ला की तरह तैयार करना चाहती थी। यह एक अच्छा सप्ताहांत परियोजना है!

रास्पबेरी पाई हर उपयोग के लिए एकदम सही है: आज हम इस माइक्रो-कंप्यूटर की रोबोट बनाने की क्षमताओं को स्पष्ट करेंगे। यह रोबोट कर सकता है:

  • रास्पबेरी पाई के समान वाईफाई नेटवर्क से जुड़े किसी भी कंप्यूटर का उपयोग करके चारों ओर ड्राइव करें और लैन (वाईफाई) के माध्यम से नियंत्रित किया जाए।
  • रास्पबेरी पाई कैमरा मॉड्यूल का उपयोग करके वीडियो को लाइव स्ट्रीम करें
  • Arduino का उपयोग करके सेंसर डेटा भेजें

यह देखने के लिए कि आपको इस अच्छी रोशनी परियोजना के लिए क्या चाहिए, बस अगला चरण (चेतावनी) और उसके बाद वांछित: घटक चरण पढ़ें।

यहाँ GitHub रेपो है: मेरे द्वारा GITHUB REPO

यहाँ परियोजना स्थल है: मेरे द्वारा परियोजना साइट

चरण 1: चेतावनी: घर पर इसे आजमाने में सावधानी बरतें

सावधानी:

इस ट्यूटोरियल के लेखक मानते हैं कि आपके पास बिजली और बिजली के उपकरणों के बुनियादी संचालन के बारे में पर्याप्त जानकारी है। यदि आप सावधान नहीं हैं और इस ट्यूटोरियल में दिए गए निर्देशों का पालन नहीं करते हैं तो आप इलेक्ट्रॉनिक उपकरणों को नुकसान पहुंचा सकते हैं, स्वयं को जला सकते हैं या आग लगा सकते हैं। कृपया सावधान रहें और सामान्य ज्ञान का उपयोग करें। यदि आपके पास इस ट्यूटोरियल (सोल्डरिंग, इलेक्ट्रॉनिक्स की मूल बातें) के लिए आवश्यक ज्ञान नहीं है, तो कृपया किसी ऐसे व्यक्ति के साथ प्रदर्शन करें जो ऐसा करता है। धन्यवाद।

इस निर्देशयोग्य के लेखक की वजह से या खोई हुई संपत्ति या शारीरिक क्षति के लिए स्वयं से किसी भी जिम्मेदारी को हटा देता है। सामान्य ज्ञान का उपयोग करें।

चरण 2: घटक

सम्बन्ध
सम्बन्ध
सम्बन्ध
सम्बन्ध
सम्बन्ध
सम्बन्ध
सम्बन्ध
सम्बन्ध

इससे पहले कि हम टांका लगाने वाले लोहे को गर्म करें, हमें यह देखने की जरूरत है कि किससे जुड़ा होना चाहिए। मैंने यह सरल चार्ट बनाया है (एमएस पेंट ने मुझे कभी निराश नहीं किया) जो वर्णन करता है कि रोबोट के भीतर कुछ भाग कहाँ स्थित हैं।

छवि बनाई गई है ताकि आप ज़ूम इन कर सकें और पूर्ण रिज़ॉल्यूशन में देख सकें और टेक्स्ट पढ़ सकें।

चरण 6: पाई के लिए पता

Arduino योजना के अनुसार Pi के साथ बातचीत करता है। और पाई कंप्यूटर से बात करती है, तो यह सब कैसे काम करता है?

आइए हमारे कनेक्शन दीक्षा अनुक्रम को देखें:

  1. रास्पबेरी पाई शुरू होता है
  2. Arduino शुरू होता है
  3. रास्पबेरी पाई टीसीपी क्लाइंट शुरू करती है। यह अपने आईपी पते को एक एलईडी के माध्यम से शूट करता है।
  4. रास्पबेरी पाई सीरियल संचार सेवा शुरू करती है और Arduino से जुड़ती है

इसलिए हमने किसी प्रकार का संचार स्थापित किया है:

कंप्यूटर रास्पबेरी पाई Arduino

मैंने प्रोग्राम लिखने के लिए Visual Basic. NET (Microsoft Visual Studio 2013 कम्युनिटी) का उपयोग किया है जो Arduino/Raspberry Pi प्रोटोकॉल लिखने के लिए रास्पबेरी पाई और पायथन के साथ बातचीत करता है।

आपको अपना पीआई आईपी पता जानने के लिए बस इतना करना है कि इसे एचडीएमआई स्क्रीन से कनेक्ट करना है, शेल में लॉग इन करना है और कमांड टाइप करना है:

होस्टनाम -I

चरण 7: योजना

अब जब हमें पाई का आईपी पता मिल गया है तो हम इसमें एसएसएच करेंगे (एसएसएच सिक्योर शेल है - हम लिनक्स शेल से दूरस्थ रूप से जुड़ते हैं) और एक फाइल लिखें जो सर्वर का आईपी पता प्रदर्शित करती है। स्टार्टअप पर पाई भी ऐसा ही करेगा और उस पोर्ट को लिखेगा जिसे वह सुन रहा है। यहां मैं कोड से केवल कुछ उदाहरण दूंगा लेकिन यह इस चरण से और मेरे द्वारा बनाई गई गिटहब शाखा से डाउनलोड करने के लिए उपलब्ध है। उस पर विवरण बाद में।

यह ऐसा काम करता है:

  1. आरपीआई शुरू होता है।
  2. आरपीआई अपने स्थानीय आईपी और एक निर्दिष्ट बंदरगाह पर टीसीपी कार्यक्रम शुरू करता है।
  3. आरपीआई वीडियो स्ट्रीम करना शुरू करता है
  4. आरपीआई बंद हो जाता है।

चरण 8: भौतिक जाना

अब, हम शारीरिक रूप से पूरी चीज़ का निर्माण शुरू करने के लिए तैयार हैं। यदि आपने चरण 1 (चेतावनी पाठ और लाइसेंसिंग) नहीं पढ़ा है, तो कृपया आगे बढ़ने से पहले ऐसा करें। मैं किसी भी नुकसान के लिए जिम्मेदार नहीं हूं। और संदेह के मामले में, इस रोबोट का उपयोग सैन्य उद्देश्यों के लिए नहीं किया जाना चाहिए जब तक कि यह एक ज़ोंबी सर्वनाश न हो। और फिर भी सामान्य ज्ञान का प्रयोग करें।

यह सुझाव दिया जाता है कि आप पठन सूची में दिए गए निर्देशों को सुनें।

"कनेक्शन" चरण से कनेक्शन योजना डाउनलोड करें।

मोटर्स

आपके द्वारा खरीदी गई मोटरें शायद इस तरह दिखती हैं, और यदि वे नहीं हैं तो ठीक है: यदि उनके पास केवल दो तार हैं (ज्यादातर मामलों में काले और लाल) तो इसे काम करना चाहिए। उनके ऑपरेटिंग वोल्टेज और करंट को देखने के लिए उनकी डेटाशीट ऑनलाइन देखें। बेझिझक टिप्पणी अनुभाग में प्रश्न पूछें। मैं उन्हें हमेशा पढ़ता हूं।

एच पुल

मैंने पहले कभी एच-ब्रिज के साथ काम नहीं किया है। मैंने थोड़ा गुगली की और एक HB के सिद्धांतों को समझाते हुए एक अच्छा निर्देश योग्य पाया। आप वहां भी देख सकते हैं (पढ़ने की सूची चरण देखें) और अपना भी हुक कर सकते हैं। मैं ज्यादा नहीं समझाऊंगा। आप वहां पढ़ सकते हैं और वह सब जान सकते हैं जो आपको इस सर्किट के बारे में जानना चाहिए।

एलईडी

यह छोटा सा लाइटबॉल तार्किक वोल्टेज से सिर्फ इसलिए चल सकता है क्योंकि इसमें लगभग कोई करंट नहीं होता है, और 3V-5V 4mA-18mA का वोल्टेज होता है। वैकल्पिक।

अर्डुइनो

Arduino को रास्पबेरी पाई से सीरियल कनेक्शन के माध्यम से सिग्नल और कमांड मिलेंगे। हम अपने मोटर्स को नियंत्रित करने के लिए Arduino का उपयोग करते हैं क्योंकि रास्पबेरी पाई GPIO के माध्यम से एनालॉग मूल्यों का उत्पादन नहीं कर सकता है।

चरण 9: रास्पबेरी पाई को ऑटोस्टार्ट करना

हर बार जब आप रास्पबेरी पाई को पावर देंगे, तो आपको यूजरनेम और पासवर्ड टाइप करना होगा। हम ऐसा नहीं करना चाहते हैं क्योंकि कभी-कभी हम कीबोर्ड को पाई से कनेक्ट नहीं कर पाते हैं, इसलिए हम इस ट्यूटोरियल के इन चरणों का पालन करके उस प्रोग्राम को ऑटो-स्टार्ट करेंगे जो पाई तैयार करता है। यदि यह एक लूप में चिपक जाएगा तो हम इसे बाधित करने के लिए हमेशा Ctrl + C कर सकते हैं।

  • सुडो क्रोंटैब -ई
  • और फिर हम उस कमांड को दर्ज करेंगे जो क्रोन मैनेजर में उस फाइल को ऑटो-स्टार्टअप में जोड़ता है।

हम फ़ाइल pibot.sh को कॉल करेंगे जो रोबोट को संचालित करने के लिए सभी प्रकार की पायथन स्क्रिप्ट शुरू करने के लिए कमांड देगी। आइए इस पर चलते हैं: (हम प्रोग्राम को GPIO तक पहुंचने की अनुमति देने के लिए परदे के पायथन प्रोग्राम के साथ sudo करते हैं)

रास्पिविड -ओ - -टी 0 -एचएफ -डब्ल्यू 640 -एच 360 -एफपीएस 25 | cvlc -vvv स्ट्रीम:/// dev/stdin --sout '#rtp{sdp=rtsp://:8554}' :demux=h264

वह कोड जो pi के पक्ष में सभी कार्य करता है, on_startup.sh कहलाएगा।

यह एक साधारण शेल स्क्रिप्ट है जो सब कुछ चलाती है।

चरण 10: ह्यूस्टन, हमारे पास एक समस्या है … डीसी मोटर्स एक ही मॉडल नहीं हैं।

मैंने पहले ही एच-ब्रिज का परीक्षण कर लिया है और यह ठीक काम करता है, लेकिन जब मैं रोबोट प्लेटफॉर्म से मिली मोटरों को हुक करता हूं तो मैंने ऑनलाइन ऑर्डर किया कि वे दो मोटर अलग-अलग गति से मुड़ें और अलग-अलग शोर करें। मैंने मोटरों पर थ्रॉटल को 100% में बदल दिया। ये दोनों अपनी अधिकतम क्षमता से नहीं चल सके।

ऐसा लगता है कि ये दो अलग-अलग मोटरें हैं। एक के पास एक बड़ा टॉर्क है जो इस तरह के रोबोट के लिए बहुत अच्छा है लेकिन दूसरा रोबोट को नहीं हिलाएगा। तो यह हलकों में बदल जाता है।

इस बिंदु पर, मुझे जो मिला है वह Arduino पर सीरियल प्रोग्राम पूरी तरह से ठीक काम करता है लेकिन पीसी पर टीसीपी सर्वर और पीआई पर टीसीपी क्लाइंट अभी तक कोड नहीं किया गया है। पर मुझे प्रतियोगिता के लिए इस प्रविष्टि को पूरा करने की आवश्यकता है। मैं क्या करूं?

  1. सबसे पहले, मैं मोटर्स के लिए वोल्टेज को तीन गुना करता हूं। डेटाशीट ने कहा कि 3V, 6V ने उन्हें स्थानांतरित नहीं किया। यह तब 9V है। मैंने टीओ बैटरी को करंट को दोगुना करने के लिए समानांतर में जोड़ा और वोल्टेज समान रहता है।
  2. क्या मेरे पास अन्य मोटरें हैं जो प्लेटफॉर्म पर माउंट करने के लिए फिट हैं? शायद मैं देख सकता हूं कि क्या वे समान मॉडल हैं।
  3. अगर चॉकलेट वास्तव में पंखे से टकराती है तो मैं सर्वोस की जगह ले सकता हूं।

स्कूल शुरू हुआ। मुझे देखना होगा कि क्या करना है।

नोट: मैं अपने सामने आने वाली समस्याओं को यहां धरती पर क्यों लिखता हूं? इसलिए यदि आप कम अनुभवी हैं और आपको भी वही समस्याएं हैं तो आपको पता होगा कि क्या करना है।

समाधान:

इसलिए मैंने एक और परीक्षण किया है। मैंने Arduino कोड में गति के अंतर को अनुकूलित किया है।

नोट: मोटर आपके लिए अलग-अलग गति से घूम सकते हैं! Arduino स्केच में मान बदलें।

चरण ११: [टीसीपी]: टीसीपी और नॉट सिक्योर शेल क्यों? टीसीपी क्या है?

मेरे पास दो स्पष्टीकरण हैं कि पीसी के लिए टीसीपी का उपयोग क्यों करें और एसएसएच का नहीं। - पीआई संचार।

  1. सबसे पहले, SSH (सिक्योर शेल, स्पष्टीकरण देखें) एक दूरस्थ कंप्यूटर से कमांड लॉन्च करने के लिए है। हम जो जानकारी चाहते हैं, उसके साथ पाई को प्रतिक्रिया देना अधिक कठिन है क्योंकि डेटा का विश्लेषण करने का हमारा एकमात्र विकल्प कठिन और थकाऊ स्ट्रिंग प्रोसेसिंग के माध्यम से है।
  2. दूसरे, हम पहले से ही जानते हैं कि एसएसएच का उपयोग कैसे किया जाता है और हम इस ट्यूटोरियल में उपकरणों के बीच संचार के और तरीके सीखना चाहते हैं।

टीसीपी, या ट्रांसमिशन कंट्रोल प्रोटोकॉल, इंटरनेट प्रोटोकॉल सूट का एक मुख्य प्रोटोकॉल है। यह प्रारंभिक नेटवर्क कार्यान्वयन में उत्पन्न हुआ जिसमें यह इंटरनेट प्रोटोकॉल (आईपी) का पूरक था। इसलिए, पूरे सूट को आमतौर पर टीसीपी/आईपी के रूप में जाना जाता है। टीसीपी एक आईपी नेटवर्क पर संचार करने वाले मेजबानों पर चल रहे अनुप्रयोगों के बीच ऑक्टेट की एक धारा की विश्वसनीय, आदेशित और त्रुटि-जांच वितरण प्रदान करता है।

(विकिपीडिया से)

तो टीसीपी पेशेवर हैं:

  • सुरक्षित
  • तेज़
  • नेटवर्क पर कहीं भी काम करता है
  • सही डेटा ट्रांसमिशन की जाँच करने के तरीके प्रदान करता है
  • प्रवाह नियंत्रण: यदि डेटा प्रेषक क्लाइंट को पंजीकरण और संसाधित करने के लिए डेटा बहुत तेज़ी से भेजता है तो सुरक्षा होती है।

और विपक्ष हैं:

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

यूडीपी का उपयोग क्यों न करें, आप पूछ सकते हैं? ठीक है, टीसीपी के विपरीत, यूडीपी यह सुनिश्चित नहीं करता है कि आपके ग्राहक को और अधिक भेजने से पहले डेटा मिल जाए। जैसे ईमेल भेजना और यह नहीं जानना कि क्लाइंट उसे प्राप्त करता है या नहीं। इसके अलावा, यूडीपी कम सुरक्षित है। अधिक जानकारी के लिए, इस पोस्ट को स्टैक एक्सचेंज सुपर यूजर से पढ़ें

यह लेख अच्छा और अनुशंसित है।

चरण १२: [टीसीपी]: चलो एक ग्राहक बनाते हैं

क्लाइंट (हमारे मामले में रास्पबेरी पाई), जो सर्वर से डेटा प्राप्त करता है (हमारे मामले में हमारा पीसी) पीआई को भेजने के लिए डेटा प्राप्त करेगा (सीरियल कमांड जो Arduino पर किया जाएगा) और डेटा वापस प्राप्त करें (सेंसर रीडिंग) और सीधे Arduino से प्रतिक्रिया। संलग्न योजना तीनों के बीच संबंध को दर्शाती है।

Python Wiki TcpCommunication आलेख से पता चलता है कि अंतर्निहित सॉकेट मॉड्यूल का उपयोग करके कोड की कुछ पंक्तियों के साथ ऐसा संचार करना इतना आसान है। हमारे पास पीसी पर एक प्रोग्राम होगा और पीआई पर एक और प्रोग्राम होगा।

हम रुकावटों के साथ काम करेंगे। उनके बारे में स्पष्टीकरण चरण में और जानें। वहां बफ़र्स के बारे में भी पढ़ें। अब, हम डेटा = s.recv (BUFFER_SIZE) का उपयोग करके हमारे पास मौजूद डेटा को पढ़ सकते हैं, लेकिन यह होगा कि हमने कितने वर्णों को खाली बाइट से परिभाषित किया है। क्या हम इंटरप्ट का उपयोग कर सकते हैं? एक अन्य प्रश्न: क्या बफर खाली होगा या यह सर्वर द्वारा अधिक डेटा भेजने की प्रतीक्षा करेगा जिस स्थिति में सर्वर/क्लाइंट टाइमआउट अपवाद फेंक देगा?

आइए एक बार में इससे निपटें। ऐसा करने से पहले, मैंने इस विकिपीडिया लेख को देखा है जिसमें प्रयुक्त टीसीपी और यूडीपी पोर्ट सूचीबद्ध हैं। एक त्वरित नज़र के बाद मैंने फैसला किया है कि यह परियोजना पोर्ट 12298 पर संचार करेगी क्योंकि इसका उपयोग ऑपरेटिंग सिस्टम और स्थानीय सेवाओं द्वारा नहीं किया जाता है।

चरण 13: हमारे Tcp Comms का प्रयास करें

यह देखने के लिए कि क्या हम इंटरप्ट का उपयोग कर सकते हैं, आइए पायथन कमांड लाइन का उपयोग करके एक साधारण क्लाइंट और एक सर्वर बनाएं। मैं निम्नलिखित चरणों में ऐसा करूंगा:

  1. एक प्रोग्राम शुरू करें जो एक पर्दे के बंदरगाह के माध्यम से एक लूप में टीसीपी के माध्यम से एक पाठ भेजता है
  2. एक और प्रोग्राम शुरू करें (समानांतर में) जो सभी टेक्स्ट को लूप में पढ़ता है और स्क्रीन पर प्रिंट करता है।

केवल कार्यक्रम के खंड दिखाए जाएंगे। सभी प्रोग्राम पायथन 3 के साथ चलते हैं। ये सभी प्रोग्राम पीसी उपयोगकर्ता के कीबोर्ड से सीरियल कमांड को पीआई के माध्यम से Arduino पर भेजना है।

  • SBcontrolPC.py - पीसी पर चलाने के लिए। स्थानीय पते पर और निर्दिष्ट पोर्ट पर एक टीसीपी कनेक्शन शुरू करता है (मैं पोर्ट 12298 का उपयोग करता हूं, पिछला चरण क्यों देखें)
  • SBcontrolPi.py - पाई पर चलने के लिए। इसके बफर को हर आधे सेकेंड (0.5 सेकेंड) में पढ़ता है। एक शेल स्क्रिप्ट शुरू करता है जो वीडियो स्ट्रीमिंग आदि जैसी चीजों का प्रबंधन करती है।

सिफारिश की: