本書實驗採用下列數種ESP32系列開發板,畫圈的是建議購買的板子。
WEMOS LOLIN32:具備雙核心處理器,支援典型藍牙。
樂鑫官方的ESP32-S3開發板是ESP32-S3-DevKitC-1。因為價格因素,筆者購買的是相容板(商品關鍵字:“ESP32-S3核心板N16R8”),其核心功能與官方一樣,只是內建的LED腳位不同。我有買另一款NodeMCU ESP32-S3-12K-Kit,但它的原生USB介面需要自行連接,有點不方便。
用於自走車和汽車OBD診斷介面的小型ESP32開發板,我原本使用價位較低的“MINI D1 ESP32”,但某次購入新的板子,採用外接5V電源供電時經常無法順利啟動。另一款價格較高的“LILYGO TTGO Mini32 V1.3”,從未發生類似的現象;請注意,”LILYGO TTGO Mini32”有V1.3和V1.5兩種版本,兩個版本的接腳不太相容,請購買V1.3版。
DIY機械鍵盤採用上圖的“ESP32-S2 MINI”,但鍵盤的程式碼與ESP32-S3相容,只是S3的尺寸比較大(價格也高一點),實驗時可沿用「ESP32-S3核心板N16R8」。
全部零件清單
底下是假設採用麵包板組裝,重複使用零件所需要的最少數量:
被動元件
品名 | 數量 |
---|---|
電阻10KΩ,1/8W或1/4W | 1 |
電阻100Ω,1/8W或1/4W | 1 |
NTC熱敏電阻(B值3950) | 1 |
電容0.1µF(104) | 1 |
電容1uF,耐電壓 ≥ 10V | 1 |
MCH高溫陶瓷加熱片,2Ω(5V/10W)或20Ω(約5V/1.3W)。 | 1 |
開關與按鍵
微觸開關 | 2 |
撥動(滑動)開關,3腳2檔,柄長≥5mm,接腳間距2.5mm。 | 1 |
6針自鎖按鍵開關,尺寸:8 × 8mm | 1 |
附帶按鍵開關的旋轉編碼器 | 1 |
薄膜矩陣鍵盤 | 1 |
MX鍵盤軸體 | 9 |
動力元件
N20馬達(齒輪減速比30:1)+霍爾感測器模組 | 2 |
N20馬達配套固定座(附螺絲) | 2 |
N20馬達的配套輪胎(直徑34m) | 2 |
萬向輪(本體外徑約15mm) | 1 |
固定電池座與萬向輪的壓克力板(厚1~2mm) | 1 |
電源
18650或16340電池座,具備充電與5V輸出。 | 1 |
採用MP1584EN IC的5V降壓模組 | 1 |
模組和IC
74HC166 IC | 1 |
大功率MOS電子開關模組(15A) | 1 |
096吋OLED顯示器,I2C介面 | 1 |
8路循跡(線)感測器 | 1 |
DRV8833馬達驅動板 | 1 |
DHT11感測器 | 1 |
SN65HVD230模組 | 2 |
類比搖桿模組 | 1 |
排針、母座和IC座
2 × 10針2.54mm雙排母座,普通腳長,當作ESP32 mini的插座,也可並列兩個2.54mm單排母座。 | 2 |
2 × 10針2.54mm雙排排針,普通腳長,焊在ESP32 mini開發板,也可並列兩個2.54mm單排排針。 | 2 |
8針單排母座 | 2 |
4針2.54mm單排母座,普通腳長 | 1 |
6針2.54mm排針,普通腳長 | 4 |
XH插座和插頭,2.54mm間距。 | 各1 |
16腳IC座 | 1 |
熱插拔軸底座 | 9 |
OBD-II公頭 | 1 |
其他元件
尼龍或金屬PCB固定螺絲,直徑3mm、長10mm | 8 |
尼龍或金屬螺母,內徑3mm | 12 |
壓克力鍵盤定位板 | 1 |
PCB洞洞板(至少9 x 7 cm) | 2 |
依動手做單元分類的零件表
底下是各章節的「動手做」單元的零件清單(不含零件重複的單元),讀者可依照自己感興趣的單元,逐一添購零件。
動手做1-1:陶瓷加熱片電路
動手做1-2:開放迴路(open-loop)控制陶瓷加熱片
動手做1-3:閉迴路(closed-loop)控制系統以及起停式控制
動手做1-4:採用P控制器的陶瓷加熱器
動手做2-1:加入積分運算的PI控制器
動手做2-2:加入微分方程式的PID控制器
動手做3-1:透過典型藍牙調整PID參數
第4章 Visual Studio Code、AI程式助手與動態PID調整網頁
品名 | 數量 |
---|---|
MCH高溫陶瓷加熱片,2Ω(5V/10W)或20Ω(約5V/1.3W)。 | 1 |
大功率MOS電子開關模組(15A) | 1 |
NTC熱敏電阻(B值3950) | 1 |
電阻10KΩ | 1 |
動手做5-1:使用中斷檢測馬達的轉動次數和方向
N20馬達(齒輪減速比30:1)+霍爾感測器模組 | 1 |
N20馬達的配套輪胎(直徑34m) | 1 |
動手做5-2:「啟動」鍵與中斷常式的彈跳延遲處理
動手做5-3:測量移動距離
第6章 建立中斷類別程式
N20馬達(齒輪減速比30:1)+霍爾感測器模組 | 1 |
搭配N20馬達的輪胎(直徑34m) | 1 |
輕觸開關 | 1 |
動手做7-1:以「快速衰減」模式控制馬達正、反轉
動手做7-2:測試不同衰減模式與PWM頻率對馬達運作的影響
N20馬達(齒輪減速比30:1)+霍爾感測器模組 | 1 |
第8章 循跡感測器以及擴充類比和數位輸入埠
8路循跡(線)感測器 | 1 |
74HC166 IC | 1 |
電容0.1µF(104) | 1 |
第9章 組裝循跡自走車
第10章 自走車的控制程式
「試作3號機」的材料清單
LILYGO TTGO Mini32 V1.3開發板 | 1 |
3號機PCB板 | 1 |
DRV8833馬達驅動板 | 1 |
8路循跡感測器 | 1 |
096吋OLED顯示器,I2C介面 | 1 |
74HC166 IC | 1 |
16腳IC座 | 1 |
0.1uF(104)電容 | 1 |
1uF電容,耐電壓 ≥ 10V | 1 |
100Ω電阻(棕黑棕),1/8W或1/4W | 1 |
10KΩ電阻(棕黑紅),1/8W或1/4W | 1 |
微觸開關 | 1 |
6針自鎖按鍵開關,尺寸:8 × 8mm | 1 |
附帶霍爾轉速感測器的N20馬達,齒輪箱轉速1:30。 | 2 |
N20馬達配套固定座(附螺絲) | 2 |
N20馬達配套輪胎(直徑約34mm) | 2 |
萬向輪(本體外徑約15mm) | 1 |
固定電池座與萬向輪的壓克力板 | 1 |
18650或16340電池座,具備充電與5V輸出。 | 1 |
XH插座和插頭,2.54mm間距。 | 各1 |
尼龍或金屬PCB固定螺絲,直徑3mm、長10mm | 8 |
尼龍或金屬螺母,內徑3mm | 12 |
2 × 10針2.54mm雙排母座,普通腳長,當作ESP32 mini的插座,也可並列兩個2.54mm單排母座。 | 2 |
2 × 10針2.54mm雙排排針,普通腳長,焊在ESP32 mini開發板,也可並列兩個2.54mm單排排針。 | 2 |
4針2.54mm單排母座,普通腳長 | 1 |
6針2.54mm排針,普通腳長 | 4 |
第11章 解析ESP32-S2與ESP32-S3開發板
第12章 使用PlatformIO IDE開發Arduino專案
第13章 PlatformIO的檢查工具與單元測試
第14章 硬體偵錯與JTAG介面
ESP32-S3開發板 | 1 |
動手做15-1:使用自訂程式庫製作旋鈕介面
動手做15-2:USB多媒體旋鈕開關
ESP32-S3開發板 | 1 |
附帶按鍵開關的旋轉編碼器 | 1 |
動手做15-3:密碼小鍵盤
動手做15-4:製作具備系統控制功能的媒體控制鍵盤
薄膜矩陣鍵盤 | 1 |
動手做16-1:自製USB小機械鍵盤
MX鍵盤軸體 | 9 |
熱插拔軸底座 | 9 |
壓克力鍵盤定位板 | 1 |
PCB洞洞板(至少9 x 7 cm) | 1 |
附帶按鍵開關的旋轉編碼器 | 1 |
動手做16-2:自製USB遊戲控制器
動手做16-3:一鍵完成「必殺技」的USB遊戲控制器
類比搖桿模組 | 1 |
輕觸開關 | 2 |
動手做17-1:ESP32 CAN匯流排通訊實驗
任意ESP32開發板 | 2 |
SN65HVD230模組 | 2 |
動手做17-2:傳遞以及解析浮點數資料
任意ESP32開發板 | 2 |
SN65HVD230模組 | 2 |
DHT11感測器 | 1 |
動手做17-3:發送接收請求封包
任意ESP32開發板 | 2 |
SN65HVD230模組 | 2 |
DHT11感測器 | 1 |
微觸開關 | 1 |
動手做18-1:讀取OBD-II訊框、轉發到藍牙序列埠
動手做18-2:在手機瀏覽器呈現即時車速和引擎轉速
LILYGO TTGO Mini32 V1.3開發板 | 1 |
OBD-II公頭 | 1 |
採用MP1584EN IC的5V降壓模組 | 1 |
8針單排母座 | 2 |
SN65HVD230模組,去除120Ω電阻 | 1 |
撥動(滑動)開關,3腳2檔,柄長≥5mm,接腳間距2.5mm。 | 1 |
PCB洞洞板(成品尺寸約5.5 × 4cm) | 1 |