昨日、Xbee APIモードで受信プログラム動作したのですが、本日は、CPUを変えたり4M変動を与えたら、XBEEからのパケットのシリアル受信データが規定数読み込まなくなって、心拍データが拾えなくなりました。デリミタが0x7eなので、直前の3文字を抜き取ればいいのですが、どうも読み飛ばしが発生してます。
XBEEの送受信で化けているのかと思ってXCTUでモニタするとなんと仕様通りにパケットフレームがでていました。
マイコン側の受信処理が原因だと分かったのですが、もっと、根本的な点に気づきました。XBEEの最高周期が40msecと遅い点です。これで心拍数の波形を転送してマイコンで処理すると
100bpmでの誤差を計算すると±7bpmも発生します、
心拍数があがるほど誤差が大きくなりますので、これはまずいということで、XBEEダイレクトをやめて、ヘルメットにもCPUと
XBEEと電池を装着しなければならなくなりました。
●親機用子機用CPU選び
過去に触ったことがあるCPUで在庫が複数個あるものをあげてみるとどれも一長一端で選択にまよいます。
在庫CPU | メリット | デメリット | |
子機用 | LPC81010個 | 超小型 低電力 |
機能最小 プログラムサイズ制限 書込みしにくい |
子機用 | ATMEGA 328PU (内臓8MHz)3個 |
超小型 単体で動作 低電力 |
機能はArduino Uno 書込みが面倒 |
子機用 | Arduino mini2個 |
小型 単体動作 |
USB無い 書込みにIF必要 |
子機用 | Arduino nano 互換機3個 |
小型 単体動作 |
中華ドライバが必要 で書込み環境面倒 |
子機用 | Arduino Pro Micro2個 |
小型 単体動作 USB付 HID機能付き |
RESETスイッチを毎回押しながら書き込まないとならない |
子機用 | LPC8242個(1個故障) | 小型 高機能 高価格 |
壊れやすい |
子機用 | LPC 11U351個 | 小型 低電力 |
シリアル1chしかないのでデバッグが大変 |
子機用 | TY51822r3 | 小型 低電力 BLE付 |
mbedバージョン違いで動作しない |
親機用 | NUucleo L432KC2個 |
中型 高性能 使い勝手よい |
ポート数少ないのでXbeeとBlueToothを使うとUSBシリアルデバッグできない |
親機用 | LPC17692個 | LPC1768コンパチだが大きい安い、シリアル3ポートある点が好ましい | でかい、電力大 |
親機用 | Nucleo F3032個 |
小型 高性能 シリアルポートが3個ある |
ピン数がすくない |
親機用 | Nucleo F446RE2個 |
シリアルポートがたくさんあるので計測用CPUとしては最適 | 電力食うでかい |
●選定
順番として、
■子機
ヘルメットCPUは、電池寿命なので
ATMEGA 328PUでトライしてだめだったら
Arduino miniだめだったらLPC11U35
■親機
F303Kで3ポートシリアルが動作すれば決まり
だめならLPC1969にトライしてだめならNucleo F446REと
バカでかくなります。