- רכיבים נדרשים לתזכורת לרפואה אוטומטית באמצעות Arduino
- תזכורת לרפואה של Arduino באמצעות מעגל Arduino
- עבודה של מערכת תזכורות לרפואה אוטומטית
- תכנות Arduino UNO לתזכורת לרפואה
כשמדובר באהובים עלינו, אנחנו תמיד רוצים לשמור עליהם בריאים ובכושר. אך מה יקרה אם יחלו וישכחו ליטול תרופות בזמן. היינו מודאגים, נכון? בבתי חולים ישנם חולים רבים וקשה להזכיר לכל חולה ליטול תרופות בזמן. הדרכים המסורתיות דורשות מאמצים אנושיים להזכיר להם ליטול תרופות בזמן. העידן הדיגיטלי לא עוקב אחר כך ואנחנו יכולים להשתמש במכונות לשם כך. היישום של תזכורת לרפואה חכמה הוא רחב מאוד ויכול לשמש מטופלים בבית, רופאים בבתי חולים ובמקומות רבים אחרים. כשמדובר בתזכורת, יכולות להיות דרכים רבות להזכיר זאת:
- הראה אותו בתצוגה
- שלח הודעה בדוא"ל או בטלפון
- שימוש באפליקציות לנייד
- אזעקת באז
- באמצעות Bluetooth / Wi-Fi
- קבל שיחה
- הזכר לזמן התרופות הבא תוך תזכורת לשעה הנוכחית
אנו יכולים לשלב דרכים בהתאם לצורך. כדי לשמור על דברים פשוטים כאן הכנו תזכורת פשוטה לרפואה באמצעות ארדואינו שמזכירה לנו לקחת תרופות 1 או 2 או 3 פעמים ביום. ניתן לבחור את משבצת הזמן באמצעות לחצני כפתור. כמו כן, הוא מציג את התאריך והשעה הנוכחיים. בהמשך נרחיב אותו לפרויקטים נכנסים של פרויקט IoT, בו תישלח למשתמש הודעת דוא"ל או SMS. תזכורת לתרופות זו יכולה להיות משולבת גם במערכת ניטור המטופלים.
רכיבים נדרשים לתזכורת לרפואה אוטומטית באמצעות Arduino
- Arduino Uno (אנחנו יכולים להשתמש גם בלוחות Arduino אחרים, כמו Pro mini, Nano)
- מודול RTC DS3231
- צג LCD 16x2
- זַמזָם
- Led (בכל צבע)
- קרש לחם
- ללחוץ על כפתורים
- פוטנציומטר 10K
- נגדים 10K, 1K
- חוטי מגשר
תזכורת לרפואה של Arduino באמצעות מעגל Arduino
תרשים המעגל השלם לבניית קופסת תרופות חכמה באמצעות Arduino מוצג להלן
להלן חיבורי הסיכות של ארדואינו עם ציוד היקפי שונה
סיכות ארדואינו סיכות היקפיות
- 2 -----------------------------> D7 של צג LCD בגודל 16x2
- 3 -----------------------------> D6 של צג LCD 16x2
- 4 -----------------------------> D5 של צג LCD 16x2
- 5 -----------------------------> D4 של צג LCD בגודל 16x2
- 7 -----------------------------> כפתור לחיצה שלישי
- 8 -----------------------------> כפתור לחיצה שני
- 9 -----------------------------> כפתור לחיצה ראשון
- 11 ----------------------------> EN סיכה של צג LCD בגודל 16x2
- 12 -----------------------------> סיכת RS של תצוגת LCD 16x2
- 13 -----------------------------> + Ve Pin of Buzzer and Led
- A0 -----------------------------> עצור את הלחצן
- A4 -----------------------------> SDA של DS3231
- A5 ----------------------------> SCL של DS3231
- 3.3 וולט -----------------------------> Vcc של DS3231
- Gnd -----------------------------> Gnd
בכך תזכורת לרפואה הפרויקט, RTC DS3231 הוא להתממשק באמצעות פרוטוקול I2C עם Arduino Uno. אתה יכול גם להשתמש ב- RTC IC DS1307 לקריאת הזמן עם Arduino. ל- RTC DS3231 יש גם זיכרון 32k מובנה שניתן להשתמש בו לאחסון נתונים נוספים. מודול RTC מופעל באמצעות סיכה 3.3V של Arduino uno. צג LCD בגודל 16x2 מתממשק באמצעות SPI. Buzze r משמש התראה ולהזכיר כי הגיע הזמן לקחת את התרופה. משתמשים בארבעה לחצני כפתור כאשר לכל אחד מהם יש תכונת בחירה נפרדת. כפתור הלחיצה הראשון משמש להזכרת נטילת תרופות פעם ביום. כפתור הלחיצה השני משמש להזכרת פעמיים ביום ולחצן הלחיצה השלישי משמש להזכרת שלוש פעמים ביום. כפתור הלחיצה הרביעי משמש לעצירת הזמזם כאשר המשתמש שמע את ההתראה.
עבודה של מערכת תזכורות לרפואה אוטומטית
מעורר תזכורת הגלולה הוא מופעל באמצעות אספקת 5V. כאשר הוא מתחיל לראשונה, הוא מציג עיסוי מבורך כ"ברוכים הבאים לעיכול מעגל ". מסך ה- LCD מוגדר למחזור בשלושה מסכים. 1 st מופעי המסך לעסות כמו " להישאר בריא, החלמה מהירה ". המסך השני הוא מסך עזרה שאומר ללחוץ על כפתור לחיצה לבחור כדי לבחור כל חריץ זמן אחד להזכיר (פעם / פעמיים / שלוש ביום). משבצת הזמן ניתנת לשינוי בתכנית וניתן להגדיר אותה בהתאם. כרגע תיקנו את זה לשלושה משכים, כלומר 8:00, 14:00 ו 20:00.
חילקנו משבצות זמן לשלושה מצבים. בחירת מצב 1 לקחת תרופות פעם / יום בשעה 08:00 כאשר לחיצות המשתמשים 1 st בלחיצת כפתור. בחירת מצב 2 ליטול תרופה פעמיים / יום בשעה 08:00 ו 20:00 כאשר המשתמש לוחץ 2 nd בלחיצת כפתור. מצב 3 בוחר לקחת שלוש פעמים רפואה / יום בשעה 08:00, 14:00 ו 20:00 אם לחיצות המשתמשים 3 rd בלחיצת כפתור.
אנו יכולים גם להוסיף תכונה להנמנת זמזם למשך 10 דקות (לא כלול בפרויקט זה). כאשר המשתמש בוחר חריצים רצויים על ידי לחיצה על כפתורי לחיצה, קלט המשתמש נרשם והזמן נלקח מ- RTC. כאשר הזמן תואם את משבצת הזמן שנבחרה אז הבאזר מתחיל לזמזם. המשתמש יכול לעצור את הבאזר על ידי לחיצה על כפתור STOP. אותו תהליך נמשך לתזכורת המשבצת הבאה. התהליך המלא מוצג בסרטון הווידיאו שניתן בסוף חוברת זו.
תכנות Arduino UNO לתזכורת לרפואה
קל מאוד לכתוב תוכנית לאחר שחשבתם על הדרכים להזכיר נטילת הגלולות. כאן הוא יציג את התזכורת המוצגת, יזמזם זמזם ויציין זאת באמצעות נורית LED. יש לה גם אפשרות לבחור שלוש משבצות זמן (פעם / פעמיים / שלוש ביום) ומתי הזמן יגיע להתחיל להתריע בפני המטופל על ידי זמזום של הבאזר. ואז המערכת כולה תיראה כדלקמן:
המשתמש מקבל הוראות עזרה בתצוגה> המשתמש בוחר חריצי זמן (פעם / יום, פעמיים / יום, שלוש פעמים / יום)> הודעת אישור הדפסה בתצוגה> זמן השמירה התחיל> זמזם והנורית מתחילים כאשר הזמן תואם לחריץ שנבחר על ידי המשתמש> המשתמש נעצר על ידי לחיצה על לחצן עצירה> סיום
אנו יכולים לשנות את התוכנית והחומרה אם אנו רוצים להוסיף עוד תכונות. כדי להבין בצורה הרבה יותר פשוטה, פירקנו את התוכנית לפונקציות קטנות. הפונקציות קלות להבנה וליישום. התוכנית המלאה ניתנת בסוף פרויקט זה. נתחיל בתכנית.
מאז, השתמשנו בציוד היקפי אחר כמו תצוגת LCD 16x2, RTC DS3231, אז ראשית עלינו לכלול ספריות f או זה. הספרייה הנדרשת היא כדלקמן:
ספריית EEPROM משמשת למעקב אחר קלט בחירת המשתמשים אם Arduino אינו מופעל. וכאשר המשתמש מפעיל את Arduino הוא מקבל את המצב הקודם של לחצני הלחיצה באמצעות ספריית EEPROM. נעשה שימוש בספריית Wire.h מכיוון שמודר RTC DS3231 מתקשר באמצעות I2C.
בדוק תמיד אם ה- RTC מחובר כראוי או שאינו פגום, מכיוון ש- RTC ישחק תפקיד חשוב בשמירה על זמן מערכת התזכורות כולה.
אם (! rtc.begin ()) {// בדוק אם rtc מחובר Serial.println ("לא נמצא RTC"); ואילו (1); } אם (rtc.lostPower ()) { Serial.println ("RTC איבד כוח, מאפשר להגדיר את הזמן!"); }
ניתן לבצע את התאמת הזמן בשתי דרכים, באופן אוטומטי תוך שימוש בזמן הידור המערכת או על ידי הזנתו באופן ידני. לאחר שקבענו את השעה, הגיב על השורות הבאות אלא אם כן ברצונך לשנות את זמן ה- RTC שוב.
rtc.adjust (DateTime (F (__ DATE__), F (__ TIME__))); //rtc.adjust(DateTime(2019, 1, 10, 7, 59, 52));
זו הצהרה הבוררת משמשת לקריאת המדינה שנשמרה על לחצן הדחיפה וחידוש המדינה בפעם תזכורת הולמת ומדויקת.
val2 = EEPROM.read (addr); // קרא את הערך שנשמר בעבר של כפתור הלחיצה כדי להתחיל מהמקום בו הוא הושאר בעבר switch (val2) { case 1: Serial.println ("Set for 1 / day"); push1state = 1; push2state = 0; push3state = 0; pushVal = 01; לשבור; מקרה 2: Serial.println ("הגדר ליום / יום"); push1state = 0; push2state = 1; push3state = 0; pushVal = 10; לשבור; מקרה 3: Serial.println ("הגדר ל -3 ליום"); push1state = 0; push2state = 0; push3state = 1; pushVal = 11; לשבור; }
הצהרה זו משמשת בכדי לגרום למיליס להשתמש לתזמון ובקרה על אופני מסך המרווח המוגדרים.
currentMillisLCD = מילי (); // התחל מיליונים למיתוג מסך LCD בפרק זמן מוגדר
התחל לקרוא את הפינים הדיגיטליים המחוברים ללחצנים.
push1state = digitalRead (push1pin); push2state = digitalRead (push2pin); push3state = digitalRead (push3pin); stopinState = digitalRead (stopPin);
הפונקציה שלמטה משמשת לקריאת מצב כפתור הלחיצה ולכתיבה ל- EEPROM. בכל פעם שלוחצים על כפתור הלחיצה המצב נכתב ל- EEPROM. כמו כן הוא מדפיס את ההודעה בתצוגת LCD של בחירת קלט המשתמש שנבחרה. באופן דומה משתמשים בפונקציות push2 () ו- push3 () .
בטל push1 () {// פונקציה להגדרת תזכורת פעם ביום אם (push1state == 1) { push1state = 0; push2state = 0; push3state = 0; // pushPressed = נכון; EEPROM.write (addr, 1); Serial.print ("Push1 נכתב:"); Serial.println (EEPROM.read (addr)); // לצורך איתור באגים pushVal = 1; // שמור את מצב הלחצן -1 lcd.clear (); lcd.setCursor (0, 0); lcd.print ("ערכת תזכורת"); lcd.setCursor (0, 1); lcd.print ("לפעם / יום!"); עיכוב (1200); lcd.clear (); } }
הפונקציה שלמטה משמשת לעצירת זמזם והוביל. תמיד טוב לתת הצעות. הדפס הודעת הצעה בתצוגה "קח תרופה עם מים חמים".
בטל stopPins () {// פונקציה להפסקת זמזום כאשר המשתמש לוחץ על כפתור עצור אם (stopinState == 1) { // stopinState = 0; // pushPressed = נכון; דחוף = 1; lcd.clear (); lcd.setCursor (0, 0); lcd.print ("קח תרופה"); lcd.setCursor (0, 1); lcd.print ("עם מים חמים"); עיכוב (1200); lcd.clear (); } }
הפונקציה שלהלן אינה תלויה בשמירת הזמן אך מחזירה תמיד בשלושה מסכים המסייעת למשתמש. כאשר אנו מקפידים על טיפול בחולים מאפשרים להדפיס הודעת ברכה מכיוון שאנו יודעים שתמיכה רגשית עוזרת מאוד לריפוי חולים בזמן מהיר יותר. אתה יכול לבחור את המסר היצירתי שלך. בואו נדפיס הודעה כ"ישאר בריא, תבריא בקרוב ".
המסך השני נועד למתן חולים כ"לחצו על כפתורים לתזכורת.. ". המסך השלישי משמש להצגת תאריך ושעה נוכחיים בפשטות.
void changeScreen () {// פונקציה עבור רכיבת מסך // התחל להחליף מסך לכל מרווח מוגדרLCD אם (currentMillisLCD - previousMillisLCD> intervalLCD) // שמור בפעם האחרונה ששינית את התצוגה { previousMillisLCD = currentMillisLCD; מסכים ++; אם (מסכים> maxScreen) { screens = 0; // כל המסכים מעל -> התחל מהראשון } isScreenChanged = true; } // התחל להציג את המסך הנוכחי אם (isScreenChanged) // עדכן את המסך רק אם המסך שונה. { isScreenChanged = false; // איפוס למתג האיטרציה הבא (מסכים) { case getWellsoon: gwsMessege (); // תבריא בקרוב הודעה לשבור; מקרה HELP_SCREEN: helpScreen (); // הפסקת מסך ההוראות ; מקרה TIME_SCREEN: timeScreen (); // להדפסת תאריך ושעת הפסקה; ברירת מחדל: // NOT SET. לשבור; } } }
פונקציה זו משמשת להתחלת זמזום ומהבהב של ה- LED בו זמנית אם הגיע הזמן שנבחר.
void startBuzz () {// פונקציה כדי להתחיל לזמזם כאשר הזמן מגיע למרווח מוגדר // if (pushPressed == false) { if (pushpressed == 0) { Serial.println ("pushpressed is false in flash"); זרם ארוך לא חתום Millis = millis (); אם (currentMillis - previousMillis> = מרווח) { previousMillis = currentMillis; // שמור בפעם האחרונה שמצמצת את ה- LED Serial.println ("התחל זמזום"); אם (ledState == LOW) {// אם ה- LED כבוי הפעל אותו ולהיפך: ledState = HIGH; } אחר { ledState = LOW; } digitalWrite (ledPin, ledState); } } אחרת אם (pushpressed == 1) { Serial.println ("pushpressed is true"); ledState = LOW; digitalWrite (ledPin, ledState); } }
פונקציה זו משמשת להשוואת משבצת הזמן שנבחרה על ידי המשתמש בשעה 8 בבוקר ומתחילה לזמזם את הבאזר ולהבהב את ה- LED עד שהמשתמש לוחץ על כפתור העצירה. בדומה לפונקציות ומבוטל at2pm () ו ומבוטל at8pm משמשות להתחיל הבאזר והובילו ב 14:00 ו 08:00.
בטל at8am () {// פונקציה להתחיל זמזום בשעה 8:00 DateTime עכשיו = rtc.now (); אם (int (now.hour ())> = buzz8amHH) { if (int (now.minute ())> = buzz8amMM) { if (int (now.second ())> buzz8amSS) { ////// /////////////////////////////////////////////////// startBuzz (); ////////////////////////////////////////////////////// /// } } } }
כך תוכלו פשוט ליצור תזכורת אוטומטית לרפואה באמצעות ארדואינו. אתה יכול גם להשתמש ב- ESP8266 עם Arduino כדי להפוך אותו לפרויקט IoT אשר יוכל לשלוח התראת דוא"ל למשתמש.
קוד הסרטון וההדגמה המלא מובא להלן.