做完ESP32 小追蹤機器人之後,同一片 XIAO ESP32-S3 Sense 還能玩什麼?這次把它變成一台真的可以帶出門的迷你相機:2.4 吋螢幕即時取景、按鈕拍照(照片帶 EXIF 時間)、濾鏡、相簿翻閱、MJPEG 錄影,還能開 WiFi 把照片傳回電腦、OTA 無線更新韌體。換上 OV5640 鏡頭模組,甚至有自動對焦和搖桿 tap-to-focus — 對,就是手機相機那種「點哪裡對哪裡」。
完整程式與教學站(含逐步接線動畫):
👉 https://henrychao521.github.io/esp32-camera-display/
材料
- XIAO ESP32-S3 Sense(主控+OV2640 鏡頭,鏡頭在擴充板上)
- 2.4″ ILI9341 SPI TFT(240×320,無觸控)
- 搖桿模組 KY-023(選配:選單操作、tap-to-focus)
- 麵包板 + 杜邦線
- (進階)OV5640 鏡頭模組 — 換上就有 500 萬畫素+自動對焦
一個常被問的問題:相機會不會佔掉腳位?不會 — 鏡頭走 Sense 擴充板內部的 B2B 連接器,外露的 D0~D10 全部留給顯示器和搖桿,所以這台小相機不需要任何飛線妥協。
接線:網站上有「影片式」走線動畫
顯示器只要 5 條訊號線+電源。要注意這類顯示器絲印寫 SCL/SDA,它是 SPI 不是 I2C,只是廠商命名習慣;VCC 接 3.3V 最安全。教學站的接線頁做成逐步動畫:按「下一步」,每次只亮起要接的那條線、其餘變淡,拿著杜邦線照著顏色接就好 — 這個設計在課堂上特別好用,學生不會在一張全接好的圖裡迷路。

功能是一步一步長出來的
主程式約 800 行,但它不是一天寫成的 — 教學站的開發紀錄頁保留了完整的演進過程:先讓顯示器亮起來 → 相機畫面上屏 → 加拍照存檔 → 加搖桿選單和濾鏡 → 加相簿 → 加 WiFi 傳檔與 OTA → 最後換 OV5640 做自動對焦。每一步都是可以獨立驗收的小目標,拿來當專題課的分週進度剛剛好。

換 OV5640:自動對焦的三個坑
OV5640 和 OV2640 共用同一個排線接頭,程式會自動偵測型號,接線完全不用改。但要讓自動對焦真的動起來,有三件事要注意:
- AF-VCC 要接 3.3V — 對焦馬達(VCM)的電源獨立,沒接的話序列埠會印「AF 韌體載入失敗」,焦點永遠不動(我在這裡卡了一陣子)。
- XCLK 時脈:OV5640 用 20MHz(OV2640 用 10MHz),程式頂部一個 define 切換。
- 畫面方向:模組裝上常是顛倒的,用
CAM_VFLIP/CAM_HMIRROR修正即可。 - 程式庫要多裝「OV5640 Auto Focus for ESP32 Camera」;開機偵測到 OV5640 就自動載入對焦韌體、進入連續對焦,拍照前會等對焦完成才擷取。OV2640 則自動略過,同一份程式兩種鏡頭都能跑。
Tap-to-focus 的做法:取景時搖桿移動對焦準星,把韌體的對焦區域命令指到該點,準星轉綠表示合焦,閒置 3 秒回到全畫面連續對焦 — 用一支十幾元的搖桿做出手機相機的體驗,學生反應非常好。
課堂應用與延伸
- 與追蹤機器人同一片板子、同一套環境設定,兩個專題可以排成同一學期的上下半場;
- 還沒做的延伸方向:高解析度拍照(OV5640 最高 2592×1944)、ESP-DL 人臉偵測讓準星自動對到人臉、同時開 MJPEG 網頁串流;
- 攝影構圖、光線觀察也能順勢帶進課程 — 自己做的相機,拍起來特別認真。




