- Arduino का उपयोग करके स्वचालित चिकित्सा अनुस्मारक के लिए आवश्यक घटक
- Arduino सर्किट का उपयोग कर Arduino चिकित्सा अनुस्मारक
- स्वचालित चिकित्सा अनुस्मारक प्रणाली का कार्य करना
- मेडिसिन रिमाइंडर के लिए Arduino UNO प्रोग्रामिंग
जब हमारे प्रियजनों की बात आती है, तो हम हमेशा उन्हें स्वस्थ और फिट रहना चाहते हैं। लेकिन क्या होगा अगर वे बीमार हो जाते हैं और समय पर दवा लेना भूल जाते हैं। हम चिंतित होंगे, है ना? अस्पतालों में, कई रोगी हैं और समय पर दवा लेने के लिए प्रत्येक रोगी को याद दिलाना मुश्किल है। पारंपरिक तरीकों से समय पर दवाएं लेने के लिए उन्हें याद दिलाने के लिए मानव प्रयासों की आवश्यकता होती है। डिजिटल युग इसका अनुसरण नहीं करता है और हम ऐसा करने के लिए मशीनों का उपयोग कर सकते हैं। स्मार्ट मेडिसिन रिमाइंडर का अनुप्रयोग बहुत विस्तृत है और इसका उपयोग घर पर रोगियों, अस्पतालों में डॉक्टरों और कई अन्य स्थानों पर किया जा सकता है। जब यह याद दिलाने की बात आती है, तो इसे याद दिलाने के कई तरीके हो सकते हैं:
- इसे डिस्प्ले पर दिखाएं
- ईमेल या फोन पर सूचना भेजें
- मोबाइल एप्लिकेशन का उपयोग करना
- बज़ अलार्म
- ब्लूटूथ / वाई-फाई का उपयोग करना
- एक कॉल लो
- वर्तमान समय की याद दिलाते हुए अगली दवा समय के लिए याद दिलाएं
हम जरूरत के आधार पर तरीके जोड़ सकते हैं। यहाँ चीजों को सरल रखने के लिए हमने Arduino का उपयोग करके एक सरल चिकित्सा अनुस्मारक बनाया जो हमें दिन में 1 या 2 या 3 बार दवाई लेने की याद दिलाता है। टाइम स्लॉट को पुश बटन का उपयोग करके चुना जा सकता है। साथ ही, यह वर्तमान दिनांक और समय दिखाता है। हम इसे एक IoT प्रोजेक्ट इनकमिंग लेखों में आगे बढ़ाएंगे जहां उपयोगकर्ता को एक ईमेल या एसएमएस अधिसूचना भेजी जाएगी। इस दवा अनुस्मारक को रोगी निगरानी प्रणाली के साथ भी एकीकृत किया जा सकता है।
Arduino का उपयोग करके स्वचालित चिकित्सा अनुस्मारक के लिए आवश्यक घटक
- Arduino Uno (हम अन्य Arduino बोर्डों का उपयोग कर सकते हैं, जैसे प्रो मिनी, नैनो)
- RTC DS3231 मॉड्यूल
- 16x2 एलसीडी डिस्प्ले
- बजर
- एलईडी (कोई भी रंग)
- ब्रेड बोर्ड
- पुश बटन
- 10K पोटेंशियोमीटर
- 10K, 1K रेसिस्टर्स
- जम्पर तार
Arduino सर्किट का उपयोग कर Arduino चिकित्सा अनुस्मारक
Arduino का उपयोग करके एक स्मार्ट दवा बॉक्स बनाने के लिए पूरा सर्किट आरेख नीचे दिखाया गया है
नीचे विभिन्न बाह्य उपकरणों के साथ Arduino के पिन कनेक्शन हैं
अरुडिनो पिंस पेरिफेरल पिंस
- 2 -----------------------------> 16x2 एलसीडी डिस्प्ले का डी 7
- 3 -----------------------------> 16x2 एलसीडी डिस्प्ले का डी 6
- 4 -----------------------------> 16x2 एलसीडी डिस्प्ले का डी 5
- 5 -----------------------------> 16x2 एलसीडी डिस्प्ले का डी 4
- 7 -----------------------------> तीसरा पुश बटन
- 8 -----------------------------> दूसरा पुश बटन
- 9 -----------------------------> 1 पुश बटन
- 11 -----------------------------> 16x2 एलसीडी डिस्प्ले का एन पिन
- 12 -----------------------------> 16x2 एलसीडी डिस्प्ले का आरएस पिन
- 13 -----------------------------> + बजर और एलईडी के वी पिन
- A0 -----------------------------> पुश बटन बंद करो
- ए 4 -----------------------------> डीएस 32 का एसडीए 3131
- A5 -----------------------------> DS3231 का एस.सी.एल.
- 3.3V -----------------------------> DS3231 का Vcc
- गोंड -----------------------------> गोंड
इस मेडिसिन रिमाइंडर प्रोजेक्ट में, आरटीडी डीएस 3231 को अरुडिनो यूनो के साथ I2C प्रोटोकॉल के माध्यम से इंटरफेयर किया गया है। आप Arduino के साथ समय पढ़ने के लिए RTC IC DS1307 का भी उपयोग कर सकते हैं। RTC DS3231 में इनबिल्ट 32k मेमोरी भी है जिसका उपयोग अतिरिक्त डेटा स्टोर करने के लिए किया जा सकता है। आरटीसी मॉड्यूल अरुदिनो के 3.3V पिन के माध्यम से संचालित होता है। एसपीआई का उपयोग करके 16x2 एलसीडी डिस्प्ले को इंटरफेज किया जाता है। एक बज़ आर का उपयोग सतर्क करने और यह याद दिलाने के लिए किया जाता है कि यह दवा लेने का समय है। चार पुश बटन का उपयोग किया जाता है जहां प्रत्येक में अलग-अलग चयन सुविधा होती है। पहले पुश बटन का उपयोग प्रति दिन एक बार दवा लेने की याद दिलाने के लिए किया जाता है। दूसरे पुश बटन का उपयोग प्रति दिन दो बार याद दिलाने के लिए किया जाता है और तीसरे पुश बटन का उपयोग प्रति दिन तीन बार याद दिलाने के लिए किया जाता है। चौथे पुश बटन का उपयोग बजर को रोकने के लिए किया जाता है जब उपयोगकर्ता ने चेतावनी सुनी है।
स्वचालित चिकित्सा अनुस्मारक प्रणाली का कार्य करना
गोली अनुस्मारक अलार्म 5V आपूर्ति का उपयोग कर संचालित है। जब यह पहली बार उठता है, तो यह " वेलकम टू सर्किट डाइजेस्ट " के रूप में एक स्वागत योग्य मालिश दिखाता है । एलसीडी स्क्रीन को तीन स्क्रीन में साइकल पर सेट किया गया है। 1 सेंट स्क्रीन मालिश को " स्वस्थ रहें, जल्द ठीक हो जाएं " के रूप में दिखाता है । दूसरी स्क्रीन एक हेल्प स्क्रीन है जो किसी एक टाइम-स्लॉट को याद दिलाने के लिए सिलेक्ट पुश बटन को दबाने के लिए कहती है (दिन में एक बार / दो बार / तीन बार)। समय स्लॉट कार्यक्रम में परिवर्तनशील है और तदनुसार कॉन्फ़िगर किया जा सकता है। अभी हमने इसे तीन ड्यूरेशन यानी सुबह 8 बजे, दोपहर 2 बजे और रात 8 बजे तय किया है।
हमने टाइम स्लॉट को तीन मोड में विभाजित किया है। मोड 1 सुबह 8 बजे एक बार / दिन दवा लेने का चयन करता है जब उपयोगकर्ता 1 सेंट पुश बटन दबाता है। मोड 2 सुबह और शाम 8 बजे दो बार दवा लेने का चयन करता है जब उपयोगकर्ता 2 एनडी पुश बटन दबाता है। यदि उपयोगकर्ता 3 rd पुश बटन दबाता है, तो मोड 3, दिन में 8 बजे, 2pm और 8pm पर दवा लेने का चयन करता है ।
हम बजर को 10 मिनट तक (इस परियोजना में शामिल नहीं) स्नूज़ करने की सुविधा भी जोड़ सकते हैं। जब उपयोगकर्ता पुश बटन दबाकर वांछित स्लॉट का चयन करता है, तो उपयोगकर्ता इनपुट दर्ज किया जाता है और आरटीसी से समय लिया जाता है। जब समय का चयन चयनित समय स्लॉट के साथ किया जाता है तो बजर गुलजार होने लगता है। उपयोगकर्ता STOP बटन दबाकर बजर को रोक सकता है। अगले स्लॉट रिमाइंडर के लिए भी यही प्रक्रिया जारी है। इस धमनी के अंत में दिए गए वीडियो में पूरी प्रक्रिया दिखाई गई है।
मेडिसिन रिमाइंडर के लिए Arduino UNO प्रोग्रामिंग
गोलियों को याद दिलाने के तरीकों के बारे में सोचने के बाद एक बार प्रोग्राम लिखना बहुत आसान है। यहां यह डिस्प्ले पर रिमाइंडर दिखाएगा, एक बजर को बज़ करेगा और एलईडी का उपयोग करके इसे इंगित करेगा। इसमें तीन टाइम स्लॉट (एक बार / दो बार / दिन में तीन बार) चुनने का विकल्प होता है और समय पर पहुंचने पर यह मरीज को बजर बजाकर सचेत करना शुरू कर देगा। तब पूरी प्रणाली निम्नलिखित की तरह दिखाई देगी:
उपयोगकर्ता को डिस्प्ले पर निर्देश के निर्देश मिलते हैं स्टॉप पुश बटन> एंड को पुश करना
यदि हम अधिक सुविधाएँ जोड़ना चाहते हैं तो हम प्रोग्राम और हार्डवेयर बदल सकते हैं। बहुत सरल तरीके से समझने के लिए, हमने कार्यक्रम को छोटे कार्यों में तोड़ दिया है। कार्यों को समझना और लागू करना आसान है। पूरा कार्यक्रम इस परियोजना के अंत में दिया गया है। कार्यक्रम के साथ शुरू करते हैं।
चूंकि, हमने 16x2 एलसीडी डिस्प्ले, आरटीसी डीएस 3231 जैसे अन्य बाह्य उपकरणों का उपयोग किया है, इसलिए हमें पहले पुस्तकालयों को शामिल करना होगा या वह। आवश्यक पुस्तकालय निम्नलिखित हैं:
यदि Arduino चालू नहीं है, तो उपयोगकर्ता का चयन इनपुट का ट्रैक रखने के लिए EEPROM लाइब्रेरी का उपयोग किया जाता है। और जब Arduino पर यूजर पावर को EEPROM लाइब्रेरी का उपयोग करके पुश बटन की पिछली स्थिति मिलती है। वायर.एच लाइब्रेरी का उपयोग तब से किया जाता है जब I2C का उपयोग करके RTC DS3231 मॉड्यूल का संचार किया जाता है।
हमेशा जांचें कि क्या आरटीसी ठीक से वायर्ड है या यह क्षतिग्रस्त नहीं है, क्योंकि आरटीसी पूरे रिमाइंडर सिस्टम को ध्यान में रखते हुए महत्वपूर्ण भूमिका निभाएगा।
अगर (rtc.begin ()) {// चेक अगर rtc जुड़ा हुआ है Serial.println ("RTC नहीं ढूँढ सका"); जबकि (1); } अगर (rtc.lostPower ()) {Serial.println ( "RTC खोई हुई शक्ति, समय निर्धारित करें!"); }
समय समायोजन दो तरीकों से किया जा सकता है, या तो सिस्टम संकलन समय का उपयोग करके या मैन्युअल रूप से दर्ज करके। एक बार जब हमने समय निर्धारित कर लिया है, तो नीचे की पंक्तियों पर टिप्पणी करें जब तक कि आप आरटीसी समय को फिर से बदलना नहीं चाहते।
rtc.adjust (दिनांक समय (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
इस स्विच स्टेटमेंट का उपयोग पुश बटन के पहले से सहेजे गए स्टेट को पढ़ने और उचित और सटीक रिमाइंडर समय के लिए राज्य को फिर से शुरू करने के लिए किया जाता है।
val2 = EEPROM.read (addr); // पढ़े गए प्रीविओसूली ने पुश बटन के मूल्य को शुरू करने के लिए जहां से इसे पहले स्विच (वैल 2) { केस 1: सीरीयल प्रिंट प्रिंट किया गया था ("1 / दिन के लिए सेट"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; टूटना; केस 2: सीरियल.प्रिंटल ("2 / दिन के लिए सेट"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; टूटना; केस 3: सीरियल.प्रिंटल ("3 / दिन के लिए सेट"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; टूटना; }
यह कथन परिभाषित अंतराल स्क्रीन साइकलिंग के समय और नियंत्रण के लिए मिल का उपयोग करने के लिए किया जाता है।
currentMillisLCD = मिली (); समय के परिभाषित अंतराल पर एलसीडी स्क्रीन स्विचिंग के लिए // स्टार्ट मिलिस
पुश बटन से जुड़े डिजिटल पिन पढ़ना शुरू करें।
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
नीचे फ़ंक्शन का उपयोग पुश बटन स्थिति को पढ़ने और EEPROM को लिखने के लिए किया जाता है । जब भी पुश बटन दबाया जाता है राज्य EEPROM को लिखा जाता है। इसके अलावा यह चयनित उपयोगकर्ता इनपुट विकल्प के एलसीडी डिस्प्ले पर संदेश प्रिंट करता है। इसी तरह फ़ंक्शंस पुश 2 () और पुश 3 () का उपयोग किया जाता है।
void push1 () {// फ़ंक्शन को एक बार / दिन रिमाइंडर सेट करने के लिए यदि (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (एड्र, 1); सीरियल.प्रिंट ("पुश 1 लिखित:"); Serial.println (EEPROM.read (addr)); // डीबगिंग के लिए पुशवैल = 1; // पुश बटन -1 lcd.clear () की स्थिति को बचाएं; lcd.setCursor (0, 0); lcd.print ("रिमाइंडर सेट"); lcd.setCursor (0, 1); lcd.print ("एक बार / दिन के लिए!"); देरी (1200); lcd.clear (); } }
बज़र को रोकने और नेतृत्व करने के लिए नीचे फ़ंक्शन का उपयोग किया जाता है । सुझाव देना हमेशा अच्छा होता है। "गर्म पानी के साथ दवा लें" प्रदर्शन पर एक सुझाव संदेश प्रिंट करें।
शून्य स्टॉपपिन () {// फ़ंक्शन को बंद करने के लिए जब उपयोगकर्ता पुश बटन बंद कर देता है तो (स्टॉपिनस्टेट == 1) { // स्टॉपिनस्टेट = 0; // pushPressed = true; पुशप्रेस्ड = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("दवा लें"); lcd.setCursor (0, 1); lcd.print ("गर्म पानी के साथ"); देरी (1200); lcd.clear (); } }
नीचे दिए गए फ़ंक्शन को रखने के समय से स्वतंत्र है लेकिन हमेशा तीन स्क्रीन में चक्र होता है जो उपयोगकर्ता की मदद करता है। जैसे-जैसे हम मरीजों की देखभाल कर रहे हैं, वैसे-वैसे ग्रीटिंग मैसेज को छापते जा रहे हैं क्योंकि हमें पता है कि भावनात्मक सहायता रोगियों को अधिक त्वरित समय में ठीक करने में बहुत मददगार है। आप अपना खुद का रचनात्मक संदेश चुन सकते हैं। चलो के रूप में संदेश मुद्रित "स्टे स्वस्थ, बहुत जल्द ठीक हो"।
दूसरी स्क्रीन मरीजों को "रिमाइंडर के लिए प्रेस बटन" के रूप में निर्देश देने के लिए है। तीसरी स्क्रीन का उपयोग केवल वर्तमान तिथि और समय दिखाने के लिए किया जाता है ।
शून्य चेंजस्क्रीन () {// स्क्रीन साइकलिंग के लिए फंक्शन // स्टार्टिंग स्क्रीन को हर परिभाषित अंतराल को चालू करें यदि (currentMillisLCD - lastMillisLCD> intervalLCD) // पिछली बार जब आपने डिस्प्ले को बदला है तो इसे सेव करें { lastMillisLCD = currentMillisLCD; स्क्रीन ++; अगर (स्क्रीन> अधिकतम स्क्रीन) { स्क्रीन = 0; // सभी स्क्रीन ओवर -> 1 से शुरू } isScreenChanged = true; } // चालू स्क्रीन प्रदर्शित करना शुरू करें यदि (isScreenChanged) // स्क्रीन को बदल दिया जाए तो ही स्क्रीन को अपडेट करें। { SScreenChanged = false; // अगले पुनरावृत्ति स्विच (स्क्रीन) { केस getWellsoon: gwsMessege () के लिए रीसेट ; // अच्छी तरह से जल्द ही संदेश मिलता है टूटना; मामला HELP_SCREEN: helpScreen (); // निर्देश स्क्रीन ब्रेक; मामला TIME_SCREEN: समयस्क्रीन (); // तारीख और समय तोड़ने के लिए प्रिंट करने के लिए ; डिफ़ॉल्ट: // सेट नहीं। टूटना; } } }
इस फ़ंक्शन का उपयोग चयनित समय तक पहुंचने पर एक साथ एलईडी को गुलजार और ब्लिंक करने के लिए किया जाता है ।
void startBuzz () {// फंक्शन शुरू करने के लिए जब समय निर्धारित अंतराल तक पहुँचता है // अगर (pushPressed == false) { if (pushpressed == 0) { Serial.println ("पुंकपिक पलक में झूठा है"); अहस्ताक्षरित लंबी currentMillis = मिली (); if (currentMillis - pastMillis> = interval) { पिछलामेलिस = करंटमिलिस; // आखिरी बार जब आपने एलईडी सीरियल को स्कैन किया था तो उसे सेव करें। प्रिंट ("स्टार्ट बज़िंग"); if (ledState == कम) {// यदि LED बंद है तो उसे चालू करें और इसके विपरीत: ledState = HIGH; } और { ledState = LOW; } digitalWrite (ledPin, ledState); } } और अगर (pushpressed == 1) { Serial.println ("pushpressed is true"); ledState = LOW; digitalWrite (ledPin, ledState); } }
इस फ़ंक्शन का उपयोग उपयोगकर्ता द्वारा चयनित समय स्लॉट की सुबह 8 बजे से तुलना करने के लिए किया जाता है और बजर को गुलजार करना शुरू कर देता है और तब तक एलईडी को ब्लिंक करता है जब तक उपयोगकर्ता स्टॉप पुश बटन दबा नहीं देता। इसी प्रकार फ़ंक्शंस at2pm () और void at8pm का उपयोग बज़र शुरू करने के लिए किया जाता है और 2pm और 8pm पर लीड किया जाता है।
शून्य at8am () {// फंक्शन 8 बजे से शुरू होने की तारीख अब = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// ///////////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////////// /// } } } }
यह है कि आप बस Arduino का उपयोग करके अपनी खुद की स्वचालित चिकित्सा अनुस्मारक कैसे बना सकते हैं। आप Arduino के साथ ESP8266 का भी उपयोग कर सकते हैं ताकि इसे एक IoT प्रोजेक्ट बनाया जा सके जो उपयोगकर्ता को ईमेल अलर्ट भेजने में सक्षम होगा।
पूरा कोड और प्रदर्शन वीडियो नीचे दिया गया है।