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

בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית): 4 שלבים
בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית): 4 שלבים

וִידֵאוֹ: בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית): 4 שלבים

וִידֵאוֹ: בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית): 4 שלבים
וִידֵאוֹ: מעקב תנועה 2024, יולי
Anonim
בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית)
בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית)

Bluetooth Low Energy (BLE) היא צורה של תקשורת Bluetooth עם צריכת חשמל נמוכה. התקנים לבישים, כמו הבגדים החכמים שאני עוזר לעצב ב- Predictive Wear, חייבים להגביל את צריכת החשמל בכל מקום אפשרי כדי להאריך את חיי הסוללה, ולהשתמש בתדירות גבוהה BLE. קבוצת ההתעניינות המיוחדת של Bluetooth (SIG) מגדירה מספר מפרטים שמכשיר צריך ליישם כדי לקיים אינטראקציה עם התקן Bluetooth, אותם הם מכנים "פרופילים". רוב פרופילי היישומים משתמשים בפרופיל המאפיין הכללי (GATT) כדי לשלוח נתונים באמצעות קישור BLE. ישנם שלושה מושגי יסוד ב- BLE: פרופילים, שירותים ותכונות.

Bluetooth SIG סטנדרטי פרופילים, שירותים ותכונות נפוצים רבים. עם זאת, בעת יצירת חומרה מותאמת אישית לעתים קרובות יש צורך ליצור שירותים ותכונות מותאמים אישית ואין הרבה הדרכות זמינות. כדי להקשות על העניינים, Adafruit אינה מספקת כל הנחיות לעיצוב יישומים ניידים להתאמה עם מודולי BLE שלהם וקוד המקור ליישומים שלהם קשה להנדס לאחור.

הדרכה זו נועדה להסביר:

  1. כיצד לעצב שירותי ומאפיינים מותאמים אישית של GATT
  2. כיצד לתכנת את Adafruit Bluefruit LE SPI Friend לפעול כשרת GATT עבור שירותים ומאפיינים מותאמים אישית אלה
  3. כיצד לתכנת מכשיר אנדרואיד לפעול כלקוח GATT כדי לקרוא את הנתונים משרת GATT

הדרכה זו אינה מיועדת לתרגום ליישום מוכן להפקה - זוהי רק הקדמה ל- BLE.

קריאת רקע:

  • תיעוד Adafruit Bluefruit LE SPI Friend
  • אם אינך מכיר GATT או BLE

אספקה

  • 1x - מכשיר Arduino (אני משתמש ב- UNO עבור הדרכה זו)
  • 1x - Adafruit Bluefruit LE SPI Friend
  • 8x - חוטי מגשר זכר לגבר
  • ציוד הלחמה בסיסי (לסיכות כותרת הלחמה ב- SPI Friend)
  • מחשב (לתכנות מכשיר ה- Arduino ומכשיר האנדרואיד)

שלב 1: עיצוב שירותים ומאפיינים מותאמים אישית

מבוא

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

שירותי GATT הם אוסף של מאפיינים.

מאפייני GATT מכילים מאפיין, ערך ואפס או יותר מתארים.

  • נכס: כיצד צריך לנהל את הנתונים על ידי הלקוח (אפליקציית Android) למשל לקרוא, לכתוב, לכתוב ללא תגובה, להודיע ולציין.
  • ערך: הערך האמיתי של המאפיין למשל 1089
  • מתארים: זהו מידע על הערך למשל. היחידה, אלפיות השנייה

לְעַצֵב

אוקיי, עכשיו אתה יודע מה הם שירותים ומאפיינים, עלינו להבין כיצד לעצב כמה שירותים ומאפיינים כדי לקבל את הנתונים המותאמים אישית שלנו ולשלוח אותם משרת GATT שלנו (Arduino) ללקוח (אפליקציית Android). הבה נבחן מכשיר Arduino שאוסף נתונים ממודול תאוצה-גירוסקופ (AGM). אנו רוצים לאסוף מדידות ג'ירוסקופ והאצה משלושה צירים מרחביים ואת הזמן שבו נלקחו מדידות אלה ולהעביר נתונים אלה ליישום הנייד שלנו. אנו רוצים גם לדעת מתי עלינו לטעון את המכשיר, לכן אנו רוצים לקרוא את רמת הסוללה ולשדר זאת ליישום הנייד שלנו.

1. האם אנו יכולים להשתמש בכל אחד מהשירותים והמאפיינים הסטנדרטיים?

Bluetooth SIG סטנדרטי שירותים ומאפיינים נפוצים רבים. ראשית, בדוק את אלה כדי לראות אם אתה יכול לבחור את אחד מהשירותים והמאפיינים הסטנדרטיים. השירותים והמאפיינים הסטנדרטיים יכולים לנצל חבילות נתונים הרבה יותר קטנות מכיוון שמזהה ייחודי אוניברסלי (UUID) הוא 16 סיביות בעוד ששירותים ומאפיינים מותאמים אישית חייבים לנצל 128 סיביות עבור ה- UUID שלהם. מידע נוסף על UUID מאוחר יותר. מחיפושנו מצאנו "שירות סוללות" סטנדרטי המכיל "רמת סוללה" אופיינית אחת.

2. הפרד בין כל ערכי הנתונים שברצונך לשלוח באמצעות BLE למאפיינים ושירותים

אנו יכולים לחלק את נקודות הנתונים המותאמות אישית שלנו לשבעה מאפיינים מותאמים אישית בתוך שירות מותאם אישית אחד. אנו נקרא לשירות זה "שירות האסיפה". הוא יכיל 7 מאפיינים: האצת x, האצת y, האצת z, x-gyroscope, y-gyroscope, z-gyroscope והתייחסות לזמן.

3. קבע את המאפיינים הדרושים לכל מאפיין

ישנם מספר מאפיינים שיכולים להיות בעלי מאפיין.

  1. קריאה: הלקוח (אפליקציית Android) יכול לקרוא ערך משרת GATT (Arduino)
  2. כתוב: הלקוח יכול לשנות ערך משרת GATT
  3. ציין: הלקוח יקבל הודעה אם ערך משתנה משרת GATT והלקוח צפוי לשלוח אישור לשרת GATT
  4. הודע: הלקוח יקבל הודעה אם ערך משתנה משרת GATT והלקוח לא צפוי לשלוח אישור לשרת GATT.

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

4. צור UUID לשירותים ומאפיינים מותאמים אישית ומצא UUID סטנדרטיים

כפי שציינתי בקצרה קודם לכן, שירותים ומאפיינים סטנדרטיים של Bluetooth משתמשים ב- UUID של 16 סיביות בעוד ששירותים ומאפיינים מותאמים אישית משתמשים ב- UUID של 128 סיביות. לדוגמה, עיין במספר שירות הסוללה המוקצה ב- Bluetooth SIG. המספר המוקצה 0x180F מייצג את UUID של 128 סיביות "0000180F-0000-1000-8000-00805F9B34FB". ארבע הספרות (16 סיביות) מודגשות ייחודיות לשירות או המאפיין הסטנדרטי המסוים בעוד שהדמויות האחרות נשמרות בין כל השירותים והמאפיינים הסטנדרטיים. מכיוון שהלקוח ושרת GATT יודעים ששירותים ומאפיינים סטנדרטיים משתנים רק לפי הספרות המודגשות, ניתן להקטין באופן משמעותי את גודל המנות של הנתונים. עם זאת, שירותים ומאפיינים מותאמים אישית אינם יכולים לפעול תחת אותה הנחה.

במקום זאת, שירותים ומאפיינים מותאמים אישית חייבים לנצל UUID ללא ביטוי של 128 סיביות. לפניכם מחולל UUID מקוון. כל UUID מלבד ה- UUID הסטנדרטי מקובל על UUID מותאם אישית. עם זאת, מוסכמת שמות אופיינית היא ציון שירות מותאם אישית 00000001- … ומאפיינים בתוך שירות מותאם אישית 00000002- …

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

שלב 2: קוד ארדואינו

עדכן את החבר BLUEFRUIT LE SPI

ראשית, חבר את Adafruit Bluefruit LE SPI Friend כפי שהם מציינים במדריך החיבור שלהם והפעל את מכשיר ה- Arduino. וודא שאתה יכול למצוא את Adafruit Bluefruit LE SPI Friend במכשיר האנדרואיד שלך בעת סריקה אחר מכשירי Bluetooth. הורד את אפליקציית Bluefruit Connect, התחבר ל- Adafruit Bluefruit LE SPI Friend ואפשר לה לעדכן את הקושחה במכשיר. שלב זה חשוב. אם לא תעדכן את הקושחה, סביר להניח שהפקודות שאתה מוציא את המכשיר באמצעות Arduino ייכשלו ולא תהיה שגיאה ברורה שתגלה מה הבעיה.

הנה המאגר שלי לפרויקט הזה. אתה יכול לראות את קוד ה- Arduino המלא כאן.

סקירה כללית

כמה דברים חשובים שיש לשים לב אליהם:

  1. בשיטת setup (), כל UUID המותאמים אישית חייבים להכיל "-" בין כל שני תווים. לדוגמה, "AT+GATTADDCHAR = UUID128 = 00-00-00-05-62-7E-47-E5-A3-FC-DD-AB-D9-7A-A9-66" יפעל. "AT+GATTADDCHAR = UUID128 = 00000005-627E-47E5-A3fCDDABD97AA966" לא יעבוד.
  2. שים לב שבשיטת ההתקנה (), "battery.begin (true);" קורא "ble.reset ();" באופן אוטומטי. אם אינך משתמש בשירות הסוללות כפי שיש לי, עליך לאפס את מודול ble (השתמש ב- "ble.reset ();") שם יש לי את הפקודה "battery.begin (true);".
  3. בשיטת ההתקנה (), שנה את "if (! Ble.begin (false))" ל- "if (! Ble.begin (true))" "אם ברצונך לבצע איתור באגים.

הקוד הזה די מסביר את עצמו. כללתי תיאורים של כל שיטה מותאמת אישית. שיטת ההתקנה מכינה את מודול BLE לפעול כשרת GATT. שיטת הלולאה עוברת טאטא מזויף של מודול הג'ירוסקופ של מד התאוצה (AGM) ויוצרת מספר אקראי מ -1 עד 100 לערכים אלה. הסוללה מתרוקנת ב -1% כדי לדמות שימוש בסוללה. אתה יכול להחליף קוד זה בערכי החיישנים בפועל בקלות. קוד זה מניח שתעביר מערך של נתוני AGM, באורך 6 מדידות, ולא מדידה אחת, שכן ניתוח חלון של נתוני AGM עשוי להיות שימושי יותר מאשר נקודת נתונים אחת. אם תשנה את גודל המערך, שים לב שיהיו שינויים הנדרשים בקוד האולפן של Android. כדי ללכוד מערך נתונים, עליך להעביר מונה יחד עם הנתונים שאתה מתכוון לשלוח. מונה זה מאפשר לך למצוא היכן אתה נמצא בחלון מאפליקציית Android studio כך שתוכל לחכות להקשיב לנקודות הנתונים החסרות בחלון. ללא הדלפק או עם מערך בגודל אחר, פרויקט אולפן האנדרואיד יחמיץ נקודות נתונים או יתקע בלולאה ויחכה לנקודות הנתונים הנותרות שהוא מצפה.

שלב 3: קוד Android Studio

הנה המאגר שלי לפרויקט הזה. אתה יכול לראות את הקוד המלא של Android Studio כאן.

סקירה כללית

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

שלב 4: יישום סופי

יישום סופי
יישום סופי
יישום סופי
יישום סופי
יישום סופי
יישום סופי

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

הפעל את האפליקציה

כדי להתחיל, לחץ על סמל המשגר של היישום.

הרשאות הענקה

יהיה עליך לאשר את השימוש בכמה הרשאות כדי שהאפליקציה תפעל כראוי.

סרוק מכשירים

לאחר מכן לחץ על כפתור "סריקה" בפינה השמאלית העליונה של האפליקציה.

בחר את המכשיר הלביש שלך

לאחר מכן, בחר את המכשיר הלביש שלך מרשימת מכשירי ה- BLE הזמינים. שמו הוא "חומרה BLE Arduino". קבל נתונים המתן בזמן שהאפליקציה מקבלת את נתוני האסיפה וקובעת לאן המשתמש נמצא או זז. ראה את התוצאות שלך בדוק את התוצאות על המסך! לחץ על כפתור הסנכרון כדי לקרוא עוד נתונים.

מוּמלָץ: