CONTACT
ANKH Systems新オフィスでオリジナル「スマートロック」を運用します!

ANKH Systems新オフィスでオリジナル「スマートロック」を運用します!

ANKH Systems 1年生エンジニアの高(こう)です。
2019年夏、研修生として入社しました。

2019年10月、私たちANKH Systemsは、15年間本社を構えていた、大阪天満宮の麓、南森町エリアから、南船場4丁目にオフィスを移転することになりました。

その新オフィスにスマートロック導入を検討することになったのですが、様々な既存のスマートロック商品を比較検討していく中で、社長の「これ、うちでも作れるよね?」という一声から始まり、ANKH Systemsオリジナルスマートロックの開発プロジェクトが始まりました。

そもそも、スマートロック(SmartLock)とは?

スマートロック(SmartLock)とは、電気通信を用いて鍵を解錠施錠するシステムの総称です。
スマートロックを取り入れることで、今まで物理的な鍵で解錠施錠していた手間の軽減はもちろん、鍵の管理が楽になります。


■何を「鍵」とするか
自社プロジェクトとして始まった際、最初に検証テーマとして掲げられたのは、「バイオデータで認証」でした。
「バイオメトリックス認証(生体認証)」ができれば、万一、鍵を忘れて来た場合でも、スムーズに認証ができるということで与件として設定されました。

その中でも指紋認証をピックアップし、指紋情報を暗号化して保持できる指紋認証デバイスを使ったプロトタイプ開発もしたのですが、結論的には、現時点では不採用となりました。
これは、指紋認証デバイスを設置する場所は「外側」なので、仮に悪意ある人物がこのデバイスごと引きちぎって盗んだ場合、このスマートロックそのものが機能しなくなるからです。

たとえ1%でもリスクがあるのであれば、「鍵」としての信頼性は低くなるので、指紋認証デバイスをあくまでもリーダーとして取り扱い、暗号化したデータは室内に転送保存する形も試みたのですが、配線や認証スピードの問題で「将来的な課題」として取り扱うことになり、
結果、スマートロックとしては一般的な仕組みである、NFC(Near Field Communication)を採用することになりました。

「NFC」とは、近距離無線通信規格のことで、数センチという非常に短い距離でのみ通信できるので、簡単に言うと「かざして使う」ための規格です。

スマートロック導入への道のり

■具体的な仕組み
一般的なサムターン式鍵に取り付けて使うことを想定しています。
ドアの外側に「リーダー(読み取り)デバイス」、ドアの内側に鍵の「認証/施錠/解錠デバイス」を、取り付けます。
この取り付けは特殊な工事は不要です。

予め登録しておく、各社員のNFC規格端末が「鍵」となるのですが、ドアの外側にある「リーダー(読み取り)デバイス」にかざして、そのNFCデータを読み取ります。
読み取ったデータは「BLE:Bluetooth Low Energy」通信で、ドアの内側に設置されている、「認証/施錠/解錠デバイス」に送られます。
「認証/施錠/解錠デバイス」は受け取ったデータを、許可されているNFC鍵かどうかを認証します。
この認証が成功すると、「認証/施錠/解錠デバイス」のモーターが作動し、サムターンキーを回して解錠するという仕組みです。
今回、「リーダー(読み取り)デバイス」には「Arduino」を採用し、「Arduino言語」(C/C++)で開発しました。
「Arduino」は電子工作でよく使用される代表的なデバイスです。「NFCデータを読み取り、「認証/施錠/解錠デバイス」に送信する。」等の単純な繰り返し動作に適していることもあり、採用することにしました。
技術ブログ画像
■モーターで行う、解錠/施錠の仕組み
室内側に設置する、「認証/施錠/解錠デバイス」。
このデバイスでは、一定角度まで回転させる制御信号を送ることで、実際にモーターを使って、鍵を解錠/施錠します。
モーターに制御信号を送るため、制御信号を送信するシングルボードコンピューターというものも必要になるので、これらをまとめてドアの内側に取り付ける筐体も自作し、その中に収納しています。
あとは、このデバイスに電源をつなげば実際に鍵を動かすことができます。
今回、デバイスには「Raspberry Pi」を採用し、「Python」で開発しました。
「Raspberry Pi」はIoTプロジェクトでよく使用される代表的なデバイスです。「インターネットの接続や豊富なライブラリの使用」等の複雑な処理動作に適していることもあり、採用することにしました。


今回、この筐体も自作しています。
3D CADで設計したデータを元に、社内の3Dプリンタで生成しました。

まだ社内用なのでデザイン的には課題も残りますが、まずは機器類を1カ所に効率良く収納するというミッションと、何度もドアを開閉しても簡単に壊れない強度というミッションはクリアできたと思います。
技術ブログ画像
■入退室管理
「認証/施錠/解錠デバイス」に、利用されたNFC鍵のデータが保存されるのですが、これをクラウド上で管理しています。
ただし、どの社員がどのNFC鍵を使うのかなどの管理や、権限の設定などを行うためのコントロール機能は今回、Androidアプリとして開発しました。
理由としては、新規のNFCを登録する際のリーダーとしても使え、シームレスにデータを管理できるからで、このAndroidアプリからWEB上に設置するデータベースを参照する仕組みとしました。

今回、このWEBクラウド側を「Go言語」で開発し、スマホアプリは「Dart言語」で開発しました。

Goというプログラミング言語は、2009年、Googleで設計された言語です。
静的型付け、C言語の伝統に則ったコンパイル言語、メモリ安全性、ガベージコレクション、構造的型付け、CSPスタイルの並行性などの特徴を持った言語で、私たちANKH Systemsでも勉強会などのテーマには挙げられていたのですが、今回、正式に採用することにしました。

「Dart言語」も同じく、Googleによって開発されたプログラミング言語で、誕生は2011年と比較的新しい言語です。
モバイル開発フレームワーク「Flutter」は、プログラミング言語Dartに対応していることもあり、今回、この開発環境を採用することにしました。

近い将来・・・

新入社員を迎える際、物理的に鍵を複製などしなくても、NFCの登録のみで利用開始を設定できたり、万一の鍵紛失時も簡単に権限停止などのコントロールができるようになる、スマートロック。

まずは社内利用を前提に、一般的なスマートロックサービスと似た機能から運用を始めることになりました。
私たち自身が利用していく中で得た意見を元に、今後、機能拡張ができれば、社外のお客様にも導入いただけるようなサービスとしてブラッシュアップも考えていきたいと思っています! 実は、エンジニアデビューをして、初めてのプロジェクトでいろいろ不安もありました。
・・・が、与件をクリアしていこうと色々と調査や検証をしていくことで、今までになかった新たな知識も得ることができ、楽しみながら取り組めました。
ソフトウェア知識とハードウェア知識の両方が必要なシーンも何度かあり、まだまだ知見の足りない1年生エンジニアの私には苦労する部分もありましたが、実際に「モノが正常に動く」ところを見ると大きな達成感を得ました。
今回は社内プロジェクトでしたが、これがクライアント案件で、お客様にご満足いただけたら、もっと大きな達成感を得られるんだろうなと思います。

社内案件のプロダクトとはいえ、まだまだ改良部分があるので、新オフィスで運用しながら、さらに改良していこうと思います。

お問い合わせはこちら

NEED SOME HELP?

各種案件のご相談・ご依頼は
こちらよりお問い合わせください。

CONTACT