- Komponenty potrebné na automatické pripomenutie lieku pomocou Arduina
- Arduino Medicine Reminder pomocou obvodu Arduino
- Funguje systém automatického pripomínania liekov
- Programovanie Arduino UNO pre pripomenutie lieku
Pokiaľ ide o našich blízkych, vždy im chceme zostať zdraví a fit. Čo sa však stane, ak ochorejú a zabudnú si dať včas liek. Mali by sme obavy, však? V nemocniciach je veľa pacientov a je ťažké každému pacientovi pripomenúť, aby užíval lieky včas. Tradičné spôsoby si vyžadujú ľudské úsilie, aby im pripomenuli, aby užívali lieky včas. Digitálna éra to nenasleduje a na to môžeme používať stroje. Aplikácia Smart Medicine Reminder je veľmi široká a môžu ju používať pacienti doma, lekári v nemocniciach a na mnohých ďalších miestach. Pokiaľ ide o pripomenutie, môže existovať mnoho spôsobov, ako to pripomenúť:
- Ukážte to na displeji
- Pošlite upozornenie na e-mail alebo telefón
- Používanie mobilných aplikácií
- Buzz alarm
- Pomocou Bluetooth / Wi-Fi
- Zavolajte
- Pripomenúť čas na ďalší liek a zároveň pripomenúť aktuálny čas
Podľa potreby môžeme kombinovať rôzne spôsoby. Aby sme to zjednodušili, vytvorili sme si jednoduché Pripomenutie lieku pomocou Arduina, ktoré nám pripomína, aby sme užívali lieky 1 alebo 2 alebo 3 krát denne. Časový úsek je možné zvoliť pomocou tlačidiel. Tiež zobrazuje aktuálny dátum a čas. Ďalej ho rozšírime na prichádzajúce články o projekte IoT, kde bude používateľovi zaslané e-mailové alebo SMS upozornenie. Túto pripomienku na liek je možné integrovať aj do systému monitorovania pacientov.
Komponenty potrebné na automatické pripomenutie lieku pomocou Arduina
- Arduino Uno (Môžeme použiť aj iné dosky Arduino, napríklad Pro mini, Nano)
- Modul RTC DS3231
- 16 x 2 LCD displej
- Bzučiak
- LED (ľubovoľná farba)
- Nepál
- Tlačidlá
- 10K potenciometer
- Rezistory 10K, 1K
- Prepojovacie drôty
Arduino Medicine Reminder pomocou obvodu Arduino
Kompletná schéma zapojenia pre zostavenie inteligentnej skrinky na lieky pomocou Arduina je uvedená nižšie
Ďalej sú uvedené pinové pripojenia Arduina s rôznymi perifériami
Arduino piny Periférne piny
- 2 -----------------------------> D7 LCD displej 16x2
- 3 -----------------------------> D6 displeja LCD 16x2
- 4 -----------------------------> D5 LCD 16x2
- 5 -----------------------------> D4 LCD 16x2
- 7 -----------------------------> 3. tlačidlo
- 8 -----------------------------> 2. tlačidlo
- 9 -----------------------------> 1. tlačidlo
- 11 -----------------------------> EN pin 16x2 LCD displeja
- 12 -----------------------------> RS pin 16x2 LCD displeja
- 13 -----------------------------> + Ve Pin of Buzzer and Led
- A0 -----------------------------> Tlačidlo Stop
- A4 -----------------------------> SDA z DS3231
- A5 -----------------------------> SCL z DS3231
- 3,3 V -----------------------------> Vcc z DS3231
- GND -----------------------------> GND
V tomto projekte pripomenutia lieku je RTC DS3231 prepojený prostredníctvom protokolu I2C s Arduino Uno. Na čítanie času pomocou Arduina môžete použiť aj RTC IC DS1307. RTC DS3231 má tiež zabudovanú 32 kB pamäť, ktorú je možné použiť na ukladanie ďalších údajov. RTC modul je napájaný cez 3,3 V pin Arduino uno. Displej LCD 16x2 je prepojený pomocou SPI. Na upozornenie a pripomenutie, že je čas brať liek, sa používa bzučiak. Používajú sa štyri tlačidlá, kde každé z nich má osobitnú funkciu výberu. Prvé tlačidlo slúži na pripomenutie, aby ste užívali liek raz denne. Druhé tlačidlo slúži na pripomenutie dvakrát za deň a tretie tlačidlo slúži na pripomenutie trikrát za deň. Štvrté tlačidlo slúži na zastavenie bzučiaka, keď používateľ počuje výstrahu.
Funguje systém automatického pripomínania liekov
Pill Reminder Alarm je napájaný pomocou 5V napájanie. Pri prvom zapnutí sa uvítacia masáž zobrazuje ako „ Welcome to Circuit Digest “. Obrazovka LCD je nastavená na cyklovanie na troch obrazovkách. Na prvej obrazovke je masáž označená ako „ Zostaňte zdraví, čoskoro sa uzdravte “. Druhá obrazovka je pomocná obrazovka, ktorá hovorí, že stlačte tlačidlo výberu a vyberte ktorýkoľvek časový úsek, ktorý chcete pripomenúť (raz / dvakrát / trikrát za deň). Časový úsek je programovo nastaviteľný a dá sa podľa toho nakonfigurovať. Práve sme to napravili do troch časov, tj 8:00, 14:00 a 20:00.
Časové sloty sme rozdelili do troch režimov. Režim 1 zvolí užívanie liekov raz denne o 8:00, keď používateľ stlačí prvé tlačidlo. Režim 2 zvolí užívanie liekov dvakrát denne o 8:00 a 20:00, keď používateľ stlačí druhé tlačidlo. Režim 3 zvolí užívanie lieku trikrát denne o 8:00, 14:00 a 20:00, ak užívateľ stlačí 3. tlačidlo.
Môžeme tiež pridať funkciu odloženia bzučiaka na 10 minút (nie je súčasťou tohto projektu). Keď si užívateľ vyberie požadované sloty stlačením tlačidiel, zaznamená sa užívateľský vstup a čas sa odoberie z RTC. Keď sa čas zhoduje s vybraným časovým intervalom, začne bzučiak bzučať. Užívateľ môže zastaviť bzučiak stlačením tlačidla STOP. Rovnaký proces pokračuje aj pri ďalšom pripomenutí bloku. Celý proces je uvedený vo videu na konci tohto článku.
Programovanie Arduino UNO pre pripomenutie lieku
Program je veľmi ľahké napísať, keď si spomeniete na spôsoby, ako pripomenúť užívanie tabliet. Tu zobrazí pripomenutie na displeji, zaznie bzučiak a indikuje ho pomocou LED. Má tiež možnosť zvoliť si tri časové intervaly (raz / dvakrát / trikrát za deň) a keď čas dorazí, začnite pacienta varovať bzučiakom. Celý systém potom bude vyzerať nasledovne:
Používateľ dostane na displeji pokyny s pomocou stlačenie tlačidla zastavenia> koniec
Ak chceme pridať ďalšie funkcie, môžeme zmeniť program a hardvér. Aby sme to pochopili oveľa jednoduchšie, rozdelili sme program na malé funkcie. Funkcie sú ľahko pochopiteľné a implementovateľné. Kompletný program je uvedený na konci tohto projektu. Začnime programom.
Pretože sme používali iné periférie, ako je 16x2 LCD displej, RTC DS3231, musíme najskôr zahrnúť knižnice f or that. Knižnica vyžaduje:
Knižnica EEPROM slúži na sledovanie vstupu vybratého používateľom, ak nie je zapnuté Arduino. A keď užívateľ zapne Arduino, získa predchádzajúci stav tlačidiel pomocou knižnice EEPROM. Knižnica Wire.h sa používa, pretože modul RTC DS3231 sa komunikuje pomocou I2C.
Vždy skontrolujte, či je RTC správne zapojený alebo nie je poškodený, pretože RTC bude hrať dôležitú úlohu pri udržiavaní celého systému pripomienok.
if (! rtc.begin ()) {// skontrolovať, či je pripojený rtc Serial.println ("Nemohol som nájsť RTC"); while (1); } if (rtc.lostPower ()) { Serial.println ("Strata napájania RTC, umožníme nastaviť čas!"); }
Úpravu času je možné vykonať dvoma spôsobmi, buď automaticky pomocou času kompilácie systému alebo zadaním ručne. Len čo nastavíte čas, komentujte nasledujúce riadky, pokiaľ nechcete znova zmeniť čas RTC.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Tento príkaz prepínača sa používa na prečítanie predtým uloženého stavu tlačidla a obnovenie stavu pre vhodný a presný čas pripomenutia.
val2 = EEPROM.read (addr); // načítať predtým uloženú hodnotu tlačidla a začať od miesta, kde bolo predtým ponechané switch (val2) { case 1: Serial.println ("Set for 1 / day"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; prestávka; prípad 2: Serial.println ("Nastavený na 2 / deň"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; prestávka; prípad 3: Serial.println ("Nastavený na 3 / deň"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; prestávka; }
Toto vyhlásenie sa používa na to, aby sa millióny použili na načasovanie a kontrolu definovaného intervalu cyklovania obrazovky.
currentMillisLCD = millis (); // začatie milisíc pre prepínanie obrazovky LCD v definovanom časovom intervale
Začnite čítať digitálne kolíky pripojené k tlačidlám.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Funkcia dole slúži na načítanie stavu tlačidla a jeho zápis do EEPROM. Kedykoľvek dôjde k stlačeniu tlačidla, stav sa zapíše do EEPROM. Taktiež vytlačí správu na LCD displeji s výberom zvoleného vstupu používateľa. Podobne sa používajú funkcie push2 () a push3 () .
void push1 () {// funkcia na nastavenie pripomienky raz / deň if (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 Written:"); Serial.println (EEPROM.read (addr)); // na ladenie pushVal = 1; // ulozi stav tlacidla-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Sada pripomienok"); lcd.setCursor (0, 1); lcd.print („pre raz / deň!“); oneskorenie (1 200); lcd.clear (); } }
Funkcia dole slúži na zastavenie bzučiaka a led. Vždy je dobré dať návrhy. Vytlačte si na displej návrhovú správu „Vezmite si liek teplou vodou“.
void stopPins () {// funkcia na zastavenie bzučania, keď používateľ stlačí tlačidlo stop, ak (stopinState == 1) { // stopinState = 0; // pushPressed = true; stlačené = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print („Vezmite si liek“); lcd.setCursor (0, 1); lcd.print („s teplou vodou“); oneskorenie (1 200); lcd.clear (); } }
Nasledujúca funkcia je nezávislá od času, ale vždy sa cykluje na troch obrazovkách, čo pomáha používateľovi. Pretože sa staráme o pacientov, dovoľte nám vytlačiť uvítaciu správu, pretože vieme, že emočná podpora je veľmi užitočná pri liečbe pacientov v rýchlejšom čase. Môžete si zvoliť vlastnú kreatívnu správu. Vytlačme si správu ako „Buďte zdraví, čoskoro sa uzdravte“.
Druhá obrazovka slúži na poskytovanie pokynov pacientom ako „Stlačením tlačidiel na pripomenutie..“. Tretia obrazovka slúži na jednoduché zobrazenie aktuálneho dátumu a času.
void changeScreen () {// funkcia pre Screen Cycling // Spustiť prepínanie obrazovky každý definovaný intervalLCD if (currentMillisLCD - previousMillisLCD> intervalLCD) // uložiť poslednú zmenu obrazovky { previousMillisLCD = currentMillisLCD; obrazovky ++; if (obrazovky> maxScreen) { obrazovky = 0; // všetky obrazovky znova -> začať od 1. } isScreenChanged = true; } // Začať zobrazovať aktuálnu obrazovku, ak (isScreenChanged) // Aktualizovať obrazovku, iba ak sa obrazovka zmení. { isScreenChanged = false; // reset pre nasledujúci prepínač iterácie (obrazovky) { case getWellsoon: gwsMessege (); // skorá správa prestávka; prípad HELP_SCREEN: helpScreen (); // zalomenie obrazovky s inštrukciami ; prípad TIME_SCREEN: timeScreen (); // vytlačiť dátum a čas ; predvolené: // NOT SET. prestávka; } } }
Táto funkcia slúži na spustenie bzučania a súčasného blikania LED, ak nastal nastavený čas.
void startBuzz () {// funkcia na spustenie bzučania, keď čas dosiahne určený interval // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed je v blinke nepravdivý"); nepodpísaný dlhý prúd Millis = millis (); if (currentMillis - previousMillis> = interval) { previousMillis = currentMillis; // uložte, kedy ste naposledy blikli LED Serial.println ("Spustiť bzučanie"); if (ledState == LOW) {// ak LED nesvieti, zapnite ju a naopak: ledState = HIGH; } else { ledState = LOW; } digitalWrite (ledPin, ledState); } } else if (pushpressed == 1) { Serial.println ("pushpressed je true"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Táto funkcia sa používa na porovnanie používateľom vybraného časového úseku o 8:00 a začne bzučať bzučiakom a blikaním LED, až kým užívateľ nestlačí tlačidlo stop. Podobne sa funkcie void at2pm () a void at8pm používajú na spustenie bzučiaka a vedú sa o 14:00 a 20:00.
void at8am () {// funkcia, ktorá začne bzučať o 8:00 DateTime now = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// /////////////////////////////////////////////// startBuzz (); ////////////////////////////////////////////////////// /// } } } }
Takto si môžete jednoducho vytvoriť svoj vlastný automatický liek na pripomenutie medicíny pomocou Arduina. Môžete tiež použiť ESP8266 s Arduino na vytvorenie projektu IoT, ktorý bude schopný posielať e-mailové upozornenia používateľovi.
Kompletný kód a ukážkové video sú uvedené nižšie.