- रास्पबेरी पाई पर अजगर के लिए एडब्ल्यूएस आईओटी डिवाइस एसडीके स्थापित करना:
- सर्किट आरेख:
- अपने रास्पबेरी पाई प्रोग्रामिंग:
- शेल विंडो के माध्यम से अजगर कार्यक्रम का परीक्षण:
- काम कर रहे:
रास्पबेरी पाई हमेशा IoT आधारित अनुप्रयोगों को विकसित करने के लिए पहली पसंद रही है यदि कुछ स्तर की गणना शामिल है। अजगर और मजबूत डेवलपर समुदाय के लचीलेपन के साथ, पाई का उपयोग करके डेटा का एक सेट एकत्र करना, लॉग करना, विश्लेषण करना या रिपोर्ट करना बहुत आसान है। इस ट्यूटोरियल में हम सीखेंगे कि इंटरनेट पर डेटा ऑनलाइन प्रकाशित करने के लिए अमेज़ॅन AWS सेवा के साथ रास्पबेरी पाई की शक्ति में कैसे मिश्रण किया जाए ।
इस ट्यूटोरियल में, हम तापमान और आर्द्रता के मूल्य को पढ़ने के लिए DHT11 सेंसर का उपयोग करेंगे, फिर AWS IOT सेवा से जुड़ेंगे और AWS IOT SDK का उपयोग करके सेंसर मानों को अपडेट करेंगे । यह डेटा तब अमेज़ॅन IOT कंसोल में कल्पना की जा सकती है ताकि यह सुनिश्चित हो सके कि हम इंटरनेट पर प्रकाशित डेटा प्राप्त कर रहे हैं।
आप सेंसर सेंसर को लाने के लिए AWS इलास्टिक सर्च सर्विस का भी उपयोग कर सकते हैं और इसे डेटाबेस में स्टोर कर सकते हैं और फिर सेंसर डेटा को साफ प्लॉट किए गए ग्राफ के रूप में कल्पना करने के लिए किबाना डैशबोर्ड सेवा का उपयोग कर सकते हैं। दिलचस्प पर्याप्त !!! तो, चलिए शुरू करते हैं…
पूर्व-आवश्यकताएं:
यह ट्यूटोरियल मानता है कि आपने अपना निशुल्क AWS खाता पहले ही बना लिया है और AWS IoT सेवा के बारे में मूल बातें जानते हैं, जैसे कि कोई चीज़, प्रमाणपत्र, नीति बनाना और इसका उपयोग करके मूल्यों को प्रकाशित करना। यदि अन्यथा नीचे दिए गए ट्यूटोरियल को पढ़ें।
- Amazon AWS IOT के साथ MQTT.fx के साथ शुरुआत करना
यह भी मानता है कि आप जानते हैं कि रास्पबेरी पाई के लिए एक एलसीडी और DHT11 सेंसर को कैसे इंटरफ़ेस किया जाए और ऐसा करने के लिए पुस्तकालयों को पहले से ही आपके पाई पर स्थापित किया गया है। यदि नहीं, तो नीचे दिए गए ट्यूटोरियल के साथ आगे बढ़ें।
- रास्पबेरी पाई के साथ DHT11 को इंटरफैस करना
उपरोक्त ट्यूटोरियल के अंत में आपने AWS-IOT पर एक चीज़ बनाई होगी और आपकी चीज़ को एक्सेस करने के लिए आवश्यक प्रमाणपत्रों के साथ आपकी चीज़ के लिए ब्रोकर का पता भी होना चाहिए। हम यह भी मानते हैं कि आपकी रास्पबेरी पाई पहले से ही एक ओएस के साथ स्थापित है और इंटरनेट से जुड़ी हुई है। इनकी जगह ट्यूटोरियल के साथ आगे बढ़ें। यदि आप रास्पबेरी पाई के लिए नए हैं तो पहले रास्पबेरी पाई के साथ शुरुआत करें।
रास्पबेरी पाई पर अजगर के लिए एडब्ल्यूएस आईओटी डिवाइस एसडीके स्थापित करना:
पाई पर एडब्ल्यूएस सेवा का उपयोग करने के लिए, हम दोनों एसडीके में से किसी एक को स्थापित कर सकते हैं। एक जावास्क्रिप्ट एसडीके है जो प्रोग्रामिंग भाषा के रूप में जावास्क्रिप्ट का उपयोग करता है और दूसरा पायथन एसडीके है जो जाहिर है कि प्रोग्रामिंग भाषा के लिए अजगर का उपयोग करता है। यहाँ हम Python को अपने SDK के रूप में चुन रहे हैं क्योंकि हम JavaScript से Python के साथ थोड़ा अधिक सहज हैं।
AWS IOT SDK की पूरी जानकारी इसके GitHub पेज पर उपलब्ध है।
चरण 1: अपने पाई पर एसडीके स्थापित करने के लिए, निम्न कमांड टाइप करें पर टर्मिनल खोलें
git clone
चरण 2: यह आपके पाई पर aws निर्देशिका स्थापित करना चाहिए, अब निम्नलिखित कमांड का उपयोग करके इसे नेविगेट करें।
cd aws - आईओटी -देवाइस- sdk -python
चरण 3: निर्देशिका के अंदर नीचे पंक्ति का उपयोग करके सेटअप फ़ाइल स्थापित करें
अजगर setup.py स्थापित
सर्किट आरेख:
हार्डवेयर पक्ष में हमारे पास एक Dasp11 सेंसर और एक एलसीडी स्क्रीन से जुड़ा रास्पबेरी पाई है । DHT11 का उपयोग तापमान और आर्द्रता के मूल्य को प्राप्त करने के लिए किया जाता है और एलसीडी का उपयोग मूल्यों और डी-बगिंग सूचना को प्रदर्शित करने के लिए किया जाता है। उसी के लिए सर्किट आरेख नीचे दिखाया गया है।
दोनों एलसीडी और DHT11 सेंसर + 5V आपूर्ति के साथ काम करते हैं इसलिए हम दोनों रास्पबेरी पाई पर 5V पिन का उपयोग दोनों को शक्ति प्रदान करने के लिए करते हैं। मूल्य 1k के एक पुल अप अवरोधक का उपयोग DHT11 सेंसर के आउटपुट पिन पर किया जाता है, यदि आप एक मॉड्यूल का उपयोग कर रहे हैं तो आप इस अवरोधक से बच सकते हैं।
एलसीडी के विपरीत स्तर को नियंत्रित करने के लिए एलसीडी के वी पिन में 10k का एक ट्रिमर पॉट जोड़ा जाता है। इसके अलावा सभी कनेक्शन बहुत सीधे आगे हैं। लेकिन ध्यान दें कि जिस GPIO पिन का उपयोग आप पिन से कनेक्ट करने के लिए कर रहे हैं क्योंकि हमें अपने प्रोग्राम में इसकी आवश्यकता होगी। नीचे दिए गए चार्ट से आपको GPIO पिन नंबरों का पता लगाना चाहिए।
चार्ट का उपयोग करें और सर्किट आरेख के अनुसार अपने कनेक्शन बनाएं। मैंने अपने कनेक्शन बनाने के लिए ब्रेडबोर्ड और जम्पर तारों का उपयोग किया। चूंकि मैंने एक मॉड्यूल का उपयोग किया था, इसलिए मैंने इसे सीधे रास्पबेरी पाई को वायर्ड कर दिया। मेरा हार्डवेयर नीचे इस तरह दिखता था
अपने रास्पबेरी पाई प्रोग्रामिंग:
हमारे अजगर कार्यक्रम में हमें तापमान और आर्द्रता के मूल्य को पढ़ना होगा, इसे एलसीडी स्क्रीन पर प्रदर्शित करना होगा और अमेज़ॅन आईओटी चीज को दोनों मान प्रकाशित करना होगा जिसे हमने पहले ही ट्यूटोरियल में बनाया है। इसलिए सुनिश्चित करें कि आपने चीज़ बनाई है और आपके पास आपके द्वारा बनाई गई चीज़ की तीन प्रमुख फ़ाइलें और ब्रोकर का पता है।
हमारे अजगर कार्यक्रम में हमें तीन प्रमुख फ़ाइलों को लिंक करना होगा ताकि रास्पबेरी पाई हमारी चीज़ पर मूल्यों को प्रकाशित करने के लिए उपयोग कर सकें। इसलिए सभी तीन मुख्य फाइलों को कॉपी करें और अपने रास्पबेरी पाई के डेस्कटॉप पर पेस्ट करें क्योंकि हमें अपने कार्यक्रम में उनके पथ पते की आवश्यकता होगी।
पूरा अजगर कार्यक्रम इस पृष्ठ के तल पर पाया जा सकता है, तो आप बात आपके द्वारा बनाए गए के अनुसार संपादन दलाल का पता और पथ निर्देशिका के बाद कार्यक्रम का उपयोग कर सकते हैं। आगे बोफो मैंने छोटे स्निपेट में कोड समझाया है।
हम अपनी परियोजना के लिए आवश्यक पुस्तकालयों को आयात करके शुरू करते हैं । तीन मुख्य लाइब्रेरी AWS SDK, LCD लाइब्रेरी और DHT लाइब्रेरी हैं, सुनिश्चित करें कि आपने अपने तीनों Pi को स्थापित किया है। समय और दिनांक पुस्तकालय डिफ़ॉल्ट रूप से स्थापित किया जाएगा।
से एडब्ल्यूएस-IoT लाइब्रेरी AWSIoTPythonSDK.MQTTLib आयात AWSIoTMQTTClient #import से आयात समय # बनाने के लिए देरी से datetime आयात तिथि, दिनांक #To दिनांक और समय मिलता है एलसीडी #import एलसीडी पुस्तकालय के रूप में आयात Adafruit_CharLCD सेंसर के लिए आयात Adafruit_DHT #import DHT लाइब्रेरी
अगली पंक्ति में हमें थ्रिंग विवरण जैसे कि ब्रोकर का पता, क्लाइंट का नाम और प्रमाण पत्र और मुख्य फ़ाइलों को पथ प्रदान करना होगा । यहां मैंने क्लाइंट का नाम new_Client के रूप में उपयोग किया है आप अपनी पसंद के समान या किसी भी नाम का उपयोग कर सकते हैं। ब्रोकर का पता आपके द्वारा बनाई गई चीज़ के पते पर बदल दिया जाना चाहिए और पथ निर्देशिका को भी आपकी चीज़ के अनुसार बदल दिया जाना चाहिए। इन 2 चीजों के अलावा आपको निम्नलिखित पंक्तियों में कुछ भी बदलने की आवश्यकता नहीं है।
myMQTTClient = AWSIoTMQTTClient ("new_Client") myMQTTClient.configureEndpoint ("qwert1234567yuio89.iot.us-east-2.amazonaws.com", 8883) myMQTTClient.configureCredentials ("/ घर / अनुकरणीय / डेस्कटॉप / ESP32_Thing प्रमाण पत्र / CA.pem", "" / home / pi / Desktop / ESP32_Thing सर्टिफिकेट / private.pem.key "," / home / pi / Desktop / ESP32_Thing सर्टिफिकेट / certificate.pem.crt ") myMQTTClient.configureOfflinePublishQueueinging (-1) # अनंत ऑफ़लाइन प्रकाशन myMQTTCient प्रकाशित कर रहा है। configDrainingFreququency (2) # ड्रेनिंग : 2 हर्ट्ज myMQTTClient.configureConnectDisconnectTimeout (10) # 10 sec myMQTTClient.configureCQTTOperationTimeout (5) # 5 sec
आगे हमें अपने कनेक्शन का पिन विवरण निर्दिष्ट करना होगा । प्रत्येक पिन का GPIO पिन नंबर उसके संबंधित नाम को आवंटित किया जाता है। यहां हमने पिन 17 पर डीएचटी सेंसर और 4-बिट मोड में एलसीडी का उपयोग किया है। उसी के लिए कोड नीचे दिखाया गया है
Sens_name = Adafruit_DHT.DHT11 #we DHT11 सेंसर सेंसर_पिन = 17 # का उपयोग कर रहे हैं। सेंसर GPIO17 पर Pi lcd_rs = 7 #RS एलसीडी से जुड़ा है, PIIO एलसीडी से GPIO 7 से जुड़ा है = 8 # LCD का GP GP 8 से जुड़ा है PI पर lcd_d4 = 25 # LCD का D4 GPIO 25 से जुड़ा है PI lcd_d5 = 24 # एलसीडी का D5 GPIO 24 से जुड़ा है PI lcd_d6 = 23 # एलसीडी का D6, GPIO 23 से PI lcd_d7 = 18 # D7 से जुड़ा है एलसीडी GPIO 18 पर PI lcd_backlight से जुड़ा हुआ है = 0 #LED जुड़ा नहीं है इसलिए हम 0 को असाइन करते हैं
फिर हम एलसीडी को इनिशियलाइज़ करते हैं और एलसीडी स्क्रीन पर एक छोटा इंट्रो संदेश प्रदर्शित करते हैं । उसके बाद हम दलाल के पते और ऊपर दर्ज की गई महत्वपूर्ण फाइलों का उपयोग करके AWS चीज से जुड़ने का प्रयास करेंगे । यदि कनेक्शन सफल होता है तो एलसीडी " कनेक्टेड टू एडब्ल्यूएस चीज़ " प्रदर्शित करेगा या यह 10 सेकंड के लिए प्रयास करेगा और यदि यह विफल हो गया तो यह त्रुटि संदेश प्रदर्शित करेगा। यदि आपको त्रुटि संदेश प्राप्त होता है, तो सुनिश्चित करें कि आपने चीज़ को सफलतापूर्वक बनाया है और इसे कोड के साथ ठीक से जोड़ा है। आप हमेशा पिछले ट्यूटोरियल में वापस जा सकते हैं यह देखने के लिए कि क्या आपने एडब्ल्यूएस में ठीक से चीज़ बनाई है।
if time.time () <connect_time: #try कनेक्ट करने के लिए AWS 10 सेकंड के लिए myMQTTClient.connect () myMQTTClient.publish ("DHT11 / जानकारी", "कनेक्टेड": 0, प्रिंट करें "MQTT क्लाइंट कनेक्शन सफलता!" lcd.message ('कनेक्टेड to \ n AWS चीज') #if अन्य जुड़ा : प्रिंट "त्रुटि: कार्यक्रम में अपने AWS विवरण की जाँच करें" lcd.message ('त्रुटि: \ nInvalid विवरण') #if जुड़ा नहीं है
एक बार कनेक्शन को सफलतापूर्वक स्थापित है, हम अनंत में प्रवेश करते समय के लिए पाश समय, तापमान और आर्द्रता एक पेलोड के रूप में की मूल्य प्रकाशित । यहां पेलोड हमेशा JSON प्रारूप में एक स्ट्रिंग होना चाहिए। इसलिए पहले हम वर्तमान तिथि और समय को पढ़कर और नीचे की पंक्तियों का उपयोग करके इसे एक चर में सहेज सकते हैं
अब = datetime.utcnow () #get date और time current_time = now.strftime ('% Y-% m-% dT% H:% M:% SZ') # स्ट्रिंग समय में वर्तमान समय को भूल जाएं
तब हम आर्द्रता और तापमान मान पढ़ते हैं DHT11 सेंसर बनाते हैं और इसे एलसीडी स्क्रीन पर प्रदर्शित करते हैं। चर आर्द्रता और तापमान क्रमशः आर्द्रता और तापमान के मूल्य को धारण करेंगे
आर्द्रता, तापमान = Adafruit_DHT.read_retry (सेंसर_नाम, सेंसर_पीएन) सेंसर से # प्रसार
और तापमान और आर्द्रता के परिवर्तन में संबंधित मूल्यों को बचाएं
lcd.clear () एलसीडी स्क्रीन #Clear lcd.message ('अस्थायी = सी.1f%'% तापमान) # प्रदर्शन तापमान का मूल्य lcd.message ('\ Nhum =%.1f %%'% आर्द्रता) #Display 2 सेकंड के लिए आर्द्रता समय (2) का मान # निर्धारित करें फिर मानों को अपडेट करें
जैसा कि पहले बताया गया है कि पेलोड को घुंघराले कोष्ठक के साथ स्ट्रिंग के रूप में होना चाहिए, जिसके चारों ओर हम नीचे दिखाए गए अनुसार चर में परिवर्तन के बाद दिनांक, समय, तापमान और आर्द्रता के मूल्य को जोड़ते हैं।
# स्ट्रिंग को पेलोड में स्ट्रिंग प्रारूप में लोड करें = '' {"टाइमस्टैम्प": "+ वर्तमान_ समय +" "," तापमान ": '+ स्ट्र (तापमान) +'," आर्द्रता ": '+ स्ट्रेट (आर्द्रता) +'} ''
एक बार पेलोड तैयार होने के बाद हमें इसे MQTT क्लाइंट को प्रकाशित करना होगा। यह myMQTTclient.publish कमांड का उपयोग करके किया जा सकता है । एक चीज़ को प्रकाशित करते समय हमें इसे एक नाम भी देना चाहिए, यहाँ मैंने इसे DHT11 / डेटा का नाम दिया है लेकिन आप इसे अपनी इच्छानुसार कुछ भी नाम दे सकते हैं। लेकिन सुनिश्चित करें कि आपको नाम याद है क्योंकि हमें डेटा देखने के लिए हमारी चीज़ से सदस्यता लेने की आवश्यकता होगी।
शेल विंडो के माध्यम से अजगर कार्यक्रम का परीक्षण:
एक बार कार्यक्रम तैयार हो जाने के बाद, इसे आप की पसंद का उपयोग करके लॉन्च करें। मैंने शेल विंडो पर प्रोग्राम लॉन्च करने के लिए पायथन आईडीई का उपयोग किया है। यदि सब कुछ ठीक है, तो आपको एक संदेश कनेक्शन सफल होना चाहिए और सभी पेलोड को खिड़की पर प्रदर्शित किया जाना चाहिए। आप यह जांच सकते हैं कि तापमान और आर्द्रता के मूल्यों को सही ढंग से पढ़ा जा रहा है या नहीं। पेलोड को हर 5 सेकंड के लिए अपडेट किया जाएगा। शेल विंडो कुछ इस तरह दिखाई देगी
यदि आपको कोई समस्या है तो सुनिश्चित करें कि आपने सही कुंजी विवरण और ब्रोकर का पता दिया है, यह भी जांच लें कि क्या बात MQTT.fx सॉफ़्टवेयर का उपयोग करने से जुड़ी हो सकती है। यदि शेल MQTT क्लाइंट कनेक्शन सफलता को प्रदर्शित करता है और वहां लटका रहता है, तो इसका मतलब है कि DHT11 सेंसर चेक का जवाब नहीं दे रहा है यदि आपने सही पिन से कनेक्ट किया है और सेंसर कार्यात्मक है।
काम कर रहे:
एक बार जब आप प्रोग्राम लॉन्च करते हैं और शेल विंडो पर उपरोक्त विवरण प्राप्त करते हैं, तो इसका मतलब है कि प्रोग्राम ठीक से जवाब दे रहा है और मान अमेज़ॅन एडब्ल्यूएस सर्वर पर अपलोड किए जा रहे हैं । अगर आप नीचे दिखाए गए अनुसार प्रत्येक 5 सेकंड में प्रकाशित AWS-IoT से कहते हैं, तो आप एलसीडी डिस्प्ले को भी देख सकते हैं।
हम MQTT.fx एप्लिकेशन में प्राप्त कर सकते हैं और DHT11 / डेटा विषय पर सदस्यता ले सकते हैं । फिर हमें रास्पबेरी पाई द्वारा प्रकाशित किए जाने वाले सभी डेटा प्राप्त करने में सक्षम होना चाहिए। यह डेटा हर 5 सेकंड के लिए भी अपडेट किया जाएगा; आपकी MQTT स्क्रीन नीचे कुछ इस तरह दिखाई देगी
जैसा कि आप देख सकते हैं कि नीले रंग में हाइलाइट किया गया पेलोड एमक्यूटीटी सॉफ्टवेयर पर प्राप्त हो रहा है। प्रोजेक्ट कैसे काम करता है, यह जानने के लिए आप नीचे वीडियो भी देख सकते हैं । चूंकि अब हमारे पास इंटरनेट पर हमारा डेटा है, हम इसे अमेज़ॅन द्वारा प्रदान किए गए अन्य उपकरणों के साथ उपयोग कर सकते हैं जैसे कि लोचदार खोज और लैम्बडा जैसे डेटा को डेटाबेस में सहेजना या फिर एक ग्राफ़ पर विज़ुअलाइज़ करना। बहुत अधिक एप्लिकेशन हैं, इस आधार पर कि हमें डेटा का लाभ कैसे प्राप्त करना है।
आशा है कि आप ट्यूटोरियल को समझ गए थे और कुछ इसी तरह के निर्माण का आनंद लिया था, अगर आपको इसे पूरा करने में कोई समस्या है, तो इसे नीचे टिप्पणी अनुभाग पर पोस्ट करें या तकनीकी मदद के लिए मंचों का उपयोग करें।