תוכן עניינים:
- אספקה
- שלב 1: עיצוב שירותים ומאפיינים מותאמים אישית
- שלב 2: קוד ארדואינו
- שלב 3: קוד Android Studio
- שלב 4: יישום סופי
וִידֵאוֹ: בנה מעקב תנועה לביש (BLE מארדואינו לאפליקציית סטודיו אנדרואיד מותאמת אישית): 4 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:11
Bluetooth Low Energy (BLE) היא צורה של תקשורת Bluetooth עם צריכת חשמל נמוכה. התקנים לבישים, כמו הבגדים החכמים שאני עוזר לעצב ב- Predictive Wear, חייבים להגביל את צריכת החשמל בכל מקום אפשרי כדי להאריך את חיי הסוללה, ולהשתמש בתדירות גבוהה BLE. קבוצת ההתעניינות המיוחדת של Bluetooth (SIG) מגדירה מספר מפרטים שמכשיר צריך ליישם כדי לקיים אינטראקציה עם התקן Bluetooth, אותם הם מכנים "פרופילים". רוב פרופילי היישומים משתמשים בפרופיל המאפיין הכללי (GATT) כדי לשלוח נתונים באמצעות קישור BLE. ישנם שלושה מושגי יסוד ב- BLE: פרופילים, שירותים ותכונות.
Bluetooth SIG סטנדרטי פרופילים, שירותים ותכונות נפוצים רבים. עם זאת, בעת יצירת חומרה מותאמת אישית לעתים קרובות יש צורך ליצור שירותים ותכונות מותאמים אישית ואין הרבה הדרכות זמינות. כדי להקשות על העניינים, Adafruit אינה מספקת כל הנחיות לעיצוב יישומים ניידים להתאמה עם מודולי BLE שלהם וקוד המקור ליישומים שלהם קשה להנדס לאחור.
הדרכה זו נועדה להסביר:
- כיצד לעצב שירותי ומאפיינים מותאמים אישית של GATT
- כיצד לתכנת את Adafruit Bluefruit LE SPI Friend לפעול כשרת GATT עבור שירותים ומאפיינים מותאמים אישית אלה
- כיצד לתכנת מכשיר אנדרואיד לפעול כלקוח 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. קבע את המאפיינים הדרושים לכל מאפיין
ישנם מספר מאפיינים שיכולים להיות בעלי מאפיין.
- קריאה: הלקוח (אפליקציית Android) יכול לקרוא ערך משרת GATT (Arduino)
- כתוב: הלקוח יכול לשנות ערך משרת GATT
- ציין: הלקוח יקבל הודעה אם ערך משתנה משרת GATT והלקוח צפוי לשלוח אישור לשרת GATT
- הודע: הלקוח יקבל הודעה אם ערך משתנה משרת 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 המלא כאן.
סקירה כללית
כמה דברים חשובים שיש לשים לב אליהם:
- בשיטת 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" לא יעבוד.
- שים לב שבשיטת ההתקנה (), "battery.begin (true);" קורא "ble.reset ();" באופן אוטומטי. אם אינך משתמש בשירות הסוללות כפי שיש לי, עליך לאפס את מודול ble (השתמש ב- "ble.reset ();") שם יש לי את הפקודה "battery.begin (true);".
- בשיטת ההתקנה (), שנה את "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". קבל נתונים המתן בזמן שהאפליקציה מקבלת את נתוני האסיפה וקובעת לאן המשתמש נמצא או זז. ראה את התוצאות שלך בדוק את התוצאות על המסך! לחץ על כפתור הסנכרון כדי לקרוא עוד נתונים.
מוּמלָץ:
תחילת העבודה עם STM32f767zi Cube IDE והעלאת סקיצה מותאמת אישית: 3 שלבים
תחילת העבודה עם STM32f767zi Cube IDE והעלאת סקיצה מותאמת אישית: קנה (לחץ על המבחן כדי לקנות/בקר בדף האינטרנט) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH · ARDUIN משמש לתכנת מיקרו -בקרי STM
הוסף פונקציה מותאמת אישית ב- Google Sheets: 5 שלבים
הוסף פונקציה מותאמת אישית ב- Google Sheets: אני בטוח שבשלב כלשהו בחייך היית צריך להשתמש בתוכנות גיליונות אלקטרוניים כמו Microsoft Excel או Google Sheets. הם פשוטים יחסית ויפים לשימוש, אך גם חזקים מאוד וניתנים להארכה. היום נבחן את גו
[עכבר לביש] בקר עכבר לביש מבוסס Bluetooth עבור Windows 10 ו- Linux: 5 שלבים
[עכבר לביש] בקר עכבר לביש מבוסס בלוטות 'עבור Windows 10 ולינוקס: הכנתי בקר עכבר מבוסס בלוטות' שניתן להשתמש בו לשליטה על מצביע העכבר ולבצע פעולות הקשורות לעכבר PC בזבוב, מבלי לגעת בכל משטח. המעגלים האלקטרוניים, המוטבעים על כפפה, יכולים לשמש כדי לעקוב אחר שעות
HelloWorld עם כפתור יציאה אנדרואיד סטודיו: 4 שלבים
HelloWorld עם כפתור יציאה AndroidStudio: מדריך זה ילמד אותך כיצד לבנות אפליקציית Android המציגה טקסט של עולם הלחצן ולחצן יציאה ליציאה מהפעילות
בנה תצוגה מותאמת אישית באולפן LCD (עבור מקלדת G15 ומסכי LCD): 7 שלבים
בנה תצוגה מותאמת אישית בסטודיו LCD (עבור מקלדת G15 ומסכי LCD).: בסדר אם יש לך רק את מקלדת ה- G15 שלך ואתה מאוד לא מתרשם מהמסכים הבסיסיים שהגיעו עם זה, אני אעביר אותך את היסודות של השימוש ב- LCD Studio. להכין בעצמך. דוגמה זו תהיה יצירת תצוגה המציגה רק את הבסיס