工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ESP32-CAMで作るAI顔認識ドアロックシステム:ローカル処理でプライバシー保護

部品と材料

部品数量備考
ESP32-CAM開発ボード(OV2640カメラ内蔵)1Wi-Fi/Bluetooth内蔵、AI推論可能
電磁ロック(DC 12V、フェイルセーフ/フェイルセキュア選択可)1ドア制御用
リレーモジュール(5V駆動、1回路)1ロック駆動用
DC-DC昇圧コンバータ(5V→12V)1USB給電からロック電圧生成
マイクロSDカード(32GB以下)1顔データベース・ログ保存用
赤外線LEDアレイ(夜間撮影用)1オプション
タクトスイッチ(登録/リセット用)2ユーザー登録・全削除
ステータスLED(緑/赤)各1認証結果表示
ブザー1音声フィードバック
筐体(防水・防塵、壁面取付可能)1屋外設置対応

使用ライブラリ・ツール

プロジェクト概要

ESP32-CAMの内蔵カメラとCPUリソースのみで、クラウド不要・完全ローカル処理の顔認識ドアロックを構築します。顔画像・特徴量データはマイクロSDカードに暗号化保存され、ネットワークには一切送出されません。プライバシーとセキュリティを最優先した、エッジAIの実用例です。

主な機能

ハードウェア接続

ピン割り当て(ESP32-CAM標準ピンアウト準拠)

機能GPIO備考
カメラ(内蔵)複数専用ピンライブラリが自動管理
SDカード(SPIモード)CLK:14, CMD:15, D0:2, D1:4, D2:12, D3:131-bitモードならD0のみ
リレー制御GPIO 13 (SD D3と共用注意) または GPIO 2SD使用時はGPIO 2推奨
登録ボタンGPIO 0ブートモード兼用、起動時はHigh必須
リセットボタンGPIO 16U2RXD、内部プルアップ
緑LED(成功)GPIO 4 (SD D1と共用注意)SD 1-bitモードなら使用可
赤LED(失敗)GPIO 2内蔵LEDと共用可
ブザーGPIO 12 (SD D2と共用注意)SD 1-bitモードなら使用可
IR LED制御GPIO 14 (SD CLKと共用)SD使用時は別GPIO必須

注意: ESP32-CAMはピンが限られるため、SDカードを1-bitモード(D0のみ)で運用し、GPIO 2, 4, 12, 13, 14, 15, 16を周辺機器に割り当てるのが現実的です。SDカード検出スイッチ(CD)ピンをGPIO 13に接続し、カード挿入時のみSDマウントする設計も推奨。

電源設計

ソフトウェアアーキテクチャ

コア処理フロー


setup():
  1. シリアル/ピン初期化
  2. SDカードマウント(失敗時は内蔵フラッシュフォールバック)
  3. 顔データベース読み込み(/faces/ディレクトリから特徴量ベクトル復元)
  4. カメラ初期化(フレームサイズ: QVGA 320x240 / HQVGA 240x176 推奨)
  5. esp-faceライブラリ初期化(検出モデル: Human Face Detect、認識モデル: MobileFaceNet)
  6. Wi-Fi接続(STAモード、固定IP推奨)
  7. Webサーバー起動(/stream, /config, /api/* エンドポイント)
  8. メインループ開始

loop():
  1. ボタン状態チェック(登録/リセット長押し検出)
  2. カメラフレーム取得(fb = esp_camera_fb_get())
  3. 顔検出実行(face_detect(fb))
  4. 検出時: 顔領域切り出し→特徴量抽出(face_recognize())
  5. 登録DBとコサイン類似度比較(閾値デフォルト 0.75)
  6. 一致時: 緑LED点灯、ブザー短音、リレーON(ロック解錠)、アクセスログ記録
  7. 不一致時: 赤LED点灯、ブザー長音、失敗カウントインクリメント
  8. 失敗閾値超過時: ロックアウト(設定時間認証受付停止)、管理者メール通知(Wi-Fi経由)
  9. フレームバッファ解放(esp_camera_fb_return())
  10. Webサーバー処理(client.handle())
  11. 定期タスク(NTP時刻同期、ウォッチドッグリセット、ヒープ監視)

esp-faceライブラリの活用ポイント

Web UIエンドポイント設計

パスメソッド機能
/GETメインダッシュボード(ライブ映像、ステータス、クイック操作)
/streamGETMJPEGストリーム配信(ブラウザで直接表示可能)
/api/statusGETJSON: システム状態、登録ユーザー数、メモリ/ヒープ、アップタイム
/api/usersGETJSON: 登録ユーザー一覧(ID, 名前, 登録日時, サンプル数)
/api/enrollPOST顔登録開始({name: "user_name"})、完了までポーリング
/api/deletePOSTユーザー削除({id: 3})
/api/configGET/POST設定取得/更新(閾値、解錠時間、ロックアウト時間、Wi-Fi設定等)
/api/logsGETアクセスログ取得(ページング、フィルタ対応)

セキュリティ・プライバシー設計

実装上の課題と対策

課題対策
メモリ不足(PSRAMなしモデル)フレームサイズをHQVGA(240x176)に制限、JPEG品質下げ、タスク優先度調整
認識精度(照明変化、角度、経年変化)登録時多角度撮影、閾値チューニング(0.7-0.85)、定期的な再登録推奨
誤検知(写真、動画、マスク)生体検知(まばたき検出、深度情報なしで擬似的実装)、複数フレーム連続一致要求
応答遅延(検出〜解錠まで)フレームレート5-10fps、検出間隔制限(200ms以上空けない)、非同期処理
Wi-Fi切断時の動作継続認証ロジックはWi-Fi非依存、Web UIのみ制限、再接続タスク別スレッド

拡張アイデア

まとめ

ESP32-CAM単体で実用レベルの顔認識アクセス制御が実現できることは、エッジAIの進歩を象徴しています。クラウド依存ゼロ、データ主権完全確保、低コスト(約3,000-5,000円)、省電力(平均1-2W)という特長は、個人宅・小規模オフィス・研究室などのプライバシー重視環境に最適です。esp-faceライブラリの成熟度も高く、MobileFaceNetベースの認識精度はホビーユースなら十分実用的です。今後、ESP32-S3(AIアクセラレータ内蔵、PSRAM標準搭載)への移行で、より高精度・高速・大容量DB対応が容易になるでしょう。

製造プロセス

  1. Web制御DMX照明システム:Arduino Megaマスターコントローラー
  2. NeoPixelリングとArduinoで作るインタラクティブジャイロスコープLEDディスプレイ
  3. DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
  4. Unopad: Ableton Live連携シームレスなArduino MIDIコントローラー
  5. Pixie: Arduino Pro Miniで作るNeoPixel腕時計 - アナログとデジタル融合のDIY光る時計
  6. FirmataとXbox OneコントローラーでArduinoローバーをシームレス操作
  7. Arduinoベースの蛍光表示管(VFD)コントローラーキット
  8. Arduino Dueでマスターする音声認識と音声合成
  9. Alexa対応Arduinoホームコントローラー:音声でスマートホーム自動化
  10. 携帯型リモート監視カメラロボット - Raspberry PiとArduinoで構築
  11. スマート手話グローブ:ジェスチャーをテキスト/音声に変換