- Mga Kinakailangan na Bahagi para sa paalala ng Awtomatikong Gamot gamit ang Arduino
- Paalala sa Arduino Medicine gamit ang Arduino Circuit
- Paggawa ng Awtomatikong Sistema ng Paalala sa Gamot
- Programming Arduino UNO para sa Paalala sa Gamot
Pagdating sa ating mga mahal sa buhay, palagi nating nais na panatilihing malusog at malusog ang mga ito. Ngunit ano ang mangyayari kung magkasakit sila at kalimutan na uminom ng gamot sa oras. Mag-aalala tayo, di ba? Sa mga ospital, maraming mga pasyente at mahirap ipaalala sa bawat pasyente na uminom ng gamot sa tamang oras. Ang mga tradisyunal na paraan ay nangangailangan ng mga pagsisikap ng tao na paalalahanan sila na uminom ng mga gamot sa oras. Hindi sinusundan iyon ng digital era at maaari tayong gumamit ng mga machine upang magawa iyon. Ang aplikasyon ng Smart Medicine Reminder ay napakalawak at maaaring magamit ng mga pasyente sa bahay, mga doktor sa mga ospital, at sa maraming iba pang mga lugar. Pagdating sa paalala, maraming paraan upang ipaalala ito:
- Ipakita ito sa isang display
- Magpadala ng abiso sa email o Telepono
- Gumagamit ng mga mobile app
- Buzz alarm
- Paggamit ng Bluetooth / Wi-Fi
- Tumawag ka
- Paalalahanan para sa susunod na oras ng gamot habang pinapaalala ang kasalukuyang oras
Maaari nating pagsamahin ang mga paraan depende sa pangangailangan. Upang mapanatili ang mga bagay na simple dito gumawa kami ng isang simpleng Paalala sa Gamot gamit ang Arduino na nagpapaalala sa amin na uminom ng mga gamot 1 o 2 o 3 beses sa isang araw. Maaaring mapili ang puwang ng oras gamit ang mga push button. Gayundin, ipinapakita nito ang kasalukuyang Petsa at Oras. Palawakin pa namin ito sa isang papasok na artikulo ng proyekto ng IoT kung saan ipapadala ang isang email o notification sa SMS sa gumagamit. Ang paalala ng gamot na ito ay maaari ring isama sa Patient Monitoring System.
Mga Kinakailangan na Bahagi para sa paalala ng Awtomatikong Gamot gamit ang Arduino
- Arduino Uno (Maaari din kaming gumamit ng iba pang Arduino boards, tulad ng Pro mini, Nano)
- Module ng RTC DS3231
- 16x2 LCD Display
- Buzzer
- Pinangunahan (anumang kulay)
- Breadboard
- Mga Push Button
- 10K Potensyomiter
- 10K, 1K Resistors
- Jumper Wires
Paalala sa Arduino Medicine gamit ang Arduino Circuit
Ang kumpletong diagram ng circuit upang makabuo ng isang matalinong kahon ng gamot gamit ang Arduino ay ipinapakita sa ibaba
Nasa ibaba ang mga koneksyon ng pin ng Arduino na may iba't ibang mga peripheral
Arduino Pins Mga Peripheral Pins
- 2 ---------------------------->> D7 ng 16x2 LCD Display
- 3 ---------------------------->> D6 ng 16x2 LCD Display
- 4 ---------------------------->> D5 ng 16x2 LCD Display
- 5 ---------------------------->> D4 ng 16x2 LCD Display
- 7 -----------------------------> Ika-3 na pindutan ng push
- 8 -----------------------------> Ika-2 na pindutan ng push
- 9 -----------------------------> Ika-1 na pindutan ng push
- 11 ---------------------------->> EN pin ng 16x2 LCD Display
- 12 -----------------------------> RS pin ng 16x2 LCD Display
- 13 ---------------------------->> Ve Pin ng Buzzer at Led
- A0 ---------------------------->> Itigil ang Button ng Push
- A4 ---------------------------->> SDA ng DS3231
- A5 -----------------------------> SCL ng DS3231
- 3.3V ---------------------------->> Vcc ng DS3231
- Gnd -----------------------------> Gnd
Sa Project ng Paalala sa Gamot na ito, ang RTC DS3231 ay na-interfaced sa pamamagitan ng I2C protocol kasama ng Arduino Uno. Maaari mo ring gamitin ang RTC IC DS1307 para sa pagbabasa ng oras sa Arduino. Ang RTC DS3231 ay mayroon ding built-in na 32k memorya na maaaring magamit upang mag-imbak ng karagdagang data. Ang module ng RTC ay pinalakas sa pamamagitan ng 3.3V pin ng Arduino uno. Ang isang 16x2 LCD display ay naka-interface gamit ang SPI. Ginagamit ang isang buzze r upang alerto at ipaalala na oras na para uminom ng gamot. Apat na mga push button ang ginagamit kung saan ang bawat isa ay may natatanging piling tampok. Ang unang pindutan ng itulak ay ginagamit para sa pagpapaalala na kumuha ng gamot minsan sa bawat araw. Ang pangalawang pindutan ng itulak ay ginagamit upang paalalahanan nang dalawang beses bawat araw at ang pangatlong push button ay ginagamit upang paalalahanan ang tatlong beses bawat araw. Ginamit ang pang-apat na pindutan ng itulak upang ihinto ang buzzer kapag narinig ng gumagamit ang alerto.
Paggawa ng Awtomatikong Sistema ng Paalala sa Gamot
Ang Pill Reminder Alarm ay pinalakas gamit ang 5V supply. Kapag ito ay unang nag-boot, nagpapakita ito ng isang malugod na masahe bilang " Maligayang Pagdating sa Circuit Digest ". Ang LCD screen ay nakatakda sa cycle sa tatlong mga screen. Ipinapakita ng 1 st screen ang masahe bilang " Manatiling Malusog, Magaling Kaagad ". Ang pangalawang screen ay isang screen ng tulong na nagsasabi na pindutin ang piliin ang pindutan ng push upang pumili ng anumang isang time-slot upang paalalahanan (isang beses / dalawang beses / tatlong beses sa isang araw). Ang puwang ng oras ay nababago sa programa at maaaring mai-configure nang naaayon. Sa ngayon ay naayos namin ito sa tatlong tagal ibig sabihin, 8am, 2pm, at 8pm.
Hinahati namin ang mga puwang ng oras sa tatlong mga mode. Pinipili ng mode 1 na kumuha ng gamot minsan / araw ng 8:00 kapag pinindot ng gumagamit ang 1 st push button. Pinipili ng mode 2 na kumuha ng gamot nang dalawang beses / araw sa ganap na 8 ng umaga at 8 ng gabi kapag pinindot ng gumagamit ang 2 nd push button. Pinipili ng mode 3 na kumuha ng gamot ng tatlong beses / araw sa ganap na 8 ng umaga, 2 ng hapon at 8 ng gabi kung pinindot ng gumagamit ang 3 rd push button.
Maaari din kaming magdagdag ng isang tampok upang i-snooze ang buzzer sa loob ng 10 minuto (hindi kasama sa proyektong ito). Kapag pinipili ng gumagamit ang nais na mga puwang sa pamamagitan ng pagpindot sa mga pindutan ng push, ang input ng gumagamit ay naitala at ang oras ay kinuha mula sa RTC. Kapag ang oras ay naitugma sa napiling puwang ng oras pagkatapos ay magsisimulang maghimok ang buzzer. Maaaring ihinto ng gumagamit ang buzzer sa pamamagitan ng pagpindot sa pindutan ng STOP. Nagpapatuloy ang parehong proseso para sa susunod na paalala ng slot. Ang kumpletong proseso ay ipinapakita sa Video na ibinigay sa dulo ng aricle na ito.
Programming Arduino UNO para sa Paalala sa Gamot
Napakadali na magsulat ng programa sa sandaling naisip mo ang mga paraan upang paalalahanan ang pagkuha ng mga tabletas. Dito ipapakita ang paalala na ipinapakita, buzzer ng isang buzzer at ipahiwatig ito gamit ang LED. Mayroon din itong pagpipilian upang pumili ng tatlong mga puwang ng oras (isang beses / dalawang beses / tatlong beses bawat araw) at kung kailan maabot ang oras simulan nito ang pag-alerto sa pasyente sa pamamagitan ng pag-buzz ng buzzer. Pagkatapos ang buong sistema ay magiging hitsura ng sumusunod:
Nakakatanggap ang mga tagubilin ng tulong sa gumagamit> Pinipili ng gumagamit ang mga puwang ng oras (isang beses / araw, dalawang beses / araw, tatlong beses / araw)> I-print ang mensahe ng kumpirmasyon sa display> Nagsimula ang oras> Nagsisimula ang Buzzer at LED kapag tumutugma ang oras sa puwang ng napili ng gumagamit> Humihinto ang gumagamit pagtulak ng isang pindutan ng itigil ang itigil> Wakas
Maaari nating baguhin ang programa at hardware kung nais nating magdagdag ng higit pang mga tampok. Upang maunawaan sa mas simpleng paraan, pinaghiwalay namin ang programa sa maliliit na pag-andar. Ang mga pagpapaandar ay madaling maunawaan at ipatupad. Ang kumpletong programa ay ibinibigay sa pagtatapos ng proyektong ito. Magsimula tayo sa programa.
Dahil, gumamit kami ng iba pang mga peripheral tulad ng 16x2 LCD Display, RTC DS3231, kaya kailangan muna naming isama ang mga aklatan f o iyon. Ang kinakailangan sa library ay ang mga sumusunod:
Ginagamit ang library ng EEPROM upang subaybayan ang input ng pagpili ng gumagamit kung hindi nakabukas ang Arduino. At kapag ang kapangyarihan ng gumagamit sa Arduino nakakakuha ito ng nakaraang estado ng mga pindutan ng push gamit ang EEPROM library. Ang Wire.h library ay ginagamit mula noong ang module ng RTC DS3231 ay naipaabot gamit ang I2C.
Laging suriin kung ang RTC ay maayos na wired o hindi ito nasira, dahil ang RTC ay may mahalagang papel sa pagpapanatili ng oras ng buong sistema ng paalala.
kung (! rtc.begin ()) {// suriin kung ang rtc ay konektado sa Serial.println ("Hindi mahanap ang RTC"); habang (1); } kung (rtc.lostPower ()) { Serial.println ("Nawalan ng kuryente ang RTC, hinahayaan mong itakda ang oras!"); }
Ang pag-aayos ng oras ay maaaring gawin sa dalawang paraan, alinman sa awtomatikong paggamit ng system na sumulat ng oras o sa pamamagitan ng manu-manong pagpasok nito. Kapag naitakda na namin ang oras, magkomento sa mga linya sa ibaba maliban kung nais mong baguhin muli ang oras ng RTC.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Ginagamit ang pahayag ng switch na ito upang basahin ang dating nai-save na estado ng pindutan ng itulak at ipagpatuloy ang estado para sa naaangkop at tumpak na oras ng paalala.
val2 = EEPROM.read (addr); // read previosuly save value of push button to start from where it was left dati switch (val2) { case 1: Serial.println ("Itakda para sa 1 / araw"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; pahinga; kaso 2: Serial.println ("Itakda para sa 2 / araw"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; pahinga; kaso 3: Serial.println ("Itakda para sa 3 / araw"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; pahinga; }
Ang pahayag na ito ay ginagamit upang makuha ang millis na gagamitin para sa tiyempo at kontrol ng tinukoy na agwat ng pagbisikleta ng agwat.
currentMillisLCD = millis (); // start millis para sa paglipat ng screen ng LCD sa tinukoy na agwat ng oras
Simulang basahin ang mga digital na pin na konektado sa mga pindutan ng itulak.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Ginagamit ang pagpapaandar sa ibaba upang mabasa ang estado ng push button at isulat ito sa EEPROM. Kailan man mapindot ang pindutan ng push ang estado ay nakasulat sa EEPROM. Gayundin pini-print nito ang mensahe sa pagpapakita ng LCD ng napiling pagpipilian ng pag-input ng gumagamit. Katulad nito ang mga pagpapaandar na push2 () at push3 () ay ginagamit.
walang bisa ang push1 () {// upang itakda ang paalala nang isang beses / araw kung (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 Isinulat:"); Serial.println (EEPROM.read (addr)); // for debugging pushVal = 1; // save the state of push button-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Itakda ang paalala"); lcd.setCursor (0, 1); lcd.print ("para sa Once / day!"); antala (1200); lcd.clear (); } }
Ginagamit ang pagpapaandar sa ibaba upang ihinto ang buzzer at humantong. Palaging mabuti na magbigay ng mga mungkahi. Mag-print ng isang mensahe ng mungkahi sa display na "Kumuha ng gamot na may maligamgam na tubig".
void stopPins () {// function to stop buzzing when user pushes stop push button if (stopinState == 1) { // stopinState = 0; // pushPressed = true; pinindot = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Uminom ng Gamot"); lcd.setCursor (0, 1); lcd.print ("may Warm Water"); antala (1200); lcd.clear (); } }
Ang pagpapaandar sa ibaba ay malaya sa pag-iingat ng oras ngunit palaging umiikot sa tatlong mga screen na makakatulong sa gumagamit. Habang pinapanatili namin ang isang pag-aalaga sa mga pasyente ay hinahayaan ang pag-print ng isang mensahe sa pagbati dahil alam namin na ang emosyonal na suporta ay lubos na kapaki-pakinabang sa pagpapagaling ng mga pasyente sa mas mabilis na oras. Maaari kang pumili ng iyong sariling malikhaing mensahe. Mag- print tayo ng isang mensahe bilang "Manatiling malusog, Magaling kaagad".
Ang pangalawang screen ay para sa pagbibigay ng tagubilin sa mga pasyente bilang "Pindutin ang mga pindutan para sa paalala..". Ang Ikatlong screen ay ginagamit upang ipakita lamang ang kasalukuyang petsa at oras.
void changeScreen () {// function for Screen Cycling // Start switching screen bawat tinukoy intervalLCD kung (currentMillisLCD - nakaraangMillisLCD> intervalLCD) // i-save ang huling oras na binago mo ang display { nakaraangMillisLCD = currentMillisLCD; mga screen ++; kung (screens> maxScreen) { screens = 0; // all screens over -> start from 1st } isScreenChanged = true; } // Simulang ipakita ang kasalukuyang screen kung (isScreenChanged) // i-update lamang ang screen kung ang screen ay binago. { isScreenChanged = false; // reset para sa susunod na switch ng iteration (mga screen) { case getWellsoon: gwsMessege (); // magpagaling kaagad mensahe pahinga; kaso HELP_SCREEN: helpScreen (); // break screen ng tagubilin ; kaso TIME_SCREEN: timeScreen (); // upang mai-print ang petsa at pahinga sa oras ; default: // HINDI NAKATAKDA. pahinga; } } }
Ginagamit ang pagpapaandar na ito upang simulan ang paghimok at pagpikit ng LED nang sabay-sabay kung umabot na ang napiling oras.
void startBuzz () {// function to start buzzing kapag umabot ang oras sa tinukoy na interval // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed is false in blink"); unsigned long currentMillis = millis (); kung (currentMillis - nakaraangMillis> = agwat) { nakaraangMillis = currentMillis; // save the last time you blinked the LED Serial.println ("Start Buzzing"); kung (ledState == LOW) {// kung ang LED ay naka-on i-on ito at vice-versa: ledState = HIGH; } iba pa { ledState = LOW; } digitalWrite (ledPin, ledState); } } iba pa kung (pushpressed == 1) { Serial.println ("totoo ang pushpressed"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Ang pagpapaandar na ito ay ginagamit upang ihambing ang piling oras ng napili ng gumagamit sa ganap na 8:00 at nagsisimulang buzzing ang buzzer at kumikislap ng LED hanggang sa mapindot ng user ang stop push button. Katulad nito ang mga pag-andar na walang bisa at2pm () at void at8pm ay ginagamit upang simulan ang buzzer at humantong sa 2pm at 8pm.
void at8am () {// function to start buzzing at 8am DateTime now = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// /////////////////////////////////////////////// startBuzz (); // ///. ///. // ///. /// } } } }
Ito ay kung paano mo simpleng makagawa ng iyong sariling Awtomatikong Paalala sa Gamot gamit ang Arduino. Maaari mo ring gamitin ang ESP8266 kasama ang Arduino upang gawin itong isang proyekto ng IoT na makapagpadala ng alerto sa email sa gumagamit.
Ang kumpletong Code at demonstration na Video ay ibinibigay sa ibaba.