編集前記

"まとまる前の文章" を "まとめる前" の文章

スマートなロックを作った話

いきさつ

コロナにより外出しづらい雰囲気の折、いかがお過ごしでしょうか。

けっきょく南極大冒険、毎日部屋に引きこもっている日々については、土日などにやることがなく暇を持て余しています。
のでこちらに転居してきて早3年目、積みに積んできたやりたいことリストの中からスマートロックの自作を引っ張り出してきて、2年越しの達成としゃれこんだわけです。

つくるスマートロックはこんな構想で

スマートロックというとQrioやSESAMIなどのスマホアプリ等から開けられるタイプが市販では主流ですが、
スマホ取り出してアプリ開いてボタン押して、ってのは手間的にはどうなのと思ってしまいます。

最終的に自室をフルスマートホーム化するのであれば、IなoのTにする必要がありそうですが、現状必要性に駆られていないので。
無線通信機能は持たせません。

f:id:Rawashi:20200427212406p:plain
スマートロック概念図

  • 外からはNFC or FeliCaタッチで開錠施錠
  • 内側からはボタンで開錠施錠
  • ドアの開閉を検知してオートロックをつける
    • セルフ締め出しの危険があるので賛否両論

ざっとこんな感じですね。
NFC or FeliCaと書いたのが、 パスタ料理 or ペペロンチーノ ぽい言い回しでとても気持ち悪いですが、これは完成品に忖度しました。
今回使ったリーダがRC-S620SというFeliCaリーダライタでして、現状だとTypeA/BのNFCに反応しません。Arduino用に出されているライブラリがTypeFにのみ反応する仕様なのです。
同じ悩みを抱えた方が、A/Bにも対応したバージョンのライブラリを公開してくださってるぽいので今後対応を考えたいと思っています。

オートロックに関しては賛否ありますね。
忘れっぽいダメダメ人間の自分にとってオートロックは恐怖しかないのですが、今回敢えて導入することにしました。
理由は特にありませんが、中にいるときでも鍵あけっぱなのは怖いという意見に配慮した結果です。

ちなみになのですが、今回の要件と全く同じ構成でスマートロックを作ってる方がいらっしゃいます。というかそちらを敬意をもって丸パクリさせていただきました。
ありがとうございます。使った抵抗の抵抗値までパクらせていただきました。

当該ブログ中で回路図というか実体配線図というかがジオシティーズリンク切れになってしまっていましたので、以下ではそれらしく書いたものを画像1枚貼っておきたいと思います。

こんな回路に落ち着きました

f:id:Rawashi:20200427212258p:plain
スマートロック実体配線図

回路自体は何も変なことはしていません。 Arduino Nanoが基幹のやつです。 使ったことがなかったのでRX/TXのシリアル通信の仕組みとかわけわかめですが、一応ちゃんと動いてるっぽいのでちゃんとできているのでしょう。

ドア開閉を監視するリードスイッチは100均のドアセンサをほじくってセンサと磁石だけいただいています。
"100均 リードスイッチ"等でggるといいかもしれません。

技術の説明

ソフトのほうはGithubにスケッチを公開しています。
やっつけなので最適化もリファクタも何もできていませんが、未来の自分のためにコメントくらいは書いています。
time_tをtime_tのまま引き算したりしちゃってるのでイケてないかも。

というか電子工作らしい電子工作が大学の情報科学基礎実験以来だったので完全にいろはを忘れていました。
LEDもぶっ飛ばしました。

サーボの給電制御にMOS-FET(えふいーてぃー なのか ふぇっと なのか)を使いました。知らない子でしたのでちょっと苦労しました。
Gate Drain Source の三本足があり、Gに電気流すとD→Sで通電し、Gに流さないと導通しない素子らしいです。
給電を制御、と聞いたのでてっきりサーボより上流に置くものかと思ってやってたのですが、GNDに近いところに置くんですね。勉強になりました。
ゲート抵抗とゲートソース間抵抗についてはいまだ理解しきれず。色んな抵抗値を試したのち今回のやつに落ち着きました。

困難はこんなん

今回作った中でめちゃめちゃ困難だったのはサーボでのサムターンの形状です。
サムターンとは内側からカギ閉めるときにカチャッと回すあの部分ですが、うちは古い集合住宅で、集合住宅にありがちな面付箱錠の楕円サムターンタイプなのです。

(ちなみにスマートロックの構想を練る段階で玄関のカギについて詳しくなりました)

この形状だとサーボの回す力をかけづらいのと、位置合わせが高難易度でした。

所感

  • 鍵として使うFeliCaIDmをどう拾うかめっちゃ試行錯誤しました。RC-S620Sがシリアルポート占有しちゃうのでarduino nanoだとシリアルモニタで見れないんですよね(たぶん)。
    • このRC-S620Sの回路のシリアル通信内容をprocessingで読みだして...みたいなことやってる人のマネもしましたができず。
    • 最終的には倉庫にあった古いnfcスマホをたたき起こして、NFCリーダアプリ入れてIDmを読みました。
      • Android4とかですかね。対応してるスマホが生きてて奇跡でした。
  • サーボ部分のケースは木工しましたが、3Dプリンタなどあると便利そうですね。
  • メイン回路のは100均の名刺サイズのケースです。マステでデコってます。
  • リーダであるところのRC-S620Sですが、なんとミンティアのケースにすっぽり収まります。
    • ケースの内部に柱状の部分などがありますが、ちょちょっと削ったりするだけで、大きさ自体はぴちっと入ります。
    • 雨のかかる屋外などでは防水性能が気になるので、はめ込んだ後なにかしらで密閉すればいいと思います。

おしまい。