AIで顔認証スマートロック! – 作成編 –

6月 13, 2020

複数記事に分けて解説しています.

AIで顔認証スマートロック! – 機能とセットアップ編 –
AIで顔認証スマートロック! – 作成編 –
AIで顔認証スマートロック! – 検証編 – 

スマートロック作成 – ハードウェア編 –

鍵の開閉のコンセプト

この記事ではサムターン錠を対象としています. アパートやマンションではこのサムターン錠が多く採用されていると思います.今回は下図のようにサーボモータを配置して, モータのトルクによってサムターンを回すようにします.

サーボモータでサムターン錠を開閉するのに必要な部品

上のコンセプトを達成するために, 以下の部品を3Dプリンタで作成しました.

  • サーボモータのトルクを鍵に伝える部品
  • サーボモータ自身が回転しないように固定する部品

これら部品を作成するために, まずは鍵の特徴をつかみます.

鍵やモータの特徴を掴む

我が家の玄関の鍵を例にスマートロック作成に必要な特徴の掴み方を説明します. 下の写真が我が家の鍵で, デッドボルトを出し入れする為のサムターンと鍵の機構の部分が納められているケースから構成されています.

鍵の開閉とサーボモータ動作の関係

  • Open状態はサムターンが下向き
  • Close状態はサムターンが左向き

従って, 鍵の開閉とモータ動作は以下のように対応します.

  • Close → Open : サーボモータでサムターンを時計周りに90°回転させる
  • Open → Close : サーボモータでサムターンを反時計回りに90°回転させる

3Dプリンタでの部品作り

鍵とサーボモータの寸法を基にAutodesk Fusion360を用いて3DCADデータ(stl)を作成していきます. 寸法に対して少し遊びが出るように3DCADデータを作っています.

鍵の寸法

サーボモータの寸法

サーボモータのトルクを鍵に伝える部品

下の写真がサーボモータのトルクを鍵に伝える部品の参考3DCADデータです. 簡単に設計の観点を説明します.

  1. サーボモータのトルクを伝えるためにサムターンを覆うような箱型形状を作ります()
  2. モータトルクとそのホーンを繋げる穴を開けます(). 穴の中心とサムターンの回転軸が一致するように箱型形状のサイズを調節します. 我が家の鍵の場合, サムターンの回転軸からその先端までの長さが35mmだったので, モータトルクとそのホーンを繋げる穴の中心から中空の立方体までの長さも35mmにしました()
  3. 立方体の中空部分には, サーボモータのホーンがブレないように固定部を作りました(). 固定部の中には隙間があり, サーボモータのホーンをそこへ嵌め込みます

 STLデータ置き場↓

サーボモータ自身が回転しないように固定する部品

下の写真がモータ自身が回転しないように固定する部品の参考3DCADデータです. こちらも簡単に設計の観点を説明します.

  1. サーボモータ自身が回転しないように固定する部品はサーボモータを固定する部分とドアに固定する部分から構成されています. 我が家のドアは鉄製なので, ドアに固定する部品は磁石を使って青いドアにくっつけたいという思惑があります. 一方, それには非鉄部分のケースを回避しないといけないので, サーボモータを固定する面の長さをそれと干渉しない程度に長くする必要があります. ケースの長さが95mmなので, 余裕をもって100mmに設定しました().
  2. サーボモータを固定する部分は以下を満たすように作成してください.
    • サーボモータとサムターンの回転軸が一致する
    • サーボモータ固定穴も含めて横幅におさめる()
  3.  ドアに固定する足の部分は鍵のつまみとモータのホーンの高さを合わせると, 少なくとも70mm必要で, クリアランスも含めて75mmにしました().

STLデータ置き場↓

USBカメラ固定部

下の写真がUSB置き場の参考3DCADデータです.

組み立て

3Dプリンタで部品を作成したら, 組み立てをします.

  1. サーボモータのトルクを鍵に伝える部品にサーボモータのホーンを嵌め込み 
  2. サーボモータをM3ねじで固定
  3. サーボモータとそのホーン繋げ, ねじ止め
  4. サーボモータとJetson nanoをジャンパーワイヤで配線

スマートロック作成 – ソフトウェア編 –

ソースの取得

 セットアップしたJetson nanoを起動しましょう. homeディレクトリで端末を開き, 以下のコマンドを入力して, SmartLock用のソースを取得します.

git clone https://github.com/tech-life-hacking/SmartLock.git

Blynkの設定

Blynkのボタンを通してモータを操作するので, 設定をしておきます. 以下のように配置, 設定してください.

サーボモータの調節

ソースの取得とBlynkの設定後, 各鍵で異なる個別のパラメータを調整します. まずはSmartLock.pyを開いてください.

#フォルダ移動
cd SmartLock
#geditでSmartLock.pyを開く
gedit SmartLock.py

実際にサーボモータを動かして値を編集していきます.

#Blynkから送られてきたAuthorization codeとYOUR_AUTHを置き換える
BLYNK_AUTH = 'YOUR_AUTH'

#鍵の開閉ができるような値に編集する
opendutycycle = 11.15 #開ける操作のパラメータ値
closedutycycle = 7.00 #閉める操作のパラメータ値

#値を変えたらSmartLock.pyを実行し, 期待通りの動作をするか見る.
sudo python3 SmartLock.py

顔認証用の写真準備

picture_of_meに自分の写真を5枚入れてください. その写真と顔認証時にUSBカメラで撮影した写真とを比較して, 自分かどうかを判断します.

顔認証テスト

SmartLock.pyを実行して, カメラに自分の顔が映ったとき, モータが動くか見てください. またスマートフォンで他人の顔の画像を表示させ, その画像で鍵が開かないことも見てみてください. うまくいけば完成です!

#テスト
sudo python3 SmartLock.py

次は実際に顔認証性能を検証したいと思います.

複数記事に分けて解説しています.

AIで顔認証スマートロック! – 機能とセットアップ編 –
AIで顔認証スマートロック! – 作成編 – 今ここ
AIで顔認証スマートロック! – 検証編 –