超圖解 ESP32 應用實作

趙英傑

  • 超圖解 ESP32 應用實作-preview-1
  • 超圖解 ESP32 應用實作-preview-2
  • 超圖解 ESP32 應用實作-preview-3
  • 超圖解 ESP32 應用實作-preview-4
  • 超圖解 ESP32 應用實作-preview-5
  • 超圖解 ESP32 應用實作-preview-6
  • 超圖解 ESP32 應用實作-preview-7
  • 超圖解 ESP32 應用實作-preview-8
  • 超圖解 ESP32 應用實作-preview-9
  • 超圖解 ESP32 應用實作-preview-10
  • 超圖解 ESP32 應用實作-preview-11
  • 超圖解 ESP32 應用實作-preview-12
超圖解 ESP32 應用實作-preview-1

買這商品的人也買了...

相關主題

商品描述

內容介紹:

本書是《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 在手機瀏覽器呈現即時車速和引擎轉速