विषयसूची:

ESP32 स्मार्ट होम हब: 11 कदम
ESP32 स्मार्ट होम हब: 11 कदम

वीडियो: ESP32 स्मार्ट होम हब: 11 कदम

वीडियो: ESP32 स्मार्ट होम हब: 11 कदम
वीडियो: ESP32 HomeKit Tutorial | HomeSpan 2024, जून
Anonim
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब
ESP32 स्मार्ट होम हब

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

इस परियोजना को प्रायोजित करने के लिए DFRobot और PCBGOGO.com को धन्यवाद!

अधिक गहन जानकारी के लिए, जीथब रेपो पर जाएं:

आपूर्ति

  • DFRobot ESP32 फायरबीटल

    www.dfrobot.com/product-1590.html

  • DHT22 सेंसर

    www.dfrobot.com/product-1102.html

  • APDS9960 लाइट और जेस्चर सेंसर

    www.dfrobot.com/product-1361.html

  • I2C 20x4 एलसीडी मॉड्यूल

    www.dfrobot.com/product-590.html

  • एनालॉग आरजीबी एलईडी पट्टी

    www.dfrobot.com/product-1829.html

  • DRV8825 स्टेपर मोटर ड्राइवर
  • एसडी कार्ड रीडर
  • NEMA17 स्टेपर मोटर्स

चरण 1: विशेषताएं

विशेषताएं
विशेषताएं
विशेषताएं
विशेषताएं
विशेषताएं
विशेषताएं

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

I2C बस को APDS9960 या LCD जैसे घटकों के उपयोग के लिए भी तोड़ दिया गया है। तापमान को पढ़ने के लिए, DHT22 सेंसर से कनेक्ट करने के लिए पिन टूटे हुए हैं, साथ ही परिवेश प्रकाश स्तर पढ़ने के लिए एक फोटोरेसिस्टर भी है।

बोर्ड पर एक एनालॉग लाइट स्ट्रिप के लिए सपोर्ट है, जिस पर एलईडी लाइट्स चलाने के लिए तीन MOSFETs हैं।

चरण 2: पीसीबी

पीसीबी
पीसीबी
पीसीबी
पीसीबी
पीसीबी
पीसीबी
पीसीबी
पीसीबी

मैंने पहले ईगल में एक योजनाबद्ध बनाकर पीसीबी डिजाइन प्रक्रिया शुरू की। चूंकि मुझे ESP32 फायरबीटल लाइब्रेरी नहीं मिल रही थी, इसलिए मैंने इसके बजाय सिर्फ दो पिन 1x18 पिन हेडर का इस्तेमाल किया। फिर, मैंने एक पावर मैनेजमेंट सर्किट बनाया जो डीसी बैरल जैक के माध्यम से 12v को स्वीकार कर सकता है और सेंसर और ESP32 को पावर देने के लिए इसे 5v में बदल सकता है।

योजनाबद्ध पूरा होने के बाद, मैं पीसीबी को ही डिजाइन करने के लिए आगे बढ़ा।

मुझे पता था कि डीसी बैरल प्लग बोर्ड के सामने के पास होना चाहिए, और 100uF बिजली की आपूर्ति स्मूथिंग कैपेसिटर को स्टेपर मोटर ड्राइवर पावर इनपुट के करीब होना चाहिए। सब कुछ तय होने के बाद, मैंने निशान लगाना शुरू कर दिया।

जबकि ओशपार्क अच्छी गुणवत्ता वाले पीसीबी बनाता है, उनकी कीमतें काफी अधिक हैं। शुक्र है, PCBGOGO.com भी किफायती कीमत पर बेहतरीन PCB बनाता है। मैं ओशपार्क डॉट कॉम से सिर्फ तीन बोर्डों के लिए $ 52 का भुगतान करने के बजाय, केवल $ 5 के लिए दस पीसीबी खरीदने में सक्षम था।

चरण 3: विधानसभा

सभा
सभा
सभा
सभा
सभा
सभा

कुल मिलाकर, बोर्ड को असेंबल करना काफी आसान था। मैंने सतह पर लगे घटकों को टांका लगाकर शुरू किया, और फिर बैरल जैक कनेक्टर और नियामक को संलग्न किया। इसके बाद, मैंने मोटर चालकों और फायरबीटल जैसे घटकों के लिए पिन हेडर में मिलाप किया।

सोल्डरिंग पूरा होने के बाद, मैंने मल्टीमीटर को प्रतिरोध-मापने मोड में डालकर शॉर्ट सर्किट के लिए बोर्ड का परीक्षण किया और देखा कि प्रतिरोध एक निश्चित मात्रा से अधिक था या नहीं। बोर्ड पास हो गया, इसलिए मैं तब प्रत्येक घटक में प्लग इन करने में सक्षम था।

चरण 4: प्रोग्रामिंग अवलोकन

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

चरण 5: इनपुट्स

इनपुट
इनपुट
इनपुट
इनपुट
इनपुट
इनपुट

इनपुट को संभालने के लिए, मैंने "Hub_Inputs" नामक एक वर्ग बनाया, जो होम हब को बटन और कैपेसिटिव टच इंटरफेस बनाने और प्रबंधित करने के साथ-साथ APDS9960 के साथ संचार करने देता है। इसमें निम्नलिखित कार्य शामिल हैं:

बटन बनाएं

बटन दबाए जाने पर प्राप्त करें

बटन प्रेस की संख्या प्राप्त करें

नवीनतम हावभाव प्राप्त करें

कैपेसिटिव टच वैल्यू प्राप्त करें

बटन को तीन विशेषताओं के साथ एक संरचना के रूप में संग्रहीत किया जाता है: is_pressed, numberPresses, और pin। प्रत्येक बटन, जब बनाया जाता है, एक रुकावट से जुड़ा होता है। जब उस रुकावट को ट्रिगर किया जाता है, तो इंटरप्ट सर्विस रूटीन (ISR) उस बटन के पॉइंटर (बटन ऐरे में इसके मेमोरी एड्रेस के रूप में दिया जाता है) को पास किया जाता है और is_pressed बूलियन मान को अपडेट करने के साथ-साथ बटन प्रेस की संख्या में वृद्धि करता है।

कैपेसिटिव टच वैल्यू बहुत सरल हैं। टच पिन को टचरीड () फ़ंक्शन में पास करके उन्हें पुनर्प्राप्त किया जाता है।

नवीनतम जेस्चर को APDS9960 को पोलिंग करके अपडेट किया जाता है और जाँच की जाती है कि क्या कोई नया जेस्चर पता चला है, और यदि किसी का पता चला है, तो उस जेस्चर के लिए प्राइवेट जेस्चर वेरिएबल सेट करें।

चरण 6: आउटपुट

आउटपुट
आउटपुट
आउटपुट
आउटपुट
आउटपुट
आउटपुट

स्मार्ट होम हब में सूचनाओं को आउटपुट करने और रोशनी बदलने के कई तरीके हैं। ऐसे पिन हैं जो I2C बस को तोड़ते हैं, जिससे उपयोगकर्ता एलसीडी कनेक्ट कर सकते हैं। अभी तक, LCD का केवल एक आकार समर्थित है: 20 x 4. "hub.display_message ()" फ़ंक्शन का उपयोग करके, उपयोगकर्ता एक स्ट्रिंग ऑब्जेक्ट में पास करके LCD पर संदेश प्रदर्शित कर सकते हैं।

एनालॉग एलईडी की एक स्ट्रिंग को जोड़ने के लिए एक पिन हेडर भी है। फ़ंक्शन को कॉल करना "hub.set_led_strip(r, g, b)", पट्टी का रंग सेट करता है।

दो स्टेपर मोटर्स DRV8825 ड्राइवर बोर्ड की एक जोड़ी का उपयोग करके संचालित होते हैं। मैंने मोटर नियंत्रण को संभालने के लिए बेसिकस्टेपर लाइब्रेरी का उपयोग करने का निर्णय लिया। जब बोर्ड को बूट किया जाता है, तो दो स्टेपर ऑब्जेक्ट बनाए जाते हैं, और दोनों मोटर्स सक्षम हो जाते हैं। प्रत्येक मोटर को चरणबद्ध करने के लिए, "hub.step_motor(motor_id, steps)" फ़ंक्शन का उपयोग किया जाता है, जहां मोटर आईडी या तो 0 या 1 होती है।

चरण 7: लॉगिंग

लॉगिंग
लॉगिंग
लॉगिंग
लॉगिंग
लॉगिंग
लॉगिंग

क्योंकि बोर्ड में कई सेंसर हैं, मैं स्थानीय रूप से डेटा एकत्र करने और लॉग करने की क्षमता चाहता था।

लॉगिंग शुरू करने के लिए, "हब.क्रिएट_लॉग (फ़ाइल नाम, हेडर)" के साथ एक नई फ़ाइल बनाई जाती है, जहां हेडर का उपयोग एक CSV फ़ाइल पंक्ति बनाने के लिए किया जाता है जो कॉलम को दर्शाता है। पहला कॉलम हमेशा वर्ष माह दिन घंटे: न्यूनतम: सेक प्रारूप में टाइमस्टैम्प होता है। समय निकालने के लिए, hub.log_to_file() फ़ंक्शन को basic_functions.get_time() फ़ंक्शन के साथ समय मिलता है। tm टाइम स्ट्रक्चर तब डेटा और फ़ाइल नाम के साथ लॉगिंग फ़ंक्शन में संदर्भ द्वारा पारित किया जाता है।

चरण 8: बजर

बजर
बजर

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

चरण 9: बाहरी IoT एकीकरण

बाहरी IoT एकीकरण
बाहरी IoT एकीकरण
बाहरी IoT एकीकरण
बाहरी IoT एकीकरण
बाहरी IoT एकीकरण
बाहरी IoT एकीकरण

हब वर्तमान में IFTTT वेबहुक का समर्थन करता है। उन्हें Hub_IoT.publish_webhook(url, data, event, key) या Hub_IoT.publish_webhook(url, data) फंक्शन को कॉल करके ट्रिगर किया जा सकता है। यह दिए गए URL को उस डेटा के साथ एक POST अनुरोध भेजता है, यदि आवश्यक हो तो एक ईवेंट नाम के साथ। एक उदाहरण IFTTT एकीकरण सेटअप करने के लिए, पहले एक नया एप्लेट बनाएं। फिर वेबहुक सेवा का चयन करें जो अनुरोध प्राप्त होने पर ट्रिगर होती है।

इसके बाद, ईवेंट को "high_temp" कॉल करें और इसे सेव करें। फिर, "उस" भाग के लिए जीमेल सेवा का चयन करें, और "खुद को एक ईमेल भेजें" विकल्प चुनें। सेवा के लिए सेटअप के भीतर, "तापमान अधिक है!" विषय के लिए, और फिर मैंने "{{Value1}} का मापा तापमान {{OccurredAt}}" पर रखा, जो मापा तापमान और उस समय को दिखाता है जब घटना शुरू हुई थी।

इसे सेट करने के बाद, बस IFTTT द्वारा जेनरेट किया गया वेबहुक URL पेस्ट करें और ईवेंट सेक्शन में "high_temp" डालें।

चरण 10: उपयोग

प्रयोग
प्रयोग
प्रयोग
प्रयोग
प्रयोग
प्रयोग
प्रयोग
प्रयोग

स्मार्ट होम हब का उपयोग करने के लिए, बस किसी भी आवश्यक फ़ंक्शन को सेटअप () या लूप () में कॉल करें। मैंने पहले ही उदाहरण फ़ंक्शन कॉल डाल दिए हैं, जैसे कि वर्तमान समय को प्रिंट करना और IFTTT ईवेंट को कॉल करना।

चरण 11: भविष्य की योजनाएं

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

सिफारिश की: