【工事無し】簡単にICカードでスマートロックを作る

# STLファイルと画像を公開しました
https://github.com/moburo/smart_lock_2303

# ICカード認証式回転キーボックス
皆さんは研究室や職場で共通の鍵を使うとき，鍵をどこに置いていますか．扉の上ですか？鉢植えの中ですか．
今回は鍵の管理を簡単にスマート化することを目指して行きます．
![10E51902-A2EF-42C7-B8F2-1D4B286AFF7F.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/53c56c79-47ca-002b-6518-35fa901b5ac1.jpeg)
<iframe width="560" height="315" src="https://www.youtube.com/embed/hv0PaDA-nBY" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

# 日本ラズベリーパイユーザーズグループ賞を受賞しました
こちらの作品は，ソラコム主催「ラズパイコンテスト」にて日本ラズベリーパイユーザーズグループ賞を頂きました．
[詳細はこちら!](https://blog.soracom.com/ja-jp/2021/07/15/announcing-results-of-raspberry-pi-contest-2021-spring/)
![Epson_20210719085853.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/204cd37d-21b4-d4fb-5031-0b47db044415.jpeg)

# スマートロックは手間とお金がかかる？
私はかつてスマートロックを作ったことがあります．
これはICカードを読み取り，メンバーリストにあればドアの鍵をサーボモーターで回しロックを解除するというものです．
![写真 2017-11-15 1 06 32.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/39a49023-21be-5292-c3ed-e6ff812e6b8f.jpeg)

当時は3Dプリンターなどなくサムターンのアダプタも手作り，配線もいっぱいでとても大変でした．
このときは総額2万円位かかりました．これくらいかかるならスマートロックを買った方が安くなってしまいます．
![写真 2017-11-15 1 06 55.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/c21f8380-1025-42ed-a179-cb0534bef3c8.jpeg)
もっと手軽に鍵の管理ができないかと考えました．

# 鍵さえ共有できれば良い
研究室ではよく鍵をキーボックスに入れて，暗証番号を打ち込むことで開ける方式があります．
そこからヒントを得ました．
![スクリーンショット 2021-05-31 0.03.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/4392d4ce-cb7f-2935-0f4a-cae53927f880.png)

キーボックスは導入が手軽ですが，以下のデメリットがあると思います．
* 暗証番号を打つのがめんどくさい
* 同じ暗証番号を複数人で使い回している
* だれが暗証番号を知っているのか完全に把握できない
* 誰がいつ開けたかわからない

これらのデメリットを克服できるデバイスを考えたいと思います．

# 動作原理
ICカードで認証をして，サーボモーターを使って鍵を収納するサーボモーターを制御，クラウドに記録することで鍵を管理することにしました．以下で詳しく説明します．
![スクリーンショット 2021-05-31 16.21.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/7cb28f92-eb67-5ac3-c318-40da9e79f416.png)

# 使ったもの
|品名  |価格  |備考  |
|---|---|---|
|[Raspberry Pi4 Model B / 4GB](https://www.switch-science.com/catalog/5680/)  |約8000円  |Raspberry Pi3 Model Bでも良いと思う  |
|[SORACOMのSIMカード(プランD)](https://soracom.jp/store/5261/)   |初期費用2000円弱  |１日単位で利用できる,１日１０円位  |
|[FeliCa対応のICカードリーダー PaSoRi RC-S380](https://www.amazon.co.jp/%E3%82%BD%E3%83%8B%E3%83%BC-SONY-%E9%9D%9E%E6%8E%A5%E8%A7%A6IC%E3%82%AB%E3%83%BC%E3%83%89%E3%83%AA%E3%83%BC%E3%83%80%E3%83%BC-PaSoRi-RC-S380/dp/B00948CGAG)   |約3000円弱  |メルカリで2000円前後，３月の確定申告後に安く売り出される|
|[サーボモーター](https://ja.aliexpress.com/item/1005001295300959.html?spm=a2g0o.productlist.0.0.6fd92c57o6ZAq9&algo_pvid=961e1050-33b0-4592-8065-a21c609e7bcb&algo_expid=961e1050-33b0-4592-8065-a21c609e7bcb-0&btsid=0b0a556016224447385062062e9bfa&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_)   |約200円  |秋月だと500円くらいです |
|[3Dプリンタとフィラメント](https://www.xyzprinting.com/ja-JP/product/da-vinci-pro)   |約200円  |本体はXYZプリンティングのダヴィンチ 1.0で約８万円  |

これらを使って以下のように接続します．
![スクリーンショット 2021-05-31 16.41.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/3763029e-7996-f990-e9f3-edc34e44529c.png)
(fritzingを使いたかったのですが，いつの間にか有料化してました...)

# 解決策1:ICカードを使ったキーボックス
上でも紹介しましたかつてのスマートロックにはICカードを使った認証を使っていました．
![写真 2017-11-15 0 58 35.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/18a97bc7-98e5-dccc-cf55-c61f97eb0a9e.jpeg)
今回はこのシステムをキーボックスと組み合わせてみたいと思います．

まずは，Fusion360でデザインしていきます．
![スクリーンショット 2021-05-31 0.17.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/d9f525ec-18a2-10aa-7d0c-777e03267932.png)
これを3Dプリンターで出力していきます．ざっと，2~3時間で，3Dプリンターで造形物を出力するものとしては短いほうだと思います．
![DA2746F5-B189-490C-BE97-E4B90C2E15CE.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/b52130d8-21cb-0e65-69a9-d8610a48ad34.jpeg)

今回のキーボックスは扉が回転式で鍵を収納します．
これにキーボックスの扉を開けるサーボモーターを組み込みます．

サーボモータの制御はこちらのサイトを参考にしました
[Raspberry Piでサーボモーターを回す - Qiita](https://qiita.com/undo0530/items/51cc446eefec6c91c26d)
これを使って，サーボモータを半周させて開閉を制御することにします．
<iframe width="560" height="315" src="https://www.youtube.com/embed/8r_TebsCdpg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

うまく動くことを確認した後，これを全部組み立てていきます．
PLA樹脂は液体の接着剤よりホットボンドを使うのがいいと思います．
![53E47E2B-23AB-4BD0-A056-659169576F61.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/6ad0d8da-be18-a4cc-e6b5-be0d752b6ede.jpeg)
![S__16703491.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/a093b729-9ba5-54b6-1838-b7ce8c4313ad.jpeg)

ICカードはソニー 非接触ICカードリーダー/ライター PaSoRi RC-S380を使います．
https://amzn.to/3p8sF79
![スクリーンショット 2021-05-31 0.36.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/b31bc6bc-0f9a-a1dd-ffa8-b13ee96c43f8.png)
Pythonで扱えるようにライブラリが入手できます．
このリーダー使ってICカードに記録されている固有の識別コードidmを取得して，これを認証に使いたいと思います．
以下のサイトを参考にしました．
[ラズパイにパソリを繋いでNFCタッチ！](https://jellyware.jp/kurage/raspi/nfc.html)

ここから，タッチすると予め登録しておいたidmのリストから調べ，該当すればサーボモーターを動かして鍵が取れるプログラムを作成します．
Pythonを使って仕上げました．テストをしてみます．
<iframe width="560" height="315" src="https://www.youtube.com/embed/OsjHIPk_V3o" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

いい感じに動いています．


# 解決策2:Ambientを使った解錠状況の遠隔監視
AmbientはIotデバイスからの情報を受け取ってグラフやリストでデータを表示してくれるサービスで，基本的に無料で使えます．
これを使って，ICカードがタッチされた際，認証結果とそのidmを送信することで，いつ誰が入室を試みたのかがどこからでも確認できます．
![S__16711702.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/8b47df1e-0692-9c11-bb9d-90daee14b73e.jpeg)
下のように，認証できたら1,違うICカードなら0でそれぞれのidmをリストで表示してくれます．
これを使うと外出先から確認することができます．
![S__16711700.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/9780d534-4a7b-09f1-0523-cb86c871ba10.jpeg)



# 解決策3:WiFiの届かないエリアは，ソラコムのSIMカードでカバーする
大学の研究室はとても広く，研究室だけのWiFiでカバーするのは難しいです．大学には大学のWiFiもありますが，大勢がつながるWiFiにキーボックスを接続するのはあまり安全ではありませんし，本学の場合1アカウントで複数台は接続制限を受けます．
ソラコムのSIMカードを利用することで，少額で通信することができ，今回のような僅かな通信量のデバイスには向いています．このシステムなら，例えば会社での鍵の管理にも応用できると思います．

今回はUSBドングルを用意できなかったのでiPhoneにSIMカードを差してテザリングモードでRaspberry Piが接続しています．
![S__16711684.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/75253045-4db5-3e1b-ed77-d31de87feb8e.jpeg)

大手のキャリアが販売するスマートフォンにはSIMロックが掛かっている可能性があるので，各事業者に問い合わせる必要があります．私はauなのでauでSIMロック解除(今は無料!)の手続きをして，iPhoneを初期化したら使えるようになりました．
SORACOMのSIMを使用するためには構成プロファイルが必要です．以下のサイトからダウンロードしてください．
[iOS デバイスで SORACOM Air を使用する | さまざまなデバイスと SORACOM | SORACOM Users](https://users.soracom.io/ja-jp/guides/devices/ios/)

SIMロック解除していないとSORACOMのSIMを入れた途端に使えなくなる...
![S__16711716.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/6454f945-d781-9409-d6a4-2b214485e622.jpeg)

auIDから手続きした後，構成プロファイルをインストールして，「モバイル通信」から「モバイルデータ通信」をオンにしてください．これでこのSIMカードが利用できます．
↓ソラコムユーザーコンソール上からも確認できる
![スクリーンショット 2021-05-31 12.00.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/be989211-2084-9a07-7ea4-b0334da6d879.png)

そのあと．「インターネットを共有」をオンにしてテザリングを開始して，これにRaspberry Piを無線で接続します．とても簡単でした．
![S__16711718.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251987/0738cd62-63a1-ee9b-95be-0e39136d374f.jpeg)

# まとめ
今回はRaspberry PiとソラコムのSIM，3Dプリンターを使って"スマートキーボックス"なるものを作った．
導入が簡単で工事もいらない，鍵の形状を気にしないので従来のスマートロックが使えない鍵をお持ちの方にも導入しやすいと思う．費用面は3Dプリンターのフィラメント代にもよりますが，これが200円くらいで，ラズパイやサーボモーター，ICカードリーダーを合わせると1万円前後ではないでしょうか．既にRaspberry Piをお持ちならば半額くらいになります．これなら数台導入しても費用面でも安心です．

今後の課題点は，現状サーボモーターだけだと簡単にこじ開けられるので，上下に動かして物理的にロックを加えるなど対策したいです．
ただ，今回のキーボックスは破壊される脅威を防ぐのではなく，"隣の部屋を狙うほうが簡単だよ"というふうに自分たちが狙われないようにする防犯対策です．ほかを狙うより手間がかかると思わせるだけでも，防犯につながると思います．