今年は、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に戻ろうかと思います。

