自作電子小物/開発情報/接近解錠扉0.1
自作電子小物/開発情報/接近解錠扉0.1
Auto lock door V0.1
2016年3月29日火曜日








一般家庭用のドアのロックを自動化する小物。キーを所持していれば、接近するだけで自動でロック解除され、離れると自動ロックされる。キーはスマートフォンにインストールされた専用ソフトウエアである。
目 次
1. 大まかな設計
1.1 目標とするもの
(1) 期待される小物のイメージ
(2) 要求仕様
1.2 構成要素の検討
(1) キーデータ通信
(2) キーデバイス
(3) 認証方法
(4) ドア連携
(5) 表示と入力
(6) 電源部
(7) 制御部
(8) 構成図
2. 詳しい設計
2.1 キー交信
(1) スマホ側アプリ
(2) ドア側アプリ
2.2 表示・操作部
(1) ドア側機構
(2) ランプ
(3) スイッチ
(4) アラーム
2.3 データ保存
2.4 電源部
(1) 全体
(2) 蓄電部分
(3) ACアダプタ選択
(4) 停電検出
2.5 制御部
2.6 基板
2.7 外装
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
1. 大まかな設計
小物のイメージを固めて行きます。
1.1 目標とするもの
今回は、大そうな理由があって、この小物を考えた訳ではありません。次のような事情によるものです。
・買い物をする事が多くなり、両手が手荷物でふさがっていると鍵を開けるのが面倒。
・合羽や防寒具などを身につけていると、鍵を出すもの一苦労。
・最近、鍵の具合が悪く、閉まらなくなってきた。
(1)期待される小物のイメージ
近づいたらドアのロックが外れ、また離れた時には自動ロックされるという、ごく単純な装置です。
・正当な人が近づいた時のみ、特に操作しないでロック解除
・近くにいるかぎりオープン状態
・離れたらロックする
(2)要求仕様
色々な使用状況を考えてみます。
① 停電 <電源がなくなった場合の動作について>…ドアオープンすべきか?
・電力会社要因
ほとんどないので、どちらでも良い
回避策は必要、普通のキーでも開けられるとか
・ブレーカ断
在宅時はあまり関係ない
不在時に発生することはあまり考えられないが、
あった場合として考えられるのは電気火災なので、これは大問題なので、オープンにすべき
・災害
在宅者が動けなくなった場合を考えると、オープンにすべき
火事場泥棒を考慮しなければならないが、優先度を考えれば、この判断は正しいと思う
・悪意の故意
知識がないと危険な行為、自家目的としては考えすぎ
・誤使用/誤動作
自分のせいなので、どちらでも良い
どちらかといえばオープンにした方が救われる
それより、通常キーを使えるようにしておくなど、所有者が強制的に開けられる手段は残しておく必要はある
② 駆け込み <出かけた後にオートロックされる前に空き巣が入った場合>
外出アクション=電波コネクション喪失が唯一のトリガだとすると、この問題が発生する。
・人感センサなどで(ドロボウ)活動を検出したら
アラームを出す:サイレン/電子メール
ロックアウトする:一般宅ではどうしたって逃げられる、この小物だけで撃退するのは難しい
・事を起こす前に思いとどまらせる方が効果的かもしれない
・とにかくたくさんの証拠を残してもらって退出してもらうのが最善
防犯シール
実物の誇示(点滅ランプ、表示など)
実働:センス → 軽いアラーム
脅し → うそのメッセージ
●ドアに変な機械が付いていれば、それだけで普通ではないと気がつくはず
●ランプ表示やメッセージ、警戒音などを出すようにしておく
③ ピッキング <ロック状態に強制開錠された場合>
5分で開かなければ、あきらめると言われるので
・サムターンをロックして回らないようにする
●ロックまでしなくとも強い力で反発する(ピッキング行為を邪魔する)
・開けられても、またすぐ閉じる
●開けられたらアラームを出す
・電気ショック(シリンダに電荷を貯めておく)
・偽シリンダ、うそボタンなどのダミー(指紋採取)
④ とじ込み <電子キーを持たないでロックアウトされた場合>
●通常キーで開錠
・本人しか知らない開錠方法を用意
かくしボタン
定時開錠 決まった時刻、時間帯に無条件にオープンしてしまう
(通常在宅時の時間帯の一部など)
不便かもしれないが仕方なし
<要件>
・通信が接続したら解錠、接続が切れたら施錠する
・外側からも内側からも、手動での開閉を可能にする
・ロック状態で強制的な解錠をしようとした場合、反発した力が生じ、一定上の力が加わったらフリーにする
・上記の場合、アラーム音を発する
・停電したらアンロック状態にする
・ロック状態のときは、メッセージ表示もしくはランプ点滅などで存在を知らしめる
1.2 構成要素の検討
(1)キーデータ通信
<接近を検知する方式>
可視光:カメラ
設置/検出可能位置に制約がある(見通し2〜3m位が検知エリア)
画像処理上、個体識別はかなり難しい
キーの代わりとなる外的特徴をセンス?
高価な装備になりそう
赤外線:キー側が発光:
開錠操作が必要で、実現したい形ではない
常に発光している必要があり、エネルギー効率は悪い
ドア側が発光:
受光側のキーは、体外に出しておく必要がある(使い勝手が悪い)
PIRセンサー:
設置/検出可能位置に制約ができる
個体識別はできないだろう
赤外線は直進性という特徴から、この要件には不適と考える
電波 :微弱電波でキーと通信(一方向もあり得る)
安価な通信モジュール(500円位〜)もあるので実現容易
向きに関係なく、純粋に接近距離をセンス可能
認可が必要
電波共鳴式(電子タグ)
接近というより、センサを通過するような感じ
入口の門に仕掛ければ存在を意識せずにすむ
電池不要、キーが小型
センサ側が大掛かりになる
タッチ式(NFC、非接触型のICカード)
胸ポケットや尻ポケットに入れておいて、センサに近づけるだけでいい
キーにSuicaのような既存カードを流用できる可能あり
使い勝手を許容できるか(本来の思いとはズレている)
携帯電話/スマートフォンをキー代わりにする
電話機は基地局と定期的に通信しているので、その電波をキャッチし対象の接近を知る
詳細な通信仕様は開示されているとは思えないし、秘話されてるし、かなり難しいだろう
電話機のGPSを使った位置情報通知の仕組みを利用し、接近を検知する
十分実現可能な方式、ドア側がインターネットと接続する必要あり
通信キャリアのサービス次第(有料の場合あり)
特定の通信サービスに依存する事になり、小物の独立性が低下する
電話機のBluetooth通信を利用
近距離通信なので、接近検知には好都合
内蔵アプリケーションを利用できるのか、プログラム開発が必要なのか要調査
実現性が見えない
超音波:人が聞こえないぐらいの周波数でキーと通信(一方向もあり得る)
指向性があるので、設置/検出可能位置に制約ができる
選択:使い勝手の良い微弱電波を利用した方法で考える
(2)キーデバイス
<キーにするデバイスの選択>
外出時は持っていく必要があるので、小型/軽量が必須(鍵と同じサイズが望ましい)
安価な電波モジュールは「フリスク」サイズ
定期的な電池交換が必要
既製品的なものもあり、自作しなくて良い
携帯電話のBluetooth機能
スマートフォンならアプリケーションを開発して利用する事が可能
ただし、所持している機種(iOS系)の関係からBLEのアトリビュート機能を使う前提となるが、
Android系でも対応は可能なので問題は無い
ドア側のソフトウエアは、過去にもBluetoothを使った物を開発した事が有るので明るい
選択:スマートフォン + Bluetooth
(3)認証方法
鍵としての基本的な機能として、認められた人だけ解錠しなければなりませんので、相手を特定:認証する必要が有ります。
暗証番号式:
個体毎に予め決めた番号、もしくは使用者が決めた番号と照合する事で、相手を確認する
番号を盗聴されたらアウトなので、通信は暗号化が必須
人間系で知られてしまったらアウト
偽装ドアで暗証番号を取得されてしまう
ペアリング:
Bluetoothのペアリング機能を利用する
既存技術の活用、あらためて面倒なセキュリティについて考え直す必要は無い
ペアリングにより新しい「鍵」が作られる
不特定の相手とペアリングされないようにしなければならない
自動生成された暗証番号を確認/入力する仕組みになっているが、この小物では表示/入力は難しい
固定的な暗唱番号を設定する手も有るが、パスワードクラックが心配
認証ボタンを押している間だけペアリング可能にすれば良い(操作可能な人だけが認証)
登録済の情報を確認できるすべが必要
もし悪意ある相手からペアリングされてしまった場合の事を考える
登録数を1に制限すれば、すぐ気がつく
デバイスアドレスを見ても正直判らないので、登録数ぐらいは見られるようにする
一般的ではない手法を使う:
普通ではない方式なら、あきらめるか解除法を見つけるのに時間がかかるはず
自作物なので、好きな仕様に出来る
とは言うものの、ちょっと調べるだけで面倒だと分って来た
選択:ペアリング機能を利用
(4)ドア連携
ドアにもさまざまな形があります。今回設計対象とするのは、片開きの「扉」で、マンション/アパートに使われる一般的な物とします。また、ドア本体の改造/加工は無い方が良く、可能なら、元の状態にすぐ戻れるようになれば良い小物と考えます。
<サムターンを回す方法>
多くは室内側のノブを90°回転させる事で、ロック/アンロックする錠前で、外側からのキー解錠機構と共有しています。よって、これを回すだけで解錠/施錠を行えます。
ノブの回転方法として
サーボモータ
1本の制御信号で、0〜180°ぐらいの絶対角度に軸を回転させる事ができる部品です。
サムターンノブに直結させる事が可能なので、この要件にピッタリの物と思われます。
RC用は安価で入手容易、種類も豊富です。
ただし、オープンループ型なので、その辺には注意が必要です。
電磁プランジャ
要は電磁石で、シャフトを押したり引いたりする部品です。中間位置に止める事は出来ません。
取り付けが、面倒です。
DCモータ+位置センサ
モーターの回転軸に、位置を検出できるセンサを取付けて、所定の位置で停止できるようにする方法です。
センサは、光遮蔽板+通過型フォトセンサ(フォトインタラプタ)や、小さい磁石+リードスイッチや、
機械的なスイッチや、可変抵抗器(ボリューム)を使う方法も有ります。工作が複雑になります。
結局サーボモータの事ですね
ステッピングモータ
相対的に任意の回転角度に軸を回転させる事が出来ます。
あまり入手容易な部品ではありません。
絶対位置を検出するセンサが、他に必要になります。
あまり、選択する余地はなく、RC用サーボモータしかないと考えます。軸に「コ」の字形の金具を取付けるだけで、ノブを回転させる事が出来ますし、ドアに磁石か吸盤で固定する事で、加工無しに取付けられます。









要件から、外部から無理矢理回された時にパワーを抜く必要があります。上図のように、いろいろ考えてみました。その結果、一番安く済みそうな方法に食いつきました。電流センサと、回転角センサ、圧力センサと比べれば、実装も考慮すると「電流センサ」式が楽そうだなあという考えです。
サーボモータは、 軸に反対の力が加わった場合、その位置に留まろうとするので,反発して多くの電流が流れます。その電流値を監視する事により、反発力を検出でき、制御信号に反映させる事ができるというもくろみです。 (クローズドループ制御に化ける)
サーボモータで力を抜く方法は、PWM信号を止めるとニュートラル、フリー状態になります。軸を自由に回せるようになりますが、スカスカになるのではなく、ちょっと力が必要です。強引に回すと内部メカが壊れます。(ギアの歯が欠ける)製品によって簡単に壊れます。
(5)表示と入力
要件から、下記の表示装置が必要
・パスキー表示器(数字)
7セグLEDとかLCDモジュールが適当と思われますが、若干コストがかかります。
300円〜、おおむね500円ぐらい。
自動応答でのペアリングも可能になったので、必須ではなくなった。
ダミーメッセージなども表示できるようになるので、欲しいところですが、ペアリングの為だけの装備なので
今回は省略する事とします。
・警戒ランプ(点滅)
必須の装備。
LEDランプで対応。
・施錠状態ランプ
サムターンのノブの位置を見れば分る事ですが、遠目で確認する時にはあった方が便利、安心。
LEDランプで対応。
・コネクション状態ランプ
コネクションされているのかどうか普通は関係ない。
ただ、意図されない接続をされた場合や、おかしい動きをした時に切り分けられる。
余裕があればLEDランプを装備する。
要件から、下記の入力装置が必要
・パスキー入力(テンキー)
コストと取付け場所の問題があり、あまり付けたくない。
自動応答でのペアリングも可能になったので、必須ではなくなった。
今回は省略する事とします。
・ペアリング許可スイッチ
必須なのでスライドスイッチもしくはプッシュスイッチを装備します。
・手動施錠/解錠スイッチ
必須なのでスライドスイッチもしくはプッシュスイッチを装備します。
(6)電源部
必要な電源要件は
・4.8V〜6V 200mA サーボモータ用電源 停電時に2秒ほど保持する必要有り
・5V 10mA Bluetoothコントローラ用
・3.3V 30mA マイクロコントローラ、ランプなど
一番電力を消費するのはサーボモータにように見えますが、ほとんどの時間はアイドルなので平時は10mA程度です。 省電力化して、バッテリー駆動も可能かもしれません。しかし定期的な電池交換するのは、少なくとも1年単位ぐらいのスパンでないと面倒なものです。1年駆動させるには、結構設計を詰める必要が有る事は、過去製作した小物で実感しています。また、サーボモータの駆動時間に大きく左右される事は、すぐにでも予測できます。この小物でのバッテリー化のメリットは設置の容易さです。結局、最初に電源を引く面倒さがあっても、その後は気にしなくて良くなる方が良いと考えます。
基本的には、入手容易なUSB電源アダプタか汎用のACアダプタを使い、サーボモータの電源供給をメインに考えます。そこから、所要の電圧へはボルテージレギュレータで調整します。
面倒な点は比較的大きな電流を2秒間以上保持する必要が有る部分です。
サーボモータの仕様が、あまり細かい事まで書いていないので、実測/推測となりますが、2秒保持する電力量は
6*0.2*2=2.4Ws=0.7mWh
程度ですので、蓄電デバイスは色々な選択肢があると思われます。
・電気二重層コンデンサ(EDLC)
F=As/V = 0.2[A]*2[s]/5[V] = 0.08[F]
サーボモータの動作範囲6V〜4.8Vで2秒ですから、仮に直線的な変化とした場合完全放電まで10秒ぐらい
なので5倍程度の容量が必要になると考えられます。よって、0.08*5=約0.5F以上の物が必要です。
実際に入手容易な部品を調べると耐圧が低いものばかりなので直列でしのぎます。
3V系×2本=6V 260円×2=520円
2.5V系×3本=7.5V 200円×3=600円
5.5V系×2本=11V 400円×2=800円
耐圧に余裕無しですが5.5Vを1本にすると400円で上がります。
回路での工夫が必要。
・二次電池
もったいない使い方となりますが、コスト的に問題なければ採用しましょう。
単4形充電池×4本=4.8V:120円×4=480円
電池ケース50円
過放電防止のFET(2SK2925)90円 合計620円 意外と安い
・一次電池
これもコスト見合い
単4×4本=6V:80円
電池ケース50円 合計130円 圧倒的に安い
装着しっぱなしになりますので、液漏れが心配です。
選択:電気二重コンデンサ
一次電池はコスト的にはダントツですが、使用する時に色々気にしなくてはならない事が多く、多少面倒です。
EDLCは全く気にしなくても良くなると言うのが、選択した一番の理由です。
(7)制御部
要件をまとめると
・アナログポートは2以上
・デジタルポートは4以上
・PWMポートは1以上
・USBホスト機能
・内蔵FLUSHは128kB以上
たいした処理は行わないのでCPUパワーは必要ありません。
・PIC24FJxxGBシリーズ
・PIC32MXシリーズ
・LPC1700シリーズ
・STM32F4シリーズ
など等、ありますが今回は「PIC32MX」とします。
入手性の良さと低コスト、Bluetoothスタックのサポート状況が選択の要因です。
(8)構成図
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
2. 詳しい設計
実際作成出来る所まで設計を進めます。
2.1 キー交信
(1) スマホ側アプリ
・プロトコル/プロファイル
前提としてBLEのATTでの通信となります。
サービスUUIDは、通信相手側も開発しますので、完全プライベートでも良いです。
今回は、標準サービスの中の「Automation IO Profile」「Automation IO Service」を適用。
これは、デジタルとアナログポートの入出力のためのものです。
デジタル1ポートだけ使い、オンで解錠/オフで施錠という定義にします。
・使用する開発ツール/動作環境
所持しているスマートフォンの都合でiOSのアプリケーションの開発です。
iOSではCoreBluetoothというフレームワークを使う事になります。
開発ツールは標準のXcodeで、言語は慣れているObjective-Cを使います。
・処理概要
Automation IOサービスを探し、見つけたらすぐコネクション要求します。
つながったら、 ポートビットオンして解錠を要求します。
あとは、画面から解錠、施錠を指示されたら、ポートビットを操作します。
ディスコネクトしたら、またサービスを探します。
バックグラウンド状態でも検索は継続します。
(2) ドア側アプリ
・使用する開発ツール/動作環境
PIC32MXの供給メーカマイクロチップの標準IDEである「MPLAB-X」で問題ありません。
MPLAB-Xは、動作する環境を選びませんので大変助かります。
開発する言語はCです。これは開発者(私)のスキルの問題です。
ライブラリは標準の「Harmony」で問題ありません。
Bluetoothスタックについては、自家製の物を使います。
この為にBLEでのペアリング(セキュリティマネージャー)をサポートさせます。
・処理概要
認証 ー 全てBluetoothスタックのペアリング機能に任せます
手動開閉 ー ボタン操作/リモート操作、サーボモータ制御
自動開閉 ー 接近解錠/定時解錠(当初未実装)
停電対応 ー 停電検出、解錠
解錠検出 ー 駆動電流監視、サーボモータフリー、警告音発生
2.2 表示・操作部
(1) ドア側機構
●サーボモータでサムターンを回す
制御はPWM信号を送るだけで、絶対回転位置にアームが動きます。50Hzでパルス幅が0.5ms〜2.4ms (2.5%〜12%) の仕様ですが、規格化されている訳ではないのでメーカによって異なります。製品によって回転方向が逆だったりします。サーボモータ個体によっても若干回転角は異なりますので調整が必要で、位置調整作業が必要になって来ます。
今回は一品ものの製作なので、現物調整で対応する事とします。
(実際試した所では、メーカや個体によって大きく変わる事はないようです、回転方向以外は)
●本当に回せるの?
サムターンのノブを人間の手で回した感覚と、サーボモータが回るときの応力を手で感じた状況を比べ、十分回せると思っていましたが、不安はありました。この小物で初めて機械的な動きを持つ物が初めてだからです。
回転力の性能値はサーボモータの仕様表で分りますが、サムターンの回転力を調べる測定器は持っていません。そうすると、実物合わせの世界になってしまいます。以下、試した条件です。
(ノブは固くも柔らかくもないと感じられる程度のものです、数値では示せません)
・マイクロサーボ Tower Pro SG-90 1.8kgf·cm
・ミニサーボ Futaba S3502 ???(ミニサーボは3kg·cmが多い)
・標準サーボ JR ES539 4.8kg·cm
ミニサーボでは回らない事があり、安定して回せるのが標準サーボでした。これは、試行したドア(鍵機構)によって変わると思いますが、意外と力がいる様です。人間が固いと思う位のノブは、超強力なサーボモータにしないと、ままならないという感じです。
●応力検出
サーボモータの駆動電流を監視する事で応力を検出する方式です。電流センサもさまざまありますが、一番簡単でコストが低いシャント抵抗式で問題ないと考えます。直接マイクロコントローラのA/Dコンバータで電圧を計測できるように、出来るだけ大きな抵抗値を考えてみます。
検出電流×シャント抵抗=計測電圧
シャント抵抗=計測電圧/検出電流
=0.33V/500mA
=0.66Ω
計測電圧0.33VはVDDの1/10で、A/Dコンバータの出力が102カウントの数値です。これ位なら識別は可能ではないかと言う想定です。0.66を切りのよい数字にして1Ωとし、単純にローサイド側に取り付けます。
(2)ランプ
明るい場所での設置や、明るすぎる場合の減光機能が必要だとか、特に難しい条件はないので、マイクロコントローラ直結の単純なLEDの駆動で問題有りません。しかし、マイクロコントローラが3.3V電源なので、白・青系のVF=3.4V〜では、駆動回路は少々考えなければなりません。もっともシンク駆動で設計しておけば、おおむね大丈夫(融通が利く)だと思います。
手持ちの部品が、プッシュスイッチにLED(白、緑)が内蔵されたもので、LEDの仕様がはっきりしません。実測で、3.3V+電流制限抵抗で問題ない光量を得られましたので、この条件で使用する事とします。
(3)スイッチ
特に問題無し。
プルアップ抵抗は、マイクロコントローラ内蔵の物を活用する。
(4)アラーム
発音部品の選択
大音量と言うほどでもないので、コスト的に優れる部品の選択で良いと思われます。
大きめの圧電スピーカーでいけると思います。
2.3 データ保存
ペアリングデータを不揮発性メモリに保存する必要があります。
プログラム領域(FLASH)の一部を保存に使用可能。
しかし、製作中にEDLCを壊してしまい、急遽手持ちの高容量品に変えたので、数時間はメモリ保存できるうようになりました。とりあえず保存機能は後回しとします。
2.4 電源部
(1)全体
UPSの部分がEDLCを使った蓄電機能です。ACアダプタは安定化したDCですので、5Vにすればボルテージレギュレータを1つ省く事が出来ます。
(2)蓄電部分
左側のような単純な回路では、今回の要件では適用できないと思われます。
充電ルートと放電ルートを別々に設定する事で、多少部品が増えても無理の無い回路になります。充電電流は抵抗値で自由に設定する事が出来ます。充電電流を高くすると、ACアダプタの仕様にもかかわって来ますし、別に時間がかかっても支障はないので、100mA以下で設計しました。
EDLCは、基本設計通り1F以上で、耐圧が6V以上の部品で探すと「Vina Technology VEC3R0335QG」3.3F 3V 260円×2個直列接続とします。(内部抵抗がmΩ級のもので選定)
ダイオードについては、充放電の電圧差を少なくするためにVfの小さいショットキバリアダイオード(SBD)を選択しました。IFが1Aぐらい〜 VFは0.3V以下なので、入手しやすい「1S3」が良いと思われます。ACアダプタの入り側のダイオードは、必ずしもSBDにする必要はありません。
(3)ACアダプタの選択
出来れば、入手容易なUSB電源アダプタが良いのですが、要件を満たせません。汎用品として、近い所では6Vの物が使えます。使用するサーボモータ次第ですが、ピークを考えると500mA位は必要でしょう。6V1Aのスイッチングタイプで650円位です。
実際には、昔使っていた携帯電話のACアダプタがありましたので、これを使用します。5.8V700mAの仕様です。
(4)停電検出
ACアダプタの出力をマイクロコントローラで監視する事とし、分圧抵抗でデジタル入力に接続できるようにします。
今回、SBDを使っていますが漏れ電流が比較的多いので、停電を検出できない可能性があります。SBDを止めて、普通のシリコンダイオードを使えば済む事ですが、VFが+1Vぐらい増える関係で、7V出力のACアダプタという入手困難な部品が必要になってしまいます。回避策として、分圧抵抗の全体抵抗値を低くする事で、多少漏れ電流があっても影響をなくします。
2.5 制御部









2.6 基板
一品物なのでユニバーサル基板を利用します。
2.7 外装
一品物なので、アクリル板を曲げて適当に作ります。
Wireless key system for home door.