3.30. 總結

你已經走過了 machine 模組中,當一段指令碼開始與實體世界對話時就會立刻用到的各個部分:

  • GPIO 輸出與輸入——驅動一個 LED 或一個電晶體,讀取一個按鈕或一個極限開關。這是每個硬體專案賴以建立的基本構件,並搭配上拉電阻與軟體去抖動,以便讓必須可靠的讀取得以實現。

  • 類比訊號——以 ADC 讀取一個感測器、一個電位器,或任何其他連續變化的電壓;以及,在沒有可用的 DAC 時,以 PWM 搭配低通 RC 濾波器產生一個受控的電壓。

  • PWM 應用——調暗一個 LED、透過 H 橋改變直流馬達的轉速、定位一個伺服機。同一種波形,搭配不同的實體平均化裝置(眼睛、馬達的電感)與不同的框架解讀方式(佔空比相對於絕對脈衝寬度)。

  • 序列匯流排——UART 用於非同步的點對點連結;SPI 用於快速的板載周邊裝置,每個裝置有一條晶片選擇線;I2C 用於僅靠兩條線連接的慢速多裝置感測器匯流排;CAN 用於模組之間穩健的多主控現場匯流排。

  • 量產模式——以看門狗計時器從當機中復原,以睡眠模式延長電池壽命。當相機第一次離開工作桌時,這兩者都會變得不可或缺。

這些已足以建構一個嵌入式裝置的 感測——規劃——行動 迴圈:透過 I2C / SPI / ADC 讀取感測器、在 Python 中做決策、透過 PWM / GPIO 驅動致動器、透過 UART / CAN 回報狀態、並在事件之間進入睡眠。

3.30.1. 日後使用本參考資料

請把這些硬體章節當作參考材料,而不是讀過一次就結束。當問題只是「這個呼叫的確切名稱是什麼」時,machine 模組參考頁面會把每個類別與方法都列在同一個地方。而這裡逐章的頁面,則是當你需要參考材料本身無法提供的「哪個旋鈕做什麼、以及為什麼」這種觀點時,可以回來查閱的地方。

3.30.2. 接下來該往哪裡去

視覺感測器 是下一個主要主題。本節教的是幾乎任何 MCU 上都會出現的通用周邊裝置——Pin、ADC、PWM、UART、SPI、I2C、CAN——而下一節則會非常深入地教授相機 最具代表性 的周邊裝置:影像感測器,以及從光子打在玻璃上到 RAM 中一個像素緩衝區之間,那一長串光學、矽晶與訊號處理的鏈條。工具組會轉向 csiimage 模組,但你所學到關於驅動 GPIO、透過 I2C 對話以及使用 PWM 的一切都會原封不動地延續下去——閃光燈、觸發器與感測器擴充板全都使用你剛剛涵蓋過的那些匯流排。