- Az Arduino használatával történő automatikus gyógyszer-emlékeztetőhöz szükséges elemek
- Arduino Medicine Emlékeztető Arduino Circuit használatával
- Az automatikus gyógyszer emlékeztető rendszer működése
- Arduino UNO orvostudomány emlékeztető programozása
Ha szeretteinkről van szó, mindig egészségesnek és fittnek akarunk maradni. De mi lesz, ha megbetegszenek, és elfelejtik időben bevenni a gyógyszert. Aggódnánk, igaz? A kórházakban sok beteg van, és nehéz minden beteget emlékeztetni arra, hogy időben vegyen be gyógyszert. A hagyományos módszerek emberi erőfeszítéseket igényelnek, hogy emlékeztessék őket arra, hogy időben vegyék be a gyógyszereket. A digitális korszak ezt nem követi, és ehhez gépeket használhatunk. Az Intelligens gyógyszer emlékeztető alkalmazása nagyon széles, és otthon a betegek, a kórházak orvosai és sok más helyen is használhatják. Az emlékeztetésre sokféleképpen lehet emlékeztetni:
- Mutassa meg a kijelzőn
- Értesítést küldjön e-mailben vagy telefonon
- Mobilalkalmazások használata
- Buzz riasztás
- Bluetooth / Wi-Fi használatával
- Hívjon
- Emlékeztesse a következő gyógyszeres időpontra, miközben emlékezteti az aktuális időt
Az igényektől függően kombinálhatjuk a módokat. A dolgok egyszerűségének megőrzése érdekében készítettünk egy egyszerű gyógyszeremlékeztetőt az Arduino segítségével, amely arra emlékeztet minket, hogy naponta 1 vagy 2 vagy 3 alkalommal vegyünk be gyógyszereket. Az időrés nyomógombokkal választható ki. Ezenkívül megmutatja az aktuális dátumot és időt. Kiterjesztjük a továbbiakban egy IoT projekt bejövő cikkére, ahol e-mailt vagy SMS-értesítést küldünk a felhasználónak. Ez a gyógyszeres emlékeztető a betegfigyelő rendszerrel is integrálható.
Az Arduino használatával történő automatikus gyógyszer-emlékeztetőhöz szükséges elemek
- Arduino Uno (más Arduino táblákat is használhatunk, például Pro mini, Nano)
- RTC DS3231 modul
- 16x2 LCD kijelző
- Berregő
- Led (bármilyen színű)
- Kenyérlemez
- Nyomógombok
- 10K potenciométer
- 10K, 1K ellenállások
- Jumper huzalok
Arduino Medicine Emlékeztető Arduino Circuit használatával
Az intelligens gyógyszeres doboz Arduino használatával történő elkészítésének teljes kapcsolási rajza az alábbiakban látható
Az alábbiakban az Arduino és a különböző perifériák csatlakozói találhatók
Arduino csapok Perifériás csapok
- 2 -----------------------------> D7 / 16x2 LCD kijelző
- 3 -----------------------------> D6 of 16x2 LCD kijelző
- 4 -----------------------------> D5 / 16x2 LCD kijelző
- 5 -----------------------------> D4 / 16x2 LCD kijelző
- 7 -----------------------------> 3. nyomógomb
- 8 -----------------------------> 2. nyomógomb
- 9 -----------------------------> 1. nyomógomb
- 11 -----------------------------> EN tű, 16x2 LCD kijelző
- 12 -----------------------------> RS tű 16x2 LCD kijelzővel
- 13 -----------------------------> + Ve Pin of Buzzer and Led
- A0 -----------------------------> Stop nyomógomb
- A4 -----------------------------> A DS3231 SDA-ja
- A5 -----------------------------> A DS3231 SCL-je
- 3.3V -----------------------------> DS3231 Vcc-je
- Gnd -----------------------------> Gnd
Ebben a gyógyszeremlékező projektben az RTC DS3231 az I2C protokollon keresztül kapcsolódik az Arduino Uno-hoz. Az RTC IC DS1307 IC-t is használhatja az idő leolvasására az Arduino segítségével. Az RTC DS3231 beépített 32k memóriával is rendelkezik, amely további adatok tárolására használható. Az RTC modult az Arduino uno 3,3 V-os tűje látja el. A 16x2 LCD kijelző az SPI használatával kapcsolódik. A buzze r-t arra használják, hogy figyelmeztessék és emlékeztessék, hogy ideje gyógyszereket szedni. Négy nyomógombot használnak, ahol mindegyiknek külön választási jellemzője van. Az első nyomógomb arra emlékeztet, hogy naponta egyszer vegyen be gyógyszert. A második nyomógomb naponta kétszer, a harmadik nyomógomb pedig napi háromszor emlékeztet. A negyedik nyomógomb a hangjelzés leállítására szolgál, amikor a felhasználó meghallotta a figyelmeztetést.
Az automatikus gyógyszer emlékeztető rendszer működése
A tabletta emlékeztető riasztását 5 V-os tápellátás táplálja. Amikor először elindul, egy üdvözlő masszázst mutat be, mint „ Welcome to Circuit Digest ”. Az LCD képernyő három képernyőn áll ciklusra. Az 1 -jén képernyőn megjelenik a masszázs, mint „ egészséges maradjon, Get Well Soon ”. A második képernyő egy súgó képernyő, amely azt mondja, hogy nyomja meg a Select nyomógombot, hogy kiválasszon egy emlékeztető időrést (naponta egyszer / kétszer / háromszor). Az időrés programban változtatható, és ennek megfelelően konfigurálható. Jelenleg három időtartamra rögzítettük ezt: 8:00, 14:00 és 20:00.
Három módra osztottuk az időréseket. Mode 1 kiválasztja, hogy a gyógyszert egyszer / nap 08:00, amikor a felhasználó megnyomja 1 -jén nyomógomb. A 2. mód úgy dönt, hogy naponta kétszer 8 és 20 óra között szed gyógyszert, amikor a felhasználó megnyomja a második nyomógombot. A 3. mód úgy dönt, hogy napi háromszor gyógyszert szed, reggel 8, 14 és 20 órakor, ha a felhasználó megnyomja a harmadik nyomógombot.
Hozzáadhatunk egy olyan funkciót is, amellyel 10 percre el lehet halasztani a hangjelzőt (nem szerepel ebben a projektben). Amikor a felhasználó a nyomógombok megnyomásával választja ki a kívánt réseket, a felhasználói bevitel rögzítésre kerül, és az idő az RTC-ből kerül. Ha az idő egyezik a kiválasztott időrésszel, akkor a hangjelző elkezd zümmögni. A felhasználó a STOP gomb megnyomásával leállíthatja a hangjelzést. Ugyanez a folyamat folytatódik a következő slot emlékeztetőnél is. A teljes folyamatot a jelen cikk végén bemutatott videó mutatja.
Arduino UNO orvostudomány emlékeztető programozása
Nagyon könnyű programot írni, miután átgondolta a tabletták szedésének emlékeztető módjait. Itt a kijelzőn megjeleníti az emlékeztetőt, egy hangjelzést ad és LED-del jelzi. Arra is lehetősége van, hogy kiválasszon három időrést (naponta egyszer / kétszer / háromszor), és amikor elérkezik az idő, elkezdje figyelmeztetni a beteget a hangjelzővel. Ekkor az egész rendszer a következőképpen fog kinézni:
A felhasználó a képernyőn megjelenő súgó utasításokat kap> A felhasználó kiválasztja az időtartamokat (egyszer / nap, kétszer / nap, háromszor / nap)> Megerősítő üzenet nyomtatása a kijelzőn> Időtartás megkezdődött> Hangjelző és LED elindul, amikor az idő egyezik a felhasználó által kiválasztott résszel> A felhasználó megáll nyomja meg a stop nyomógombot> Vége
Megváltoztathatjuk a programot és a hardvert, ha további funkciókat akarunk hozzáadni. Sokkal egyszerűbb megértés érdekében a programot apró funkciókra bontottuk. A funkciók könnyen érthetőek és megvalósíthatók. A teljes program a projekt végén található. Kezdjük a programmal.
Mivel más perifériákat használtunk, mint például a 16x2 LCD kijelzőt, az RTC DS3231-et, ezért először be kell vennünk egy vagy másik könyvtárat. A szükséges könyvtár a következő:
Az EEPROM könyvtár segítségével nyomon követhető a felhasználó által kiválasztott bemenet, ha az Arduino nincs bekapcsolva. És amikor a felhasználó bekapcsolja az Arduino-t, megkapja a nyomógombok előző állapotát az EEPROM könyvtár segítségével. A Wire.h könyvtárat azért használják, mert az RTC DS3231 modult az I2C segítségével kommunikálták.
Mindig ellenőrizze, hogy az RTC megfelelően van-e bekötve, vagy nem sérült-e meg, mivel az RTC fontos szerepet játszik az egész emlékeztető rendszer időben történő megtartásában.
if (! rtc.begin ()) {// ellenőrizze, hogy az rtc csatlakozik-e Serial.println ("Nem sikerült megtalálni az RTC-t"); míg (1); } if (rtc.lostPower ()) { Serial.println ("Az RTC elveszítette az energiát, beállíthatja az időt!"); }
Az időbeállítás kétféle módon történhet, akár automatikusan a rendszer fordítási idejével, akár manuálisan megadva. Miután beállítottuk az időt, kommentálja az alábbi sorokat, hacsak nem akarja újra megváltoztatni az RTC időpontját.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Ez a kapcsoló utasítás arra szolgál, hogy leolvassa a nyomógomb előzőleg mentett állapotát, és folytassa az állapotot a megfelelő és pontos emlékeztető idő érdekében.
val2 = EEPROM.read (addr); // olvassa el a nyomógomb előzőleg mentett értékét, hogy onnan induljon, ahol korábban hagyták kapcsoló ( val2) { eset 1: Serial.println ("1 napra állítva"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; szünet; 2. eset: Serial.println ("Beállítás 2 napra"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; szünet; 3. eset: Serial.println ("Beállítás 3 napra"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; szünet; }
Ezt a kijelentést arra használják, hogy a millis felhasználható legyen a meghatározott intervallumú képernyő-ciklus időzítésére és vezérlésére.
currentMillisLCD = millis (); // ezredes indítás az LCD képernyő váltásához meghatározott időközönként
Kezdje el olvasni a nyomógombokhoz kapcsolt digitális érintkezőket.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Az alábbi funkcióval a nyomógomb állapotát olvashatja le és írja be az EEPROM-ba. Amikor a nyomógomb lenyomásra kerül, az állapot az EEPROM-ba kerül. Ezenkívül kinyomtatja az üzenetet a kiválasztott felhasználói beviteli mód LCD-kijelzőjén. Hasonlóképpen használják a push2 () és a push3 () függvényeket.
void push1 () {// függvény az emlékeztető beállításához naponta egyszer, ha (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 írva:"); Serial.println (EEPROM.read (addr)); // a pushVal = 1 hibakereséséhez ; // mentse az 1 nyomógomb állapotát lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Emlékeztető készlet"); lcd.setCursor (0, 1); lcd.print ("egyszer / nap!"); késés (1200); lcd.clear (); } }
Az alábbi funkcióval a hangjelző és a led leállítható. Mindig jó javaslatokat tenni. Nyomtasson ki egy javaslati üzenetet a „Vegyen gyógyszert meleg vízzel” képernyőn.
void stopPins () {// funkció a zümmögés leállításához, amikor a felhasználó megnyomja a stop nyomógombot, ha (stopinState == 1) { // stopinState = 0; // pushPressed = true; nyomva = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Gyógyszert szed"); lcd.setCursor (0, 1); lcd.print ("meleg vízzel"); késés (1200); lcd.clear (); } }
Az alábbi funkció független az időtartamtól, de mindig három képernyőn mozog, ami segíti a felhasználót. Mivel a betegeket gondozzuk, üdvözlő üzenetet nyomtathatunk, mivel tudjuk, hogy az érzelmi támogatás nagyon hasznos a betegek gyorsabb meggyógyításában. Kiválaszthatja saját kreatív üzenetét. Nézzük üzenetet küld, mint „egészséges maradjon, Jobbulást”.
A második képernyő arra szolgál, hogy utasítást nyújtson a betegeknek: „Nyomja meg a gombokat az emlékeztetéshez..”. A harmadik képernyőn az aktuális dátum és idő egyszerűen megjeleníthető.
void changeScreen () {// függvény a Screen Cycling számára // Indítsa el a képernyőt minden meghatározott intervallumonLCD if (currentMillisLCD - előzőMillisLCD> intervalLCD) // elmentse a kijelző legutóbbi módosítását { previousMillisLCD = currentMillisLCD; képernyők ++; if (képernyők> maxScreen) { képernyők = 0; // minden képernyő lejárt -> kezdődik az elsőtől } isScreenChanged = true; } // Az aktuális képernyő megjelenítésének megkezdése, ha (isScreenChanged) // csak akkor módosítja a képernyőt, ha a képernyő megváltozott. { isScreenChanged = hamis; // visszaállítás a következő iterációs kapcsolóhoz (képernyők) { eset getWellsoon: gwsMessege (); // hamarosan meggyógyulok üzenet szünet; eset HELP_SCREEN: helpScreen (); // utasítás képernyő törés; eset TIME_SCREEN: timeScreen (); // dátum és idő szünet kinyomtatása ; alapértelmezett: // NOT SET. szünet; } } }
Ezt a funkciót arra használják, hogy egyszerre kezdjen el villogni és villogni a LED, ha elérte a kiválasztott időt.
void startBuzz () {// függvény a zümmögés megkezdéséhez, amikor az idő eléri a megadott intervallumot // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("a pushpress hamis a villogásban"); előjel nélküli hosszú áramMillis = millis (); if (currentMillis - előzőMillis> = intervallum) { előzőMillis = currentMillis; // mentse, amikor legutóbb pislogott a LED Serial.println ("Zümmögés indítása"); if (ledState == LOW) {// ha a LED nem világít, kapcsolja be és fordítva: ledState = HIGH; } else { ledState = LOW; } digitalWrite (ledPin, ledState); } } else if (pushpressed == 1) { Serial.println ("a pushpressed true"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Ezt a funkciót a felhasználó által kiválasztott időrés 8 órakor történő összehasonlítására használják, és elkezd zümmögni, és villogni kezd a LED, amíg a felhasználó megnyomja a stop nyomógombot. Hasonlóképpen a void at 2pm () és void at 8pm funkciókat használják a hangjelzés indítására, és 14 és 20 órakor vezetik őket.
void at8am () {// függvény, hogy reggel 8 órakor kezdjen el zümmögni. if (int (most.óra ())> = buzz8amHH) { if (int (most.minute ())> = buzz8amMM) { if (int (most.second ())> buzz8amSS) { ////// //////////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////////// /// } } } }
Így egyszerűen elkészítheti saját automatikus gyógyszeremlékeztetőjét az Arduino használatával. Használhatja az ESP8266-ot az Arduino-val is, hogy olyan IoT-projekt legyen, amely képes e-mail értesítést küldeni a felhasználónak.
A teljes kód és a bemutató videó az alábbiakban található.