כיצד להוסיף במהירות ובאופן משתלם Bluetooth 5.3 לתכני Edge IoT

מאת ‎Jens Wallmann

באדיבות ‎העורכים האירופיים של DigiKey

תחרות בלתי מתפשרת מפעילה לחץ על מפתחים של התקני אינטרנט של דברים (IoT) להשיק במהירות מוצרים חדשים וחדשניים תוך הפחתת עלויות והבטחת תקשורת מאובטחת, איתנה ובהספק נמוך. צמתי קצה IoT מסורתיים ואינטליגנטיים כוללים יחידת מיקרו-בקר (MCU) כדי לאפשר עיבוד קצה ו-IC אלחוטי עבור קישוריות.‏ בעיות מתעוררות כשצוותי תכנון חסרים את כישורי תדר הרדיו (RF) הדרושים עבור‏ פתרון אפקטיבי.

כדי להשלים, לאשר ולהעביר את תכני ה-IoT האלחוטיים שלהם לייצור בנפח גדול בזמן, מפתחים חייבים להפוך את תהליך הפיתוח ליעיל יותר. דרך אחת להגביר את יעילות תהליך הפיתוח כרוכה בשימוש ב-MCU הספק-נמוך עם ממשק Bluetooth Low Energy‏ (BLE) אלחוטי משולב.

מאמר זה מציג את סדרת ה-STM32WBA52 MCU הספק-אולטרה-נמוך מבית STMicroelectronics ומראה כיצד מפתחים יכולים להשתמש בלוח הערכה‏ BLE, כלי פיתוח ודוגמאות יישום כדי להגיע במהירות לתכן BLE 5.3 אלחוטי עובד. מבט קצר על תכנות וחיווט MCU כלול גם כן.‏

MCU אלחוטי חוסך-הספק עם רמת אבטחה גבוהה

מוסמכת BLE 5.3, סדרת ה-STM32WBA52 MCU‏ היא פתרון משתלם המאפשר למפתחים מתחילים להוסיף במהירות תקשורת אלחוטית להתקנים שלהם. מיקרו-בקרים אלה, המבוססים על ליבת ה-ARM® Cortex®-M33‏ עם שעון 100 מגה-הרץ (MHz‏) וטכנולוגיית TrustZone, מספקים רמה גבוהה של‏ אבטחה, מ‏גינים על נתונים וקניין רוחני (IP‏) ומונעים פריצה ושכפול התקנים.

בעוד ל-MCU האלחוטי STM32WBA52CEU6 יש 512 קילו-בייט (Kbytes‏) של‏ זיכרון Flash‏ ו-96 קילו-בייט של RAM סטטי (SRAM‏), גרסת ה-STM32WBA52CGU6 מציעה 1 מגה-בייט (Mbyte‏) של‏ זיכרון Flash‏ ו-128‏ קילו-בייט של‏ SRAM‏. איור 1‏ מראה את התחום הפונקציונלי של ה-IC במארז‏ ‎48 UFQFN. דרך אגב, עד ‏20‏ ערוצי מגע קיבוליים מאפשרים את העבודה של‏ התקנים אטומים הרמטית (אין צורך בקלידים מכניים).

דיאגרמת מלבנים פונקציונלית של STMicroelectronics STM32WBA52איור 1‏: דיאגרמת מלבנים פונקציונלית של ה-STM32WBA52 מראה את רדיו ה-BLE 5.3 המשולב, Flash‏ ו-SRAM‏ ותמיכת אבטחה. (מקור תמונה: STMicroelectronics)

‏מערכת אקולוגית STM32Cube‏ עשירה תומכת במימוש ותכנות של יישום ה-BLE. היא כוללת את סביבת הפיתוח STM32CubeIDE, כמו גם כלים כמו מגדיר התצורה ההיקפי ומחולל הקוד STM32CubeMX‏, בוחן הביצועים STM32CubeMonitorRF‏, וגרסאות השולחניות והענן עבור בינה מלאכותית (AI)‏ STM32Cube.AI. לוח הערכה‏ תואם, ה-NUCLEO-WBA52CG, מפשט בניית אב-טיפוס ומאיץ תיקוף עם יישומי דוגמה BLE‏ רבים וקוד מקור זמין באופן חופשי.

אבטחת התקן ונתונים

קו מוצרי ה-STM32WB תואם עם תקני האבטחה IoT‏ ‏Platform Security Arm (PSA) Certified Level 3 ו-Security Evaluation Standard for IoT Platforms Assurance Level 3‏ (SESIP3). הגנת הסייבר מוגברת על ידי תוכנית האבטחה PSA המבוססת על בידוד אבטחה, הגנת זיכרון, הגנה מפני חבלה, וה-Cortex-M33 של ה-MCU עם ארכיטקטורת Arm TrustZone. ה-Trusted Firmware עבור Arm Cortex-M‏ (TF-M) תואם עם תקן התעשייה PSA Certified Security Framework with PSA immutable Root of Trust‏ (RoT), כולל אתחול (Boot‏) מאובטח ועדכון קושחה מאובטח (X-CUBE-SBSFU), קריפטוגרפיה, אחסון מאובטח, ואישור זמן ריצה.

רדיו משולב מקטין למינימום את מפרט החומרים (BOM)

מודול הרדיו הספק-אולטרה-נמוך המשולב מספק 10+ דציבלים מיוחסים להספק יציאה RF של 1 מילי-וואט (mW‏) (dBm‏). הוא מאפשר תקשורת אמינה למרחקים קצרים (BLE 5.3) ומרחקים ארוכים (טווח גדול) עם קצבי נתונים של עד 2‏ מגה-ביט לשנייה (Mbps‏). מצב המתנה עמוקה הספק-נמוך מפחית הספק חשמלי כולל כשתקשורת רדיו פעילה. יחידות ה-TM32WBA MCU יכולות לתמוך בעד 20 חיבורים בו-זמניים.

מאפייני ביצועים חשמליים של מודול‏ הרדיו:

  • מקמ"ש RF‏ 2.4‏ גיגה-הרץ (GHz‏‏) תומך BLE 5.3
  • רגישות קליטה (Rx):‏ ‎95 dBm- ‏(BLE ב-‎1 Mbps)
  • הספק יציאה ניתן לתכנות, עד ‎10 dBm+ בצעדים של 1‎ dB
  • שנאי Balun משולב

סוללה קטנה יותר הודות לניהול אנרגיה יעיל ביותר

ליחידות ה-STM32WBA52 MCU יש טכנולוגיות חוסכות-אנרגיה רבות, כולל Low Power Direct Memory Access‏ (LPDMA) של STMicroelectronics ומצבים חוסכי-הספק גמישים עם זמני יקיצה מהירים. ביחד, מאפיינים אלה יכולים להפחית צריכת הספק של MCU בעד %‏90‏, שמתורגם לסוללה קטנה יותר‏ משמעותית או לחיי סוללה‏ ארוכים יותר.

מאפייני ביצועים חשמליים של‏ FlexPowerControl:

  • אספקת כוח של 1.71 עד 3.6 וולט
  • מצב המתנה (standby) ‏140 ננו-אמפר (nA) ‏(16 פיני יקיצה)
  • מצב המתנה (standby) ‏200 ננו-אמפר עם שעון זמן-אמת (RTC)
  • מצב המתנה (standby) ‏2.4 מיקרו-אמפר (μA) עם 64 קילו-בייט‏ SRAM‏
  • מצב עצירה 16.3‎ μA עם 64 קילו-בייט‏ SRAM‏
  • מצב ריצה 45‎ μA/MHz ב-3.3 וולט
  • רדיו: קליטה (Rx)‏ 7.4 מילי-אמפר (mA) / שידור (Tx)‏ ב-0‎ dBm 10.6 mA

נוסף לכך, Bluetooth 5.3‏ מציע החלפה מהירה יותר בין מחזורי פעולה (duty cycles) נמוכים וגבוהים, עושה אותו יעיל יותר אנרגטית מגרסאות קודמות.

ארכיטקטורה של מחסנית‏ (Stack) ה-Bluetooth ומנות (Packets‏) הנתונים

יחידות ה-Arm Cortex-M33 MCU ליבה-יחידה ב-STM32WBA52 מתוכננות עבור הפיתוח של‏ קושחת יישום, כולל פרופילים ושירותים במחסנית ה-BLE‏ (בקר ומארח). יחידות ה-MCU מעבדות את תזרים הנתונים ממודול ה-RF המשולב בשכבה הפיזית (PHY) הנמוכה ביותר אל ה-Generic Attribute Profile‏ (GATT) ו-Generic Access Profile‏ (GAP) (איור 2‏). ה-GAP מגדיר ומנהל פרסום וחיבור, בעוד ה-GATT מגדיר ומנהל חילופי נתונים כניסה/יציאה.

תמונה של יחידות MCU המעבדות את תזרים הנתונים מ-PHY רדיו אל ה-GATT ו-GAPאיור 2: יחידות ה-MCU מעבדות את תזרים הנתונים מ-PHY הרדיו אל ה-GATT ו-GAP. (מקור תמונה: STMicroelectronics)

BLE‏ שולח מנות (Packets‏) נתונים המוגדרות כמבנה‏ מסגרת קבועה של‏ סדרת ביטים. אורך אזור נתוני המשתמש יכול להשתנות באופן דינמי בין 27 ל-251 בייטים.

דוגמאות יישום‏ BLE‏

האנציקלופדיה המקוונות, STMicro-Wiki עבור יחידות STM32WBA MCU, כוללת מספר דוגמאות יישום עבור תפקידי Bluetooth‏ שונים, כולל:

  • מודעה: BLE_Beacon
  • חיישן: BLE_HealthThermometer, ‏BLE_HeartRate
  • גשר: BLE_SerialCom
  • נתב: BLE_p2pRouter
  • נתונים: BLE_DataThroughput,‏ BLE_p2pServer & Multi Slave BLE_p2pClient
  • מנטר RF: ‏BLE_TransparentMode,‏
  • עדכון קושחה דרך האוויר‏: BLE_Fuota

על ידי התאמת פרויקט BLE שלהם, מתכנני התקנים ומתכנתים יכולים להבזיק את הקובץ הבינארי שעבר הידור מספריית הפרוייקט המתאימה של GitHub ללוח ה-NUCLEO‏ ולהתחיל את חיבור ה-Bluetooth‏ לסמארטפון או מחשב אישי שולחני (PC). תוכנת המתכנת הדרושה, STM32CubeProg‏, מספקת קריאה, כתיבה ובדיקה של‏ זיכרון התקן באמצעות ממשק ניפוי הבאגים כמו גם ממשק טוען האתחול (Bootloader).

הרצה של דוגמת ה-BLE‏ “חיישן מדחום בריאותי”

פרופיל המדחום הבריאותי (HTP‏) הוא פרופיל אנרגיה-נמוכה מבוסס ‏GAP מוגדר על ידי ה-Bluetooth Special Interest Group‏ (SIG‏). הוא משלב ‏אספן מדחום בריאותי וחיישן מדחום בריאותי לקישור והחלפת נתונים ביישומים שונים (איור 3‏).

תמונה של BLE‏ תקשורת בין לוח ה-NUCLEO‏ וסמארטפון (הקלק להגדלה)איור 3‏: תקשורת BLE בין לוח ה-NUCLEO‏ כחיישן/שרת וסמארטפון כאספן/לקוח (Client‏). (מקור תמונה: STMicroelectronics)

חיישן המדחום הבריאותי:

  • מודד את הטמפרטורה וחושף אותה באמצעות שירות מדחום בריאותי
  • מכיל את שירות פרטי ההתקן שיזוהה על-ידי ההתקן המרוחק
  • מהווה את שרת ה-GATT

אספן המדחום הבריאותי:

  • ניגש למידע שנחשף על ידי חיישן המדחום הבריאותי ויכול להציגו למשתמש-הסופי או לשמור אותו בזיכרון בלתי-נדיף עבור ניתוח מאוחר יותר
  • מהווה את לקוח (Client‏) ה-GATT

לאחר שהקובץ הבינארי של המדחום הבריאותי מובזק אל תוך ה-MCU של ה-NUCLEO, על המפתח לעקוב אחר הצעדים הבאים כדי להריץ את דוגמת היישום BLE:

שימוש ביישום הסמארטפון

  1. התקן ST BLE Toolbox בסמארטפון. האפליקציה‏ משמשת עבור אינטראקציה עם התקני ST BLE וניפוי באגים שלהם‏.
  2. הפעל את לוח ה-STM32WBA NUCLEO‏ עם יישום המדחום הבריאותי מובזק פנימה.
  3. הפעל את ה-Bluetooth‏ (BT) של הסמארטפון וסרוק התקני BT הקיימים באפליקציה. בחר מדחום בריאותי וחבר.

שימוש בממשק הדפדפן האינטרנטי

  1. הבטיח תאימות דפדפן:
    • על מחשב שולחני: Chrome‏, Edge‏ או Opera
    • על התקן‏ סמארטפון: Chrome Android‏
  2. הפעל את לוח ה-STM32WBA NUCLEO‏ עם יישום המדחום הבריאותי מובזק פנימה.
  3. הפעל Bluetooth‏ במחשב.
  4. פתח את דף האינטרנט https://applible.github.io/Web_Bluetooth_App_WBA/ בדפדפן.
  5. הקלק על כפתור החיבור בחלקו העליון של דף האינטרנט, ובחר אחר כך ברשימת ההתקנים HT_xx והקלק זווג. ההתקן עכשיו‏ מחובר.
  6. הקלק על Health Thermometer כדי להראות את הממשק.

טבלה 1‏ מתארת את המבנה של‏ השירותים של‏ חיישן המדחום הבריאותי. ה-Universally Unique Identifier‏ (UUID) באורך 128‎-bit מבדיל בין המאפיינים האינדיבידואליים והשירותים.

שירות מאפיין תכונה UUID גודל
שירות מדחום בריאותי 0x1809
מדידת טמפרטורה מציין 0x2A1C 13
סוג טמפרטורה קורא 0x2A1D 1
טמפרטורת ביניים מודיע 0x2A1E 13
מרווח מדידה קורא, כותב, מציין 0x2A21 2
שירות מידע התקן 0x180A
מחרוזת שם יצרן קורא 0x2A29 32
מחרוזת מספר דגם קורא 0x2A24 32
מזהה מערכת קורא 0x2A23 8

טבלה 1‏: שירותי GATT וה-UUID שלהם ‏עבור GAP "חיישן המדחום הבריאותי". (מקור תמונה: STMicroelectronics)

רצף ה-JavaScript מ-GitHub מראה כיצד ממשק הדפדפן האינטרנטי מסנן את מאפייני התפוקה השונים של נתוני GATT (רשימה 1).

Copy
[...]

// Filtering the different datathroughput characteristics
  props.allCharacteristics.map(element => {
    switch (element.characteristic.uuid) {
      case "00002a1c-0000-1000-8000-00805f9b34fb":
        IndicateCharacteristic = element; // Temperature Measurement (TEMM)
        IndicateCharacteristic.characteristic.startNotifications();
        IndicateCharacteristic.characteristic.oncharacteristicvaluechanged = 
        temperatureMeasurement;
        break;
      case "00002a1d-0000-1000-8000-00805f9b34fb":
        ReadCharacteristic = element; // Temperature Type
        readTemperatureType();
        break;
      case "00002a1e-0000-1000-8000-00805f9b34fb":
        NotifyCharacteristic = element; //Immediate Temperature
        NotifyCharacteristic.characteristic.startNotifications();
        NotifyCharacteristic.characteristic.oncharacteristicvaluechanged = notifHandler;
        break; 
      case "00002a21-0000-1000-8000-00805f9b34fb":
        ReadWriteIndicateCharacteristic = element; // Measurement Interval
        readMeasurementInterval();
        break;
      default:
        console.log("# No characteristics found..");
    }
  });

[...]

רשימה 1: רצף JavaScript זה מסנן את מאפייני התפוקה השונים של נתוני GATT מטבלה 1. (מקור רשימה: GitHub,‏ STMicroelectronics)

מעקב אחר תהליכי מחסנית BLE

ה-NUCLEO-WBA52CG משבץ את מנפה השגיאות והמתכנת התוך-מעגלי‏ ST-LINK/V3, תוך תמיכה בדוחף היציאה STM32 virtual COM‏ עבור תקשורת עם‏ מחשב אישי (PC) באמצעות ממשק טורי. כל מסוף תוכנה יכול לפתוח יציאת תקשורת טורית זו כדי להראות את הודעות הטקסט הקצרות שנוצרו בקוד על ידי הפונקציה APP_DBG_MSG.

יש לאפשר את העקבות בתוך הפרוייקט בקובץ app_conf.h

define CFG_DEBUG_APP_TRACE#  ‏ (1)

לחלופין, אפליקציית הסמארטפון "SE BLE Toolbox" מציעה‏ פונקציית עקיבה בלשונית <Application Log>.

תכנות יישומי BLE 5.3

עבור תכנות יחידות ה-STM32WBA52 MCU, חברת STM‏ הרכיבה את חבילת ה-STM32CubeWBA המורכבת מ-Hardware Abstraction Layer ‏(HAL), ממשקי תכנות יישום (APIs) שכבה-נמוכה ו-CMSIS‏, מערכת File,‏ RTOS‏, BLE/802.15.4, ‏Thread, ומחסניות Zigbee‏, כמו גם דוגמאות של הרצות על לוחות STMicroelectronics.

מערכי מבנה פרויקט עבור כל שלוש סביבות הפיתוח (IDEs), כגון IAR Embedded Workbench עבור Arm‏ (EWARM),‏ Keil MDK-ARM, ו-STM32CubeIDE, כלולים בכל דוגמת יישום של NUCLEO-WBA52CG BLE.

במקרה של דוגמת המדחום הבריאותי, קבצים מסוימים בלבד מעץ ספריות הפרויקט (מסגרת באיור 4 שמאל) מפיקים את שירותי ה-GATT. שתי הרוטינות, "שירות מדחום בריאותי” (hts) ו-"שירות מידע התקן” ‏(dis‏) מטבלה 1‏, רצות במקביל (ימין תחתון של‏ איור 4‏).

תרשים של מתכנתים היכולים להוסיף את תכולת ה-GATT שלהם לקבצי הקוד הממוסגרים (הקלק להגדלה)איור 4: מתכנתים יכולים להוסיף את תכולת ה-GATT שלהם לקבצי הקוד הממוסגרים (שמאל); קבצים אלה יוצרים את שירותי ה-GATT (ימין). (מקור תמונה: STMicroelectronics)

מתכנתים יכולים להשתמש בקוד המקור עבור הפרויקטים שלהם ולהרחיבו בתכולת ה-GATT שלהם באזורים המסומנים ב-USER CODE BEGIN / USER CODE END (רשימה 2). רצף האתחול מקובץ hts.c מייצר את מדידת הטמפרטורה (TEMM) האופיינית GATT הנושא את ה-UUID 0x2A1C.

Copy
[...]
 void HTS_Init(void)
 {
 [...]

  /* TEMM, Temperature Measurement */
  
  uuid.Char_UUID_16 = 0x2a1c;
  ret = aci_gatt_add_char(HTS_Context.HtsSvcHdle,
                          UUID_TYPE_16,
                          (Char_UUID_t *) &uuid,
                          SizeTemm,
                          CHAR_PROP_INDICATE,
                          ATTR_PERMISSION_NONE,
                          GATT_DONT_NOTIFY_EVENTS,
                          0x10,
                          CHAR_VALUE_LEN_VARIABLE,
                          &(HTS_Context.TemmCharHdle));
  if (ret != BLE_STATUS_SUCCESS)
  {
    APP_DBG_MSG("  Fail   : aci_gatt_add_char command  : TEMM, error code: 0x%2X\n", ret);
  }
  else
  {
    APP_DBG_MSG("  Success: aci_gatt_add_char command  : TEMM\n");
  }

  /* USER CODE BEGIN SVCCTL_InitService2Char1 */

  /* USER CODE END SVCCTL_InitService2Char1 */

 [...]
 }
[...]

רשימה 2: רצף האתחול מקובץ hts.c מייצר את ה-TEMM האופיינית GATT. (מקור תמונה: GitHub,‏ STMicroelectronics)

דרישות רכיבים חיצוניים

ה-MCU האלחוטי STM32WBA52 דורש ‏מספר רכיבים חיצוניים בלבד עבור עבודה בסיסית עם פונקציונליות Bluetooth‏. רכיבים אלה כוללים קבלים עבור אספקת מתח, מתנד גביש, אנטנה של‏ לוח מעגל מודפס (לוח pc) עם תאום עכבות ומסנן הרמוני (איור 5‏).

תרשים של סיום STMicroelectronics STM32WBA52 RF‏איור 5‏: עבור Bluetooth‏, סיום ה-RF של STM32WBA52‏ מחובר לרשת תאום-עכבות, מסנן הרמוני ואנטנה. (מקור תמונה: STMicroelectronics)

סיכום

מפתחים של התקני IoT אלחוטיים חייבים לקצר מחזורי תכנון ולהקטין עלויות כדי להתחרות בשוק המתפתח במהירות. עם זאת, תכנון RF הוא‏ מאתגר. ה-STM32WBA52 MCU, עם ממשק ה-BLE 5.3 שלו, מאפשר למפתחים לצאת לשוק במהירות ותוך עמידה במבחן של עלות-תועלת. מחסנית ה-BLE המתוכנתת-מראש ‏ומספר דוגמאות יישום BLE‏ יוצרות תבנית תכנות עבור פרויקטים מותאמים במיוחד בהם תוכן GATT מוכנס בקלות.

DigiKey logo

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

אודות כותב זה

Jens Wallmann

Jens Wallmann

Jens Wallmann הוא עורך פרילנסר ותורם לפרסומי אלקטרוניקה, הן בדפוס והן במקוון. כמהנדס חשמל (הנדסת תקשורת) ומהנדס אלקטרוניקה תעשייתית יש לו ניסיון של יותר מ-25 שנים בפיתוח אלקטרוניקה עם התמקדות בטכנולוגיית מדידה, אלקטרוניקה לרכב, תעשיית תהליכים ותדרי רדיו.

אודות מוציא לאור זה

העורכים האירופיים של DigiKey