विषयसूची:

आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन: 6 कदम (चित्रों के साथ)
आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन: 6 कदम (चित्रों के साथ)

वीडियो: आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन: 6 कदम (चित्रों के साथ)

वीडियो: आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन: 6 कदम (चित्रों के साथ)
वीडियो: Arduino Vs NodeMCU | Difference Between | Best Microcontroller For IoT | ESP8266 Vs Arduino UNO | 2024, जून
Anonim
Image
Image
आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन
आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन
आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन
आईओटी और एडब्ल्यूएस के साथ एलेक्सा वॉयस नियंत्रित रास्पबेरी पाई ड्रोन

नमस्ते! मेरा नाम अरमान है। मैं मैसाचुसेट्स का 13 वर्षीय लड़का हूं। यह ट्यूटोरियल दिखाता है, जैसा कि आप शीर्षक से अनुमान लगा सकते हैं, रास्पबेरी पाई ड्रोन कैसे बनाया जाए। यह प्रोटोटाइप दर्शाता है कि ड्रोन कैसे विकसित हो रहे हैं और भविष्य में वे कितनी बड़ी भूमिका निभा सकते हैं। मैं निश्चित रूप से 10 वर्षों में खुद को जागते हुए देख सकता हूं और एक ड्रोन से मेरे लिए नाश्ता लाने के लिए कह सकता हूं। ड्रोन चलाने के लिए Amazon Alexa, Amazon Web Services, IoT (इंटरनेट ऑफ थिंग्स) और सबसे महत्वपूर्ण रास्पबेरी पाई का उपयोग करता है। यह ड्रोन के बारे में प्रदर्शित करने और सूचित करने के लिए है और वे हर दिन कैसे सुधार कर रहे हैं। उम्मीद है कि आप सफल होंगे और इस प्रक्रिया में ड्रोन के बारे में जानेंगे। शुभकामनाएँ और पढ़ने के लिए धन्यवाद। -अरमानी

आपूर्ति

प्रोटोटाइप बनाने के लिए विभिन्न हार्डवेयर और सॉफ्टवेयर की जरूरत होती है। मैंने ड्रोन बनाने के लिए द ड्रोन डोजो द्वारा एक ऑनलाइन ट्यूटोरियल का उपयोग किया और सूचीबद्ध तकनीकों को एकीकृत किया। ड्रोन के लिए आप भागों की सूची यहीं पा सकते हैं:

ड्रोन भागों की सूची

सॉफ़्टवेयर आवश्यकताएं:

  • अमेज़न वेब सेवाएँ
  • एक लैपटॉप
  • मिशन प्लानर सॉफ्टवेयर
  • बलेना एचर
  • रास्पियन फ़ाइल वाला माइक्रोएसडी कार्ड यहां मिला
  • अमेज़ॅन एलेक्सा, भौतिक या आभासी

चरण 1: भागों को इकट्ठा करना और समझना

भागों को इकट्ठा करना और समझना
भागों को इकट्ठा करना और समझना

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

रास्पबेरी पाई Emlid Navio2. के साथ

यह हिस्सा काफी हद तक एक केंद्रीय प्रोसेसर और ड्रोन का मुख्य बिंदु है। रास्पबेरी पाई एक कंप्यूटर के सीपीयू की तरह काम करता है जो ड्रोन के अन्य हिस्सों में पीडब्लूएम (पल्स चौड़ाई मॉड्यूलेशन सिग्नल) के माध्यम से निष्पादित करने के लिए नेवियो 2 को कमांड भेजता है।

2. ईएससी (इलेक्ट्रॉनिक स्पीड कंट्रोलर)

ये पीले भाग फ्रेम के नीचे पाए जाते हैं। वे नेवियो में 4 प्लग इन हैं, प्रत्येक मोटर के लिए एक। पीडब्लूएम सिग्नल प्राप्त करने पर, वे मोटरों को घुमाते हैं और उड़ान शुरू करते हैं।

3. मोटर्स

मोटर्स को बहुत अधिक स्पष्टीकरण की आवश्यकता नहीं है क्योंकि आप शायद उनसे परिचित हैं। वे थ्रस्ट बनाने के लिए प्रोपेलर को घुमाते और घुमाते हैं।

4. प्रोपेलर

प्रोपेलर ड्रोन के उड़ने के लिए जोर पैदा करते हैं। वे उसी दिशा में घूमते हैं जैसे वाहन को उठाने के लिए मोटरें।

5. बैटरी और पावर मॉड्यूल

लीपो बैटरी पावर मॉड्यूल का उपयोग करके पूरे ड्रोन को फ्रेम के माध्यम से शक्ति प्रदान करती है। यह लगभग 15-20 मिनट की उड़ान का समय देता है और एक शक्ति स्रोत के रूप में कार्य करता है।

6. जीपीएस

जीपीएस ड्रोन की स्थिति निर्धारित करने के लिए उपग्रहों के साथ संचार करता है। यह ऊंचाई, अक्षांश और देशांतर को निर्धारित करता है। इसका उपयोग जियोफेंसिंग, वेपॉइंट्स, और कुछ पदों या दिशाओं में जाने के लिए भी किया जा सकता है।

7. टेलीमेट्री मॉड्यूल

टेलीमेट्री मॉड्यूल हमारे ड्रोन को एक ग्राउंड कंट्रोल स्टेशन से जोड़ता है, हमारे मामले में मिशन प्लानर की निगरानी के लिए।

8. पीपीएम एनकोडर के साथ आरसी नियंत्रक और मॉड्यूल

आरसी नियंत्रक ड्रोन को मैन्युअल रूप से चलाने के लिए आरसी मॉड्यूल को सिग्नल और कमांड भेजने के लिए रेडियो का उपयोग करता है। पीपीएम एनकोडर नेवियो + आरपीआई को संसाधित करने और निष्पादित करने के लिए इन संकेतों का अनुवाद करता है।

9. फ्रेम

यह लाल और सफेद फ्रेम अन्य भागों को रखने के लिए आधार या मंच के रूप में कार्य करता है। फ्रेम वायुगतिकीय और हल्का है, इसलिए हमारे ड्रोन निर्माण के लिए बिल्कुल सही है।

अब हर हिस्से के ज्ञान के साथ, हम आखिरकार ड्रोन बना सकते हैं! अगले चरण के लिए आगे!

चरण 2: ड्रोन को असेंबल करना

ड्रोन को असेंबल करना
ड्रोन को असेंबल करना

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

रास्पबेरी पाई ड्रोन का निर्माण

दोबारा, जैसा कि मैं बहुत अधिक विस्तार में नहीं जाऊंगा, मैं प्रत्येक चरण की मूल बातें उजागर करूंगा।

1. अपनी आपूर्ति व्यवस्थित करें - हमारी सामग्री इकट्ठा करें और सुनिश्चित करें कि वे आसानी से सुलभ हैं

2. अपने निर्माण की योजना बनाएं - आप जो बनाएंगे उसका खाका बनाने के लिए अपने हिस्से को फ्रेम पर व्यवस्थित करें

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

4. फ्रेम की स्थापना - फिर आपको फ्रेम के शीर्ष भाग को भुजाओं के साथ पेंच करना होगा। फिर आप किसी भी तरह से रास्पबेरी पाई को शीर्ष पर संलग्न कर सकते हैं। (मैंने डक्ट टेप का इस्तेमाल किया)। फिर आप ईएससी को जिप-टाई से बाजुओं तक सुरक्षित कर सकते हैं। अब हम लगभग कर चुके हैं।

5. आरसी नियंत्रक को रिसीवर से बांधना - ईएससी का उपयोग करके आरसी नियंत्रक को बाध्य करने के लिए उपरोक्त प्लेलिस्ट में दिए गए निर्देशों का पालन करने का प्रयास करें।

6. फ्रेम पर भागों को अंतिम रूप देना - फ्रेम पर टेलीमेट्री मॉड्यूल पर डक्ट टेप या स्ट्रैप। पीपीएम एनकोडर को एक हाथ से भी टेप करें। अब आप ESC's और PPM एनकोडर को नेवियो से वायर कर सकते हैं।

7. जीपीएस माउंट + बैटरी - जीपीएस माउंट को विभिन्न स्क्रू और टुकड़ों के साथ इकट्ठा करें। ज़िप-टाई का उपयोग करके, GPS को फ़्रेम में संलग्न करें। मैंने आवश्यक रूप से GPS माउंट का उपयोग उसकी नाजुकता के कारण नहीं किया था, लेकिन यह आप पर निर्भर है। इसके बाद, आप पावर डिस्ट के बीच बैटरी डाल सकते हैं। तख़्ता। मैंने पावर मॉड्यूल को फ्रेम में भी बांधा और टेप किया। अब आपका हार्डवेयर काफी हद तक सेट हो गया है। अब हम जिस भाग की प्रतीक्षा कर रहे हैं!

8. प्रोपेलर स्थापित करना !!! - आप प्लेलिस्ट में उल्लिखित चार्ट का उपयोग करके प्रोपेलर को कस सकते हैं। फिर आप ईएससी को मोटरों में प्लग कर सकते हैं और हम अंत में ड्रोन का निर्माण समाप्त कर चुके हैं।

सॉफ्टवेयर का अगला, तो आगे!

चरण 3: रास्पबेरी पाई और जीसीएस (मिशन प्लानर) को कॉन्फ़िगर करना

रास्पबेरी पाई और जीसीएस (मिशन प्लानर) को कॉन्फ़िगर करना
रास्पबेरी पाई और जीसीएस (मिशन प्लानर) को कॉन्फ़िगर करना

फिर से, आप अंतिम चरण से प्लेलिस्ट में अधिक विस्तृत निर्देश पा सकते हैं। हालाँकि, आप शायद जानते हैं कि रासपी को कैसे सेटअप किया जाए। लेकिन इस बार, हम इसे बिना सिर के कर रहे हैं। नेवियो ओएस वेबसाइट से ओएस को माइक्रोएसडी कार्ड में जलाने के लिए बलेना एचर का उपयोग करें। जबकि यह आपके कंप्यूटर में प्लग इन है, नोटपैड ++ का उपयोग करके wpa सप्लिकेंट में जाएं। उसके बाद, रास्पबेरी पाई के लिए अपने वाईफाई से कनेक्ट करने के लिए एसएसआईडी और पासवर्ड दर्ज करें। फिर आपको SSH नाम की एक फाइल जोड़नी होगी। यह कमांड लाइन या किसी अन्य विधि के माध्यम से हो सकता है। अब हम एसएसएच कर सकते हैं। आप कमांड प्रॉम्प्ट या पुट्टी का उपयोग कर सकते हैं। मैंने अपने मामले में कनेक्ट करने के लिए कमांड प्रॉम्प्ट का उपयोग किया और "ssh pi@navio" टाइप किया, या आप उस तरह से IP पता और ssh ढूंढ सकते हैं। कनेक्ट होने पर, इस वीडियो का उपयोग नेवियो को सेट और कॉन्फ़िगर करने के लिए करें। टेलीमेट्री सेटअप करने के लिए आपको पहले रास्पबेरी पाई पर एक संपादन करना होगा। संपादन करने के लिए इसका अनुसरण करें और मिशन प्लानर से जुड़ने का प्रयास करें। यदि टेलीमेट्री काम नहीं करती है, तो आप अपना GCS (ग्राउंड कंट्रोल स्टेशन जैसे लैपटॉप) IP दर्ज करके UDB कनेक्शन का उपयोग करके संपादन को पूर्ववत और कनेक्ट कर सकते हैं। मिशन प्लानर से कनेक्ट होने के बाद, आप ड्रोन के सभी हिस्सों को कैलिब्रेट करने के लिए सेटअप विज़ार्ड का उपयोग कर सकते हैं। यदि आपको सहायता की आवश्यकता है तो प्लेलिस्ट को फिर से देखें। आमतौर पर, जब भी आप सेट अप करते हैं, तो लगभग हमेशा एक त्रुटि होती है। समस्या निवारण इस परियोजना के सबसे बड़े हिस्सों में से एक है। मैं वास्तव में आपकी मदद नहीं कर सकता क्योंकि मुझे आपकी त्रुटियों के बारे में पता नहीं है, लेकिन अधिकांश त्रुटियों को इंटरनेट की मदद से ठीक किया जा सकता है। सब कुछ तैयार होने के बाद, ड्रोन उड़ने के लिए तैयार है! आप अपने RC नियंत्रक और उड़ान मोड को मिशन प्लानर पर सेट कर सकते हैं। ड्रोन को बाँटने के लिए बायीं छड़ी को पाँच सेकंड के लिए बहुत नीचे-दाएँ रखने की कोशिश करें। मैं ट्यूटोरियल को देखे बिना उड़ान भरने की सलाह नहीं देता क्योंकि ड्रोन बहुत नाजुक और तोड़ने में आसान है। मेरे लिए, मैंने पहली बार इसे उड़ाया, मैंने जीपीएस माउंट और कुछ प्रोपेलर तोड़ दिए। यदि आपको ध्वनि नियंत्रण की आवश्यकता नहीं है, तो आप यहां रुक सकते हैं। AWS और प्रोग्रामिंग के बारे में जानने के लिए ड्रोन जारी रखें!

चरण 4: अजगर के साथ उड़ान भरने के लिए ड्रोन की प्रोग्रामिंग

अजगर के साथ उड़ान भरने के लिए ड्रोन की प्रोग्रामिंग
अजगर के साथ उड़ान भरने के लिए ड्रोन की प्रोग्रामिंग

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

1. सबसे पहले रास्पबेरी पाई पर एक निर्देशिका में ArduPilot स्रोत कोड डाउनलोड करें

एमकेडीआईआर एसआरसी

फिर, गिट क्लोन का उपयोग करके गिटहब से फाइलें प्राप्त करें

गिट क्लोन-बी कॉप्टर-3.6.11

अब, /src/ardupilot. पर नेविगेट करते हैं

सीडी स्रोत

सीडी अर्डुपिलॉट

अब, सोर्स फाइल्स को इनिशियलाइज़ करते हैं

git सबमॉड्यूल अपडेट --init --recursive

2. अगला, हमें रास्पबेरी पाई पर फर्मवेयर संकलित करना होगा

अगले चरण करने से पहले सीडी के साथ /src/ardupilot/ पर नेविगेट करना सुनिश्चित करें

फिर विशेष रूप से नेवियो का उपयोग करके कोफिगर करने के लिए

./waf कॉन्फ़िगर करें --board=navio2

फिर आप के साथ संकलित कर सकते हैं

./waf --targets bin/arducopter

3. अब हम नेवियो में सोर्स कोड इंस्टॉल कर सकते हैं

पहले सही निर्देशिका में नेविगेट करने देता है।

सीडी/आदि/सिस्टमडी/सिस्टम

फिर फ़ाइल संपादित करें

sudo vi arducopter.service

जहां यह ExecStart कहता है, वहां पहले से मौजूद चीज़ों के बजाय निम्नलिखित डालें

ExecStart=/bin/sh -c "/home/pi/src/arducopter/build/navio2/bin/arducopter ${ARDUPILOT_OPTS}"

अब, ardupilot स्रोत कोड को क्रियान्वित करने के लिए, हम उपयोग कर सकते हैं

sudo systemctl डेमॉन-रीलोड

फिर हम इसके साथ पुनः आरंभ कर सकते हैं

sudo systemctl arducopter को पुनरारंभ करें

अंतिम चरण के साथ, हमने अंततः अपने ड्रोन पर ArduPilot की स्थापना पूरी कर ली है

4. ड्रोनकिट स्थापित करना

ड्रोनकिट वह सॉफ्टवेयर है जिसका उपयोग हम ड्रोन को उड़ान भरने के लिए प्रोग्राम करने के लिए करेंगे। कुछ कोड को समझने के लिए आप यहां प्रलेखन पा सकते हैं। सबसे पहले हमें स्क्रिप्ट लिखने से पहले पैकेज को अपने ड्रोन पर स्थापित करना होगा।

हम के साथ अजगर पैकेज स्थापित कर सकते हैं

पाइप स्थापित ड्रोनकिट == 2.9.1

यह नवीनतम संस्करण हो सकता है या नहीं भी हो सकता है, लेकिन यह वही है जिसका मैंने उपयोग किया है ताकि मैं समस्या निवारण में मदद कर सकूं।

यह जांचने के लिए कि क्या स्थापित है, हम कर सकते हैं a

पिप फ्रीज | ग्रेप ड्रोनकिट

अब हम अंत में अपनी पहली पायथन लिपि बनाने के लिए तैयार हैं

5. टेकऑफ़_और_लैंड.py

चेतावनी! मेरा सुझाव है कि आप अजगर की एक बुनियादी समझ स्थापित करें, ताकि आप कोड को सीख और समझ सकें। अगर आप खुद प्रोग्राम लिखना चाहते हैं तो इस वीडियो को फॉलो करें।

##पहले इस कोड को स्टोर करने के लिए एक डायरेक्टरी न बनाएं

सीडी डीके ## यदि आप इसे स्वयं करना चाहते हैं तो प्रोग्राम बनाने के लिए vi takeoff_and_land.py ## का उपयोग करें

अन्यथा, आप एक नज़र डाल सकते हैं या संलग्न फ़ाइल का उपयोग कर सकते हैं और फ़ाइल स्थानांतरण प्रोटोकॉल का उपयोग कर सकते हैं। हम बाद में इस कार्यक्रम को आजमा सकते हैं। सबसे पहले यह स्पष्ट करें कि यह एक पायथन फ़ाइल है जिसका हमें उपयोग करना चाहिए

chmod +x takeoff_and_land.py

फिर, चलाने के लिए निम्न कोड का उपयोग करने का प्रयास करें

अजगर takeoff_and_land.py --connect 127.0.0.1:14550

पहली बार इसने मेरे लिए भी काम नहीं किया। यदि कोई लिंक टाइमआउट है, तो चिंता न करें आप कुछ कर सकते हैं। एक और प्रॉम्प्ट खोलें और ssh। आप मावप्रॉक्सी नामक कुछ स्थापित करने का प्रयास कर सकते हैं और इसे चलाने का प्रयास कर सकते हैं। उसके बाद आप दोनों को एक साथ चला सकते हैं। इससे ड्रोन को जोड़ने में मदद मिलनी चाहिए। एक बार यह हो जाने के बाद, मेरे पास आपके लिए एक चुनौती है। यह पता लगाने की कोशिश करें कि दूसरा प्रोग्राम (set_velocity_body.py) क्या करता है और इसे कैसे काम करता है। यदि आप करते हैं, अच्छा काम।

6. आगे!

अब हम इस ज्ञान का उपयोग अपने ड्रोन को आवाज से नियंत्रित करने के लिए कर सकते हैं। एलेक्सा ड्रोन कंट्रोल इनमें से बहुत सारी सुविधाओं और बहुत कुछ का उपयोग करता है। शुभकामनाएँ और आगे!

चरण 5: वॉयस कंट्रोल को एकीकृत करने के लिए अमेज़ॅन एलेक्सा और अमेज़ॅन वेब सेवाओं का उपयोग करना

वॉयस कंट्रोल को एकीकृत करने के लिए अमेज़ॅन एलेक्सा और अमेज़ॅन वेब सेवाओं का उपयोग करना
वॉयस कंट्रोल को एकीकृत करने के लिए अमेज़ॅन एलेक्सा और अमेज़ॅन वेब सेवाओं का उपयोग करना
वॉयस कंट्रोल को एकीकृत करने के लिए अमेज़ॅन एलेक्सा और अमेज़ॅन वेब सेवाओं का उपयोग करना
वॉयस कंट्रोल को एकीकृत करने के लिए अमेज़ॅन एलेक्सा और अमेज़ॅन वेब सेवाओं का उपयोग करना

यह कदम कम प्रलेखित लोगों में से एक है। इसका मतलब है कि समस्या निवारण करना सबसे कठिन होगा। बस इसे काम करने में मुझे लगभग एक महीने का समय लगा, शायद और भी। यहां सबसे महत्वपूर्ण बात धैर्य रखना है। यह फीचर अगर वास्तविक जीवन में लागू किया जाए तो यह जीवन बदलने वाला हो सकता है। आप एलेक्सा से कह सकते हैं कि वह खुद जाने के बजाय आपके लिए किराने का सामान ले आए। कल्पना करो कि! तो बिना किसी और हलचल के चलिए इसमें शामिल होते हैं!

1. रास्पबेरी पाई को एडब्ल्यूएस आईओटी पर एक चीज के रूप में पंजीकृत करना

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

2. रास्पबेरी पाई पर कोड सेट करना और IoT के साथ बातचीत करना

इस भाग के लिए, आपको फ़ाइल स्थानांतरण के लिए एक SFTP क्लाइंट (मैंने WinSCP का उपयोग किया) की आवश्यकता होगी। हमारे रास्पबेरी पाई से कनेक्ट होने पर, हमारे पास प्रमाण पत्र कुंजी होनी चाहिए। आपको मुख्य फाइलों को रास्पबेरी पाई में स्थानांतरित करना होगा। आपको रास्पबेरी पाई पर AWSIoTPythonSDK भी स्थापित करना चाहिए। फिर रास्पबेरी पाई पर डीके डायरेक्टरी में जाएं। आप एलेक्सा ड्रोन कंट्रोल फाइल का उपयोग करें जो मैंने IoT के साथ संचार के लिए दी थी। इस फ़ाइल का उपयोग करने के लिए मैंने शुरू करने के लिए एक शेल स्क्रिप्ट का उपयोग किया। मैं नीचे कोड दिखाऊंगा क्योंकि मैं किसी कारण से फ़ाइल अपलोड नहीं कर सकता। यदि प्रोग्राम परीक्षण के दौरान AWS IoT से संदेश नहीं लेता है, तो चिंता न करें! यह मेरी गलती हो सकती है क्योंकि एलेक्सा ड्रोन कंट्रोल फाइल आपकी चीज के अनुकूल नहीं हो सकती है। तो, इसे ठीक करने के लिए, AWS IoT पर वापस जाएं और बाएं पैनल पर लर्न को हिट करें। निर्देशों का पालन करें और आपको पुनरारंभ करना पड़ सकता है। उसके लिए माफ़ करना। एक बार जब आपका IoT रासपी पर प्रोग्राम के साथ काम करना शुरू कर देता है, तो आप मेरे द्वारा दी गई एलेक्सा ड्रोन कंट्रोल फाइल से ड्रोनकिट कोड को एकीकृत कर सकते हैं। उसके बाद, IoT से आपके प्रमाणपत्रों और बाकी एपीआई एंडपॉइंट के साथ मैंने जो शेल स्क्रिप्ट दी है, उसका उपयोग करें।

# एररसेट पर स्क्रिप्ट रोकें -ई # यह देखने के लिए जांचें कि क्या रूट सीए फाइल मौजूद है, अगर नहीं तो डाउनलोड करें [! -f./root-CA.crt]; फिर प्रिंटफ "\nAWS से AWS IoT रूट CA प्रमाणपत्र डाउनलोड करना…\n" कर्ल https://www.amazontrust.com/repository/AmazonRoot…> > root-CA.crt fi # अगर पहले से इंस्टॉल नहीं है तो पायथन के लिए AWS डिवाइस SDK इंस्टॉल करें अगर [! -d./aws-iot-device-sdk-python]; फिर प्रिंटफ "\nएडब्ल्यूएस एसडीके स्थापित करना…\n" गिट क्लोन https://www.amazontrust.com/repository/AmazonRoot…> pushd aws-iot-device-sdk-python python setup.py install popd fi

# पैकेज में डाउनलोड किए गए प्रमाणपत्रों का उपयोग करके पब/उप नमूना ऐप चलाएं

प्रिंटफ "\nपब/सब सैंपल एप्लिकेशन चलाना…\n" अजगर dk/AlexaDroneControl.py --connect 127.0.0.1:14550 -e "Your IoT ARN" -r root-CA.crt -c PiGroundStation01.cert.pem -k PiGroundStation01.private.key

यह आप सभी के लिए काम नहीं करेगा क्योंकि नाम अलग हैं। जब आप फ़ाइल स्थानांतरित करते हैं, तो मेरे द्वारा उपयोग की जाने वाली कुंजियों के स्थान पर आपके कुंजी नामों को प्रतिस्थापित कर दिया जाता है। फ़ाइल को स्थानांतरित करने से पहले dk से बाहर निकलना सुनिश्चित करें! अभी के लिए आपको बस इतना ही करना चाहिए।

3. अपने एलेक्सा कौशल का निर्माण

यह कदम वास्तव में जितना है उससे कहीं अधिक कठिन लगता है। सबसे पहले, हमें एलेक्सा डेवलपर कंसोल में लॉग इन करना होगा। फिर, बस क्रिएट स्किल को हिट करें। जब यह आपके कौशल के लिए एक मॉडल चुनने के लिए कहता है, तो बस कस्टम हिट करें। जब यह एक विधि चुनने के लिए कहता है, तो अपना खुद का प्रावधान हिट करें। आप इसे जो चाहें नाम दे सकते हैं। किसी टेम्प्लेट की आवश्यकता नहीं है, इसलिए स्क्रैच से स्टार्ट चुनें। अगला, अपना कौशल बनाने के बाद, आपको स्किल बिल्डर स्क्रीन पर दाईं ओर एक चेकलिस्ट के साथ पहुंचना चाहिए। यहां से हम अपने कौशल का निर्माण शुरू कर सकते हैं। चेकलिस्ट में सबसे पहले मंगलाचरण का नाम है। यह आप एलेक्सा को अपने कौशल का आह्वान करने के लिए कहेंगे। मेरे लिए, मैंने अभी अपना आह्वान नाम ड्रोन के रूप में रखा है। अब हम अपने इरादों, कथनों और स्लॉट्स पर जा सकते हैं। यहां, आप ड्रोन के लिए कमांड बना सकते हैं जैसे कि 1 मीटर ऊपर जाएं या दाएं या नीचे जाएं। मेरा वास्तव में अभी के लिए केवल एक मीटर के साथ काम करता है। आप बाएं पैनल के नीचे JSON संपादक पर क्लिक कर सकते हैं। फिर आप इसमें निम्न कोड पेस्ट कर सकते हैं।

{ "इंटरैक्शनमॉडल": { "भाषा मॉडल": {"आह्वाननाम": "ड्रोन", "इरादे": [{"नाम": "अमेज़ॅन। फ़ॉलबैकइन्टेंट", "नमूने": }, {"नाम": "अमेज़ॅन". CancelIntent", "नमूने": }, {"नाम": "AMAZON. HelpIntent", "नमूने": }, {"नाम": "AMAZON. StopIntent", "नमूने": }, { "नाम": "AMAZON. NavigateHomeIntent", "नमूने": }, { "नाम": "GoIntent", "स्लॉट्स": [{ "नाम": "दिशा", "प्रकार": "दिशा" }, { "नाम": "दूरी", "प्रकार": "AMAZON. NUMBER" }, { "नाम": "इकाई", "प्रकार": "इकाई" }], "नमूने": ["जाओ {दिशा} {डिस्टेंस} {यूनिट}", "गो {डिस्टेंस} {यूनिट} {दिशा}"] }, { "नाम": "कमांडइंटेंट", "स्लॉट्स": [{ "नाम": "टास्क", "टाइप": "टास्क" }], "नमूने": ["कमांड ड्रोन टू {टास्क}"] }, { "नाम": "टर्नइंटेंट", "स्लॉट्स": [{ "नाम": "दिशा", "टाइप": " दिशा"}, { "नाम": "घूर्णन", "प्रकार": "अमेज़ॅन. NUMBER" }], "नमूने": ["बदलें {दिशा} {रोटेशन} डिग्री"] }], "प्रकार": [{ "नाम": "दिशा", "मान": [{ "नाम": { "मान": "सीधे", "समानार्थी": ["फॉरवर्ड" ards", "आगे"] } }, { "नाम": { "मान": "पिछला", "समानार्थी": ["पिछड़ा", "पिछड़ा"] }}, { "नाम": { "मान": "दाएं"}}, {"नाम": {"मान": "बाएं"}}, {"नाम": {"मान": "नीचे"}}, { "नाम": { "मान": "ऊपर " } }] }, { "नाम": "इकाई", "मान": [{ "नाम": { "मान": "मीटर", "समानार्थी": ["मीटर"] } }, { "नाम": { "मान": "यार्ड", "समानार्थी": ["यार्ड"] } }, { "नाम": { "मान": "फीट", "समानार्थी": ["पैर"] } }] }, { "नाम": "कार्य", "मान": [{"नाम": { "मूल्य": "भूमि"}}, { "नाम": { "मान": "पकड़ो" }}, { "नाम": { "वैल्यू": "स्टे"}}, {"नाम": {"वैल्यू": "आरटीएल", "समानार्थी": ["रिटर्न टू लॉन्च"] } }] }] } } }

कोड को JSON एडिटर में पेस्ट करने के बाद, आप चेकलिस्ट के तीसरे चरण पर क्लिक कर सकते हैं और यह आपके लिए आपके इंटरैक्शन मॉडल का निर्माण करेगा। इस चरण के साथ, आपको अभी के लिए किया जाएगा। आप अभी के लिए एंडपॉइंट स्लॉट को खाली छोड़ सकते हैं!

चरण 4: अपने लैम्ब्डा फ़ंक्शन का निर्माण

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

github.com/aws/aws-iot-device-sdk-js

www.hackster.io/veggiebenz/voice-controlle…

और आप मेरे द्वारा संलग्न की गई फ़ाइल का उपयोग कर सकते हैं, लेकिन यह अपूर्ण है और काम नहीं करेगी।

/** * अमेज़ॅन एलेक्सा, लैम्ब्डा, 2लेमेट्री एमक्यूटीटी का उपयोग करके अपने एपीएम / पिक्सहॉक क्वाडकॉप्टर को अपनी आवाज से नियंत्रित करें।*/ var awsIot = आवश्यकता ('aws-iot-device-sdk'); var config = आवश्यकता ("./ config"); var deviceName = "इकोड्रोनकंट्रोल"; // यह डिवाइस वास्तव में नियंत्रक है var mqtt_config = { "keyPath": config.privateKey, "certPath": config.certificate, "caPath": config.rootCA, "host": config.host, "port": 8883, "क्लाइंटआईड": "लैम्ब्डा-" + डिवाइसनाम, //+ "-लैम्ब्डा-" + (नई तिथि ()। गेटटाइम ()), "क्षेत्र": "यूएस-ईस्ट -1", "डीबग": सच }; वर सीटीएक्स = शून्य; वर ग्राहक = अशक्त; // आने वाले अनुरोध को प्रकार (LaunchRequest, IntentRequest, आदि) के आधार पर रूट करें। अनुरोध का JSON बॉडी इवेंट पैरामीटर में प्रदान किया गया है। Exports.handler = फ़ंक्शन (ईवेंट, प्रसंग) {कोशिश {कंसोल.लॉग ("event.session.application.applicationId=" + event.session.application.applicationId); सीटीएक्स = संदर्भ; अगर (event.session.application.applicationId !== app_id) { ctx.fail ("अमान्य एप्लिकेशन आईडी"); } क्लाइंट = awsIot.device (mqtt_config); client.on("connect", function(){ कंसोल.लॉग("AWS IoT से कनेक्टेड"); // कॉलबैक (); });

अगर (event.session.new) {

onSessionStarted({requestId: event.request.requestId}, event.session); } अगर (event.request.type === "LaunchRequest") { onLaunch(event.request, event.session); } और अगर (event.request.type === "IntentRequest") { onIntent(event.request, event.session); } और अगर (event.request.type === "SessionEndedRequest") { onSessionEnded(event.request, event.session); सीटीएक्स.सफल (); } } कैच (ई) { कंसोल.लॉग ("हैंडलर में अपवाद:" + ई); ctx.fail ("अपवाद:" + ई); } }; /** * सत्र शुरू होने पर कॉल किया जाता है। */ समारोह onSessionStarted(sessionStartedRequest, session) { console.log("onSessionStarted requestId=" + sessionStartedRequest.requestId + ", sessionId=" + session.sessionId); }

/**

* कॉल किया जाता है जब उपयोगकर्ता यह निर्दिष्ट किए बिना कौशल लॉन्च करता है कि वे क्या चाहते हैं। */ फंक्शन ऑनलांच (लॉन्च रिक्वेस्ट, सेशन, कॉलबैक) { कंसोल. // अपने कौशल के प्रक्षेपण के लिए डिस्पैच करें। getWelcomeResponse (कॉलबैक); } /** * कॉल किया जाता है जब उपयोगकर्ता इस कौशल के लिए एक इरादा निर्दिष्ट करता है। */ फंक्शन ऑनइंटेंट (इंटेंट रिक्वेस्ट, सेशन) {//, कॉलबैक) { कंसोल। वर आशय = IntentRequest.intent, IntentName = IntentRequest.intent.name; कंसोल.लॉग ("स्ट्रिंग के लिए अनुरोध =" + JSON.stringify (intentRequest)); वर कॉलबैक = शून्य; // अपने कौशल के इरादे संचालकों को डिस्पैच करें यदि ("गोइन्टेंट" === इंटेंटनाम) {doGoIntent (इरादा, सत्र); } और अगर ("कमांडइन्टेंट" === इंटेंटनाम) {doCommandIntent (इरादा, सत्र); } और अगर ("टर्नइंटेंट" === इंटेंटनाम) {doTurnIntent (इरादा, सत्र); } और अगर ("हेल्पइंटेंट" === इंटेंटनाम) {getWelcomeResponse (); } और {फेंक "अमान्य इरादा"; } } /** * जब उपयोगकर्ता सत्र समाप्त करता है तो कॉल किया जाता है। * कौशल वापस आने पर नहीं कहा जाता हैEndSession=true। */ समारोह onSessionEnded(sessionEndedRequest, session) { console.log("onSessionEnded requestId=" + sessionEndedRequest.requestId + ", sessionId=" + session.sessionId); // यहां सफाई तर्क जोड़ें } // --------------- कौशल के व्यवहार को नियंत्रित करने वाले कार्य ------------------------ --- फंक्शन getWelcomeResponse () {// अगर हम कुछ एट्रिब्यूट्स रखने के लिए सेशन को इनिशियलाइज़ करना चाहते हैं तो हम उन्हें यहाँ जोड़ सकते हैं। वर सत्र विशेषताएँ = {}; var cardTitle = "स्वागत है"; वर भाषणऑउटपुट = "ड्रोन नियंत्रण में आपका स्वागत है।"; // TODO: ड्रोन ऑनलाइन है या ऑफलाइन? अगर ऑनलाइन है, तो क्या यह आर्म्ड है? var repromptText = "ड्रोन कमांड के लिए तैयार है।"; वर चाहिएएंडसेशन = झूठा; ctx.succeed(buildResponse(sessionAttributes, buildSpeechletResponse(cardTitle, SpeechOutput, repromptText, shouldEndSession))); } /** * GO इंटेंट को हैंडल करता है। */ फ़ंक्शन doGoIntent (इरादा, सत्र, कॉलबैक) {// var cardTitle = "ड्रोन GO…"; वर repromptText = ""; वर सत्र विशेषताएँ = {}; वर चाहिएएंडसेशन = झूठा; वर भाषणऑउटपुट = ""; वर दिशा = आशय। स्लॉट। दिशा। मूल्य; वर दूरी = आशय। स्लॉट। दूरी। मूल्य; वर इकाई = आशय। स्लॉट। इकाई। मूल्य; var मान्यदिशा = ["आगे", "आगे", "पीछे", "पीछे", "दाएं", "बाएं", "ऊपर", "नीचे", "सीधे", "आगे", "सीधे आगे"]; var मान्य यूनिट्स = ["फुट", "फीट", "मीटर", "मीटर", "यार्ड", "गज"]; repromptText = "मुझे बताओ कि कितनी दूर जाना है और किस दिशा में जाना है।"; वर विफल = झूठा; // इनपुट मान्य करें अगर (!(parseInt(distance) >= 1)) {स्पीचऑटपुट = "मैं उस दूरी को नहीं समझ सका जो आप मुझसे यात्रा करना चाहते हैं।"; असफल = सच; ctx.succeed(buildResponse(sessionAttributes, buildSpeechletResponse(cardTitle, SpeechOutput, repromptText, shouldEndSession))); } अगर (validDirections.indexOf(direction) == -1) {स्पीचऑटपुट = "मैं उस दिशा को नहीं समझ सका जिस पर आप मुझे यात्रा करना चाहते हैं।"; असफल = सच; ctx.succeed(buildResponse(sessionAttributes, buildSpeechletResponse(cardTitle, SpeechOutput, repromptText, shouldEndSession))); } अगर (validUnits.indexOf(unit) == -1) {स्पीचऑउटपुट = "मैं उस इकाई को नहीं समझ सका जो आप चाहते हैं कि मैं यात्रा करूं।"; असफल = सच; ctx.succeed(buildResponse(sessionAttributes, buildSpeechletResponse(cardTitle, SpeechOutput, repromptText, shouldEndSession))); } if (!fail) { var cardTitle = "ड्रोन गोइंग" + डायरेक्शन + "" + डिस्टेंस + "" + यूनिट; स्पीचऑटपुट = "गोइंग" + डायरेक्शन + "" + डिस्टेंस + "" + यूनिट; mqttPublish (इरादा, सेशन एट्रिब्यूट्स, कार्डटाइटल, स्पीचऑटपुट, रिप्रोम्प्टटेक्स्ट, चाहिएएंडसेशन); } }

फ़ंक्शन doCommandIntent (इरादा, सत्र, कॉलबैक) {

// var cardTitle = "ड्रोन कमांड…"; वर repromptText = अशक्त; वर सत्र विशेषताएँ = {}; वर चाहिएएंडसेशन = झूठा; वर भाषणऑउटपुट = ""; repromptText = "मुझे बताओ कि ड्रोन के लिए क्या आदेश है।"; वर कार्य = आशय। स्लॉट। कार्य। मूल्य; var मान्य कार्य = ["लॉन्च", "लैंड", "आर टी एल", "होल्ड", "स्टे", "स्टॉप", "रिटर्न टू लॉन्च", "एबॉर्ट"]; अगर (validTasks.indexOf(task) == -1) {स्पीचऑटपुट = "मैं कमांड को नहीं समझ सका।"; ctx.succeed(buildResponse(sessionAttributes, buildSpeechletResponse(cardTitle, SpeechOutput, repromptText, shouldEndSession))); } और { var cardTitle = "ड्रोन कमांड निष्पादित करना" + कार्य; स्पीचऑटपुट = "एक्ज़ीक्यूटिंग कमांड" + टास्क; mqttPublish (इरादा, सेशन एट्रिब्यूट्स, कार्डटाइटल, स्पीचऑटपुट, रिप्रोम्प्टटेक्स्ट, चाहिएएंडसेशन); } }

फ़ंक्शन doTurnIntent (इरादा, सत्र, कॉलबैक) {

// var cardTitle = "ड्रोन टर्न…"; वर repromptText = अशक्त; वर सत्र विशेषताएँ = {}; वर चाहिएएंडसेशन = झूठा; वर भाषणऑउटपुट = ""; repromptText = "मुझे बताएं कि आप ड्रोन को कैसे चालू करना चाहते हैं।"; वर दिशा = आशय। स्लॉट। दिशा। मूल्य; var मान्यदिशा = ["दाएं", "बाएं", "चारों ओर"]; अगर (validDirections.indexOf(direction) == -1) {स्पीचऑटपुट = "मैं मोड़ की दिशा नहीं समझ सका।"; ctx.succeed(buildResponse(sessionAttributes, buildSpeechletResponse(cardTitle, SpeechOutput, repromptText, shouldEndSession))); } और { var cardTitle = "ड्रोन टर्निंग" + दिशा; स्पीचऑटपुट = "मोड़" + दिशा; mqttPublish (इरादा, सेशन एट्रिब्यूट्स, कार्डटाइटल, स्पीचऑटपुट, रिप्रोम्प्टटेक्स्ट, चाहिएएंडसेशन); } }

फ़ंक्शन mqttप्रकाशित करें (इरादा, सत्र विशेषताएँ, कार्ड शीर्षक, वाक् आउटपुट, रिप्रोम्प्ट टेक्स्ट, चाहिएएंडसेशन)

{ वर strIntent = JSON.stringify (इरादा); कंसोल.लॉग ("mqttPublish: इंटेंट टेक्स्ट =" + strIntent); // client.publish ("ikw1zr46p50f81z/drone/echo", strIntent, false); client.publish(config.topic, strIntent, false); क्लाइंट.एंड (); क्लाइंट.ऑन ("क्लोज़", (फ़ंक्शन () { कंसोल.लॉग ("एमक्यूटीटी क्लाइंट क्लोज़ - सोचता है कि यह हो गया है, सफलतापूर्वक।"));})); क्लाइंट.ऑन ("त्रुटि", (फ़ंक्शन (गलती, दी गई) {कंसोल.लॉग ("एमक्यूटीटी क्लाइंट त्रुटि !!" + गलती);})); }

// --------------- हेल्पर्स जो सभी प्रतिक्रियाओं का निर्माण करते हैं ------------------------

फ़ंक्शन बिल्ड स्पीचलेट रेस्पॉन्स (शीर्षक, आउटपुट, रिप्रोम्प्टटेक्स्ट, चाहिएएंडसेशन) {रिटर्न {आउटपुटस्पीच: {टाइप: "प्लेनटेक्स्ट", टेक्स्ट: आउटपुट}, कार्ड: {टाइप: "सिंपल", टाइटल: टाइटल, कंटेंट: आउटपुट}, रिप्रोम्प्ट: {आउटपुट स्पीच: {टाइप: "प्लेनटेक्स्ट", टेक्स्ट: रिप्रोम्प्टटेक्स्ट}}, चाहिएएंडसेशन: चाहिएएंडसेशन}} फंक्शन बिल्डरिस्पॉन्स (सेशनएट्रिब्यूट्स, स्पीचलेट रिस्पॉन्स) {रिटर्न {संस्करण: "1.0", सेशनएट्रिब्यूट्स: सेशन एट्रिब्यूट्स, रिस्पॉन्स: स्पीचलेट रेस्पॉन्स}}

सिफारिश की: