2026年8月23日 星期日

[水井村USR] 樹藝AI故事機開發紀錄V1.0-01:用HUB 8735 Ultra功能鍵控制板載LED

樹藝AI故事機開發紀錄V1.0-01:用HUB 8735 Ultra功能鍵控制板載LED

要讓樹藝作品成為一部「會看、會聽、會說、會回應」的AI故事機,第一步不是立刻加入大型語言模型,而是先確認開發板最基本的輸入與輸出功能。本次使用HUB 8735 Ultra,完成「功能鍵控制板載LED」測試,成功驗證按鍵輸入、LED輸出、序列監控與程式燒錄流程。

系列前導文章:
尚未完成Arduino IDE與HUB 8735 Ultra開發環境設定者,可先閱讀: 《國產Wi-Fi晶片8735 Ultra初體驗》

一、為什麼從按鍵與LED開始?

樹藝AI故事機未來預計整合故事按鈕、SD卡音訊、喇叭、燈光、攝影機、語音辨識、RAG知識庫與AI Agent。若一開始就將所有模組接在一起,發生問題時很難判斷究竟是按鍵、電源、音訊、網路還是程式造成。

因此,開發採用逐層驗證方式:

  1. 先確認開發板可以正常燒錄。
  2. 確認功能鍵可以被程式讀取。
  3. 確認板載LED可以被程式控制。
  4. 確認序列監控能顯示系統狀態。
  5. 完成後再擴充三個故事按鈕與音訊播放。
功能鍵輸入 → RTL8735B程式判斷 → 板載LED輸出 → 序列監控顯示

二、HUB 8735 Ultra硬體位置


▲ HUB 8735 Ultra腳位配置。板上具有功能鍵、RESET鍵、攝影機介面、GPIO及兩個USB Type-C連接埠。

本次使用的主要元件如下:

元件 功能
HUB 8735 Ultra 執行按鍵判斷及LED控制程式
功能鍵/GPIO 12 作為使用者輸入
LED_BUILTIN 顯示按鍵狀態
USB Type-C 供電、序列通訊及程式燒錄
CH340序列晶片 讓Windows以COM埠辨識開發板


▲ HUB 8735 Ultra實際測試情形。本階段先確認按鍵、板載LED與USB燒錄功能,作為樹藝AI故事機的輸入輸出基礎。

三、V1.0-01測試目標

本階段預定完成四項驗證:

01|燒錄成功 Arduino IDE顯示 upload success
02|程式啟動 燒錄完成後按RESET,開發板開始執行新程式。
03|序列輸出 序列監控可看到開機及程式啟動畫面。
04|按鍵控制 按下功能鍵後,板載LED狀態可以正確改變。

四、功能鍵控制板載LED程式

本次測試程式如下:

/*
 * HUB 8735 Ultra 樹藝AI故事機
 * V1.0-01:功能鍵控制板載LED
 */

const int FUNCTION_BUTTON_PIN = 12;

void setup() {
  Serial.begin(115200);

  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(FUNCTION_BUTTON_PIN, INPUT_PULLUP);

  digitalWrite(LED_BUILTIN, LOW);

  Serial.println();
  Serial.println("==============================");
  Serial.println("HUB 8735 Ultra");
  Serial.println("Tree Art AI Story Machine");
  Serial.println("V1.0-01 Button Test");
  Serial.println("==============================");
  Serial.println("請按下功能鍵");
}

void loop() {
  bool buttonPressed =
    (digitalRead(FUNCTION_BUTTON_PIN) == LOW);

  if (buttonPressed) {
    digitalWrite(LED_BUILTIN, HIGH);
    Serial.println("BUTTON: PRESSED | LED: ON");
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }

  delay(100);
}

五、程式重點說明

1. 功能鍵腳位

const int FUNCTION_BUTTON_PIN = 12;

以GPIO 12作為功能鍵輸入腳位。使用較完整的 FUNCTION_BUTTON_PIN 名稱,也能避免與開發板套件既有的巨集名稱發生衝突。

2. 使用內部上拉電阻

pinMode(FUNCTION_BUTTON_PIN, INPUT_PULLUP);

設定為INPUT_PULLUP後,按鍵未按下時讀到 HIGH,按下並接地時讀到 LOW

3. 判斷按鍵是否按下

bool buttonPressed =
  (digitalRead(FUNCTION_BUTTON_PIN) == LOW);

程式將腳位狀態轉換成容易理解的布林變數。當 buttonPressed 為真,就代表使用者已按下按鍵。

4. 控制板載LED

digitalWrite(LED_BUILTIN, HIGH);

使用開發板套件提供的LED_BUILTIN名稱,可以避免自行指定腳位時產生錯誤,也能提高程式的可讀性。

5. 顯示按鍵事件

Serial.println("BUTTON: PRESSED | LED: ON");

每次偵測到按鍵按下,序列監控會顯示按鍵與LED狀態。未來加入故事播放、Wi-Fi和Agent後,這些除錯訊息會非常重要。

六、HUB 8735 Ultra燒錄操作

HUB 8735 Ultra燒錄前必須手動進入Flash Mode。這項操作與一般可以自動重置的Arduino開發板不同。

按住功能鍵 → 按下並放開RESET → 放開功能鍵 → 上傳程式 → 完成後再按RESET
步驟1:使用USB Type-C線連接HUB 8735 Ultra的燒錄端與電腦。
步驟2:在Arduino IDE選擇HUB 8735 Ultra開發板。
步驟3:選擇Windows裝置管理員顯示的COM埠。本次測試使用COM10。
步驟4:按住板上的功能鍵不放。
步驟5:按一下RESET鍵並放開。
步驟6:最後放開功能鍵,讓開發板進入Flash Mode。
步驟7:在Arduino IDE按下「上傳」。
步驟8:看到upload success後,再按一下RESET鍵執行新程式。
重要:燒錄完成後必須再按一次RESET。如果只看到upload success卻沒有按RESET,開發板可能仍停留在燒錄狀態,新程式不會立即開始執行。

七、燒錄成功訊息

本次Arduino IDE顯示的燒錄訊息如下:

Enter Flash Mode!
Start Upload Flash
Uploading................upload success
End Upload Flash

其中upload success代表程式映像檔已成功寫入RTL8735B的Flash記憶體。

八、序列監控開機訊息

燒錄完成並按下RESET後,序列監控首先顯示RTL8735B平台的開機資訊:

== Rtl8735b IoT Platform ==

[Normal mode]

BootFromNORFlash

[Start Boot ROM...]

=== Load PARTBL ===

這些訊息代表:

  • RTL8735B已重新啟動。
  • 目前進入Normal Mode,而不是Flash Mode。
  • 系統由NOR Flash載入程式。
  • Boot ROM開始讀取分割表並啟動韌體。

完成底層開機後,才會進入Arduino程式的setup(),並顯示自訂啟動畫面。

==============================
HUB 8735 Ultra
Tree Art AI Story Machine
V1.0-01 Button Test
==============================
請按下功能鍵

按下功能鍵時,序列監控會顯示:

BUTTON: PRESSED | LED: ON

九、本次實測結果

V1.0-01四項測試全部正常:
  1. Arduino IDE顯示 upload success
  2. 燒錄完成後按RESET,程式可以正常執行。
  3. 序列監控可以看到RTL8735B開機及程式啟動畫面。
  4. 功能鍵可以正確改變板載LED狀態。
測試項目 結果 代表意義
CH340/COM10 正常 USB序列通訊正常
Flash Mode 正常 可正常進入燒錄狀態
程式燒錄 成功 Flash寫入工具正常
RESET啟動 正常 可由NOR Flash執行新程式
功能鍵輸入 正常 GPIO數位輸入正常
板載LED輸出 正常 GPIO數位輸出正常
序列監控 正常 可用於後續除錯與事件觀察

十、這一步和樹藝AI故事機有什麼關係?

本次雖然只完成一顆按鍵和一顆LED,但已建立故事機最基本的「感知—判斷—回應」架構:

  • 感知:功能鍵偵測使用者操作。
  • 判斷:RTL8735B判斷按鍵是否被按下。
  • 回應:LED改變狀態,序列埠顯示事件。

未來只要將LED回應換成故事播放,就能形成:

按下水井三寶按鈕 → 判斷故事角色 → 播放MP3 → 啟動對應燈光

再進一步連接Raspberry Pi或雲端AI,就能擴充為:

按住說話 → 語音辨識 → RAG搜尋 → LLM回答 → TTS播放

結語

V1.0-01完成的不只是LED控制,而是確認HUB 8735 Ultra從USB連線、Flash燒錄、系統啟動、GPIO輸入、GPIO輸出到序列監控的完整基礎流程。

採用逐步驗證的方法,可以讓後續的SD卡、MP3播放、燈光、攝影機與AI對話模組,都建立在已確認正常的基礎上。

下一階段將進入V1.0-02:水井三寶故事按鈕,為烏龜、白馬與姻緣花分別建立獨立按鍵事件,並加入按鍵除彈跳與單次觸發機制。

延伸閱讀: 《國產Wi-Fi晶片8735 Ultra初體驗》

沒有留言:

張貼留言