學完本章你將能夠:

  • 用一句話說明本專案要做什麼,以及它為什麼需要 RTOS 而不是超級迴圈。

  • 畫出「語音進、設備動、雲端知」三條資料路徑。

  • 列出 12 週課程對應的能力,並知道每週該跑哪個韌體專案。

  • 依預算與算力選擇路徑 A(外部 ASR 模組)或路徑 B(板上 Edge AI)。

嵌入式課程最常見的失敗模式,是學員會閃燈、會讀 ADC,卻無法把多個週邊組成 一個「產品」。本課程反過來設計:先給你產品規格,再把規格拆成硬體、驅動、 RTOS、AI 與可靠度五層。每一層都有可執行的實驗,最後疊成同一套韌體。

產品規格:智慧居家語音控制器

目標裝置放在客廳或實驗室桌面,用口語控制燈光、風扇、門鎖(伺服馬達)與 一個插座繼電器,並能回報溫度與系統狀態。

最小可行產品(MVP)規格
面向 需求 驗收方式
喚醒 聽到喚醒詞後進入 5 秒聆聽窗 狀態 LED 由呼吸燈改為常亮
指令 至少 10 條中文/英文指令 對應設備在 300 ms 內動作
並發 語音、感測、通訊互不阻塞 關燈時風扇仍維持轉速
助理 可由 Siri/Alexa/Google 控制 手機 App 與裝置狀態雙向同步
安全 未知指令不動作;看門狗復位 人為卡死任務後 2 s 內重啟
功耗 閒置可進 Stop 模式 電流計顯示 mA 級下降
維運 UART 可觸發韌體更新流程 模擬 OTA 後版本號加一

指令表(路徑 A/B/C 共用同一枚舉):

口語 內部命令
開燈/關燈/亮一點/暗一點 CMD_LIGHT_*
開風扇/關風扇/快一點/慢一點 CMD_FAN_*
開門/關門 CMD_DOOR_*
開插座/關插座 CMD_RELAY_*
報警/停止報警 CMD_BUZZER_*
現在幾度 CMD_QUERY_TEMP
全部關閉 CMD_ALL_OFF
睡覺 CMD_ENTER_SLEEP
離家 CMD_HOME_LEAVE

為什麼不能用超級迴圈

超級迴圈(super-loop)把所有工作塞進 |while(1)|:讀麥克風、跑推論、 掃感測器、送 UART。語音幀是硬即時的——16 kHz、16-bit、單聲道時,每 10 ms 就有 320 bytes 必須被取走,否則 DMA 緩衝會覆寫。若此時你正在等 DHT22 的 20 ms 時序,或阻塞在 MQTT 寫出,音訊就丟了。

FreeRTOS 的價值不是「比較潮」,而是把不同時間尺度的工作拆開:

  • 硬即時:I2S DMA 完成、音訊搬運(高優先權)。

  • 軟即時:喚醒/辨識、設備 PWM 更新(中優先權)。

  • 盡力而為:感測器、遙測、日誌(低優先權)。

任務之間用 Queue 傳「結果」而不是共用全域變數;用 Semaphore 對齊 DMA 完成;用 Event Group 廣播「已喚醒/發生故障/準備 OTA」這類系統級旗標。

系統架構

智慧居家語音控制器的任務與資料路徑

圖 1.1 是全書的地圖。之後每一章只加深其中一塊,不會 另起爐灶。第 13 章會在 Comms 旁再加一個 Gateway 任務,讓 Siri、Alexa 與 Google 的指令也匯入同一條 Cmd Queue——入口變多,骨架不變。

十二週學習路徑

課程進度與韌體對照
週 主題 你會做出來的東西 目錄
1 架構與環境 CubeIDE 專案能下載、LED 閃 lab01
2 STM32 架構 看懂時鐘、記憶體、中斷向量 —
3 GPIO 設備 LED、蜂鳴器、繼電器可單獨控 lab02
4 PWM 與馬達 風扇轉速、伺服開門角度 lab03
5 FreeRTOS 任務 三個任務並行閃不同週期 lab04
6 Queue / Sem 按鍵經佇列安全地切設備 lab05
7 Event / Timer 喚醒窗、看門狗餵食、軟體定時 lab06
8 音訊擷取 I2S+DMA 或模組 UART 收幀 lab07
9 語音辨識 喚醒詞 + 10 條指令 lab08
10 狀態機 口令驅動完整設備邏輯 lab09
11 通訊 JSON 遙測、可選 MQTT lab10
12 產品化 WDT、低功耗、OTA 雛形 lab11 + final
13* 智慧助理 Siri/Alexa/Google 閘道整合 lab12

每週建議節奏:90 分鐘講解 + 90 分鐘實驗。若辦成五日工作坊,第 1–2 日對應 週 1–5,第 3 日對應週 6–8,第 4 日對應週 9–10,第 5 日對應週 11–12 與成果展示。第 13 週(*)為選修:把裝置接上 Siri、Alexa 與 OK Google, 可併入成果週或作為課後專題。

硬體兩條路徑怎麼選

路徑選擇
路徑 A:外部 ASR 路徑 B:板上 Edge AI
開發板 NUCLEO-F429ZI 或 F407 Discovery STM32H747I-DISCO 或 F746-DISCO
語音硬體 CI-03T / ASRPRO / Gravity 模組 MP34DT01 或 INMP441 + X-CUBE-AI
優點 便宜、中文指令現成、除錯容易 真正理解特徵與推論、無額外模組
代價 辨識能力受模組限制 模型、記憶體、延遲都要自己扛
本課程預設 主線實驗 第 9 章進階+附錄 B

無論選哪一條,請準備:USB 線、麵包板、LED\(\times\)3、主動蜂鳴器、5 V 繼電器 模組、N-MOSFET + 12 V 風扇(或先用 PWM LED 模擬)、SG90 伺服、DHT22 (可選)、邏輯分析儀或至少一個 USB 轉 UART。完整 BOM 見附錄 A。

本章沒有新的 C 檔。請先把倉庫的 firmware/ 目錄瀏覽一遍,確認 common/include/app_types.h 裡的命令列舉與你在紙上畫的規格一致。 下一章開始真正碰到矽晶片。