DreamerDreamのブログ

夢想家の夢です。〜揚げたてのモヤっとしたものをラフレシアと共に〜

3Dプリンターを使ってスマートロックを自作する ⑦完成

前回はSocket通信でのセキュアな通信方法を考えてみました。

dreamerdream.hateblo.jp

 

今までの内容でスマートロックを自作する準備が整いましたので実際に取り付けていきます。

 

今回、全システムの詳細は物が物だけにセキュリティーの都合上掲載しません。

ただし、システム自体は過去の記事のものを組合わせているだけですのでそれほど複雑な要素はありません。

 

スマホからの制御はVPS上にDjangoで作ったサイト。

dreamerdream.hateblo.jp

 

VPSから制御器へは暗号化したSocket通信。暗号化については前回記事参考。

dreamerdream.hateblo.jp

 

サーボモータの制御はpigpioを利用しました。

dreamerdream.hateblo.jp

注意点として、pigpioをpythonで使うと何故かきちんと制御できない不具合が発生しました。その場合、コード内で「pigpio.pi()」を実行する時間を遅らせる(30秒ぐらい待つ)ことで対処出来ることが判明しました。原因は不明です。

 

サーボモーターはSG92Rを採用。

dreamerdream.hateblo.jp

 

 

当初の予定としてはこんなイメージを作っていましたが、玄関に制御器をそのまま置くのは邪魔だし玄関にあっても見た目の良いものを作るのは非常に手間なので制御器は隣の部屋に隠すことにしました。

 

試しにこちらのElecrowの液晶ディスプレイ搭載モデルを使って作ってみたけど、やっぱり邪魔・・・

dreamerdream.hateblo.jp

試作品↓

見た目的には問題なさそうだけど、玄関に設置するとどうしても目立ってしまいます。ひっそりとオートロック化したいので勿体ないけど却下。

 

配線を壁に貫通させる必要があるのでしばらく躊躇していましたが、こんな方法を発見しました↓

dreamerdream.hateblo.jp

この方法で大きな穴を空けることなく隣の部屋に配線を通しました。

 

扉の開閉感知に使う予定のマグネットセンサーは不慮の事故により使えなくなってしまいましたので、フォトインタラプタを採用しました。

dreamerdream.hateblo.jp

 

さらに、大型の液晶画面は不要なのでLCDディスプレイを採用

dreamerdream.hateblo.jp

本体は隠すので大きくスペースに余裕をもたせられます。

本体が大きいと配線が楽です。

 

配線のモールは出来るだけ細いものを選んだのでギリギリサイズ、配線面倒臭いですが頑張って線を繋げていきます。

ダブルロック面倒くさい〜

 

モールに配線をぶち込んだら完成!!配線全く目立ちません。

見た目スッキリですよね^^vいやぁ、苦労した甲斐がありました。どんな後付スマートロックよりコンパクトに収まっているという自信があります。中身がサーボモーターとギアだけなので当然ですが。

スマートロック自体は鍵と取っ手の隙間に収まっていて、さらに磁石で留めているので結露等で脱落する心配はありません。

欲を言えばもうちょっと取っ手と色が合わせられたらもっと良かったです。

 

このモールの通らないビミョーな隙間用カバーが作れちゃうのは3Dプリンターならではですね。

 

作ったWebアプリはスマホ用アプリとして登録しました。

dreamerdream.hateblo.jp

 

 

では、実働動画

youtu.be

 

アプリはウェブアプリをスマホアプリ化してます。

 

ひとまずスマホからスマートロック操作できたので今回の工作はひとまず完成!です。

今後これにいろいろな機能を付加していきます。

人感センサーで解錠の実験↓

youtu.be

超音波式の人感センサーを実際に稼働させてみると音(特に金属音)による誤作動が非常に多いことが判明しましたので集電型の人感センサーに変更しました。

 

今後の予定(願望)

・解錠操作せずに扉が開いた場合は警告メールを送る

・制御器として玄関にタブレットを設置する

・指紋認証させる

・時間によってオートロックを設置したり解除したりする

・予約時間に施錠確認する(夜10時とか)

・Bluetoothでスマホの距離を測って帰宅時に自動解除させる

いろんな追加機能が思いつきます。

 

制作過程をショート動画にしてみました↓


www.youtube.com

 

 

dreamerdream.hateblo.jp

 

 

*1: '0.0.0.0' , [ポート番号]

kampa.me