2025年12月22日月曜日

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

 今年は、BLEのセンサをMATLAB(PC)に接続する試みです。MATLAB(PC)とXPLOVA NOZA one(負荷固定のサイクルトレーナー)とを直接接続しました。Arduinoを介さずに気軽にテストすることができます。


MATLABなので、BLE機器を接続するためにコマンドを用いますが、以下で接続してデータの確認までが可能です。

blelist
 →NOZA-ONE 27456-197が見つかりました。
b=ble("NOZA-ONE 27456-197")
 →接続します。
c = characteristic(b,"Cycling Power","Cycling Power Measurement")
 →パワーに関連するデータを取得します。
data = read(c)
 →dataにパワーに関連データが入り、内容を確認できます。

自転車をこぎながら、データを確認してみ明日。実際のデータは、以下のようになっており、データのどこが計測値なのか特定する必要があります。
XPLOVA NOZA oneは負荷が固定です。3番目(15)の値に着目すると、ペダルの回転数を上げていくと上昇するため、パワーに関する値(トルク×回転数)であると考えました。詳細は以下のURLに記載されています。

     0     1    15     0   221    17     0     0     0     0     0    97   187    42     0    32   188   42     0    32

Cycling Power Service
※URLが変更になる場合があるため、適宜検索で探してみてください。


やはり、コマンドたと都度結果を見ながら確認できるので、Simulink+Arduinoに比べると簡単にできると思います。

さらに、今回は取得したパワーに関連するデータを、MATLAB App Designer で可視化してみました。App Designer は、簡単にGUIが作れるのでとても有難いです。会社のMATLABでもデータ分析の自動化に活用しています。

MATLAB App Designerでは、上記コマンドを以下のように記述しています。先のペアリングのところがまだ改善の余地ありです。

------------------------------------------------------------------------------------
methods (Access = private)        

        function results = funciv(app)

            % noza = table2array(blelist(1,2));

            app.b=ble("NOZA-ONE 27456-197");

            app.stop = 0;

            results = app.b.Characteristics;

        end

       function results = funciv0(app)          

            c = characteristic(app.b,"Cycling Power","Cycling Power Measurement");

            results = read(c);

        end

    end
-----------------------------------------------------------------------------------

アプリ画面は、こんな感じです。時系列のグラフおよびゲージをメインにしました。確認のためのテーブルも追加してみました。
startボタンを押すと、MATLAB(PC)とXPLOVA NOZA oneとがペアリングして、計測が開始します。stopボタンを押すと計測が終了します。


以下が、ペダルを漕いでいるときに測定したデータになります。後半、ペダルの回転数を保ったまま、ギアを下げていくとパワーに関連する値が減少していくことが確認できました。
右上のゲージも意外と良い感じでした。

今まで、測定値の可視化までなかなかできていなかったので、ここまでできてとても嬉しいです。リアルタイムで、測定値を見みられるのはとても良いですね。あとは、物理値との整合性です。ここは、来年の課題になってしまいました。


表示できる値をもう少し増やして、もう少し見栄えをよくするとさらに良くなりそうです。一旦データ収集アプリを作ることに方向転換して、その後にSimulink+Arduinoに戻ろうかと思います。