Skip to content

BLE device to lock Windows by Proximity Profile (PXP) when the device detects that user leaves chair by force sensor

Notifications You must be signed in to change notification settings

deton/ChairLeave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

感圧センサで離席検出してPCスクリーンロックするBLEデバイス

BLEのProximity Profile(PXP)対応デバイスです。 PXPデバイスを持ち歩くのは面倒なので、 椅子側(座布団の下)に置いた感圧センサ(や自作マットスイッチ)で 離席を検出した時にコネクションを切断するようにしています。 PC側は、BluetoothスタックのPXP機能をそのまま使ってロックされます。

写真

人感センサによるスクリーンロック回避USBデバイス を作ったのですが、たまにロックされないままになっていることがあるので作成。

部品

デバイス側

回路は、 『Prototyping Lab――「作りながら考える」ためのArduino実践レシピ』 にあるものそのままです。

SDKサンプルのPXPファームウェアを変更して、感圧センサのADC読取値が一定以下になったらコネクション切断するように変更。

WICED-Smart-SDK-2.2.2のbleprox.cに対する変更です。 (bleprox.cがオープンソースでないので、ソース公開でなく変更差分のみ公開)

コマンドプロンプトで、WICED-Smart-SDK-2.2.2のmake.exeのあるディレクトリで、 genChairLeave.batを実行すると、変更後のファームウェアソースを生成します (要vim。vim.exeにPATHを通しておいてください)。

PC側(Windows7)

  • I-O DATA USB-BT40LE USB BLEをいくつか試したところ、 Broadcomスタック(I-O DATA USB-BT40LE)のロック機能が使いやすそうでした。 ロック前に10秒のカウントダウンダイアログが表示されるので、 姿勢を変えたり座り直す等の対応ができます。 カウントダウンダイアログ PXP設定ダイアログ

参考: その他試したUSB BLE(PXP動作はPXPタグLBT-PCSCU01で確認):

  • Motorolaスタック(Planex BT-Micro4)ではいきなりロック。
  • 東芝スタック(Logitec LBT-PCSCU01DWH)はMotorolaスタックと同様。
  • IVRスタック(BlueSoleil)(ELECOM LBT-UAN05C2)では、 ロック前カウントダウンダイアログは表示されるが、 設定ダイアログを閉じるとPXP機能がオフになるようで、使いにくい
  • CSRスタック(Logitec LBT-UAN04C1BK)はインストール中エラーが出たせいか、 PXP動作を確認できず。

参考: http://36yen.blogspot.jp/2015/06/bluetooth.html

はまった点

mbed BLE APIでdisconnection reason 0x22

当初、mbed BLE APIでBLE NanoやRedBearLab nRF51822を使って開発を始めたが、 すぐに切断される現象が発生。 PC側のUSB BLEの問題かと思ってclass 2でなくclass 1のものを買ったりしてみたが 状況変わらず。

試しにAndroidと接続した場合は切断されない。

40秒で切断される。切断時の理由コードを出力してみたら、0x22。 Bluetooth仕様を見ると、LMP Response Timeout / LL Response Timeout。 Connection supervisory timeout等を変えてみるが関係無い模様。 mbed BLE APIで作るのは断念。

Broadcom SDKやNordic SDKを試す。 nRF51822の問題だとSDKでも駄目かもしれないと思って、koshian(Broadcom BCM20737S)を選択。 (後に、Nordic nRF51 SDKでPXPサンプルをビルドしてBLE Nanoで試したところは切断されないことを確認。APIとしてはNordic SDKの方がきれいな印象)

koshianでファームウェア書き換え後、アドバタイズがすぐ止まる

原因がわからずしばらくはまる。 Broadcom Communityを調べて、Crystal Warm-Up workaroundを行うことで解決。

koshianのファームウェア書き換え方法

koshianのOTAでのファームウェア書き換えはうまくいかず、有線で書き換え。 後からこのページを見つけるが未試行。 http://qiita.com/toyoshim/items/040056f08ebf9ee6ab59

F/W書き込み/デバッグ用端子のTXとRXパッドにのみ配線を半田付け。 VCCとGNDは他のピンを使用。

F/W書き換え時は、TX,RX,GND,VCCをUSB-Serial-FTDIに接続した後、PCにUSBケーブル接続。 コマンドラインでWiced-Smart-SDKディレクトリでmake。

ble_trace1()等によるデバッグ出力確認は、 PCとのUSBケーブルは外した状態で電源を入れた後、 F/W書き込み/デバッグ用端子のTX,RX,GNDのみUSB-Serial-FTDIに接続して、PCにUSBケーブル接続。 Baud rate 115200。TeraTermの場合Terminal設定のNew-line ReceiveをAUTOに。

離席検出センサ

検出方法をいくつか試して、感圧センサに落ち着く。次点は自作マットスイッチ。

座布団の下に置いた感圧センサの場合、座っている際の違和感もほとんど無く、 センシングもほぼ期待通り行われるが、 たまに着席しているのにそうでないと認識される場合あり。 姿勢を変えたり座り直したりするとOK。

確実に着席を認識する点では、自作マットスイッチを座布団の上に置く方が良い印象。 ただ、座布団の上に自作マットスイッチを置くと座りごこちが悪くなるのが欠点。 (座布団の下に置くと、離席時にスイッチオフにならない場合があり、調整が難しい)

自作マットスイッチ(センサーパッド)

アルミホイルとクリアファイル(0.2mm厚)で作成。

自作マットスイッチ

作り方:

  1. スペーサにするため、クリアファイルを片側だけに切って、 2穴パンチで直径6mmの穴をたくさん開ける (1cm角の穴をカッターでいくつか開けたものだと、座布団の下に置くだけでスイッチオン)。
  2. スペーサをアルミホイルではさんで、封筒に入れる。
  3. koshianからのリード線にゼムクリップを付けてアルミホイルをはさむ (アルミは普通の半田では半田付けできないので)。

自作マットスイッチを座布団の下に置く。確実性が欲しい場合は座布団の上に置く。 (封筒のかわりにクリアファイルだと少し厚みがあるので座りごこちがいまいち。 ビニール袋だとすべっていまいち)

その他センサ

  • マットスイッチ製品。秋葉原高架下の防犯カメラ等を扱っている店で処分価格1000円になっていたもの。 しっかり体重をかけた時のみ反応するので確実性は高い。 ただし、堅めなので今回の用途では座りごこちが悪い。 その他、介護関係の徘徊センサーや、工場の安全装置等で使われているものがあるようだが確実性が重要なので高価。
  • シャープ赤外線測距モジュールGP2Y0E03: 角度がずれるとうまく検出できず
  • フォトリフレクタで座布団にかかる圧力を計測: センサ1個だけだと検出が難しそうな感じ

課題

  • 現状のデバイスは1台のPCとしかペアリングできないので、複数台PCがある場合、PC台数分のデバイスが必要になる。
  • 自作マットスイッチの上に置く座布団の位置によって、離席してもオンになったままになる場合あり。 逆に、座る位置や姿勢によってたまにオフになる場合あり。 座布団の上に置けばほぼ問題なし。 自作マットスイッチのスペーサの穴の大きさ・形・配置・数はさらなる調整が必要そう。
  • 休止状態からの復帰後、しばらくするとPC側がずっと接続したままとみなすようになる場合あり。 休止状態を使わないことにして回避。

関連

About

BLE device to lock Windows by Proximity Profile (PXP) when the device detects that user leaves chair by force sensor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages