Skip to content

Lab: Capstone Mini Project

Course 1 · Module 8 Type: Capstone (integrate M02–M07 on real hardware) Suggested time: 2–4 hours (+ optional extra time)

Read first: Lesson · Capstone brief · Course package · ← Table of Contents · ← M07

Note: the snippets in this lab use the API of the TESAIoT Bitstream firmware, which is not yet open source. See detail and equivalent examples in the public SDK in the note at the top of the lesson Plan the Capstone and Use the Resource Map

The ble-flet host is not yet published — the TESAIoT_Hackathon README (commit f5f09a6) states that python-app/, ble-react/ and ble-flet/ belong to the maintainers and are not in the public repo. Use the backup path the lesson already suggests: a general GATT explorer such as nRF Connect, LightBlue, or AIROC™ Bluetooth® Connect

Document Use when
M05 lab sensor / window
M06 lab Wi‑Fi / MQTT
M07 lab A BLE peripheral / host
M04 lab Tasks / queue
Hackathon web-app / ble-flet Live dashboard evidence
Bitstream Studio Host / broker tools

Deliver a mini-project running on real hardware, covering:

  • A sensor path + indication
  • ≥ 2 FreeRTOS tasks
  • Connectivity: MQTT and/or BLE (at least one path, with a command received or a link confirmed)
  • A README others can reproduce
  • Demo evidence (a photo / clip / dashboard)

  • The main labs M02–M07 meet their minimum bar (at least the path you’ll use in the Capstone)
  • The combined project builds on your machine
  • A broker + Wi‑Fi or a BLE host of your choice
  • capstone-brief.md open, ready to fill in

  1. Architecture (30–45 minutes) — fill in the Task / Topic / BLE table in the capstone brief
  2. Sensor + indication — a fixed-period read + LED/UART
  3. RTOS wiring — split into tasks, add a queue if there’s a producer/consumer
  4. Connectivity — choose MQTT and/or BLE and get the link and commands working
  5. Hardening — don’t hardcode secrets; test triggering the sensor / sending a command / briefly disconnecting the cable
  6. Evidence — a README + screenshots/a clip + (recommended) the Hackathon web-app / ble-flet, or Bitstream Studio

Criterion Required
Builds + flashes from your README Yes
≥ 2 tasks genuinely running Yes
A sensor path + status on LED/UART Yes
MQTT or BLE works + a command received/a link confirmed Yes
No password embedded in files submitted publicly Yes
  • Use both MQTT and BLE
  • A threshold → an alert publish / notify
  • A correct mutex on a shared bus
  • A separate to_twin queue or topic
  • Demonstrate on Bitstream Studio or Hackathon

  1. Normal — sensor values flow, LED/UART behave normally, telemetry reaches the host (an MQTT subscriber and/or a BLE dashboard)
  2. Stimulus — change the temperature/move the board/turn the POT → see the value or an event change
  3. Command — from a PC/phone, send a command (an MQTT topic or a BLE write) → the device responds

  • The project folder/link
  • A README: how to build, flash, the Wi‑Fi/broker or BLE host without exposing a password, and the topic/UUID used
  • capstone-brief.md filled in completely
  • A diagram or table of Tasks
  • Demo evidence for all 3 scenarios
  • Confirmation there are no secrets in public files

Symptom Approach
Combining code breaks the build Combine one layer at a time from a stable M02 project
MQTT never comes up Check Wi‑Fi first (M06 Lab A)
BLE not seen in a scan Is the BLE profile on? · reboot · an ADV timeout (M07)
Tasks collide on the bus Add cm55_i2c_manager_i2c_lock / a mutex
The host demo shows no value The HEX/VSIX version, the MAC topic, the Studio Link, or the ble-flet connection

Lesson · Capstone brief · Table of Contents

Cite this lesson

If you teach from this lesson or reuse it in slides or documents, credit it with the text below. If you changed it, add (adapted) after the title.

"Lab: Capstone Mini Project" 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

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

Lesson link: https://tesaiot.github.io/tesa-qualification-program/en/courses/firmware-sdk-edge-ai/m08-capstone/l02-lab/

This lesson adapts the source below; keep its credit too.
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C1/M08/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.

Full guide: how to cite TESA

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

Content is licensed CC BY-NC 4.0. Reuse it non-commercially and credit the Thai Embedded Systems Association (TESA) every time. · How to cite TESA