詳細資訊
【簡介】 本書是《ESP32 深度實作》的系列作品, 兩書主題不重疊, 相輔相成, 沿襲《超圖解 Arduino 互動設計入門》以來作者手繪圖解的特色, 帶領讀者使用 ESP32 與新一代的 ESP32-S3、ESP32-S2 實作各式應用, 主要包含: |自動控制必學的 PID 控制| 本書用淺顯易懂的方式解說自動控制中的 PID 理論, 並以恆溫控制器以及紅外線循跡自走車實踐 PID 控制理論, 從動手做中體驗 PID 的精髓以及調校 PID 參數的方法。 |自製 PCB 電路板流程| 本書除了使用現有的模組外, 為了能更完善呈現結果, 也在實作循跡自走車時自行設計 PCB 電路板, 書中也會分享整個 PCB 設計流程以及相關的軟硬體知識, 提升 DIY 自造能力。 |客製 USB HID 裝置| ESP32-S3 內建 USB 介面, 可以用來快速實作 USB HID 裝置, 本書會帶領讀者利用旋轉編碼器模組設計多媒體控制器, 調整音量、播放/暫停不用再找功能鍵與滑鼠, 隨手一轉就行。 此外, 本書也會教你自製機械鍵盤, 你可以完全依據需求客製按鍵數、按鍵配置與鍵軸, 最重要的是客製韌體, 不必再因為市售的鍵盤缺少你想要的功能而怨嘆。 電玩控制器也是常見的 USB HID 裝置, 本書還會教你如何自製電玩控制器, 更棒的是, 你還可以透過程式幫你提升戰力, 設計只要按一下就能送出連續按鍵的功能, 對手怎麼按都不會有你快, 打遍天下無敵手。 |獨家的 CAN bus 介面實作| 在汽車以及工業世界中, CAN bus 是廣泛使用的傳輸介面, 本書會說明 CAN bus 的傳輸方式, 除了基本的傳輸實驗外, 還會帶大家實際使用 ESP32 接入真實的車上診斷電腦, 讀取引擎轉速等即時資訊, 製作自己的車上數位儀表板。 |高手都在用的 PlatformIO 開發環境| 本書範例雖然大部分都只要使用 Arduino 開發環境即可實作, 不過當專案越來越複雜時, 好的開發環境提供的功能可以讓你事半功倍。本書會介紹專業開發者必用的 PlatformIO 開發環境, 透過它的語法提示等功能讓你撰寫程式碼更快速, 檢查工具則可以幫你揪出潛藏在程式碼中的問題。另外, 還會介紹如何設計單元測試, 驗證程式碼是否正確運作。 |JTAG 硬體偵錯| 每個人都有使用 print 顯示各種資訊找程式錯誤的經驗, ESP32 系列其實具備硬體除錯的功能, 本書也會搭配 PlatformIO 與必要的硬體, 讓你可以使用硬體偵錯功能, 設定中斷點讓程式停在你需要觀察的位置, 並且隨意檢視變數內容, 甚至可在執行期間變更變數內容, 完整測試不同狀況下程式的執行結果。 |設計程式庫| 使用別人寫好的程式庫雖然方便, 但總是會遇到別人寫的程式庫不是你期望的使用方式, 或是沒有更新導致欠缺你需要的功能, 本書在實作各個範例的同時, 也會教導如何依照自己的需求設計程式庫, 還可以分享給別人使用。 |AI 程式助手| 在這個 AI 當道的年代, AI 不會取代你, 只會讓你變得更好!本書也加入 AI 輔助撰寫程式碼的內容, 透過 AI 助理的協助, 可以快速生成程式的輪廓, 經由細部的修整, 就可以更快、更正確的完成專案。 本書涵蓋的細項主題如下: PID 控制/調校 陶瓷加熱片 MOSFET 電子開關 藍牙通訊事件 利用快閃記憶體儲存偏好設定 Codeium AI 程式助手 馬達轉速、移動距離檢測 光耦感測器、碼盤與霍爾編碼器 中斷常式類別實作 正交脈衝訊號 直流馬達驅動模組 循跡感測器 多工器/解多工器 並列轉序列輸出 客製 PCB 電路板 ESP32-S3 與 ESP32-S2 解析 WS2812 RGB LED PlatformIO 開發環境建置 單元測試 自訂開發板組態 JTAG 硬體偵錯與 GDB 指令 差分訊號 旋轉編碼器 USB HID 裝置 鍵盤掃描電路 USB 鍵盤與遊戲控制器 CAN bus 說明與實驗 OBD 車上診斷電腦 本書會帶領大家實作: 不會太熱也不會太冷的 PID 陶瓷加熱恆溫控制 遠端調校 PID 的網頁/手機藍牙介面設計 平穩駕駛不搖擺的 PID 控制循跡自走車 可客製功能的 USB 多媒體旋鈕 完全依照自己喜好打造的 USB 機械鍵盤 一鍵瞬間使出必殺技的 USB 遊戲控制器 改造 Wii Classic 手把玩 Switch 介接 OBD 車上診斷系統的即時數位儀表板 本書特色 使用 Arduino/PlatformIO 實踐 PID/USB HID/CAN bus 自動控制一定要學的 PID, 用恆溫控制/循跡小車示範給你看 整合藍牙/動態網頁設計 PID 調校頁面 直流馬達驅動與馬達轉速、移動距離偵測 使用 C++ 類別建立中斷處理物件 類比輸入與數位輸入腳位的擴充方法 客製 PCB 板設計流程 ESP32-S3 與 ESP32-S2 開發板解析 PlatformIO 開發環境建置 使用 PlatformIO 的檢查工具找出隱藏在程式碼中的問題 為專案設計單元測試確保程式碼正常運作無誤 自製開發板組態設定檔 透過 JTAG 使用硬體偵錯功能 利用 USB HID 自製多媒體旋鈕控制器 DIY 自己的機械式小鍵盤 設計完全依照自己喜好配置的電玩控制器 可以瞬間使出連續按鍵必殺技的遊戲控制器 CAN bus 通訊解析 用 ESP32 接上你的車上診斷系統設計車速、轉速即時儀表板 使用 AI 助手輔助設計程式 設計自己的程式庫 【目錄】 第 1 章 PID 控制入門 1-1 MCH 高溫陶瓷發熱元件簡介 ►動手做 1-1 陶瓷加熱片電路 ►動手做 1-2 開放迴路(open-loop)控制陶瓷加熱片 ►動手做 1-3 閉迴路(closed-loop)控制系統以及起停式控制 1-2 PID 控制與方塊圖 1-3 比例控制器(P) ►動手做 1-4 採用 P 控制器的陶瓷加熱器 第 2 章 PI 和 PID 控制 2-1 積分控制器(I) 2-2 拆解逗號分隔字串 ►動手做 2-1 加入積分運算的 PI 控制器 2-3 微分控制器(D) ►動手做 2-2 加入微分方程式的 PID 控制器 2-4 PID 的數學方程式 第 3 章 藍牙無線調整 PID 參數並於快閃記憶體儲存偏好設定 3-1 使用典型藍牙無線調整 PID 參數 ►動手做 3-1 透過典型藍牙調整 PID 參數 3-2 透過回呼處理藍牙通訊事件 3-3 在快閃記憶體中儲存「偏好設定」 第 4 章 Visual Studio Code、AI 程式助手與動態 PID 調整網頁 4-1 下載與安裝 Visual Studio Code 4-2 使用 AI 助手建立互動網頁 4-3 製作 PID 調整滑桿與即時圖表網頁 4-4 在 ESP32 和瀏覽器之間的 JSON 訊息傳遞格式 4-5 顯示動態圖表 4-6 ESP32 的伺服器和 WebSocket 程式 第 5 章 檢測馬達轉速與移動距離 5-1 槽型光耦感測器和碼盤的運作原理 5-2 附帶減速齒輪箱與霍爾感測器的 N20 微型直流馬達 ►動手做 5-1 使用中斷檢測馬達的轉動次數和方向 ►動手做 5-2 「啟動」鍵與中斷常式的彈跳延遲處理 ►動手做 5-3 測量移動距離 5-3 使用 XOR 邏輯閘降低外部中斷腳的需求 第 6 章 建立中斷類別程式 6-1 處理中斷的「啟動」鍵類別 6-2 使用自製的程式庫處理正交脈衝訊號 6-3 透過「函式指標」附加外部中斷 第 7 章 DRV8833 馬達驅動模組及其控制模式 7-1 直流馬達驅動控制模組 7-2 控制 DRV8833 的自訂函式 ►動手做 7-1 以「快速衰減」模式控制馬達正、反轉 7-3 ESP32 的 DRV8833 程式庫 ►動手做 7-2 測試不同衰減模式與 PWM 頻率對馬達運作的影響 7-4 重點解析 DRV8833 程式庫原始碼 第 8 章 循跡感測器以及擴充類比和數位輸入埠 8-1 擴充類比輸入埠 8-2 擴充數位輸入接腳 第 9 章 組裝循跡自走車 9-1 「差動驅動」型循跡自走車 9-2 製作循跡自走車的工具 9-3 ESP32 mini 開發板的接腳 9-4 焊接與組裝 PCB 子板 9-5 選擇電池盒與直流電壓轉換器 9-6 檢測電路以及繪製走線路徑 9-7 使用桌上型 CNC 雷射雕刻機切割壓克力板 9-8 循跡自走車的自製 PCB 板 9-9 試作 3 號機的修改電路 第 10 章 自走車的控制程式 10-1 感測車體的位置 ►動手做 10-1 感測路線位置 ►動手做 10-2 自走車的啟動∕暫停開關以及顯示畫面切換 ►動手做 10-3 測量自走車馬達轉速並估算轉向的 PWM 值 10-2 依循跡感測值動態調整 PWM 輸出 10-3 調節左右馬達 PWM 值的程式碼 ►動手做 10-4 PWM 循跡自走車的程式架構與原始碼 ►動手做 10-5 動態調整雙輪轉速讓小車直行 ►動手做 10-6 用 PID 控制器維持馬達轉速 ►動手做 10-7 PID 控制循跡自走車 第 11 章 解析 ESP32-S2 與 ESP32-S3 開發板 11-1 認識 ESP32-S3 開發板 11-2 ESP32-S3 的兩個 ADC 單元 和類比輸入腳 11-3 ESP32 的開機模式說明 11-4 ESP32 內建的 USB Serial/CDC 序列通訊介面 11-5 WS2812 全彩 LED 11-6 GPIO Matrix(接腳矩陣)和 pins_arduino.h 檔 11-7 透過前置處理指令辨別 Arduino 開發板和微控器類型 第 12 章 使用 PlatformIO IDE 開發 Arduino 專案 12-1 安裝 PlatformIO IDE 12-2 新建 PlatformIO 專案 12-3 認識 PlatformIO 的操作介面 12-4 替專案加入第三方以及自訂程式庫 12-5 在快閃記憶體 SPIFFS 分區儲存網頁檔案 12-6 設定序列埠 12-7 在 PIO 中編譯與上傳程式 12-8 終端機介面以及 PlatformIO 的文字命令 第 13 章 PlatformIO 的檢查工具與單元測試 13-1 PlatformIO 的其他工具列說明 13-2 單元測試入門 ►動手做 13-1 執行單元測試 ►動手做 13-2 執行多個檢測 13-3 自訂開發板組態設定 JSON 檔 第 14 章 硬體偵錯與 JTAG 介面 14-1 硬體偵錯 ►動手做 14-1 ESP32-S3 開發板 JTAG 偵錯 14-2 認識 GDB、OpenOCD 與 .elf 檔 14-3 JTAG 偵錯器架構與接線 ►動手做 14-2 連接 ESP-Prog 進行偵錯 14-4 確認晶片的生產板本 14-5 清除編譯完成的韌體 14-6 使用 PlatformIO 開發與偵錯 Arduino UNO 開發板程式 第 15 章 USB 介面入門與人機介面裝置實作 15-1 認識 USB 介面 15-2 使用「查表法」編寫旋轉編碼器程式 ►動手做 15-1 使用自訂程式庫製作旋鈕介面 15-3 ESP32 Arduino 開發環境內建的 USB 程式庫 ►動手做 15-2 USB 多媒體旋鈕開關 15-4 按鍵掃描原理及 Keypad 程式庫 ►動手做 15-3 密碼小鍵盤 15-5 製作 USB 媒體與系統控制鍵盤 ►動手做 15-4 製作具備系統控制功能的媒體控制鍵盤 第 16 章 製作 USB 機械小鍵盤以及電玩控制器 16-1 機械鍵盤的元件和術語 ►動手做 16-1 自製 USB 小機械鍵盤 16-2 USB 遊戲控制器 ►動手做 16-2 自製 USB 遊戲控制器 ►動手做 16-3 一鍵完成「必殺技」的 USB 遊戲控制器 16-3 改造現有 USB人機周邊介面 第 17 章 CAN 匯流排通訊實驗 17-1 認識 CAN 匯流排和 ECU 17-2 CAN 匯流排收發器 IC ►動手做 17-1 ESP32 CAN 匯流排通訊實驗 ►動手做 17-2 傳遞以及解析浮點數資料 ►動手做 17-3 發送接收請求封包 第 18 章 存取車上診斷系統(OBD)的即時資訊 18-1 OBD 車上診斷系統 18-2 從 ESP32 連接 OBD-II 介面 ►動手做 18-1 讀取 OBD-II 訊框、轉發到藍牙序列埠 ►動手做 18-2 在手機瀏覽器呈現即時車速和引擎轉速