顔認証で解錠するスマートドアアクセスシステム
部品と材料
| Bolt IoT Bolt WiFiモジュール | ×1 |
| Arduino UNO | ×1 |
| ブザー | ×1 |
| フルサイズ ブレッドボード | ×1 |
| タクトスイッチ 12mm | ×2 |
| 5mm 赤色LED | ×1 |
| 5mm 緑色LED | ×1 |
| 抵抗 10kΩ | ×2 |
| 抵抗 330Ω | ×2 |
| ジャンパーワイヤ | ×1式 |
必要な工具
グルーガン
アプリとオンラインサービス
- Bolt IoT Bolt Cloud
- Microsoft Windows 10
- Microsoft Visual Studio
- Arduino IDE
- Face++ (FacePlusPlus API)
プロジェクト概要
ArduinoとBolt IoT、Face++ APIを組み合わせ、Windowsフォームアプリ(C#)から顔認証でドア/引き出し/棚を施解錠するシステムです。InternshalaのIoTトレーニング課題として制作されました。
システム構成
- Windows Forms App (C#):Webカメラで顔撮影、Face++ APIで登録済み顔と照合、Bolt Cloud API経由でBolt WiFiモジュールに指示送信
- Bolt WiFiモジュール:クラウド経由でコマンド受信、Arduinoへデジタル信号出力
- Arduino UNO:Boltからの信号でサーボモータ駆動、ロック機構を物理操作、LED/ブザーで状態表示
Windowsアプリの主要機能
- 信頼顔の登録・削除(Base64エンコード画像をローカル設定に保存)
- 顔検出(Face++ Detect API)→ 登録顔と比較(Compare API、信頼度80%以上で解錠)
- ベルボタン監視スレッド(Bolt D4ピンをポーリング、押下検知で顔認証開始)
- 手動ロック/解錠ボタン、カメラ選択、ライブプレビュー
- 使用ライブラリ:AForge.NET(カメラ)、Bolt IoT API .NET(自作)、Newtonsoft JSON
Arduino側の制御
- D0 HIGH:ロック指令 → サーボ120°、赤LED点灯、ブザー音
- D3 HIGH:解錠指令 → サーボ0°、緑LED点灯
- ベルボタン(D5)押下 → Bolt D6をHIGHにしてアプリに通知、呼び出し音鳴動
- ロックボタン(D8)押下 → 直接ロック動作
ハードウェア実装例
シューラックのロック軸にペットボトルネックを固定、サーボ側にボトルキャップ、ナイロン糸で連結。サーボ回転で糸を巻き取り/繰り出し、ロック軸を回転させる簡易機構。グルーガンでサーボを固定。
コード
BoltDoorLock.ino (C/C++)
#include <Servo.h>
#define ServoPin 4
#define LockSignalPin 2
#define UnLockSignalPin 3
#define BellButtonPin 5
#define LockButtonPin 8
#define RingBellSignalPin 6
#define BuzzerPin 7
#define GreenLedPin 9
#define RedLedPin 10
Servo myServo;
void setup() {
pinMode(LockSignalPin, INPUT);
pinMode(UnLockSignalPin, INPUT);
pinMode(BellButtonPin, INPUT);
pinMode(LockButtonPin, INPUT);
pinMode(BuzzerPin, OUTPUT);
pinMode(RedLedPin, OUTPUT);
pinMode(GreenLedPin, OUTPUT);
pinMode(RingBellSignalPin, OUTPUT);
digitalWrite(RedLedPin, LOW);
digitalWrite(GreenLedPin, LOW);
digitalWrite(RingBellSignalPin, LOW);
myServo.attach(ServoPin);
Serial.begin(9600);
}
void loop() {
int lock = digitalRead(LockSignalPin);
int unlock = digitalRead(UnLockSignalPin);
if (lock == HIGH) { /* ロック動作 */ }
else if (unlock == HIGH) { /* 解錠動作 */ }
if (digitalRead(BellButtonPin) == HIGH) { /* ベル通知・音 */ }
if (digitalRead(LockButtonPin) == HIGH) { /* 直接ロック */ }
}
Windows Forms アプリ (C#)
Visual Studioソリューション一式(Facebolt Doorlock.sln)をZIPで提供。解凍後、Form1.csでAPIキー(Bolt Device ID, API Key, Face++ API Key/Secret)を設定して実行。カメラ選択→顔登録→監視開始で運用可能。
Bolt IoT Cloud API クライアントライブラリ
自作のC#非公式ライブラリ:GitHub
回路図
Fritzing回路図(.fzz)を提供。BoltモジュールのD0/D3/D4/D6、ArduinoのD2/D3/D5/D6/D8、サーボ、LED、ブザー、ボタンの接続を記載。
facebolt_doorlock_2RfOtkPW2i.fzz製造プロセス
- トルク工具によるボルト締結の最適化:信頼できるプリロードのための実証済み戦略
- SensorflareとRaspberry Piで433MHzスマートホームコントローラーを構築
- スマートフォンのBluetooth近接検知でスマートオートロックドアを構築
- Raspberry Piでリアルタイムパン/チルト顔追跡 - 実践ガイド
- スマートバーテンダー:Raspberry Pi駆動の自作カクテルステーション
- ArduinoとESP8266で作るWi-Fi対応スマートドアロック — スマホで解錠
- GE Digital、スマートMESで製造業の変革を推進
- スマートな調達:AIと人間の洞察(HI)を融合させる
- ラッチボルト完全解説:ドアを閉じ続ける最古の機構、クロスバーから現代デッドボルトまで
- IoT投資のROIを最大化する:実践ガイド
- スマートデバイスを守る:IoT安全のためのベストプラクティス