- Komponente potrebne za podsjetnik za automatsku medicinu pomoću Arduina
- Podsjetnik za medicinu Arduino pomoću kruga Arduino
- Rad automatskog podsjetničkog lijeka
- Programiranje Arduino UNO za medicinski podsjetnik
Što se tiče naših najmilijih, uvijek želimo biti zdravi i u formi. Ali što će se dogoditi ako se razbole i zaborave uzeti lijek na vrijeme. Bili bismo zabrinuti, zar ne? U bolnicama ima mnogo pacijenata i teško je podsjetiti svakog pacijenta da uzima lijek na vrijeme. Tradicionalni načini zahtijevaju ljudske napore da ih podsjete da uzimaju lijekove na vrijeme. Digitalna era to ne slijedi i mi za to možemo koristiti strojeve. Primjena pametnog medicinskog podsjetnika vrlo je široka i mogu ga koristiti pacijenti kod kuće, liječnici u bolnicama i na mnogim drugim mjestima. Što se podsjećanja tiče, podsjetnika može biti na mnogo načina:
- Pokažite to na zaslonu
- Pošaljite obavijest e-poštom ili telefonom
- Korištenje mobilnih aplikacija
- Buzz alarm
- Korištenje Bluetootha / Wi-Fi-ja
- Pozovite
- Podsjetite na sljedeće vrijeme lijeka, podsjećajući na trenutno vrijeme
Možemo kombinirati načine ovisno o potrebi. Da bi ovdje stvari bile jednostavne, napravili smo jednostavan medicinski podsjetnik pomoću Arduina koji nas podsjeća na uzimanje lijekova 1 ili 2 ili 3 puta dnevno. Vremenski utor se može odabrati pomoću tipki. Također, prikazuje trenutni datum i vrijeme. Dalje ćemo ga proširiti na dolazne članke IoT projekta gdje će se korisniku poslati obavijest e-poštom ili SMS-om. Ovaj podsjetnik na lijekove također se može integrirati sa sustavom za nadzor pacijenta.
Komponente potrebne za podsjetnik za automatsku medicinu pomoću Arduina
- Arduino Uno (Možemo koristiti i druge Arduino ploče, poput Pro mini, Nano)
- RTC DS3231 modul
- LCD zaslon od 16x2
- Zujalica
- Led (bilo koja boja)
- Breadboard
- Tipke
- 10K potenciometar
- Otpornici 10K, 1K
- Jumper žice
Podsjetnik za medicinu Arduino pomoću kruga Arduino
Kompletni dijagram sklopa za izgradnju pametne kutije za lijekove pomoću Arduina prikazan je u nastavku

Ispod su pin veze Arduina s različitim perifernim uređajima
Arduino Pins Periferne igle
- 2 -----------------------------> D7 od 16x2 LCD zaslona
- 3 -----------------------------> D6 od LCD zaslona od 16x2
- 4 -----------------------------> D5 od LCD zaslona od 16x2
- 5 -----------------------------> D4 od LCD zaslona od 16x2
- 7 -----------------------------> 3. tipka
- 8 -----------------------------> 2. tipka
- 9 -----------------------------> 1. tipka
- 11 -----------------------------> EN iglica LCD zaslona 16x2
- 12 -----------------------------> RS iglica LCD zaslona 16x2
- 13 -----------------------------> + Ve Pin zujalice i vodio
- A0 -----------------------------> Stop gumb
- A4 -----------------------------> SDA DS3231
- A5 -----------------------------> SCL DS3231
- 3,3 V -----------------------------> Vcc DS3231
- Gnd -----------------------------> Gnd

U ovom projektu podsjetnika na lijekove, RTC DS3231 povezan je putem I2C protokola s Arduino Uno. Također možete koristiti RTC IC DS1307 za očitavanje vremena s Arduinom. RTC DS3231 također ima ugrađenu 32k memoriju koja se može koristiti za pohranu dodatnih podataka. RTC modul napaja se kroz 3,3 V pin Arduino uno. LCD zaslon 16x2 povezan je pomoću SPI. Buzze r koristi za uzbunu i podsjetiti da je vrijeme da se lijek. Koriste se četiri tipke gdje svaka ima zasebnu značajku odabira. Prvi gumb služi za podsjećanje da se lijek uzima jednom dnevno. Drugi gumb služi za podsjećanje dva puta dnevno, a treći gumb služi za podsjećanje tri puta dnevno. Četvrti gumb služi za zaustavljanje zujalice kada je korisnik čuo upozorenje.
Rad automatskog podsjetničkog lijeka
Pilulu Podsjetnik Alarm se napaja pomoću 5V napajanje. Kada se prvi put pokrene, prikazuje masažu dobrodošlice kao " Dobrodošli u Circuit Digest ". LCD zaslon postavljen je na ciklus na tri zaslona. Na 1 st zaslon prikazuje masaža kao „ ostali zdravi, ozdravi brzo ”. Drugi zaslon je zaslon za pomoć koji govori da pritisnete tipku za odabir za odabir bilo kojeg vremenskog termina koji želite podsjetiti (jednom / dvaput / tri puta dnevno). Vremenski interval je promjenjiv u programu i može se konfigurirati u skladu s tim. Trenutno smo to popravili u tri trajanja, tj. 8:00, 14:00 i 20:00.
Podijelili smo vremenske termine u tri načina. Način 1 odabire uzeti lijek jednom / dan u 8 sati ujutro, kada korisnik pritisne 1 st pritiskom na tipku. Način 2 odabire uzimanje lijeka dva puta dnevno u 8:00 i 20:00 kada korisnik pritisne drugi gumb. Način 3 odabire uzimanje lijeka tri puta dnevno u 8:00, 14:00 i 20:00 ako korisnik pritisne treći gumb.

Možemo dodati i značajku za odgodu zujanja na 10 minuta (nije uključeno u ovaj projekt). Kad korisnik pritiskom na tipke odabere željene utore, korisnički unos se snima i vrijeme se uzima iz RTC-a. Kada se vrijeme podudara s odabranim vremenskim okvirom, zujalo počinje zujati. Korisnik može zaustaviti zujalicu pritiskom na tipku STOP. Isti se postupak nastavlja za sljedeći podsjetnik za utor. Kompletan postupak prikazan je u videozapisu na kraju ovog članka.
Programiranje Arduino UNO za medicinski podsjetnik
Vrlo je jednostavno napisati program nakon što smislite načine podsjećanja na uzimanje tableta. Ovdje će prikazati podsjetnik na zaslonu, oglasiti zujalicu i pokazati ga pomoću LED-a. Također ima mogućnost odabira tri vremenska termina (jednom / dva puta / tri puta dnevno), a kada vrijeme stigne započinje upozoravati pacijenta zujanjem zujalice. Tada će cijeli sustav izgledati ovako:
Korisnik dobiva upute za pomoć na zaslonu> Korisnik odabire vremenske termine (jednom / dan, dva puta / dan, tri puta / dan)> Poruka o potvrdi ispisa na zaslonu> Uvođenje vremena započelo> Zujalica i LED lampica počinju kad se vrijeme podudara s odabranim korisničkim utorom> Korisnik zaustavlja pritiskom gumba za zaustavljanje> Kraj
Možemo promijeniti program i hardver ako želimo dodati više značajki. Da bismo razumjeli na mnogo jednostavniji način, program smo raščlanili na male funkcije. Funkcije su jednostavne za razumijevanje i provedbu. Kompletni program dan je na kraju ovog projekta. Krenimo s programom.
Budući da smo koristili druge periferne uređaje poput LCD zaslona 16x2, RTC DS3231, pa prvo moramo uključiti biblioteke f ili one. Potrebne su sljedeće knjižnice:
EEPROM knjižnica koristi se za praćenje unosa odabira korisnika ako Arduino nije uključen. A kada korisnik uključi Arduino, on dobiva prethodno stanje tipki pomoću EEPROM knjižnice. Biblioteka Wire.h koristi se budući da se modul RTC DS3231 komunicira pomoću I2C.
Uvijek provjerite je li RTC pravilno ožičen ili nije oštećen, jer će RTC igrati važnu ulogu u zadržavanju vremena cijelog podsjetnika.
if (! rtc.begin ()) {// provjeri je li rtc povezan Serial.println ("RTC nije moguće pronaći"); dok (1); } if (rtc.lostPower ()) { Serial.println ("RTC je izgubio napajanje, omogućuje postavljanje vremena!"); }
Prilagodba vremena može se izvršiti na dva načina, ili automatski pomoću vremena kompajliranja sustava ili ručnim unosom. Nakon što smo postavili vrijeme, komentirajte donje retke, osim ako ponovno ne želite promijeniti RTC vrijeme.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Ovaj izraz prekidača koristi se za očitavanje prethodno spremljenog stanja gumba i nastavljanje stanja za odgovarajuće i točno vrijeme podsjetnika.
val2 = EEPROM.read (addr); // čitanje prethodno spremljene vrijednosti gumba za početak od mjesta gdje je prethodno bio prekidač (val2) { slučaj 1: Serial.println ("Postavljeno za 1 / dan"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; pauza; slučaj 2: Serial.println ("Postavi za 2 / dan"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; pauza; slučaj 3: Serial.println ("Postavi za 3 / dan"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; pauza; }
Ova se izjava koristi kako bi se milise koristilo za mjerenje vremena i kontrolu definiranog intervalnog ciklusa zaslona.
currentMillisLCD = milis (); // start milis za prebacivanje LCD zaslona u definiranom vremenskom intervalu
Počnite čitati digitalne igle spojene na tipke.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Ispod se koristi funkcija za očitavanje stanja gumba i zapisivanje na EEPROM. Kad god se pritisne tipka, stanje se zapisuje u EEPROM. Također ispisuje poruku na LCD zaslonu odabranog izbora korisničkog unosa. Slično se koriste funkcije push2 () i push3 () .
void push1 () {// funkcija za postavljanje podsjetnika jednom dnevno ako (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPress = true; EEPROM.write (adresa, 1); Serial.print ("Push1 Written:"); Serial.println (EEPROM.read (addr)); // za otklanjanje pogrešaka pushVal = 1; // spremanje stanja tipke-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Set podsjetnika"); lcd.setCursor (0,1); lcd.print ("za Jednom / dan!"); kašnjenje (1200); lcd.clear (); } }
Ispod se koristi funkcija za zaustavljanje zujalice i vodioca. Uvijek je dobro davati prijedloge. Ispišite poruku prijedloga na zaslonu "Uzmi lijek s toplom vodom".
void stopPins () {// funkcija za zaustavljanje zujanja kad korisnik pritisne tipku za zaustavljanje if (stopinState == 1) { // stopinState = 0; // pushPress = true; pritisnuto = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Uzmi lijek"); lcd.setCursor (0,1); lcd.print ("s toplom vodom"); kašnjenje (1200); lcd.clear (); } }
Funkcija u nastavku neovisna je o vođenju računa vremena, ali uvijek ciklus na tri zaslona što pomaže korisniku. Kako brinemo o pacijentima, omogućava nam ispis pozdravne poruke jer znamo da je emocionalna podrška vrlo korisna u bržem izlječenju pacijenata. Možete odabrati vlastitu kreativnu poruku. Idemo ispisati poruku kao „ostali zdravi, ozdravi brzo”.
Drugi zaslon daje upute pacijentima kao „Pritisnite tipke za podsjetnik..“. Treći zaslon služi za jednostavno prikazivanje trenutnog datuma i vremena.
void changeScreen () {// funkcija za zaslon na biciklu // Pokreni prebacivanje zaslona na svaki definirani intervalLCD ako (currentMillisLCD - previousMillisLCD> intervalLCD) // spremi posljednju promjenu zaslona { previousMillisLCD = currentMillisLCD; ekrani ++; if (zasloni> maxScreen) { zasloni = 0; // svi zasloni preko -> počinju od 1. } isScreenChanged = true; } // Počnite prikazivati trenutni zaslon ako je (isScreenChanged) // ažurirajte zaslon samo ako je zaslon promijenjen. { isScreenChanged = false; // resetiranje za sljedeću iteracijsku sklopku (ekrani) { case getWellsoon: gwsMessege (); // poruka za ozdravljenje uskoro pauza; slučaj HELP_SCREEN: helpScreen (); // prekid zaslona s uputama ; slučaj TIME_SCREEN: timeScreen (); // za ispis prekida datuma i vremena ; zadano: // NIJE POSTAVLJENO. pauza; } } }
Ova se funkcija koristi za istovremeno zujanje i treptanje LED diode ako je doseglo odabrano vrijeme.
void startBuzz () {// funkcija za pokretanje zujanja kad vrijeme dosegne definirani interval // if (pushPress == false) { if (pushpressed == 0) { Serial.println ("pushpressed je false u treptaju"); nepotpisana duga strujaMillis = milis (); if (currentMillis - previousMillis> = interval) { previousMillis = currentMillis; // spremi zadnji put kad ste trepnuli LED serijskim.println ("Počni zujati"); if (ledState == LOW) {// ako je LED isključena, uključite je i obrnuto: ledState = HIGH; } else { ledState = LOW; } digitalWrite (ledPin, ledState); } } else if (pushpressed == 1) { Serial.println ("pushpressed je istina"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Ova se funkcija koristi za usporedbu odabranog vremenskog termina u 8 sati ujutro i počinje zujati zujalicom i treptati LED dok korisnik ne pritisne tipku za zaustavljanje. Slično se funkcije void at2pm () i void at8pm koriste za pokretanje zujalice i vode se u 14:00 i 20:00.
void at8am () {// funkcija za početak zujanja u 8:00 DateTime sada = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// ///////////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////////// /// } } } }
Na ovaj način možete jednostavno izraditi vlastiti podsjetnik na automatske lijekove pomoću Arduina. Također možete koristiti ESP8266 s Arduinom kako biste od njega napravili IoT projekt koji će moći slati upozorenja e-poštom korisniku.
Kompletni kod i demonstracijski video prikazan je u nastavku.
