logo header
logo header
logo header
logo header
  • 2017.05.19
  • インフラ開発電子工作

Raspberry Piで自動解錠装置を製作して、外からスマホで操作可能にする方法

北海道はやっと春が来て桜も咲きましたが、先日初めて釧路にロックフィッシュを釣りに行って、見事に風邪をひいて帰ってきたkirksenchoです、こんにちは。

さて、私のインフラ系ブログの第14回目は、IoT界隈を賑わせている、RaspberryPiを使って、自宅の玄関錠をスマホで解錠できるシステムを製作してみた事例を紹介したいと思います。

製作に至ったきっかけ

元々自宅の玄関は指紋認証錠だったのですが、10年使用した時点で指紋認証機能が故障してしまいました。

代替策として、暗証番号も使えるのですが、セキュリティを高めるために8桁で設定しており、銀行の暗証番号よりも入力が大変という有様になってしまいました(笑)

指紋認証錠は数十万円というかなり高額の修理代がかかってしまうので、自力で何とかできないかと考えた末に思いついたのが、室内側の解錠ボタンを機械に押させられないか?というアイデアでした

ボタンを押す機械

最初は小型のDCモーター等を、モータードライバIC(TA7291P等)を利用して細かく制御する方法を考えました。

ただ、モーターの回転をアームに伝達するまでのギアボックスが必要なので、装置が大きくなってしまいます。そうなると玄関ドアの横の柱に取り付けるには少々邪魔になるなぁと思い、別の手段を考えました。

そこで思いついたのが、ロボットのアーム等に使われるマイクロサーボが活用できるのではないか?というアイデアでした。

マイクロサーボとは?

ロボットの間接等の可動部によく用いられるモーターとして、マイクロサーボというものがあります。

マイクロサーボは、位置を指定して回転させてピタっと止められるので、決まった角度まで動かしたいという場合に便利です。

以下の動画はマイクロサーボ単体で動作させてみた例です。

[youtube https://www.youtube.com/watch?v=0ubfADs8uw0?rel=0&w=560&h=315]

マイクロサーボの制御ライブラリ

PiBitsの中にServoBlasterという便利なライブラリがあるので利用させてもらいました。

ServoBlaster

Raspberry Piで上記のGitHubからクローンしてビルドすれば使えるようになります。

動作させる為には、以下のようなコマンドを実行する必要があります

ServoBlasterはデバイスファイルとして存在しており、そこにechoで文字を送ることによって制御できます。 上記の場合は%で指定して、動かしたい角度を指定していますが、他にも指定方法はあるようです。

どの位置が何%かは、動かしてみないと分からないので、実際に動かしながら調整していくといいでしょう。

4=のところは、マイクロサーボを接続しているGPIOの番号によって変わりますので、実際の環境に合わせて変更する必要があります。

これらをシェルスクリプトにしておけば、それを実行するだけでボタンを押して戻ってくるという動作をロボットアームに実行させる事ができます。

スマホで外からRaspberryPiを操作する方法

ボタンを押す機械は作れそうな感じになってきたので、次はスマホを持って外から帰って来た時に、自宅の中のRaspberryPiをどうやって操作できるようにするか?という方法を考えてみました。

外からの接続先を指定する為の方法

固定IPと独自ドメインを所有していれば、即問題解決ですが、一般的な家庭の場合、インターネットはあっても、固定IPや独自ドメインまで持っているマニアックな方は少ないと思います。

そこでそういうマニアじゃなくてもできる方法として、DDNSという無料サービスを利用してみました。

一般的なインターネット回線の場合、各家庭のルーターの外側にはグローバルIPがアサインされますが、再接続時やプロバイダの都合等によって変動します。

変動しても随時ドメインネームがそのIPアドレスに追随して名前解決できるようにしてくれるのがDDNSサービスです。

IPアドレス変動時には手動で反映させる事ができますが、常に人間が貼り付いて手動変更するのは無理があるので、自動でやってくれるフリーツールを利用します。

そうすることによって、一度設定してしまえば、あとは勝手に動いて変更が入っても速やかに更新してくれるので楽ちんです。

外からルーター経由でRaspberryPiに入る方法

家庭用ルーターでも通常備わっている機能として、静的IPマスカレードがありますので、それを利用します。

その機能で、外からのアクセスが特定のポート番号に来た時だけ、特定の内部IPの特定ポートに転送するという事が可能です。

ポート番号はセキュリティの観点から、ウェルノウンポートではなく使われていない桁の多い番号(上限65535)を使うことをお勧めします

もちろんRaspberryPiのユーザのパスワードも推測されにくい、複雑なパスワードにしたり、公開鍵認証限定にしたりすると良いでしょう。

ルーターの設定ができたら、スマホにSSHクライアントのアプリを入れて、設定した特定ポートにSSH接続する設定をしておけば、外から自宅内のRaspberryPiにログインできるようになります。

プロトタイプ製作と試行

マイクロサーボにアルミアングルを切断して自作したアームを取り付けてみました。

マイクロサーボはトルク1.8kg/cm(4.8v)のTowerPro SG90を使用し、アームの先には、ボタンを強く押せるようにゴム板と袋ナットを付けています。

RaspberryPiとマイクロサーボの電源は、玄関先まで100V電源を引いて、そこからACアダプターで供給しています。

よく電池ボックスを付けて動作させている記事を見かけますが、恒久的に使用するのであれば、ACアダプター必須ですね。

以下が、マイクロサーボ用電源を取得するACアダプタを接続するコネクタを、ミニ基盤で製作したものです。

そして以下がプロトタイプを壁に固定して動作させた動画です。

[youtube https://www.youtube.com/watch?v=MoFM9NLk_gs?rel=0&w=560&h=315]

はい、失敗です(笑)

モーターのトルクが弱すぎてボタンを押し切れてません。

そこで同じサイズのマイクロサーボでトルクの強いものを探して後日付け替えてみました。

トルク2.5kg /cm(4.8v)のTowerPro SG92R

以下が強いマイクロサーボに付け替えて動作させた動画です。

[youtube https://www.youtube.com/watch?v=bcnSHCHzeXQ?rel=0&w=560&h=315]

はい、成功しました!

これでスマホ片手に家に帰ってきて、タップとスワイプだけでピッと玄関の鍵を開けて入る事ができます。

このシステムを運用してから2ヶ月ほど経過していますが、今のところ問題は出ていませんので、装置の強度的にも問題無さそうです。

おわりに

今回、安価なRaspberryPiとマイクロサーボなどで、インターネットに繋がったドア解錠システムを簡単に作ることができました。

他にもアイデア次第で色々なIoTデバイスが作れると思います。 みなさんもぜひRaspberryPiやArduino等のデバイスを活用して、何か生活を便利にするものを作ってみてはいかがでしょうか。

ともに世界をアップグレードできる、そんな日を夢見て。
Upgrade the World!