在學校課堂或企業辦公室中,簽到與打卡系統隨處可見。從傳統的紙本簽到,到後來的 NFC、RFID 刷卡、QR Code 掃描,甚至是手機 GPS 定位簽到,雖然方便,但都存在一個致命漏洞——無法完全防止「代打卡」或「代簽到」。
為了徹底解決這個痛點,本篇物聯網(IoT)專題教學將帶領大家使用高性價比的 ESP32-CAM 開發板,結合紅外線感測模組,打造一套「智慧防代打卡上課簽到系統」。當學生或員工靠近簽到機時,系統會自動感測、觸發相機鏡頭拍照,並透過 Gmail 自動將即時照片發送到管理員信箱,兼具人臉影像留存與防弊功能!
💡 實作前的準備工作與基礎知識
在開始組裝硬體與燒錄程式之前,本專題需要用到 Gmail 的 SMTP 發信功能。如果您尚未設定寄件者的 Google 帳戶密碼,請先閱讀前置教學:
🛠️ 系統硬體配置與材料清單
這套 IoT 簽到系統的硬體架構非常精簡,只需準備以下幾項核心電子零件,非常適合學校專題、科技微創與 Arduino 初學者的創客實作。
1. 材料清單
ESP32-CAM 開發板: 核心主控板,內建 WiFi 模組與 OV2640 相機鏡頭。
紅外線感測模組(如避障感測器): 用於偵測人體、人臉或手掌是否靠近。
UART 燒錄器(FTDI 轉接板): 用於將 Arduino 程式碼燒錄至 ESP32-CAM。
麵包板與杜邦線: 用於硬體電路的訊號連接。
2. 硬體電路接線圖
當紅外線感測器偵測到物體靠近時,會傳送一個數位訊號給 ESP32-CAM,觸發拍照機制。

ESP32-CAM 與紅外線避障感測器的 GPIO 接線電路示意圖
💻 Arduino 程式碼設計思維
在原始的範例中,發送 Email 的程式碼通常被放置在 void setup() 中執行,這會導致系統只能在開機時發送一次。
為了符合「觸發簽到」的實際應用需求,我們將發送 Mail 的程式碼獨立封裝成一個自訂函式 (Function)。當 Loop 迴圈偵測到紅外線感測器傳來低電位(或高電位)的觸發訊號時,才呼叫該函式進行拍照與發信。
程式碼關鍵參數設定說明:
相機型號選擇: 確保定義為
#define CAMERA_MODEL_AI_THINKER。WiFi 連線設定: 請自行修改
ssid與password為您現場的無線網路名稱與密碼。寄件者設定 (
AUTHOR_EMAIL): 填入負責發信的 Gmail 帳號。Google 應用程式密碼 (
AUTHOR_PASSWORD): 請填入在 Google 後台申請的「16 位元應用程式專用密碼」,而非一般登入密碼。收件者設定 (
RECIPIENT_EMAIL): 填入管理員、老師或人資的電子信箱。
📥 完整整合版程式範例下載: 點我前往文章結尾下載原始碼
🚀 成果驗證與實際運行效果
將完整程式碼燒錄至 ESP32-CAM 並重新上電(或按下 Reset 鍵)後,我們可以透過以下步驟驗證系統是否正常運作:
1. 序列埠監控器 (Serial Monitor) 觀測
開啟 Arduino IDE 的 Serial Monitor(鮑率設定為 115200),當 WiFi 連線成功後,系統便進入待命狀態。當紅外線偵測器感測到約 5 公分內有人臉、手掌靠近時,會立刻觸發相機。
從日誌中可以看到 Email sent successfully 的訊息,代表照片已順利傳送。
2. Gmail 收信端檢查
打開收件方的 Gmail 信箱,會即時收到主旨為簽到通知的郵件。信件內會依照簽到的先後順序,附上 ESP32-CAM 當下拍攝的人臉照片。
藉由影像留存,管理員可以隨時核對簽到者是否為本人,徹底杜絕課堂代簽到與職場代打卡的漏洞!
並可以看到圖中上傳2個圖像,按照簽到順序。
📦 總結與範例原始碼下載
本專題成功將紅外線感測與微型相機結合,實現了低成本、高效率的物聯網簽到解決方案。未來更可以進一步結合 OpenCV 或雲端 API 進行 AI 人臉辨識,讓系統更加智慧化。
如果您在實作過程中遇到任何問題,歡迎在下方留言討論。
專題源碼下載點: 點擊下載 ESP32-CAM 智慧簽到系統程式範例
🗂️ 延伸閱讀:ESP32-CAM 全系列物聯網教學



