תוכן עניינים:

מד דופק IOT (ESP8266 ואפליקציית אנדרואיד): 5 שלבים
מד דופק IOT (ESP8266 ואפליקציית אנדרואיד): 5 שלבים

וִידֵאוֹ: מד דופק IOT (ESP8266 ואפליקציית אנדרואיד): 5 שלבים

וִידֵאוֹ: מד דופק IOT (ESP8266 ואפליקציית אנדרואיד): 5 שלבים
וִידֵאוֹ: Review of DPS5020 50V 20A DC Buck converter with PC USB and Mobile app software | WattHour 2024, נוֹבֶמבֶּר
Anonim
Image
Image

כחלק מפרויקט השנה האחרונה שלי רציתי לעצב מכשיר שיפקח על קצב הלב שלך, יאחסן את הנתונים שלך בשרת ויודיע לך באמצעות התראה כאשר הדופק שלך אינו תקין. הרעיון מאחורי הפרויקט הזה עלה כאשר ניסיתי לבנות אפליקציית fit-bit המודיעה למשתמש כאשר יש לו בעיה בלב אך לא הצלחתי להבין כיצד להשתמש במידע בזמן אמת. לפרויקט יש ארבעה חלקים עיקריים. כולל המעגל הפיזי למדידת פעימות הלב, מודול Wi-Fi ESP8266 עם קוד עיבוד אותות, השרת לאחסון הקוד ואפליקציית אנדרואיד להצגת קצב הלב.

ניתן לראות למעלה סרטון המפרט את המעגל הפיזי. כל הקוד לפרויקט ניתן למצוא ב- Github שלי.

שלב 1: המעגל

המעגל
המעגל

ישנן שתי שיטות עיקריות למדידת פעימות לב אך עבור פרויקט זה החלטתי להשתמש בפוטופלטיסמוגרפיה (PPG) המשתמשת במקור אור אינפרא אדום או אדום שנפרץ דרך שכבות העור הראשונות. חיישן צילום משמש למדידת השינוי בעוצמת האור (כאשר דם זורם בכלי). אותות PPG רועשים להפליא ולכן השתמשתי במסנן פס פס כדי לסנן את התדרים הספציפיים הנדרשים. לב אנושי פועם בין תדר ל -1.6 הרץ. מגבר ה- op שהשתמשתי בו היה lm324 בעל קיזוז המתח הטוב ביותר מבין כל מגברי ה- op שהיו זמינים לי. אם אתה משחזר את הפרויקט הזה, מגבר דיוק אופציונלי יהיה בחירה טובה בהרבה.

נעשה שימוש ברווח של שניים בלבד מכיוון שסבולת המתח המרבית ב- ESP8266 היא 3.3v ולא רציתי לפגוע בלוח שלי!

עקוב אחר המעגל למעלה ונסה לגרום לו לעבוד על לוח לחם. אם אין לך אוסצילוסקופ בבית תוכל לחבר את הפלט לארדואינו ולשרטט אותו אך לוודא שהמתח אינו גבוה מהסובלנות של הארדואינו או של המיקרו -בקר.

המעגל נבדק על לוח לחם ושינוי בתפוקה נצפה כאשר הונחה אצבע לרוחב הלד והטרנזיסטור הצילומי. לאחר מכן החלטתי להלחים את הלוח יחד שלא הוצג בסרטון.

שלב 2: קוד עיבוד האותות ותקשורת שרת

Image
Image
קוד עיבוד אותות ותקשורת שרת
קוד עיבוד אותות ותקשורת שרת

החלטתי להשתמש ב- Arduino IDE ב- ESP8266 מכיוון שהוא כל כך קל לשימוש. כאשר האות נקלט הוא עדיין היה רועש מאוד ולכן החלטתי לנקות אותו בעזרת פילטר ממוצע נע FIR עם מספר מדגם של עשר. שיניתי תוכנית Arduino לדוגמא בשם "החלקה" לשם כך. ניסיתי מעט על מנת למצוא דרך למדוד את תדירות האות. הפולסים היו באורך ובמשרעת משתנים, מכיוון שללב היו ארבעה סוגים שונים של פולסים ומאפייני אותות PPG. בחרתי בערך אמצעי ידוע שתמיד האות חצה כנקודת התייחסות לכל דופק. השתמשתי במאגר טבעת כדי לקבוע מתי שיפוע האות חיובי או שלילי. השילוב של שני אלה אפשר לי לחשב את התקופה בין הפולסים כשהאות היה חיובי ושווה לערך ספציפי.

התוכנה הניבה BPM לא מדויק למדי שלא ניתן היה להשתמש בו בפועל. עם איטרציות נוספות ניתן היה לתכנן תוכנית טובה יותר אך בשל מגבלות זמן זו לא הייתה אופציה. הקוד ניתן למצוא בקישור למטה.

תוכנת ESP8266

שלב 3: תקשורת השרת והנתונים

שרת ותקשורת נתונים
שרת ותקשורת נתונים

החלטתי להשתמש ב- Firebase לאחסון הנתונים מכיוון שזהו שירות חינמי וקל מאוד לשימוש עם אפליקציות לנייד. אין ממשק API רשמי ל- Firebase עם ESP8266 אבל מצאתי שהספרייה של Arduino עובדת טוב מאוד.

יש תוכנית לדוגמה שניתן למצוא בספריית ESP8266WiFi.h המאפשרת לך להתחבר לנתב עם ה- SSID והסיסמה. זה שימש לחיבור הלוח לאינטרנט כך שניתן יהיה לשלוח נתונים.

למרות שאחסון הנתונים בוצע בקלות עדיין ישנן מספר בעיות בשליחת הודעות הדחיפה באמצעות בקשת HTTP POST. מצאתי הערה ב- Github שהשתמשה בשיטה מדור קודם לעשות זאת באמצעות הודעות ענן של Google וספריית HTTP עבור ESP8266. ניתן לראות שיטה זו בקוד ב- Github שלי.

ב- Firebase יצרתי פרוייקט והשתמשתי במפתחות ה- API ומפתחות הרישום בתוכנה. הודעות הענן של בסיס האש שימשו עם האפליקציה על מנת לשלוח הודעות דחיפה למשתמש. כאשר נבדקו התקשורת ניתן היה לראות נתונים במאגר הנתונים בזמן ש- ESP8266 פועל.

שלב 4: אפליקציית האנדרואיד

אפליקציית האנדרואיד
אפליקציית האנדרואיד

אפליקציית אנדרואיד בסיסית מאוד תוכננה עם שתי פעילויות. הפעילות הראשונה כניסה את המשתמש או רשמה אותו באמצעות ה- Firebase API. חקרתי את גליון הנתונים ומצאתי הדרכות שונות כיצד להשתמש ב- Firebase עם אפליקציה לנייד. הפעילות העיקרית שהציגה למשתמש הנתונים של המשתמש מאזין לאירועים בזמן אמת כך שלא היה עיכוב ניכר בשינויים ב- BPM של המשתמש. הודעות הדחיפה נעשו באמצעות הודעות ענן של Firebase שהוזכרו קודם לכן. יש הרבה מידע שימושי על גליון הנתונים של Firebase כיצד ליישם זאת וניתן לבדוק שהאפליקציה היא שליחת התראות מלוח המחוונים באתר Firebase.

כל הקוד לפעילויות והשיטות להעברת הודעות בענן ניתן למצוא במאגר Github שלי.

שלב 5: מסקנה

היו כמה בעיות מרכזיות במדידת BPM של המשתמש. הערכים היו מגוונים מאוד ולא היו שימושיים לקביעת בריאות המשתמש. זה הסתכם בקוד עיבוד האותות שיושם ב- ESP8266. לאחר מחקר נוסף גיליתי שללב יש ארבעה פולסים שונים עם תקופה משתנה ולכן לא היה פלא שהתוכנה לא הייתה מדויקת. דרך להילחם בכך תהיה לקחת ממוצע מארבעת הפולסים במערך ולחשב את תקופת הלב על פני ארבעת הפולסים.

שאר המערכת הייתה פונקציונלית אך זהו מכשיר ניסיוני מאוד שרציתי לבנות כדי לראות אם האובייקט אפשרי. הקוד הישן ששימש לשליחת הודעות דחיפה בקרוב לא יהיה שמיש, כך שאם אתה קורא את זה בסוף 2018 או מאוחר, דרושה שיטה אחרת. בעיה זו מתרחשת רק עם ה- ESP אם כי אם אתה רוצה ליישם זאת על Arduino מסוגל WiFi זה לא יהיה בעיה.

אם יש לך שאלות או בעיות אנא אל תהסס לשלוח לי הודעה ב- Instructables.

מוּמלָץ: