- Komponenty potřebné pro automatické připomenutí medicíny pomocí Arduina
- Arduino Medicine Reminder pomocí Arduino Circuit
- Práce s automatickým systémem připomenutí léku
- Programování Arduino UNO pro připomenutí medicíny
Pokud jde o naše blízké, vždy jim chceme zůstat zdraví a fit. Ale co se stane, když onemocní a zapomenou si vzít lék včas. Báli bychom se, že? V nemocnicích je mnoho pacientů a je těžké každému pacientovi připomenout, aby užíval léky včas. Tradiční způsoby vyžadují lidské úsilí, aby jim připomnělo, že mají užívat léky včas. Digitální éra to nenasleduje a my k tomu můžeme použít stroje. Aplikace Smart Medicine Reminder je velmi široká a mohou ji používat pacienti doma, lékaři v nemocnicích a na mnoha dalších místech. Pokud jde o připomenutí, může existovat mnoho způsobů, jak to připomenout:
- Ukažte to na displeji
- Odeslat oznámení na e-mail nebo telefon
- Používání mobilních aplikací
- Buzz alarm
- Pomocí Bluetooth / Wi-Fi
- Zavolejte
- Připomenout čas na další lék a připomenout aktuální čas
Můžeme kombinovat způsoby podle potřeby. Abychom to zjednodušili, vytvořili jsme si jednoduchý Připomenutí léku pomocí Arduina, které nám připomíná, abychom užívali léky 1 nebo 2 nebo 3krát denně. Časový úsek lze zvolit pomocí tlačítek. Také zobrazuje aktuální datum a čas. Dále jej rozšíříme na příchozí články o projektu IoT, kde bude uživateli zasláno e-mailové nebo SMS upozornění. Toto připomenutí léku lze také integrovat do systému monitorování pacientů.
Komponenty potřebné pro automatické připomenutí medicíny pomocí Arduina
- Arduino Uno (Můžeme použít i jiné desky Arduino, například Pro mini, Nano)
- Modul RTC DS3231
- 16x2 LCD displej
- Bzučák
- LED (libovolná barva)
- Nepájivá deska
- Tlačítka
- 10K potenciometr
- 10K, 1K rezistory
- Propojovací dráty
Arduino Medicine Reminder pomocí Arduino Circuit
Kompletní schéma zapojení pro vytvoření chytré lékové krabičky pomocí Arduina je uvedeno níže
Níže jsou uvedena pinová připojení Arduina s různými periferiemi
Arduino Pins Periferní piny
- 2 -----------------------------> D7 LCD 16x2
- 3 -----------------------------> D6 16x2 LCD displeje
- 4 -----------------------------> D5 LCD displeje 16x2
- 5 -----------------------------> D4 16x2 LCD displeje
- 7 -----------------------------> 3. tlačítko
- 8 -----------------------------> 2. tlačítko
- 9 -----------------------------> 1. tlačítko
- 11 -----------------------------> EN pin 16x2 LCD displeje
- 12 -----------------------------> RS pin 16x2 LCD displeje
- 13 -----------------------------> + Ve Pin of Buzzer and Led
- A0 -----------------------------> Tlačítko Stop
- A4 -----------------------------> SDA z DS3231
- A5 -----------------------------> SCL z DS3231
- 3,3 V -----------------------------> Vcc DS3231
- GND -----------------------------> GND
V tomto Projektu připomenutí medicíny je RTC DS3231 propojen prostřednictvím protokolu I2C s Arduino Uno. Pro čtení času pomocí Arduina můžete také použít RTC IC DS1307. RTC DS3231 má také vestavěnou 32k paměť, kterou lze použít k ukládání dalších dat. RTC modul je napájen přes 3,3 V pin Arduino uno. Displej LCD 16x2 je propojen pomocí SPI. Buzze r slouží k záznamu a připomněl, že je čas brát léky. Čtyři tlačítka se používají tam, kde každé má odlišnou funkci výběru. První tlačítko slouží k připomenutí užívání léku jednou denně. Druhé tlačítko slouží k připomenutí dvakrát denně a třetí tlačítko slouží k připomenutí třikrát denně. Čtvrté tlačítko slouží k zastavení bzučáku, když uživatel uslyší výstrahu.
Práce s automatickým systémem připomenutí léku
Pill Reminder Alarm je napájen pomocí 5V napájení. Při prvním spuštění se uvítací masáž zobrazí jako „ Vítejte v přehledu okruhů “. Displej LCD je nastaven na cyklování na třech obrazovkách. Tyto 1 st obrazovce se objeví masáž jako „ zůstat zdravý, Get Well Soon “. Druhá obrazovka je obrazovka nápovědy, která říká, že stisknutím tlačítka výběru vyberete kterýkoli časový úsek, který chcete připomenout (jednou / dvakrát / třikrát za den). Časový úsek je programově měnitelný a lze jej odpovídajícím způsobem konfigurovat. Právě teď jsme to vyřešili do tří dob, tj. 8:00, 14:00 a 20:00.
Časové sloty jsme rozdělili do tří režimů. Režim 1 zvolí užívání léku jednou denně v 8 hodin ráno, když uživatel stiskne první tlačítko. Mode 2 vybere brát léky dvakrát / den v 8 hodin ráno a 8pm, když uživatel stiskne klávesu 2 nd tlačítkem. Režim 3 vybere brát léky třikrát / den v 8 hodin ráno, 2pm a 8pm, pokud uživatel stiskne 3 třetím tlačítkem.
Můžeme také přidat funkci pro odložení bzučáku na 10 minut (není součástí tohoto projektu). Když uživatel vybere požadované sloty stisknutím tlačítek, zaznamená se uživatelský vstup a čas se převezme z RTC. Když se čas shoduje s vybraným časovým úsekem, začne bzučák bzučet. Uživatel může bzučák zastavit stisknutím tlačítka STOP. Stejný proces pokračuje pro další připomenutí slotu. Kompletní proces je uveden ve videu na konci tohoto článku.
Programování Arduino UNO pro připomenutí medicíny
Je velmi snadné psát program, jakmile se zamyslíte nad způsoby, jak připomenout užívání pilulek. Zde zobrazí připomenutí na displeji, zazní bzučák a indikuje jej pomocí LED. Má také možnost vybrat tři časové úseky (jednou / dvakrát / třikrát denně) a kdy čas dosáhne, začněte upozorňovat pacienta bzučením bzučáku. Celý systém pak bude vypadat následovně:
Uživatel dostane na displeji pokyny nápovědy> Uživatel si vybere časové úseky (jednou / den, dvakrát / den, třikrát / den)> Na displeji se zobrazí potvrzovací zpráva> Čas se spustí> Bzučák a kontrolka LED se spustí, když se čas shoduje s uživatelem vybraným slotem> Uživatel se zastaví o stisknutí tlačítka Stop> Konec
Pokud chceme přidat další funkce, můžeme program a hardware změnit. Abychom to pochopili mnohem jednodušším způsobem, rozdělili jsme program na malé funkce. Funkce jsou snadno pochopitelné a implementovatelné. Kompletní program je uveden na konci tohoto projektu. Začněme s programem.
Protože jsme použili jiné periferie, jako je 16x2 LCD displej, RTC DS3231, musíme nejprve zahrnout knihovny f or that. Požadovaná knihovna je následující:
Knihovna EEPROM slouží ke sledování vstupu uživatele, pokud není zapnuto Arduino. A když uživatel zapne Arduino, získá předchozí stav tlačítek pomocí knihovny EEPROM. Knihovna Wire.h se používá, protože modul RTC DS3231 je komunikován pomocí I2C.
Vždy zkontrolujte, zda je RTC správně zapojen nebo není poškozen, protože RTC bude hrát důležitou roli při udržování celého systému připomenutí.
if (! rtc.begin ()) {// zkontrolujte, zda je připojen rtc Serial.println ("Nelze najít RTC"); while (1); } if (rtc.lostPower ()) { Serial.println ("Ztráta energie RTC, nastavíme čas!"); }
Úpravu času lze provést dvěma způsoby, buď automaticky pomocí času kompilace systému, nebo zadáním ručně. Jakmile nastavíme čas, komentujte níže uvedené řádky, pokud nechcete znovu změnit čas RTC.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Tento příkaz switch se používá ke čtení dříve uloženého stavu tlačítka a obnovení stavu pro vhodný a přesný čas připomenutí.
val2 = EEPROM.read (addr); // přečíst dříve uloženou hodnotu tlačítka a začít od místa, kde bylo ponecháno dříve switch (val2) { případ 1: Serial.println ("Set for 1 / day"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; přestávka; případ 2: Serial.println ("Nastaveno na 2 / den"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; přestávka; případ 3: Serial.println ("Set for 3 / day"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; přestávka; }
Tento příkaz se používá k tomu, aby se millis používaly pro načasování a řízení definovaného intervalu cyklování obrazovky.
currentMillisLCD = millis (); // start millis pro přepínání LCD obrazovky v definovaném časovém intervalu
Začněte číst digitální piny připojené k tlačítkům.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Níže uvedená funkce slouží ke čtení stavu tlačítka a jeho zápisu do EEPROM. Kdykoli se stiskne tlačítko, stav se zapíše do EEPROM. Také vytiskne zprávu na LCD displeji vybrané možnosti vstupu uživatele. Podobně se používají funkce push2 () a push3 () .
void push1 () {// funkce pro nastavení připomenutí jednou / den if (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 Written:"); Serial.println (EEPROM.read (addr)); // pro ladění pushVal = 1; // uložení stavu tlačítka-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Sada připomenutí"); lcd.setCursor (0, 1); lcd.print („pro jednou / den!“); zpoždění (1200); lcd.clear (); } }
Níže uvedená funkce slouží k zastavení bzučáku a LED. Vždy je dobré dávat návrhy. Vytiskněte na displeji návrhovou zprávu „Vezměte lék teplou vodou“.
void stopPins () {// funkce k zastavení bzučení, když uživatel stiskne tlačítko stop, pokud (stopinState == 1) { // stopinState = 0; // pushPressed = true; pushpressed = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print („Take Medicine“); lcd.setCursor (0, 1); lcd.print ("s teplou vodou"); zpoždění (1200); lcd.clear (); } }
Níže uvedená funkce je nezávislá na udržování času, ale vždy se cykluje na třech obrazovkách, což uživateli pomáhá. Protože udržujeme péči o pacienty, necháme si vytisknout uvítací zprávu, protože víme, že emoční podpora je velmi užitečná při hojení pacientů v rychlejším čase. Můžete si vybrat vlastní kreativní zprávu. Pojďme vytisknout zprávu jako „zůstat zdravý, si také brzy“.
Druhá obrazovka slouží k poskytování pokynů pacientům jako „Stiskněte tlačítka pro připomenutí..“. Třetí obrazovka slouží k jednoduchému zobrazení aktuálního data a času.
void changeScreen () {// funkce pro cyklování obrazovky // Spuštění přepínání obrazovky každý definovaný intervalLCD if (currentMillisLCD - previousMillisLCD> intervalLCD) // uložení poslední změny zobrazení { previousMillisLCD = currentMillisLCD; obrazovky ++; if (obrazovky> maxScreen) { obrazovky = 0; // všechny obrazovky znovu -> začít od 1. } isScreenChanged = true; } // Spustit zobrazení aktuální obrazovky, pokud (isScreenChanged) // Aktualizovat obrazovku pouze v případě, že dojde ke změně obrazovky. { isScreenChanged = false; // reset pro další přepnutí iterace (obrazovky) { case getWellsoon: gwsMessege (); // brzy se uzdrav přestávka; případ HELP_SCREEN: helpScreen (); // přerušení obrazovky instrukcí ; případ TIME_SCREEN: timeScreen (); // vytiskne datum a čas ; výchozí: // NENÍ NASTAVENO. přestávka; } } }
Tato funkce se používá ke spuštění bzučení a současného blikání LED, pokud dosáhne zvoleného času.
void startBuzz () {// funkce pro spuštění bzučení, když čas dosáhne definovaného intervalu // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed is false in blink"); nepodepsaný dlouhý proud Millis = millis (); if (currentMillis - previousMillis> = interval) { previousMillis = currentMillis; // uložit poslední bliknutí LED Serial.println ("Spustit bzučení"); if (ledState == LOW) {// pokud LED nesvítí, zapněte ji a naopak: ledState = HIGH; } else { ledState = LOW; } digitalWrite (ledPin, ledState); } } else if (pushpressed == 1) { Serial.println ("pushpressed is true"); ledState = LOW; digitalWrite (ledPin, ledState); } }
Tato funkce se používá k porovnání uživatelem zvoleného časového úseku v 8 hodin ráno a začne bzučet bzučákem a blikat LED, dokud uživatel nestiskne tlačítko Stop. Podobně se funkce void at2pm () a void at8pm používají ke spuštění bzučáku a jsou vedeny ve 14:00 a 20:00.
void at8am () {// funkce pro spuštění bzučení v 8 hodin DateTime now = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// //////////////////////////////////////////////////// startBuzz (); //////////////////////////////////////////////////////// /// } } } }
Takto si můžete jednoduše vytvořit svůj vlastní automatický připomenutí léku pomocí Arduina. Můžete také použít ESP8266 s Arduino, abyste z něj vytvořili projekt IoT, který bude schopen uživateli zaslat e-mailové upozornění.
Kompletní kód a ukázkové video jsou uvedeny níže.