2022年12月23日金曜日

自転車のデータ測定(Bluetooth)

 無線(BLE)の速度センサまたはケイデンスセンサをAmazonなどで、よく見かけるようになりました。サイクルコンピュータ用のセンサです。昨年は、磁石を使って測定しましたが、BLEのセンサが使えるか試してみました。

センサは、XOSSの速度・ケイデンス兼用のものです。

XOSS X1 ケイデンスセンサー スピードメーター ワイヤレス ANT + Bluetooth 4.0 

上が売り切れなので参考です。

XOSS VORTEX 自転車 スピード ケイデンス センサー  ANT+ Bluetooth4.0

マイコンは、半導体不足の影響を考えて、Arduinoにしました。SimulinkのハードウェアサポートパッケージにBLEのブロックもあり、比較的簡単に使うことができます。
Arduinoを使う理由は、いずれArduinoをスタンドアロンで動かして、データをPCまたはクラウドに送信するためです。さらに自作サイクルコンピューターとしての利用も考えています。BLEが最初からついているArduinoを使っています。

モデルはとても簡単です。まずはBLEの受信、送信のブロックを適当に配置しました。


設定は、ArduinoがCentral(Client)になります。Scanで自動的に探してくれます。
受信、送信共に同じ設定にしました。送信がないと受信が上手く行かないようです。

Scan Using Arduinoでやると最後にエラーが出たので、Host computerに変えたりしていたら、Peripheral Device にXOSSが自動的に入りました。エラーの原因及び解消の理由は良く分かりません。

見つからない場合は、PCのBluetoothで検索してみるか、MATLABのBlelistコマンドで出てくるか確認するのが良いです。MATLABを使うことで、services または characteristicsの確認なども簡単にできますし、コマンドで接続し値が取れるかの確認も先にしておくと良いと思います。


センサはケイデンスモードに設定し、クランクに固定します。監視と調整で確認します。
クランクを回すと値が変化しました。しかし、この値をどのようにケイデンスに変換するのか分かりません。そして、なぜかセンサを速度モードに設定するとデータが受信できません。一番上の変化しない2というのも何なのか・・・(もう少し調べてみます)



磁石式に比べると配線が不要なので、セッティングも簡単でした。あとは値を変換するだけです。もしかしたら、センサを速度・ケイデンス共用のものではなく別々のものにした方が良いのかもしれません。複数のセンサからデータを取得することにもチャレンジしたいと思いました。
進捗しましたら、またご報告します。