- Komponenter som krävs för automatisk medicinpåminnelse med Arduino
- Arduino medicin påminnelse med Arduino Circuit
- Arbetar med automatisk påminnelsessystem för medicin
- Programmering Arduino UNO för medicin påminnelse
När det gäller våra nära och kära vill vi alltid hålla dem friska och vältränade. Men vad kommer att hända om de blir sjuka och glömmer att ta medicin i tid. Vi skulle vara oroliga, eller hur? På sjukhus finns det många patienter och det är svårt att påminna varje patient om att ta medicin i tid. De traditionella sätten kräver mänskliga ansträngningar för att påminna dem om att ta mediciner i tid. Den digitala eran följer inte det och vi kan använda maskiner för att göra det. Tillämpningen av Smart Medicine Reminder är mycket omfattande och kan användas av patienter hemma, läkare på sjukhus och många andra platser. När det gäller att påminna kan det finnas många sätt att påminna om det:
- Visa det på en skärm
- Skicka meddelande via e-post eller telefon
- Använda mobilappar
- Buzz alarm
- Använda Bluetooth / Wi-Fi
- Ring ett samtal
- Påminn om nästa medicintid medan du påminner om aktuell tid
Vi kan kombinera sätt beroende på behovet. För att hålla sakerna enkla här gjorde vi en enkel medicinpåminnelse med Arduino som påminner oss om att ta läkemedel 1 eller 2 eller 3 gånger om dagen. Tidsfacket kan väljas med tryckknappar. Den visar också aktuellt datum och tid. Vi kommer vidare att utvidga det till ett IoT-projekt inkommande artiklar där ett e-post- eller SMS-meddelande kommer att skickas till användaren. Denna medicinska påminnelse kan också integreras i patientövervakningssystemet.
Komponenter som krävs för automatisk medicinpåminnelse med Arduino
- Arduino Uno (vi kan också använda andra Arduino-kort, som Pro mini, Nano)
- RTC DS3231-modul
- 16x2 LCD-skärm
- Summer
- Led (valfri färg)
- Bakbord
- Trycka på knappar
- 10K Potentiometer
- 10K, 1K motstånd
- Bygeltrådar
Arduino medicin påminnelse med Arduino Circuit
Det fullständiga kretsschemat för att bygga en smart medicinbox med Arduino visas nedan
Nedan är stiftanslutningarna för Arduino med olika kringutrustning
Arduino Pins Perifera Pins
- 2 -----------------------------> D7 på 16x2 LCD-skärm
- 3 -----------------------------> D6 på 16x2 LCD-skärm
- 4 -----------------------------> D5 på 16x2 LCD-skärm
- 5 -----------------------------> D4 på 16x2 LCD-skärm
- 7 -----------------------------> 3: e tryckknappen
- 8 -----------------------------> 2: a tryckknappen
- 9 -----------------------------> 1: a tryckknappen
- 11 ----------------------------> EN-stift på 16x2 LCD-skärm
- 12 -----------------------------> RS-stift på 16x2 LCD-skärm
- 13 -----------------------------> + Ve Pin of Buzzer and Led
- A0 -----------------------------> Stopp tryckknapp
- A4 -----------------------------> SDA för DS3231
- A5 -----------------------------> SCL av DS3231
- 3.3V -----------------------------> Vcc av DS3231
- GND -----------------------------> GND
I detta medicinpåminnelseprojekt har RTC DS3231 gränssnitt genom I2C-protokoll med Arduino Uno. Du kan också använda RTC IC DS1307 för att läsa tiden med Arduino. RTC DS3231 har också inbyggt 32k minne som kan användas för att lagra ytterligare data. RTC-modulen drivs via 3,3 V-stiftet Arduino uno. En 16x2 LCD-skärm är gränssnitt med SPI. En summer r används för att varna och påminna om att det är dags att ta medicin. Fyra tryckknappar används där var och en har en separat väljfunktion. Den första tryckknappen används för att påminna om att ta medicin en gång om dagen. Den andra tryckknappen används för att påminna två gånger per dag och den tredje tryckknappen används för att påminna tre gånger om dagen. Den fjärde tryckknappen används för att stoppa summern när användaren har hört varningen.
Arbetar med automatisk påminnelsessystem för medicin
Den Pill Påminnelse Alarm drivs med 5V försörjning. När den först startar upp visar den en välkomstmassage som " Välkommen till Circuit Digest ". LCD-skärmen är inställd på att cykla i tre skärmar. De 1 st skärmen visar massage som ” hålla sig frisk, får väl snart ”. Den andra skärmen är en hjälpskärm som talar om att trycka på välj tryckknapp för att välja en tidslucka att påminna om (en gång / två gånger / tre gånger på en dag). Tidsluckan kan ändras i programmet och kan konfigureras därefter. Just nu har vi fixat detta i tre varaktigheter, dvs 08:00, 14:00 och 20:00.
Vi har delat in tidsluckor i tre lägen. Läge 1 väljer att ta medicin en gång / dag klockan 8 när användaren trycker på 1: a tryckknappen. Läge 2 väljer att ta medicin två gånger om dagen klockan 8.00 och 20.00 när användaren trycker på den andra tryckknappen. Läge 3 väljer att ta medicin tre gånger om dagen klockan 8, 14 och 20 om användaren trycker på den tredje tryckknappen.
Vi kan också lägga till en funktion för att snooze summern i 10 minuter (ingår inte i detta projekt). När användaren väljer önskade platser genom att trycka på tryckknappar registreras användarinmatningen och tiden tas från RTC. När tiden matchas med den valda tidsluckan börjar summeren. Användaren kan stoppa summern genom att trycka på STOPP-knappen. Samma process fortsätter för nästa slotspåminnelse. Fullständig process visas i videon som ges i slutet av denna artikel.
Programmering Arduino UNO för medicin påminnelse
Det är väldigt enkelt att skriva program när du har tänkt på sätten att påminna om att ta piller. Här visar den påminnelsen på displayen, surrar en summer och indikerar den med LED. Det har också möjlighet att välja tre tidsluckor (en gång / två gånger / tre gånger per dag) och när tiden kommer att börja varna patienten genom att surra på summern. Då ser hela systemet ut som följande:
Användaren får hjälpinstruktioner på skärmen> Användaren väljer tidsluckor (en gång / dag, två gånger / dag, tre gånger / dag)> Skriv ut bekräftelsemeddelande på displayen> Tidsförvaring startad> Summer och lysdiod börjar när tiden matchar med användarens valda plats tryck på en stoppknapp> Avsluta
Vi kan ändra program och hårdvara om vi vill lägga till fler funktioner. För att förstå på ett mycket enklare sätt har vi delat in program i små funktioner. Funktionerna är lätta att förstå och implementera. Hela programmet ges i slutet av detta projekt. Låt oss börja med programmet.
Sedan har vi använt andra kringutrustning som 16x2 LCD-skärm, RTC DS3231, så vi måste först inkludera bibliotek f eller så. Biblioteket krävs är följande:
EEPROM-biblioteket används för att hålla reda på användarvalet om Arduino inte är påslagen. Och när användaren slår på Arduino får den det tidigare tillståndet för tryckknappar med EEPROM-biblioteket. Wire.h-biblioteket används eftersom RTC DS3231-modulen kommuniceras med I2C.
Kontrollera alltid om RTC är ordentligt ansluten eller om den inte är skadad, eftersom RTC kommer att spela en viktig roll för att hålla hela påminnelsessystemet.
if (! rtc.begin ()) {// kontrollera om rtc är ansluten Serial.println ("Det gick inte att hitta RTC"); medan (1); } om (rtc.lostPower ()) { Serial.println ("RTC tappade ström, låt oss ställa in tiden!"); }
Tidsjusteringen kan göras på två sätt, antingen automatiskt med systemkompileringstid eller genom att ange den manuellt. När vi har ställt in tiden, kommentera nedanstående rader såvida du inte vill ändra RTC-tiden igen.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Detta switch-uttalande används för att läsa det tidigare sparade läget för tryckknappen och återuppta tillståndet för lämplig och korrekt påminnelsetid.
val2 = EEPROM.read (addr); // läs tidigare sparat värde på tryckknappen för att börja från den plats där den lämnades tidigare switch (val2) { fall 1: Serial.println ("Set for 1 / day"); push1stat = 1; push2state = 0; push3state = 0; pushVal = 01; ha sönder; fall 2: Serial.println ("Set for 2 / day"); push1stat = 0; push2state = 1; push3state = 0; pushVal = 10; ha sönder; fall 3: Serial.println ("Set for 3 / day"); push1stat = 0; push2state = 0; push3state = 1; pushVal = 11; ha sönder; }
Detta uttalande används för att få millis att använda för timing och kontroll av det definierade intervallskärmscykeln.
currentMillisLCD = millis (); // start millis för LCD-skärmbyte vid definierat tidsintervall
Börja läsa de digitala stiften som är anslutna till tryckknappar.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
Nedanstående funktion används för att läsa tryckknappstillståndet och skriva det till EEPROM. När tryckknappen trycks in skrivs tillståndet till EEPROM. Det skriver också ut meddelandet på LCD-skärmen om det valda användarinmatningsvalet. På samma sätt används funktionerna push2 () och push3 () .
ogiltig push1 () {// funktion för att ställa in påminnelse en gång / dag om (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 Written:"); Serial.println (EEPROM.read (addr)); // för felsökning pushVal = 1; // spara tillståndet för tryckknapp-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Påminnelseställning"); lcd.setCursor (0, 1); lcd.print ("för en gång / dag!"); fördröjning (1200); lcd.clear (); } }
Nedanstående funktion används för att stoppa summer och led. Det är alltid bra att ge förslag. Skriv ut ett förslag på displayen ”Ta medicin med varmt vatten”.
ogiltig stopPins () {// funktion för att sluta surra när användaren trycker på stoppknappen om (stopinState == 1) { // stopinState = 0; // pushPressed = true; tryckpress = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Ta medicin"); lcd.setCursor (0, 1); lcd.print ("med varmt vatten"); fördröjning (1200); lcd.clear (); } }
Funktionen nedan är oberoende av tidsförvaring men cyklar alltid i tre skärmar vilket hjälper användaren. När vi tar hand om patienter kan vi skriva ut ett hälsningsmeddelande eftersom vi vet att emotionellt stöd är till stor hjälp för att läka patienter på snabbare tid. Du kan välja ditt eget kreativa budskap. Låt oss skriva ut ett meddelande som "Håll dig frisk, bli frisk snart".
Den andra skärmen är för att ge instruktioner till patienter som "Tryck på knapparna för påminnelse..". Den tredje skärmen används för att helt enkelt visa aktuellt datum och tid.
void changeScreen () {// funktion för skärmcykling // Börja byta skärm varje definierat intervallLCD if (currentMillisLCD - previousMillisLCD> intervalLCD) // spara senaste gången du ändrade skärmen { previousMillisLCD = currentMillisLCD; skärmar ++; om (skärmar> maxScreen) { skärmar = 0; // alla skärmar över -> börja från 1: a } isScreenChanged = true; } // Börja visa aktuell skärm om (isScreenChanged) // uppdatera bara skärmen om skärmen ändras. { isScreenChanged = falskt; // återställning för nästa iterationsomkopplare (skärmar) { case getWellsoon: gwsMessege (); // bli frisk snart meddelande ha sönder; fall HELP_SCREEN: helpScreen (); // instruktionsskärmsbrytning ; fall TIME_SCREEN: timeScreen (); // för att skriva ut datum och tidsavbrott; standard: // INTE INSTÄLLT. ha sönder; } } }
Denna funktion används för att börja surra och blinka lysdioden samtidigt om den valda tiden har nått.
void startBuzz () {// funktion för att börja surra när tiden når till definierat intervall // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed är falskt i blink"); osignerad långströmMillis = millis (); if (currentMillis - previousMillis> = interval) { previousMillis = currentMillis; // spara sista gången du blinkade LED Serial.println ("Starta surrande"); if (ledState == LOW) {// om lysdioden är av, slå på den och vice versa: ledState = HIGH; } annat { ledState = LÅG; } digitalWrite (ledPin, ledState); } } annat om (pushpressed == 1) { Serial.println ("pushpressed is true"); ledState = LÅG; digitalWrite (ledPin, ledState); } }
Denna funktion används för att jämföra den användarvalda tidsluckan klockan 8 och börjar surra summern och blinka lysdioden tills användaren trycker på stoppknappen. På samma sätt används funktionerna void at2pm () och void at8pm för att starta summer och leda 14:00 och 20:00.
ogiltigt at8am () {// funktion för att börja surra klockan 8 DateTime nu = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// /////////////////////////////////////////////// startBuzz (); ////////////////////////////////////////////////// /// } } } }
Så här kan du helt enkelt skapa din egen automatiska medicinpåminnelse med Arduino. Du kan också använda ESP8266 med Arduino för att göra det till ett IoT-projekt som kommer att kunna skicka e-postvarning till användaren.
Komplett kod och demonstrationsvideo ges nedan.