接近解錠扉0.1/設計

一般家庭用のドアのロックを自動化する小物。キーを所持していれば、接近するだけで自動でロック解除され、離れると自動ロックされる。キーはスマートフォンにインストールされた専用ソフトウエアである。実際作成出来る所まで設計を進めます。

キー交信

スマホ側アプリ

プロトコル/プロファイル

前提としてBLEのATTでの通信となります。サービスUUIDは、通信相手側も開発しますので、完全プライベートでも良いです。今回は、標準サービスの中の「Automation IO Profile」「Automation IO Service」を適用。これは、デジタルとアナログポートの入出力のためのものです。デジタル1ポートだけ使い、オンで解錠/オフで施錠という定義にします。

使用する開発ツール/動作環境

所持しているスマートフォンの都合でiOSのアプリケーションの開発です。iOSではCoreBluetoothというフレームワークを使う事になります。開発ツールは標準のXcodeで、言語は慣れているObjective-Cを使います。

なお、BLEをスキャンできるツールがアプリストアにあります。BLExplrはアドバタイズ情報が細かく出ますし、LightBlueはUUIDを名前で表示してくれるので解りやすいです。Microchip社からも出ていたりします。ドア側の小物が出来上がるまでは、これだけで良いかと思います。

処理概要

Automation IOサービスを探し、名前がALDで始まるのを見つけたらすぐコネクション要求します。つながったら、 ポートビットオンして解錠を要求します。あとは、画面から解錠、施錠を指示されたら、ポートビットを操作します。

ディスコネクトしたら、またサービスを探します。バックグラウンド状態でも検索は継続します。

実装確認

これは、後にSwift言語で作り直した時のスクリーンショットです。画面はスライドスイッチがボタンに変わったぐらいで、ほぼ同じです。

アプリとしては極めて単純ですが、CoreBluetoothが少し面倒です。サンプルコードやインターネットでの解説文などを参考にして、動作を確認しながら作り進めていきました。注意しなければならないのはプロジェクトのinfo、Properties設定、です。

  • Privacy – Bluetooth Always Usage Description を追加登録、値はメッセージ文
  • Required background modes に App communicates using CoreBluetooth を追加

最初の設定は、開発当初は不要だったのですが、CoreBluetoothのバージョンが上がった時に仕様変更となったもよう。初めてアプリを起動した時、アプリがBluetoothを使用しても良いか使用者に確認するメッセージが出ますが、その時のメッセージ内に付加される文言です。2つ目は、フォアグラウンドでなくとも、Bluetoothが動くようにするものです。多分、バッテリーの持ちを悪くするでしょう。

ドア側アプリ

使用する開発ツール/動作環境

PIC32MXの供給メーカマイクロチップの標準IDEである「MPLAB-X」で問題ありません。MPLAB-Xは、動作するPC環境を選びませんので大変助かります。開発する言語はCです。これは開発者(私)のスキルの問題です。ライブラリは標準の「Harmony」で問題ありません。Bluetoothスタックについては、自家製の物を使います。この為にBLEでのペアリング(セキュリティマネージャー)をサポートさせます。

処理概要

認証   ー 全てBluetoothスタックのペアリング機能に任せます
手動開閉 ー ボタン操作/リモート操作、サーボモータ制御
自動開閉 ー 接近解錠/定時解錠(当初未実装)
停電対応 ー 停電検出、解錠
解錠検出 ー 駆動電流監視、サーボモータフリー、警告音発生

表示・操作部

ドア側機構

サーボモータでサムターンを回す

制御は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Ωとし、単純にローサイド側に取り付けます。

ランプ

明るい場所での設置や、明るすぎる場合の減光機能が必要だとか、特に難しい条件はないので、マイクロコントローラ直結の単純なLEDの駆動で問題有りません。しかし、マイクロコントローラが3.3V電源なので、白・青系のVF=3.4V〜では、駆動回路は少々考えなければなりません。もっともシンク駆動で設計しておけば、おおむね大丈夫(融通が利く)だと思います。

手持ちの部品が、プッシュスイッチにLED(白、緑)が内蔵されたもので、LEDの仕様がはっきりしません。実測で、3.3V+電流制限抵抗で問題ない光量を得られましたので、この条件で使用する事とします。

スイッチ

特に問題無し。プルアップ抵抗は、マイクロコントローラ内蔵の物を活用する。

アラーム

 発音部品の選択。大音量と言うほどでもないので、コスト的に優れる部品の選択で良いと思われます。大きめの圧電スピーカーでいけると思います。

データ保存

ペアリングデータを不揮発性メモリに保存する必要があります。プログラム領域(FLASH)の一部を保存に使用可能。しかし、製作中にEDLCを壊してしまい、急遽手持ちの高容量品に変えたので、数時間はメモリ保存できるうようになりました。とりあえず保存機能は後回しとします。

電源部

全体

UPSの部分がEDLCを使った蓄電機能です。ACアダプタは安定化したDCですので、5Vにすればボルテージレギュレータを1つ省く事が出来ます。

蓄電部分

左側のような単純な回路では、今回の要件では適用できないと思われます。

充電ルートと放電ルートを別々に設定する事で、多少部品が増えても無理の無い回路になります。充電電流は抵抗値で自由に設定する事が出来ます。充電電流を高くすると、ACアダプタの仕様にもかかわって来ますし、別に時間がかかっても支障はないので、100mA以下で設計しました。

EDLCは、基本設計通り1F以上で、耐圧が6V以上の部品で探すと「Vina Technology VEC3R0335QG」3.3F 3V 260円×2個直列接続とします。(内部抵抗がmΩ級のもので選定)

ダイオードについては、充放電の電圧差を少なくするためにVfの小さいショットキバリアダイオード(SBD)を選択しました。IFが1Aぐらい〜 VFは0.3V以下なので、入手しやすい「1S3」が良いと思われます。ACアダプタの入り側のダイオードは、必ずしもSBDにする必要はありません。

ACアダプタ選択

出来れば、入手容易なUSB電源アダプタが良いのですが、要件を満たせません。汎用品として、近い所では6Vの物が使えます。使用するサーボモータ次第ですが、ピークを考えると500mA位は必要でしょう。6V1Aのスイッチングタイプで650円位です。

実際には、昔使っていた携帯電話のACアダプタがありましたので、これを使用します。5.8V700mAの仕様です。

停電検出

ACアダプタの出力をマイクロコントローラで監視する事とし、分圧抵抗でデジタル入力に接続できるようにします。

今回、Vf(順方向電圧)の小さいSBD(ショットキーダイオード)を使っていますが漏れ電流が比較的多いので、停電を検出できない可能性があります。SBDを止めて、普通のシリコンダイオードを使えば済む事ですが、VFが+1Vぐらい増える関係で、7V出力のACアダプタという入手困難な部品が必要になってしまいます。回避策として、分圧抵抗の全体抵抗値を低くする事で、多少漏れ電流があっても影響をなくします。

制御部

基板

一品物なのでユニバーサル基板を利用します。

外装

一品物なので、アクリル板を曲げて適当に作ります。


投稿日

カテゴリー:

, ,

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です