- Components necessaris per al recordatori de medicina automàtica mitjançant Arduino
- Recordatori de medicina Arduino mitjançant el circuit Arduino
- Funcionament del sistema de recordatori de medicaments automàtics
- Programació Arduino UNO per a Medicina Recordatori
Quan es tracta dels nostres éssers estimats, sempre volem mantenir-los sans i en forma. Però, què passarà si es posen malalts i s’obliden de prendre medicaments a temps. Estaríem preocupats, oi? Als hospitals, hi ha molts pacients i és difícil recordar a tots els pacients que han de prendre medicaments a temps. Les formes tradicionals requereixen esforços humans per recordar-los que han de prendre medicaments a temps. L’era digital no segueix això i podem fer servir màquines per fer-ho. L’aplicació de Smart Medicine Reminder és molt àmplia i la poden utilitzar els pacients a casa, els metges dels hospitals i molts altres llocs. A l’hora de recordar-ho, hi pot haver moltes maneres de recordar-ho:
- Mostra-ho en una pantalla
- Envieu una notificació per correu electrònic o per telèfon
- Utilitzar aplicacions per a mòbils
- Buzz alarm
- Mitjançant Bluetooth / Wi-Fi
- Rep una trucada
- Recordeu la propera hora del medicament mentre recordeu l’hora actual
Podem combinar formes segons la necessitat. Perquè les coses siguin senzilles aquí, vam fer un simple recordatori de medicaments amb Arduino que ens recorda que cal prendre medicaments 1 o 2 o 3 vegades al dia. La franja horària es pot seleccionar mitjançant els botons de pressió. A més, mostra la data i hora actuals. L’ampliarem també als articles entrants del projecte IoT on s’enviarà una notificació per correu electrònic o SMS a l’usuari. Aquest recordatori de medicaments també es pot integrar amb el sistema de control del pacient.
Components necessaris per al recordatori de medicina automàtica mitjançant Arduino
- Arduino Uno (també podem utilitzar altres plaques Arduino, com Pro mini, Nano)
- Mòdul RTC DS3231
- Pantalla LCD de 16x2
- Zumbador
- Led (qualsevol color)
- Taula de pa
- Botons de pressió
- Potenciòmetre de 10K
- Resistències 10K, 1K
- Jumper Wires
Recordatori de medicina Arduino mitjançant el circuit Arduino
A continuació es mostra el diagrama complet del circuit per construir una caixa de medicaments intel·ligent amb Arduino

A continuació es mostren les connexions de pin d'Arduino amb diferents perifèrics
Pins Arduino Pins perifèrics
- 2 -----------------------------> D7 de pantalla LCD de 16x2
- 3 -----------------------------> D6 de pantalla LCD de 16x2
- 4 -----------------------------> D5 de pantalla LCD de 16x2
- 5 -----------------------------> D4 de pantalla LCD de 16x2
- 7 -----------------------------> 3er polsador
- 8 -----------------------------> 2n polsador
- 9 -----------------------------> 1er polsador
- 11 -----------------------------> Pin EN de la pantalla LCD de 16x2
- 12 -----------------------------> Pin RS de pantalla LCD de 16x2
- 13 -----------------------------> + Ve Pin de Buzzer i Led
- A0 -----------------------------> Botó d'aturada
- A4 -----------------------------> SDA de DS3231
- A5 -----------------------------> SCL de DS3231
- 3,3V -----------------------------> Vcc de DS3231
- Gnd -----------------------------> Gnd

En aquest projecte Medical Reminder Project, RTC DS3231 s’interfaça a través del protocol I2C amb Arduino Uno. També podeu utilitzar RTC IC DS1307 per llegir l’hora amb Arduino. RTC DS3231 també té memòria de 32 k incorporada que es pot utilitzar per emmagatzemar dades addicionals. El mòdul RTC s’alimenta mitjançant el pin de 3,3 V d’Arduino uno. Una pantalla LCD de 16x2 s’interfaccia mitjançant SPI. Es fa servir un buzze r per alertar i recordar que és hora de prendre medicaments. S'utilitzen quatre botons polsadors en què cadascun té una funció de selecció diferent. El primer polsador s’utilitza per recordar que cal prendre medicaments un cop al dia. El segon polsador s'utilitza per recordar dues vegades al dia i el tercer polsador s'utilitza per recordar tres vegades al dia. El quart polsador s'utilitza per aturar el brunzidor quan l'usuari ha escoltat l'alerta.
Funcionament del sistema de recordatori de medicaments automàtics
L' alarma de recordatori de píndola s'alimenta mitjançant un subministrament de 5 V. Quan arrenca per primera vegada, mostra un massatge de benvinguda com a " Welcome to Circuit Digest ". La pantalla LCD està configurada per funcionar en tres pantalles. La primera pantalla mostra el massatge com " Mantingueu-vos saludables, guareu-vos aviat ". La segona pantalla és una pantalla d’ajuda que indica que premeu el botó de selecció per seleccionar qualsevol franja horària que vulgueu recordar (una vegada / dues vegades / tres vegades al dia). La franja horària es pot canviar al programa i es pot configurar en conseqüència. Ara mateix ho hem solucionat en tres durades, és a dir, les 8:00, les 14:00 i les 20:00.
Hem dividit les franges horàries en tres modes. Mode 1 us permet escollir a prendre medicaments un cop / dia a les 8 am, quan l'usuari prem l'1 st polsador. El mode 2 selecciona prendre medicaments dos cops al dia a les 8 del matí i a les 8 del vespre quan l’usuari prem el 2n botó. El mode 3 selecciona prendre medicaments tres vegades al dia a les 8 del matí, a les 2 de la tarda i a les 8 del vespre si l'usuari prem el tercer botó.

També podem afegir una funció per posposar el timbre durant 10 minuts (no inclosa en aquest projecte). Quan l'usuari selecciona les ranures desitjades prement els botons, es registra l'entrada de l'usuari i es pren el temps de RTC. Quan el temps coincideix amb la franja horària seleccionada, el brunzidor comença a brunzir. L'usuari pot aturar el timbre prement el botó STOP. El mateix procés continua per al següent recordatori de ranures. El procés complet es mostra al vídeo presentat al final d’aquest article.
Programació Arduino UNO per a Medicina Recordatori
És molt fàcil escriure un programa un cop hagueu pensat les maneres de recordar la presa de les pastilles. Aquí mostrarà el recordatori a la pantalla, farà sonar un brunzidor i l’indicarà mitjançant el LED. També té l'opció de seleccionar tres franges horàries (una vegada / dues vegades / tres vegades al dia) i quan arribarà el temps, comenceu a alertar el pacient fent sonar el brunzidor. Aleshores, tot el sistema tindrà el següent aspecte:
L'usuari rep instruccions d'ajuda a la pantalla> L'usuari selecciona franges horàries (una vegada / dia, dues / dia, tres / dia)> Imprimeix el missatge de confirmació a la pantalla> Comença l'hora> El brunzidor i el LED s'inicien quan el temps coincideix amb l'espai seleccionat per l'usuari> L'usuari passa per prement un botó de parada> Finalitza
Podem canviar el programa i el maquinari si volem afegir més funcions. Per entendre de manera molt més senzilla, hem desglossat el programa en petites funcions. Les funcions són fàcils d’entendre i implementar. El programa complet es dóna al final d’aquest projecte. Comencem pel programa.
Des de llavors, hem utilitzat altres perifèrics com la pantalla LCD de 16x2, RTC DS3231, de manera que primer hem d’ incloure llibreries f o això. La biblioteca necessària és la següent:
La biblioteca EEPROM s'utilitza per fer un seguiment de l'entrada seleccionada per l'usuari si Arduino no està activat. I quan l’usuari encén l’Arduino, obté l’estat anterior dels botons polsadors mitjançant la biblioteca EEPROM. La biblioteca Wire.h s’utilitza ja que el mòdul RTC DS3231 es comunica mitjançant I2C.
Comproveu sempre si l'RTC està correctament cablejat o no està danyat, ja que RTC tindrà un paper important en el manteniment del temps de tot el sistema de recordatori.
if (! rtc.begin ()) {// comproveu si rtc està connectat Serial.println ("No s'ha pogut trobar RTC"); mentre que (1); } if (rtc.lostPower ()) { Serial.println ("RTC ha perdut energia, permetem establir l'hora!"); }
L'ajust de temps es pot fer de dues maneres, ja sigui automàticament mitjançant el temps de compilació del sistema o introduint-lo manualment. Quan hàgim definit l'hora, comenteu les línies següents a menys que vulgueu canviar de nou l'hora RTC.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__)))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
Aquesta instrucció de commutació s’utilitza per llegir l’estat desat prèviament del botó i reprendre l’estat durant un temps de recordatori adequat i precís.
val2 = EEPROM.read (addr); // llegiu el valor del botó premiat desat prèviament per començar des d'on es deixava anteriorment commutador (val2) { cas 1: Serial.println ("Estableix per 1 / dia"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; trencar; cas 2: Serial.println ("Estableix per a 2 / dia"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; trencar; cas 3: Serial.println ("Estableix per a 3 / dia"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; trencar; }
Aquesta afirmació s'utilitza per aconseguir que els millis s'utilitzin per a la sincronització i el control del cicle de pantalla d'interval definit.
currentMillisLCD = millis (); // Comença mil·lis per canviar la pantalla LCD a un interval de temps definit
Comenceu a llegir els pins digitals connectats als polsadors.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
La funció següent s'utilitza per llegir l'estat del polsador i escriure'l a EEPROM. Sempre que es prem el botó, l'estat s'escriu a EEPROM. També imprimeix el missatge a la pantalla LCD de l’opció d’entrada seleccionada per l’usuari. De la mateixa manera, s'utilitzen les funcions push2 () i push3 () .
void push1 () {// funció per establir un recordatori un cop al dia si (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = true; EEPROM.write (addr, 1); Serial.print ("Push1 escrit:"); Serial.println (EEPROM.read (addr)); // per depurar pushVal = 1; // desa l'estat del polsador-1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Conjunt de recordatoris"); lcd.setCursor (0, 1); lcd.print ("per un cop al dia!"); retard (1200); lcd.clear (); } }
La funció inferior es fa servir per aturar el brunzidor i el led. Sempre és bo donar suggeriments. Imprimiu un missatge de suggeriment a la pantalla "Preneu medicaments amb aigua tèbia".
void stopPins () {// funció per deixar de brunzir quan l'usuari prem el botó de parada stop si (stopinState == 1) { // stopinState = 0; // pushPressed = true; premsat = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("Prendre medicaments"); lcd.setCursor (0, 1); lcd.print ("amb aigua tèbia"); retard (1200); lcd.clear (); } }
La funció següent és independent del temps, però sempre fa cicles en tres pantalles, cosa que ajuda l'usuari. Com que estem atents als pacients, podem imprimir un missatge de salutació, ja que sabem que el suport emocional és molt útil per curar els pacients en un temps més ràpid. Podeu triar el vostre propi missatge creatiu. Anem a imprimir un missatge com "mantenir-se saludable, et millors aviat".
La segona pantalla serveix per donar instruccions als pacients com a "Premeu els botons per recordar…". La tercera pantalla s'utilitza per mostrar simplement la data i l'hora actuals.
void changeScreen () {// funció per al reciclatge de pantalla // Comenceu a canviar de pantalla cada intervalLCD definit si (currentMillisLCD - previousMillisLCD> intervalLCD) // deseu la darrera vegada que vau canviar la pantalla { previousMillisLCD = currentMillisLCD; pantalles ++; if (pantalles> pantalla màxima) { pantalles = 0; // totes les pantalles acabades -> comença a partir de la 1a } isScreenChanged = true; } // Comenceu a mostrar la pantalla actual si (isScreenChanged) // només actualitzeu la pantalla si es canvia la pantalla. { isScreenChanged = fals; // restableix el proper commutador d' iteració (pantalles) { case getWellsoon: gwsMessege (); // missatge guanya't aviat trencar; cas HELP_SCREEN: helpScreen (); // trencament de pantalla d’instruccions ; cas TIME_SCREEN: timeScreen (); // per imprimir el descans i la data ; per defecte: // NOT SET. trencar; } } }
Aquesta funció s’utilitza per començar a parpellejar i parpellejar simultàniament el LED si s’ha arribat al temps seleccionat.
void startBuzz () {// funció per començar a brunzir quan el temps arriba a l'interval definit // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed és fals en parpellejar"); corrent llarg sense signar Millis = millis (); if (Milles actuals - Milles anteriors> = interval) { Milles anteriors = Milles actuals; // deseu l'última vegada que vau parpellejar el LED Serial.println ("Comença a brunzir"); if (ledState == LOW) {// si el LED està apagat, enceneu-lo i viceversa: ledState = HIGH; } else { ledState = BAIX; } digitalWrite (ledPin, ledState); } } else if (pushpressed == 1) { Serial.println ("pushpressed és cert"); ledState = BAIX; digitalWrite (ledPin, ledState); } }
Aquesta funció s'utilitza per comparar la franja horària seleccionada per l'usuari a les 8 del matí i comença a fer sonar el zumbador i a parpellejar el LED fins que l'usuari prem el botó d'aturada. De la mateixa manera, les funcions void at2pm () i void at8pm s’utilitzen per engegar el brunzidor i s’encenen a les 14:00 i a les 20:00.
void at8am () {// funció per començar a brunzir a les 8am DateTime ara = rtc.now (); if (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// ///////////////////////////////////////////////// startBuzz (); ////////////////////////////////////////////////////// /// } } } }
Així és com podeu crear el vostre propi recordatori automàtic de medicaments mitjançant Arduino. També podeu utilitzar ESP8266 amb Arduino per convertir-lo en un projecte IoT que podrà enviar alerta per correu electrònic a l'usuari.
A continuació es mostra el codi complet i el vídeo de demostració.
