9カ月ぶりでXbee zb s2cいじりだしました。今回は、ロードバイクPMM(PowerManagementMeter)用の開発です。何とか1日で
ハートレート送受信実験できました。
●脱GARMINを図る
Garminは便利なのですが高いし、思うような仕様にもならないのでApple的な使い勝手を強要する点が嫌いです。
しかし、30年前からGarminのGPSで山スキーをやってきていて
濃霧の中で迷ったときに、命を助けられた経験があります。
スマホで登山はちょっとと思います、やはりGarminGPSが必須だと思ってます。
脱GARMINとして、ハートレートモニタとSPEED&CADENCEとパワーメーターをオリジナルにしてマイコンとスマホのプログラムで管理することで、GARMINには無い風速計、重心移動、走行振動などの新たなセンシングアイテムを管理できるようになるので、ここで
脱GARMINを図っておかないと先の開発に支障がでると思ってるからです。
箱から基板を取り出したほうがいいです。接着材で十分プラグが刺さらないようになってました。
●ロードバイクヘルメットにセンサつける
本日は、耳たぶ型のハートレートセンサをマイコン無しでXbeeに直接接続して親機Xbeeに送る実験をしました。ヘルメットのセンサを無線で親機に転送するので、複数センサーが使えるようにAPIモードでXBEE zb s2cを設定しました。
■信号仕様:grove-ear-clipセンサは、5v-3.3Vでアナログ矩形波を心拍信号として出力しますが、XbeeのAD変換は1.2V以下です。
サンプリングは、9600bpsで40msec設定です。
http://wiki.seeedstudio.com/Grove-Ear-clip_Heart_Rate_Sensor/
http://www.mouser.com/catalog/specsheets/Seeed_101020033.pdf
■Xbeeモード:今回は、琵琶湖のほとりの人ブログを参考にしてXBEEのXCTU設定したので、APIモードとなりました。
APIモードはデータがパケットで送られるのでマイコンでの文字処理が面倒なのですが複数センサデータを送ってこれるので
ヘルメット上に温度と加速度センサを搭載したときのことを考えてAPIモードで頑張ってみることにしました。
http://hikone.info/blog/?p=187
●XBee設定通信テスト
今回は、秋月Xbee-USBボードを2個使用して、同時に親機(Cordinator)と子機(Router)を設定できるようにしました。
こうすると抜き差しが無いので頻繁な書き換え確認作業がスムーズで作業効率は数倍上がったと思います。
更に、IDの下3桁をテープで貼ってあるので親機子機の
区別を間違えないようにしてあります。
設定の方法は琵琶湖のほとりの人が丁寧に記述されています。
http://hikone.info/blog/?p=187
XBEEにセンサデバイスを直接接続するのは初めてなのですが、
特別なモードがあるわけではなく、APIモードで、ポートの設定をADCにしてサンプリングレートを設定すれば、勝手に送信してくれます。
●XCTUの設定
設定が面倒くさいのでXBEE大嫌いなのですが、4個も買ってしまっているので何とか無駄をしないように遅くてよくて、省エネ、小型化というメリットがある用途では使おうとしてます。
XCTUの設定を全部スクリーンショットしたらなんと8ページにもなりました。いい加減にしろと言いたいです。DIGIという会社の技術思想は、ユーザーは、特別な人たちがターゲットでDIY趣味の人は客ではないと言っているようなものです。
デフォルトにしてから変更する箇所を備忘録
■親機Coordinator
PAN ID:1234 (これは任意ですが使用するXbee全部一致)
CE: Enabled[1] (親機Coordinatorにするということです)
DH: 0 (ここはいじりませんでした)
DL: FFFF (ブロードキャストになるそうです)
AP: API Enabled[1)] (APIモードにしました)
以上です。
■子機Router
PAN ID:1234 (これは任意ですが使用するXbee全部一致)
CE: Disabled[0] (子機Routerにするということです)
DH: 0 (ここはいじりませんでした)
DL: 0 (ここはいじりませんでした)
AP: API Enabled[1)] (APIモードにしました)
D1: ADC[2] (19ピンをAD変換ピンに設定しました)
IR: 40 x1msec (SamplingRate 9600bpsでの最速です。)
以上です。
●ハートレートセンサの回路
ブレッドボードでやろうとしたらGNDの接触が悪くてだめだったのでGNDだけは、ターミナルブロックに挟み込んでしっかりとした接触をとったらきれな矩形波がでてくるようになりました。
アナログ信号を扱うときは、ブレッドボード接続はやめたほうがいいと今更ながらに悟りました。
ハートレートセンサの電源は秋月のXBEE-USBの三端子レギュレータの右脚から3.3V、左脚から5vをXbeeの10番ピンからGNDを引き出し線を半田つけして、センサ電源としました。センサは、赤Vcc黒GND黄色信号と単純な結線です。
5Vの心拍数矩形波信号を1.2V未満にするため抵抗の分圧をとりました。10KΩ+2.2KΩでだいたい720mVでてました。
抵抗2.2KΩ左端にGND、中間にXBEE入力線、10KΩ右端に5V信号線を接続しました。ここも全部ターミナルブロックか半田付けがよいのですが、抵抗があったのでブレッドボードです。耳たぶにとりつけオシロでみると矩形波でてました。
これで、センサからXbee子機までの接続終わったので、通信の実験にうつります。
●子機から親機へ送信
送信と言ってもXCTUの緑色プラグアイコンのOPENをCLOSEにしておけばいいだけです。子機のターミナル画面にはなんの変化もでないので、親機のターミナル画面をみると
パケットが赤文字ででてます。右に27バイトの16進数が中身です。これをRECORDしてLOGファイルにします。
LOGファイルをTERAPADで開いてからEXCELにコピーして
心拍波形がでているか確認しました。
パケットがデリミタなしでずらずらでてるのでEXCELの文字処理関数LEFT RIGHTを多重に駆使して時間と電圧を抜き取りました。
90BPM付近で計算できたので心拍数データはとれていました。
●以後
電池をどのくらいにすれば1日もつのかを確認する必要があるのとXbeeと電池と基板をヘルメットの中に取り付ける方法を考えないといけません。さらに、親機と親マイコンからスマホまでつなぐ方法もやらないといけませんので8月末までに出来るか大変です。