विषयसूची:

IOT हार्ट रेट मॉनिटर (ESP8266 और Android ऐप): 5 कदम
IOT हार्ट रेट मॉनिटर (ESP8266 और Android ऐप): 5 कदम

वीडियो: IOT हार्ट रेट मॉनिटर (ESP8266 और Android ऐप): 5 कदम

वीडियो: IOT हार्ट रेट मॉनिटर (ESP8266 और Android ऐप): 5 कदम
वीडियो: IoT MQTT Based Heart Rate Monitor using ESP8266 & Arduino 2024, जुलाई
Anonim
Image
Image

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

भौतिक सर्किट का विवरण देने वाला एक वीडियो ऊपर देखा जा सकता है। परियोजना के लिए सभी कोड मेरे जीथब पर पाए जा सकते हैं।

चरण 1: सर्किट

सर्किट
सर्किट

दिल की धड़कन को मापने के दो मुख्य तरीके हैं लेकिन इस परियोजना के लिए मैंने फोटोप्लेथिस्मोग्राफी (पीपीजी) का उपयोग करने का फैसला किया है जो एक अवरक्त या लाल प्रकाश स्रोत का उपयोग करता है जो त्वचा की पहली कुछ परतों के माध्यम से अपवर्तित होता है। प्रकाश की तीव्रता में परिवर्तन को मापने के लिए एक फोटो सेंसर का उपयोग किया जाता है (जब रक्त एक बर्तन से बह रहा हो)। PPG सिग्नल अविश्वसनीय रूप से शोर करते हैं इसलिए मैंने आवश्यक विशिष्ट आवृत्तियों को फ़िल्टर करने के लिए एक बैंड पास फ़िल्टर का उपयोग किया। मानव हृदय 1 से 1.6 Hz आवृत्ति के बीच धड़कता है। मेरे द्वारा उपयोग किया जाने वाला op-amp lm324 था जिसमें मेरे लिए उपलब्ध सभी op-amps का सबसे अच्छा वोल्टेज-ऑफ़सेट था। यदि आप इस परियोजना को फिर से बना रहे हैं तो एक सटीक ऑप-एम्प एक बेहतर विकल्प होगा।

केवल दो के लाभ का उपयोग किया गया था क्योंकि ESP8266 पर अधिकतम वोल्टेज सहिष्णुता 3.3v है और मैं अपने बोर्ड को नुकसान नहीं पहुंचाना चाहता था!

ऊपर दिए गए सर्किट का पालन करें और इसे ब्रेड बोर्ड पर काम करने की कोशिश करें। यदि आपके पास घर पर एक आस्टसीलस्कप नहीं है, तो आप आउटपुट को एक Arduino में प्लग कर सकते हैं और इसे प्लॉट कर सकते हैं लेकिन सुनिश्चित करें कि वोल्टेज arduino या माइक्रोकंट्रोलर की सहनशीलता से अधिक नहीं है।

एक ब्रेड बोर्ड पर सर्किट का परीक्षण किया गया था और आउटपुट में बदलाव तब देखा गया था जब एलईडी और फोटो ट्रांजिस्टर में एक उंगली रखी गई थी। मैंने फिर बोर्ड को एक साथ मिलाप करने का फैसला किया जो वीडियो में नहीं दिखाया गया था।

चरण 2: सिग्नल प्रोसेसिंग कोड और सर्वर संचार

Image
Image
सिग्नल प्रोसेसिंग कोड और सर्वर संचार
सिग्नल प्रोसेसिंग कोड और सर्वर संचार

मैंने ESP8266 पर Arduino IDE का उपयोग करने का निर्णय लिया क्योंकि इसका उपयोग करना इतना आसान है। जब सिग्नल प्लॉट किया गया था तब भी यह बहुत शोर था इसलिए मैंने इसे एक एफआईआर मूविंग-औसत फिल्टर के साथ दस की नमूना संख्या के साथ साफ करने का फैसला किया। मैंने ऐसा करने के लिए "चिकनाई" नामक एक उदाहरण Arduino प्रोग्राम को संशोधित किया। सिग्नल की आवृत्ति को मापने का एक तरीका खोजने के लिए मैंने थोड़ा प्रयोग किया। दिल में चार अलग-अलग प्रकार की दालों और पीपीजी संकेतों की विशेषताओं के कारण दालें अलग-अलग लंबाई और आयाम की थीं। मैंने एक ज्ञात मध्य मान चुना है कि सिग्नल हमेशा प्रत्येक पल्स के संदर्भ बिंदु के रूप में पार हो जाता है। सिग्नल का ढलान सकारात्मक या नकारात्मक था, यह निर्धारित करने के लिए मैंने रिंग बफर का उपयोग किया। इन दोनों के संयोजन ने मुझे दालों के बीच की अवधि की गणना करने की अनुमति दी जब संकेत सकारात्मक था और एक विशिष्ट मूल्य के बराबर था।

सॉफ्टवेयर ने काफी गलत बीपीएम का उत्पादन किया जिसका वास्तव में उपयोग नहीं किया जा सकता था। अतिरिक्त पुनरावृत्तियों के साथ एक बेहतर कार्यक्रम तैयार किया जा सकता था लेकिन समय की कमी के कारण यह एक विकल्प नहीं था। कोड नीचे दिए गए लिंक में पाया जा सकता है।

ESP8266 सॉफ्टवेयर

चरण 3: सर्वर और डेटा संचार

सर्वर और डेटा संचार
सर्वर और डेटा संचार

मैंने डेटा स्टोर करने के लिए फ़ायरबेस का उपयोग करने का निर्णय लिया क्योंकि यह एक निःशुल्क सेवा है और मोबाइल ऐप्स के साथ उपयोग करना बहुत आसान है। ESP8266 के साथ फायरबेस के लिए कोई आधिकारिक एपीआई नहीं है, लेकिन मैंने पाया कि Arduino लाइब्रेरी ने बहुत अच्छा काम किया है।

एक उदाहरण प्रोग्राम है जो ESP8266WiFi.h लाइब्रेरी पर पाया जा सकता है जो आपको SSID और पासवर्ड के साथ राउटर से कनेक्ट करने की अनुमति देता है। इसका उपयोग बोर्ड को इंटरनेट से जोड़ने के लिए किया जाता था ताकि डेटा भेजा जा सके।

हालांकि डेटा स्टोर करना आसानी से हो गया था, फिर भी HTTP POST अनुरोध के माध्यम से पुश नोटिफिकेशन भेजने में कई समस्याएं हैं। मुझे जीथब पर एक टिप्पणी मिली जिसने Google क्लाउड मैसेजिंग और ESP8266 के लिए HTTP लाइब्रेरी के माध्यम से ऐसा करने की एक विरासत पद्धति का उपयोग किया। यह विधि मेरे जीथब पर कोड में देखी जा सकती है।

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

चरण 4: Android ऐप

एंड्रॉइड ऐप
एंड्रॉइड ऐप

एक बहुत ही बुनियादी Android ऐप को दो गतिविधियों के साथ डिज़ाइन किया गया था। पहली गतिविधि में उपयोगकर्ता ने Firebase API का उपयोग करके साइन इन किया या उन्हें पंजीकृत किया। मैंने डेटाशीट पर शोध किया और मोबाइल ऐप के साथ फायरबेस का उपयोग करने के तरीके पर विभिन्न ट्यूटोरियल पाया। मुख्य गतिविधि जिसने उपयोगकर्ता के डेटा उपयोगकर्ता को वास्तविक समय ईवेंट श्रोता प्रदर्शित किया ताकि उपयोगकर्ता के बीपीएम में परिवर्तनों में कोई उल्लेखनीय देरी न हो। पुश नोटिफिकेशन फायरबेस क्लाउड मैसेजिंग का उपयोग करके किया गया था जिसका उल्लेख पहले किया गया था। इसे कैसे लागू किया जाए, इस बारे में फ़ायरबेस डेटाशीट पर बहुत सारी उपयोगी जानकारी है और ऐप को फायरबेस वेबसाइट पर डैशबोर्ड से सूचनाएं भेजकर परीक्षण किया जा सकता है।

गतिविधियों के लिए सभी कोड और क्लाउड मैसेजिंग के तरीके मेरे जीथब रिपोजिटरी में पाए जा सकते हैं।

चरण 5: निष्कर्ष

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

बाकी प्रणाली कार्यात्मक थी लेकिन यह एक बहुत ही प्रायोगिक उपकरण है जिसे मैं यह देखने के लिए बनाना चाहता था कि क्या वस्तु संभव है। पुश नोटिफिकेशन भेजने के लिए इस्तेमाल किया गया लीगेसी कोड जल्द ही अनुपयोगी हो जाएगा, इसलिए यदि आप इसे 2018 के अंत में या देर से पढ़ रहे हैं तो एक अलग विधि की आवश्यकता होगी। यह समस्या केवल ESP के साथ होती है, हालाँकि यदि आप इसे WiFi सक्षम Arduino पर लागू करना चाहते हैं तो यह कोई समस्या नहीं होगी।

यदि आपके कोई प्रश्न या मुद्दे हैं, तो कृपया बेझिझक मुझे इंस्ट्रक्शंस पर मैसेज करें।

सिफारिश की: