ข้ามไปยังเนื้อหา

แล็บ: การเชื่อมต่อ BLE

Course 1 · Module 7
Type: Hands-on lab (status → advertising → host link; optional scan)
Suggested time: ~2–2.5 hours on hardware

Read first: Lesson · Cheatsheet · ← Table of Contents · ← M06 · M08 →

หมายเหตุ: snippet ในแล็บนี้ใช้ API ของเฟิร์มแวร์ TESAIoT Bitstream ซึ่งยังไม่เปิดซอร์ส ดูรายละเอียดและตัวอย่างเทียบใน SDK สาธารณะได้ที่หมายเหตุต้นบทเรียน BLE สำหรับผลิตภัณฑ์ Edge

โฮสต์ ble-flet ยังไม่เผยแพร่ — README ของ TESAIoT_Hackathon (commit f5f09a6) ระบุว่า python-app/, ble-react/ และ ble-flet/ เป็นของผู้ดูแลและไม่อยู่ใน repo สาธารณะ ให้ใช้เส้นทางสำรองที่บทเรียนเสนอไว้แล้ว คือ GATT explorer ทั่วไป เช่น nRF Connect, LightBlue หรือ AIROC™ Bluetooth® Connect

เอกสาร ใช้เมื่อ
Hackathon ble-flet desktop central + stream
Infineon Find Me CE mobile app workflow (ผู้ผลิต)
M06 lab เปรียบเทียบ cloud path
M04 lab task + delay

  • อ่าน BLE peripheral status จาก CM55
  • สั่ง ADV start/stop/restart และยืนยันว่าโฮสต์เห็นชื่อ TESAIoT-* (หรือชื่อที่ตั้งไว้)
  • เชื่อมโฮสต์อย่างน้อยหนึ่งตัว (ble-flet หรือ GATT explorer)
  • (ทางเลือก) รัน scan สั้น ๆ และบันทึกผลจาก IPC event

  • บอร์ด + HEX/เฟิร์มแวร์ที่ เปิด BLE profile
  • PC หรือโทรศัพท์เปิด Bluetooth
  • (แนะนำ) clone TESAIoT_Hackathon และเตรียม ble-flet
  • ปิด Central อื่นที่อาจแย่งลิงก์ (nRF Connect ค้างอยู่ ฯลฯ)

  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

Pass when: sync สำเร็จ และ stack_ready (หรือเทียบเท่าตามบิลด์) แสดงว่าสแต็กพร้อม


  1. สั่ง start ADV:
uint8_t result = 0xFF;
(void)cm55_ble_periph_adv_ctrl_sync(1U, &result, 5000U);
  1. บนโฮสต์:

    • เส้นทางหลัก: รัน ble-flet → ให้มัน hunt TESAIoT-*
    • เส้นทางสำรอง: เปิด nRF Connect / แอปสแกน → หาชื่ออุปกรณ์ที่ตั้งไว้
  2. เมื่อเชื่อมแล้ว อ่าน status อีกครั้ง — คาดหวัง connection_id != 0 และ/หรือ tx_notify_enabled ตามสถานะโฮสต์

Pass when: โฮสต์เห็นและเชื่อมอุปกรณ์ได้ อย่างน้อยหนึ่งครั้ง พร้อมหลักฐาน (สกรีนช็อต)


  1. สตรีมหรืออ่านค่าสั้น ๆ บนโฮสต์ (~30–60 วินาที)
  2. กด disconnect บนโฮสต์ แล้วสั่ง ADV start/restart ถ้าจำเป็น
  3. เชื่อมใหม่ให้สำเร็จ

Pass when: ทำ reconnect ได้โดยไม่ต้อง reflash (ยกเว้นกรณี ADV timeout ที่เอกสาร Hackathon ระบุ — แล้ว reboot ตามคู่มือ)


  1. ลงทะเบียน cm55_ble_ipc_set_event_handler
  2. เรียก cm55_ble_request_scan_all() (หรือ scan_name) สั้น ๆ
  3. บันทึกอย่างน้อย 1 รายการ adv (addr / rssi / name) จากล็อก

Pass when (optional): มีล็อกผลสแกนที่อ่านได้


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

อาการ แนวทาง
Status timeout ตรวจว่า HEX เปิด BLE · รอหลังบูตนานขึ้น · ตรวจ IPC
สแกนไม่เจอ ADV start · เข้าใกล้ · ปิด Central อื่น · reboot บอร์ด
Connect แล้วหลุดทันที อย่าเปิดสองแอป Central พร้อมกัน
ble-flet ไม่เจอหลัง 60s ADV timeout — reboot หรือ HEX ที่แก้ auto-restart (ดู Hackathon README)
สับสนกับ Wi‑Fi lab M07 ไม่ต้องมี broker; โฟกัสวิทยุ BLE

Lesson · Cheatsheet · Table of Contents · M08 →

อ้างอิงบทเรียนนี้

ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน

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

ข้อความอ้างอิงภาษาอังกฤษ: "Lab: BLE Connectivity" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0

ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/firmware-sdk-edge-ai/m07-ble/l02-lab/

บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C1/M07/lab.md · Original content by Asst. Prof. Dr. Santi Nuratch (ผศ.ดร.สันติ นุราช), KMUTT. Course 1 (C1/) of drsanti/TESAIoT-Courses. TESA funded the work and holds the rights; published here under CC BY-NC 4.0. The upstream repository carries no licence file. Text kept faithful; structure, front matter, quizzes and notes added by TESA Open Knowledge.

วิธีอ้างอิง TESA ฉบับเต็ม

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA