ESP32-CAM

【ESP32-CAM教學】第七篇:DIY 智慧上課簽到系統:紅外線自動拍照與 Gmail 通知(防代打卡物聯網應用)

在學校課堂或企業辦公室中,簽到與打卡系統隨處可見。從傳統的紙本簽到,到後來的 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與紅外線感測器硬體接線圖-Arduino物聯網智慧簽到系統DIY

ESP32-CAM 與紅外線避障感測器的 GPIO 接線電路示意圖

 

💻 Arduino 程式碼設計思維

在原始的範例中,發送 Email 的程式碼通常被放置在 void setup() 中執行,這會導致系統只能在開機時發送一次。

為了符合「觸發簽到」的實際應用需求,我們將發送 Mail 的程式碼獨立封裝成一個自訂函式 (Function)。當 Loop 迴圈偵測到紅外線感測器傳來低電位(或高電位)的觸發訊號時,才呼叫該函式進行拍照與發信。

程式碼關鍵參數設定說明:

  1. 相機型號選擇: 確保定義為 #define CAMERA_MODEL_AI_THINKER

  2. WiFi 連線設定: 請自行修改 ssidpassword 為您現場的無線網路名稱與密碼。

  3. 寄件者設定 (AUTHOR_EMAIL): 填入負責發信的 Gmail 帳號。

  4. Google 應用程式密碼 (AUTHOR_PASSWORD): 請填入在 Google 後台申請的「16 位元應用程式專用密碼」,而非一般登入密碼。

  5. 收件者設定 (RECIPIENT_EMAIL): 填入管理員、老師或人資的電子信箱。

📥 完整整合版程式範例下載: 點我前往文章結尾下載原始碼

 

🚀 成果驗證與實際運行效果

將完整程式碼燒錄至 ESP32-CAM 並重新上電(或按下 Reset 鍵)後,我們可以透過以下步驟驗證系統是否正常運作:

1. 序列埠監控器 (Serial Monitor) 觀測

開啟 Arduino IDE 的 Serial Monitor(鮑率設定為 115200),當 WiFi 連線成功後,系統便進入待命狀態。當紅外線偵測器感測到約 5 公分內有人臉、手掌靠近時,會立刻觸發相機。

從日誌中可以看到 Email sent successfully 的訊息,代表照片已順利傳送。

Arduino IDE序列埠監控器顯示ESP32-CAM成功發送Gmail通知日誌畫面

 

2. Gmail 收信端檢查

打開收件方的 Gmail 信箱,會即時收到主旨為簽到通知的郵件。信件內會依照簽到的先後順序,附上 ESP32-CAM 當下拍攝的人臉照片。

藉由影像留存,管理員可以隨時核對簽到者是否為本人,徹底杜絕課堂代簽到與職場代打卡的漏洞!

並可以看到圖中上傳2個圖像,按照簽到順序。

Gmail信箱接收ESP32-CAM智慧簽到系統自動拍照與即時影像附件畫面

 

 

📦 總結與範例原始碼下載

本專題成功將紅外線感測微型相機結合,實現了低成本、高效率的物聯網簽到解決方案。未來更可以進一步結合 OpenCV 或雲端 API 進行 AI 人臉辨識,讓系統更加智慧化。

如果您在實作過程中遇到任何問題,歡迎在下方留言討論。

🗂️ 延伸閱讀:ESP32-CAM 全系列物聯網教學