Skip to main content
< All Topics
Print

【Vibe】U02. 一位稱職的韌體架構師

AI是超強的AI程式助手,而你是一位稱職的韌體架構師。歡迎來到第二單元!在開始動手寫程式之前,我們必須先幫大家建立一個非常重要的核心觀念。

第 2-1 小節:單元回顧

回顧第一單元,為什麼你的 AI 助手會「水土不服」?

很多初次接觸 AI 的朋友常有一個誤解:「既然現在的 AI 這麼聰明,我只要對它說『幫我寫一個會自動避障的相撲機器人程式』,它應該就能直接丟出完美的解答吧?」結果往往事與願違,拿到的是一堆充滿錯誤、甚至根本無法上傳到板子上的亂碼。

1. 認識你的 AI:剛到職的「資深工程師」

為什麼會發生這種事?還記得我們在第一單元提到的核心概念嗎?當你在使用 ChatGPT 、 Claude或Gemini 這類大語言模型 (LLM) 幫你寫程式時,你應該把它想像成一位「技術極強,但今天才剛到職、完全不熟悉公司環境的資深工程師」。

這位 AI 工程師的「通用型知能 (General Skill)」非常豐富。他精通各種程式架構、迴圈邏輯與 C++ 語法,甚至能在一秒鐘內寫出極為複雜的數學演算法。知道「如何寫程式」是他的強項。

但是,他有著致命的盲點——他根本不知道你的桌上擺著什麼硬體。他看不見你的 ESP32 開發板長什麼樣子、不知道你的超音波感測器接在哪個腳位,更不知道你這台機器人的特定用途是什麼。如果你不主動把這些「硬體環境設定」與「專案目標」告訴他,他為了交差,就會開始「瞎猜(通靈)」,隨便捏造不存在的腳位與指令,這就是 AI 寫程式容易翻車的主因。

2. 什麼是「韌體」?為什麼它對 AI 來說特別困難?

要徹底解決這個問題,我們必須先了解我們現在要寫的程式種類——「韌體 (Firmware)」

一般我們常聽到的「軟體 (Software)」(例如網頁、手機 APP 或電腦遊戲),通常運行在標準化、虛擬的環境中。寫純軟體時,AI 不太需要顧慮真實世界的物理限制。

但「韌體」完全不同!韌體是「賦予實體硬體靈魂的程式」,它是數位邏輯與真實物理世界溝通的唯一橋樑。在韌體專案中,每一行程式碼都緊緊綁定著你手邊的電子零件,例如:

  • 物理限制:你的馬達是接在 Pin 14 還是 Pin 12?如果 AI 猜錯了,馬達就絕對不會轉。
  • 通訊協定:你的感測器是用什麼方式傳遞訊號的?
  • 供電環境:你的電池電壓是多少?推力夠不夠?

這就是韌體開發中無法忽視的「硬體區域性」。AI 活在雲端裡,它看不見、摸不到你的實體機器人。因此,想要讓 AI 成為你得心應手的程式助手,身為「程式架構師」的你,首要任務就是主動為 AI 補充這份專屬的「硬體與環境設定指南」。

只要我們把規則與環境設定說清楚,這位資深的 AI 工程師就能發揮 100% 的實力,幫你寫出完美驅動實體機器人的神級程式碼!


第 2-2 小節:成為稱職的「韌體架構師」

既然 AI 已經能幫我們把複雜的程式碼生成出來,那身為使用者的我們還要學什麼呢?答案是:你要把思維升級,成為一位運籌帷幄的「韌體架構師」。

1. 身為「韌體架構師」,你需要具備什麼知能?

在 Vibe Coding 的開發模式中,AI 是那位幫你一磚一瓦寫下底層語法、搞定括號與分號的「超級碼農」;而你,則是繪製系統藍圖、發號施令的「架構師」。身為架構師,你不需要死背冗長的 C++ 語法,但你必須掌握以下三大核心思維:

掌握硬體資源 (Hardware Awareness): 你必須清楚知道手邊有哪些「武器」,以及它們的物理限制。例如你的 GoSUMO 裝了幾顆超音波?馬達推力如何?只有架構師給出明確的硬體配置(如 dual2s 的引腳規範),AI 才能寫出真正能動的程式。

定義狀態與邏輯 (State Logic): 機器人沒有直覺,你必須能用清晰的白話文定義它的「行為條件」。例如:「當前方超音波距離小於 15 公分時,全速前進;否則,原地右轉索敵」。AI 負責把這段話翻譯成程式碼,而你負責判斷這個戰術邏輯是否合理。

時間與流程控管 (Time Management): 在微控制器的世界裡,不能讓程式「卡死」在某個動作上(例如 AI 常常會亂用 delay() 讓程式暫停)。架構師必須具備「非阻塞(Non-blocking)」與「事件驅動」的概念,確保機器人在執行動作時,感測器依然能持續警戒外界變化。

2. 拆解基礎 ESP32 (Arduino) 程式架構

為了讓 AI 聽懂你的藍圖並把程式碼放在正確的位置,你必須了解 ESP32 在 Arduino 開發環境下的「骨架」。一份標準的韌體程式,基本上永遠只分為三個區塊:

  • A. 全域宣告區 (Global Scope): 位於程式碼的最頂端,這是「準備材料」的地方。架構師會要求 AI 在這裡引入必要的工具箱(例如 #include <dual2s.h>),並宣告你要使用的物件(如宣告一台相撲車、一顆狀態燈)。
  • B. setup() 初始化區: 這個區塊在每次通電開機或按下 Reset 鍵時,只會執行一次。你可以把它想像成機器人的「暖身操」。架構師會在這裡設定硬體的初始狀態,例如啟動各個感測器、連線 PS3 藍牙搖桿,或是讓蜂鳴器發出開機音效。
  • C. loop() 主迴圈區: 這是程式的心臟,開機後會無限次不斷重複執行直到斷電。架構師要在這裡安排機器人的「實戰日常」。通常包含三個標準步驟:
    1. 收集情報:讀取超音波測得的距離、紅外線循線的數值。
    2. 大腦判斷:根據收集到的數值與你定義的戰術,使用 if-else 判斷當下該做什麼。
    3. 執行動作:對馬達下達攻擊指令、改變 LED 燈號顏色。

只要你腦中有這個「宣告 ➡️ 暖身 ➡️ 無限迴圈 (讀取、判斷、執行)」的基礎骨架,當 AI 吐出程式碼時,你就能一眼看出結構是否完整,輕鬆指揮你的 AI 助手把程式碼放進對的格子裡!


第 2-3 小節:應該準備哪些資料,才能讓你的 AI 助手勝任工作呢?

當你準備打開 AI 工具(如 ChatGPT 、 Claude或Gemini)請它幫忙寫程式之前,必須先幫這位剛到職的資深工程師備齊「糧草」。為了徹底消除 AI 寫韌體時最容易發生的「幻覺」與腳位猜測問題,我們需要為它準備好以下兩大核心資料:

1. 掌握韌體編譯環境 (Arduino IDE) 與 dual2s 函數庫

雖然 AI 能幫我們快速生成邏輯正確的程式碼,但最終這段程式碼還是需要一個「編譯器」來轉換成微控制器能懂的機器語言,並燒錄到 ESP32 開發板中。因此,你必須在電腦端準備好並熟悉 Arduino IDE 開發環境 。例如,我們的GoSUMO專題會用到的硬體資源,dual2s-v2控制器

同時,為了避免重複造輪並且讓初學者們容易上手,我們的專案依賴dual2s 函數庫 。這是一套專為 GoSUMO 機器人與 ESP32 量身打造的工具箱 ,它將複雜的底層硬體控制(例如 PWM 訊號頻率、ADC 解析度設定)全部封裝成極簡的指令。

舉例來說,你不需要讓 AI 去計算馬達的脈衝與延遲,只要讓 AI 呼叫 FORWARD 或是 ObjDistance() 即可 。當你在對話一開始就明確要求 AI:「請基於 dual2s 函數庫來開發」,AI 吐出的程式碼就會變得異常簡潔、穩定,且具備極高的可讀性,讓後續的維護與修改變得非常輕鬆。

2. 掌握硬體資源與專屬的「SKILL 檔」

這是跨越韌體 AI 生成門檻最關鍵的秘密武器!AI 活在雲端,它看不到你的實體電路板,更不知道你的硬體資源是如何配置的

為了解決這個硬體「區域性」的絕對限制,我們必須掌握手邊的硬體資源定義(例如 dual2s 控制器的 GPIO 預設常數:狀態燈固定為 DUAL2S_HW::WSLED,前方超音波有專屬的 USC_F_ECHOUSC_F_TRIG 腳位等) 。我們將這些硬體腳位規範,以及前面提到的 dual2s 函數庫「可用 API 白名單」,統統寫入一份名為 SKILL 檔 (System Prompt) 的文件中

這份 SKILL 檔就是你賦予 AI 助手的「員工手冊」與最高指導原則:

  • 防呆與 API 限制:明確告訴 AI 只能用哪些指令,嚴禁自行發明不存在的函式或控制方法 。
  • 硬體腳位鎖死 (Pin Mapping):強制 AI 在宣告硬體物件時,必須帶入我們定義好的 GPIO 常數(如 DUAL2S_HW 命名空間),確保生成的程式碼與實體的電路接線 100% 吻合 。

更重要的是,身為架構師的你,未來可以隨著專案的演進與擴充(例如下圖,為開源外掛 RhinoSUMO專題 加裝新的感測器、或是調整鍬形蟲鏟斗的伺服馬達角度極限),持續編修與擴展這份 SKILL 檔的內容。只要 SKILL 檔的規則越清晰、越完善,你的 AI 助手就會越聰明,成為你專屬的零失誤韌體開發夥伴!

最後,我們用這支教學影片來說明:本專題(GoSUMO)當準備導入你的AI程式助手進行開發韌體時,相關的硬體、函數…資源,你應該如何取得。


結語:

雖然 PBL、素養、SRL、MetaKnowledge,這類根本性的教育原則,其討論度逐漸由教育現場淡出。但是人類的科技、人文時代巨輪動力中,這些根本性原則始終是要角。在接下來的AI時代,人類對世界的探究邊境將快速擴展,生產力也快速拉升,當然由經濟角度,K型發展也將更加明顯。

我們如何在這AI加速器上站穩腳步,或許本文的重點:我們要把思維升級,成為一位運籌帷幄的「韌體架構師」。是一種態度、一種解方、一種從容。😊

下一篇,單元3【建立你的AI韌體助手/專屬家教】,我們將開始上機實作。當你有了一位「技術極強,但今天才剛到職、完全不熟悉公司環境的資深工程師」,你如何讓”他”認識你的工作任務。成為你的一位優秀AI韌體程式助手

Table of Contents