บทเรียน 7.2 — แล็บ: การเชื่อมต่อ BLE

อ่านสถานะ peripheral สั่ง advertising ให้โฮสต์ค้นพบและเชื่อมต่อ ทดสอบลิงก์สั้น ๆ และ (ทางเลือก) ลอง scan

หลักสูตร TESA Firmware SDK สำหรับ Edge AI — โมดูล 7 · แล็บ

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

เป้าหมาย

เมื่อทำครบ คุณจะ

  1. อ่านสถานะ BLE peripheral ก่อนและหลังโฮสต์เชื่อมต่อ แล้วบันทึกเป็นตาราง
  2. สั่ง advertising และยืนยันด้วยโฮสต์ (GATT explorer) ว่าเห็นและเชื่อมต่ออุปกรณ์ได้
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ก่อนเริ่ม

  • [ ] บอร์ด + HEX/เฟิร์มแวร์ที่ เปิด BLE profile
  • [ ] PC หรือโทรศัพท์เปิด Bluetooth
  • [ ] เตรียม GATT explorer ทั่วไป (nRF Connect / LightBlue / AIROC™ Bluetooth® Connect)
  • [ ] ปิด Central อื่นที่อาจแย่งลิงก์ (nRF Connect ค้างอยู่ ฯลฯ)

โฮสต์ ble-flet ยังไม่เผยแพร่ต่อสาธารณะ — เป็นของผู้ดูแล ให้ใช้ GATT explorer ทั่วไปแทนตามที่บทเรียนเสนอไว้ · snippet ในแล็บนี้ใช้ API ของเฟิร์มแวร์ TESAIoT Bitstream ที่ยังไม่เปิดซอร์ส — ดูรายละเอียดที่หมายเหตุต้นบทเรียน บทเรียน 7.1

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ดูของจริงก่อน — เกณฑ์ผ่านของแต่ละบล็อก

บล็อก เกณฑ์ผ่าน
Part A — Peripheral status sync สำเร็จ และ stack_ready แสดงว่าสแต็กพร้อม
Part B — Advertising + host discover โฮสต์เห็นและเชื่อมอุปกรณ์ได้ อย่างน้อยหนึ่งครั้ง พร้อมหลักฐาน
Part C — Link behaviour (short soak) ทำ reconnect ได้โดยไม่ต้อง reflash
Part D — Optional scan observer มีล็อกผลสแกนที่อ่านได้ (ทางเลือก)
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (1) — Part A: Peripheral status

  1. Flash เฟิร์มแวร์ตัวอย่าง (หรือ build ของคุณที่มี BLE)
  2. จาก task บน CM55 เรียก:
ipc_ble_periph_status_t st;
bool ok = cm55_ble_periph_status_get_sync(&st, 5000U);
  1. บันทึกค่า: profile_ble_active, stack_ready, connection_id, last_error
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (2) — Part B: Advertising + host discover

  1. สั่ง start ADV:
uint8_t result = 0xFF;
(void)cm55_ble_periph_adv_ctrl_sync(1U, &result, 5000U);
  1. บนโฮสต์: เปิด GATT explorer ทั่วไป (nRF Connect ฯลฯ) แล้วหาชื่ออุปกรณ์ที่ตั้งไว้ (มักขึ้นต้น TESAIoT-)
  2. เมื่อเชื่อมแล้ว อ่าน status อีกครั้ง — คาดหวัง connection_id != 0 และ/หรือ tx_notify_enabled ตามสถานะโฮสต์
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0
  1. สตรีมหรืออ่านค่าสั้น ๆ บนโฮสต์ (~30–60 วินาที)
  2. กด disconnect บนโฮสต์ แล้วสั่ง ADV start/restart ถ้าจำเป็น
  3. เชื่อมใหม่ให้สำเร็จ
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (4) — Part D: Optional scan observer

  1. ลงทะเบียน cm55_ble_ipc_set_event_handler
  2. เรียก cm55_ble_request_scan_all() (หรือ scan_name) สั้น ๆ
  3. บันทึกอย่างน้อย 1 รายการ adv (addr / rssi / name) จากล็อก
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

เช็กความเข้าใจ — เตรียมส่งงาน

ตอบสั้น ๆ ก่อนกรอก deliverables checklist:

  1. ค่า status ที่ต่างกันระหว่างก่อน/หลัง connect คืออะไรบ้าง
  2. BLE ต่างจาก MQTT อย่างไรในโปรเจกต์ของคุณ (คนละชั้นขนส่ง / คนละโฮสต์แล็บ)
  3. ถ้าโฮสต์ไม่เห็นอุปกรณ์หลังบูตนาน ควรตรวจอะไรก่อน
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ไปต่อ

ก่อนส่งงาน ตรวจกับตัวเองว่ามีครบ:

  • [ ] ตาราง status ก่อน/หลัง connect
  • [ ] สกรีนช็อตโฮสต์ที่เห็นชื่ออุปกรณ์ (TESAIoT-* หรือชื่อที่ตั้งไว้)
  • [ ] โน้ตสั้น: BLE ต่างจาก MQTT อย่างไรในโปรเจกต์ของคุณ
  • [ ] (ถ้าทำ Part D) ตัวอย่างล็อกสแกน

พร้อมแล้ว ไปต่อ โมดูล 8 — Capstone และแหล่งเรียนรู้ของหลักสูตร

บทเรียนโมดูล 8 →

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

แหล่งที่มา

"บทเรียน 7.2 — แล็บ: การเชื่อมต่อ BLE" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย
(Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program
สัญญาอนุญาต CC BY-NC 4.0

เนื้อหาต้นฉบับโดย ผศ.ดร.สันติ นุราช ภาควิชาวิศวกรรมระบบควบคุมและเครื่องมือวัด คณะวิศวกรรมศาสตร์
มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี (KMUTT) (https://github.com/drsanti) ภายใต้การสนับสนุนของสมาคมสมองกลฝังตัวไทย (TESA)
นำเข้าจาก drsanti/TESAIoT-Courses — C1 (commit 287c218) ภายใต้สัญญาอนุญาต CC BY 4.0

ไม่มีภาพจากบุคคลที่สามในสไลด์ชุดนี้

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0