- Komponente, potrebne za opomnik samodejne medicine z uporabo Arduina
- Opomnik za zdravilo Arduino z uporabo vezja Arduino
- Delovanje samodejnega opozorilnega sistema za zdravila
- Programiranje Arduino UNO za medicinsko opozorilo
Ko gre za naše ljubljene, želimo vedno ostati zdravi in v formi. Kaj pa se bo zgodilo, če zbolijo in pozabijo pravočasno vzeti zdravilo. Skrbelo bi nas, kajne? V bolnišnicah je veliko bolnikov in težko je vsakega bolnika opozoriti, naj pravočasno vzame zdravilo. Tradicionalni načini zahtevajo človeška prizadevanja, da jih opomnijo na pravočasno jemanje zdravil. Digitalna doba temu ne sledi in za to lahko uporabljamo stroje. Aplikacija Smart Medicine Reminder je zelo široka in jo lahko uporabljajo bolniki doma, zdravniki v bolnišnicah in na mnogih drugih mestih. Ko gre za opominjanje, ga lahko opomnite na več načinov:
- Pokažite na zaslonu
- Pošljite obvestilo po e-pošti ali telefonu
- Uporaba mobilnih aplikacij
- Buzz alarm
- Uporaba Bluetooth / Wi-Fi
- Pokliči
- Opomnite za naslednji čas zdravila, medtem ko opozarjate na trenutni čas
Lahko kombiniramo načine, odvisno od potrebe. Da bodo tu stvari poenostavljene, smo z uporabo Arduina pripravili preprost medicinski opomnik, ki nas opominja na jemanje zdravil 1 ali 2 ali 3-krat na dan. Časovno režo lahko izberete s tipkami. Prav tako prikazuje trenutni datum in čas. Nadalje ga bomo razširili na dohodne članke o projektu IoT, kjer bo uporabniku poslano e-poštno ali SMS sporočilo. Ta opomnik na zdravila je mogoče integrirati tudi s sistemom za spremljanje bolnikov.
Komponente, potrebne za opomnik samodejne medicine z uporabo Arduina
- Arduino Uno (Lahko uporabimo tudi druge plošče Arduino, kot sta Pro mini in Nano)
- RTC modul DS3231
- LCD zaslon 16x2
- Zvočni signal
- Led (v kateri koli barvi)
- Breadboard
- Gumbi
- 10K potenciometer
- 10K, 1K upori
- Jumper žice
Opomnik za zdravilo Arduino z uporabo vezja Arduino
Celoten diagram vezja za izdelavo pametne škatle z zdravili Arduino je prikazan spodaj
Spodaj so pin povezave Arduina z različnimi zunanjimi napravami
Arduino Pins Periferni zatiči
- 2 -----------------------------> D7 od 16x2 LCD zaslona
- 3 -----------------------------> D6 LCD zaslona 16x2
- 4 -----------------------------> D5 od 16x2 LCD zaslona
- 5 -----------------------------> D4 LCD zaslona 16x2
- 7 -----------------------------> 3. gumb
- 8 -----------------------------> 2. potisni gumb
- 9 -----------------------------> 1. gumb
- 11 -----------------------------> EN zatič LCD zaslona 16x2
- 12 -----------------------------> RS zatič LCD zaslona 16x2
- 13 -----------------------------> + Ve Pin zvočnika in vodil
- A0 -----------------------------> Gumb za zaustavitev
- A4 -----------------------------> SDA DS3231
- A5 -----------------------------> SCL za DS3231
- 3,3 V -----------------------------> Vcc DS3231
- Gnd -----------------------------> Gnd
V tem projektu Reminder Reminder je RTC DS3231 povezan prek protokola I2C z Arduino Uno. Za odčitavanje časa z Arduinom lahko uporabite tudi RTC IC DS1307. RTC DS3231 ima tudi vgrajen 32k pomnilnik, ki se lahko uporablja za shranjevanje dodatnih podatkov. RTC modul se napaja prek 3,3 V nožice Arduino uno. Zaslon LCD 16x2 je povezan s SPI. Buzze r se uporablja za opozarjanje in spomnil, da je čas, da se zdravilo. Uporabljajo se štirje gumbi, kjer ima vsak svojo izbrano funkcijo. Prvi gumb se uporablja za opozarjanje na jemanje zdravila enkrat na dan. Drugi gumb se uporablja za opomin dvakrat na dan, tretji gumb pa trikrat na dan. Četrti gumb se uporablja za zaustavitev zvočnega signala, ko uporabnik zasliši opozorilo.
Delovanje samodejnega opozorilnega sistema za zdravila
Pill Opomnik Alarm se napaja s pomočjo 5V oskrbe. Ko se prvič zažene, je masaža dobrodošlice prikazana kot " Dobrodošli v Circuit Digest ". LCD zaslon je nastavljen na tri zaslone. V 1. st zaslon prikazuje masažo kot " ostali zdravi, Get Well Soon ". Drugi zaslon je zaslon s pomočjo, ki pritisne gumb za izbiro, da izbere katero koli časovno režo, ki jo želite opomniti (enkrat / dvakrat / trikrat na dan). Časovna reža je v programu spremenljiva in jo je mogoče ustrezno konfigurirati. Trenutno smo to popravili na tri obdobja, torej 8h, 14h in 20h.
Časovne reže smo razdelili na tri načine. Način 1 izbere vzeti zdravilo enkrat / dan ob 8h, ko uporabnik pritisne 1 st pritiskom na gumb. Način 2 izbere jemanje zdravila dvakrat na dan ob 8.00 in 20.00, ko uporabnik pritisne 2. gumb. Način 3 izbere vzeti zdravilo trikrat / dan ob 8h, 2pm in 8PM če uporabnik pritisne 3 rd potisni gumb.
Dodamo lahko tudi funkcijo za 10 minutno dremež zvočnega signala (ni vključen v ta projekt). Ko uporabnik s pritiskom na gumbe izbere želene reže, se zabeleži uporabniški vnos in čas vzame RTC. Ko se čas ujema z izbrano časovno režo, brenča začne brenčati. Uporabnik lahko zaustavi zvočni signal s pritiskom na tipko STOP. Enak postopek se nadaljuje za naslednji opomnik reže. Popoln postopek je prikazan v videoposnetku na koncu tega članka.
Programiranje Arduino UNO za medicinsko opozorilo
Zelo enostavno je napisati program, ko si omislite načine, kako opozoriti na jemanje tablet. Tu bo prikazal opomnik na zaslonu, zazvonil brenčalo in ga prikazal z LED. Ima tudi možnost, da izbere tri časovne reže (enkrat / dvakrat / trikrat na dan) in ko bo čas prišel, začne pacienta opozoriti z brenčanjem zvočnega signala. Potem bo celoten sistem videti takole:
Uporabnik dobi navodila za pomoč na zaslonu> Uporabnik izbere časovne reže (enkrat na dan, dvakrat / dan, trikrat / dan)> Na zaslonu se prikaže potrditveno sporočilo> Začetek vodenja časa> Zvočni signal in LED se zaženeta, ko se čas ujema z uporabniško izbrano režo> Uporabnik se ustavi do pritiskanje gumba za zaustavitev> Konec
Program in strojno opremo lahko spremenimo, če želimo dodati več funkcij. Za bolj preprosto razumevanje smo program razdelili na majhne funkcije. Funkcije so enostavne za razumevanje in izvajanje. Celoten program je podan na koncu tega projekta. Začnimo s programom.
Ker smo uporabili drugo zunanjo opremo, kot je LCD zaslon 16x2, RTC DS3231, zato moramo najprej vključiti knjižnice f ali tako. Potrebne knjižnice so naslednje:
Knjižnica EEPROM se uporablja za spremljanje vnosa uporabnikove izbire, če Arduino ni vklopljen. In ko uporabnik vklopi Arduino, s knjižnico EEPROM dobi prejšnje stanje tipk. Knjižnica Wire.h se uporablja, saj se modul RTC DS3231 komunicira s pomočjo I2C.
Vedno preverite, ali je RTC pravilno ožičen ali ni poškodovan, saj bo imel RTC pomembno vlogo pri vodenju časa celotnega sistema opomnikov.
if (! rtc.begin ()) {// preverite, ali je rtc povezan Serial.println ("RTC ni bilo mogoče najti"); medtem ko (1); } if (rtc.lostPower ()) { Serial.println ("RTC izgubil napajanje, nastavimo čas!"); }
Časovno prilagoditev lahko izvedete na dva načina, bodisi samodejno s pomočjo časa prevajanja sistema bodisi z ročnim vnosom. Ko smo nastavili čas, komentirajte spodnje vrstice, razen če želite znova spremeniti čas RTC.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Ta stavek stikala se uporablja za branje predhodno shranjenega stanja gumba in nadaljevanje stanja za ustrezen in natančen čas opomnika.
val2 = EEPROM.read (addr); // preberemo predhodno shranjeno vrednost gumba, da začnemo od mesta, kjer je bilo prej preklopljeno (val2) { primer 1: Serial.println ("Nastavitev za 1 / dan"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; odmor; primer 2: Serial.println ("Nastavi za 2 / dan"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; odmor; primer 3: Serial.println ("Nastavi za 3 / dan"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; odmor; }
Ta izjava se uporablja, da se milise uporabi za merjenje časa in nadzor nad ciklom zaslona z definiranim intervalom.
currentMillisLCD = milis (); // zagon v milisih za preklapljanje LCD zaslona v določenem časovnem intervalu
Začnite brati digitalne nožice, povezane s tipkami.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Spodnja funkcija se uporablja za branje stanja tipk in zapisovanje v EEPROM. Ko pritisnete gumb, se stanje zapiše v EEPROM. Prav tako na LCD zaslon natisne sporočilo o izbrani izbiri uporabniškega vnosa. Podobno se uporabljata funkciji push2 () in push3 () .
void push1 () {// funkcija za nastavitev opomnika enkrat na dan, če (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPress = true; EEPROM.write (addr, 1); Serial.print ("Push1 Written:"); Serial.println (EEPROM.read (addr)); // za odpravljanje napak pushVal = 1; // shranimo stanje tipke-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Reminder set"); lcd.setCursor (0, 1); lcd.print ("enkrat / dan!"); zamuda (1200); lcd.clear (); } }
Spodnja funkcija se uporablja za zaustavitev zvočnega signala in led. Vedno je dobro dajati predloge. Natisnite sporočilo s predlogom na zaslon »Vzemite zdravilo s toplo vodo«.
void stopPins () {// funkcija za prenehanje brenčanja, ko uporabnik pritisne tipko stop, če (stopinState == 1) { // stopinState = 0; // pushPress = true; potisnjeno = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Vzemi zdravilo"); lcd.setCursor (0, 1); lcd.print ("s toplo vodo"); zamuda (1200); lcd.clear (); } }
Spodnja funkcija je neodvisna od vodenja časa, vendar vedno kroži na treh zaslonih, kar uporabniku pomaga. Ker skrbimo za paciente, lahko natisnemo pozdravno sporočilo, saj vemo, da je čustvena podpora zelo koristna za hitrejše zdravljenje bolnikov. Ustvarjalno sporočilo lahko izberete sami. Natisnimo sporočilo kot "Ostanite zdravi, kmalu ozdravite".
Drugi zaslon je namenjen navodilom pacientom kot »Pritisnite gumbe za opomnik..«. Tretji zaslon se uporablja za preprosto prikaz trenutnega datuma in ure.
void changeScreen () {// funkcija za kolesarjenje po zaslonu // Začnite preklapljati zaslon vsak določen intervalLCD, če (currentMillisLCD - previousMillisLCD> intervalLCD) // shranite zadnjo spremembo zaslona { previousMillisLCD = currentMillisLCD; zasloni ++; if (zasloni> maxScreen) { zasloni = 0; // vsi zasloni nad -> začni od 1. } isScreenChanged = true; } // Začni prikazovati trenutni zaslon, če je (isScreenChanged) // zaslon posodobi samo, če je zaslon spremenjen. { isScreenChanged = false; // ponastavitev za naslednje iteracijsko stikalo (zasloni) { case getWellsoon: gwsMessege (); // sporočilo kmalu ozdravi odmor; primer HELP_SCREEN: helpScreen (); // prekinitev zaslona z navodili ; zadeva TIME_SCREEN: timeScreen (); // za tiskanje preloma datuma in časa ; privzeto: // NOT SET. odmor; } } }
Ta funkcija se uporablja za hkratno brenčanje in utripanje LED, če je izbrani čas dosegel.
void startBuzz () {// funkcija za začetek brenčanja, ko čas doseže določen interval // if (pushPress == false) { if (pushpressed == 0) { Serial.println ("pushpressed je false v trenutku"); nepodpisan dolgi tokMillis = milis (); if (currentMillis - previousMillis> = interval) { previousMillis = currentMillis; // shranimo zadnjič, ko ste utripali LED Serial.println ("Začni brenčanje"); if (ledState == LOW) {// če LED ne sveti, jo vklopite in obratno: ledState = HIGH; } else { ledState = LOW; } digitalWrite (ledPin, ledState); } } else if (potisnjeno == 1) { Serial.println ("potisnjeno je res"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Ta funkcija se uporablja za primerjavo uporabnikovega časovnega termina ob 8. uri in začne brenčati zvočni signal in utripati LED, dokler uporabnik ne pritisne gumba za zaustavitev. Podobno se funkciji void at2pm () in void at8pm uporabljata za zagon zvočnega signala in vodenje ob 14:00 in 20:00.
void at8am () {// funkcija za začetek brenčanja ob 8h DateTime zdaj = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// ///////////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////////// /// } } } }
Tako lahko preprosto ustvarite svoj lastni opomnik o medicini z uporabo Arduina. ESP8266 lahko z Arduinom uporabite tudi za projekt IoT, ki bo uporabniku lahko poslal e-poštno opozorilo.
Celotna koda in predstavitveni video je spodaj.