6軸センサーの姿勢制御をスマホで可視化(Arduino/Genuino101)

Pocket

 Arduino101/Genuino101に内蔵された6軸センサーとBluetoothLE(BluetoothLowEnergy(以下BLE))を両方を同時に使ってみました。6軸センサー(加速度、ジャイロ)の情報をBLE経由でスマホへ送信、自作Androidアプリで姿勢角を可視化してます。

 

▼6軸センサー情報をBLE経由してスマホで可視化▼

 ワイヤーフレームで可視化したのですが、少し見難かったです。

 

 

Arduino101/Genuono101側のスケッチ

 Genuino側スケッチの概要です。6軸センサー(CurieIMU)からの加速度、角加速度の計測値からカルマンフィルターを通して各軸の回転角度を算出。カンマ区切り文字でBLE送信します。CurieBLEでは1つのCharacteristicで20byteまで送信できるため、ついでにスケッチ内のループ処理時間も情報としてBLE送信してます。

 

▼送信部のスケッチ抜粋▼

  char s[7];
  char t[7];
  char u[7];
  char buf[20];
  float freq = 1 / dt;

  dtostrf(pitch, 1, 1, s);
  dtostrf(roll, 1, 1, t);
  dtostrf(freq, 1, 1, u);

  sprintf(buf, "%s,%s,%s", s, t, u );
  int bufSize = strlen(buf);
  axisCharacteristic.setValue((unsigned char*)buf, bufSize);

 取得、算出したroll、pitch回転角度とループ処理時間の3つの値をBLE送信します。3つの値をdtostrf()で少数第一位で整えて、sprintf()でカンマ区切りの文字配列として格納。最後にBLEで送信してます。

 

 

<スポンサーリンク>

 

Android側アプリ

 アプリはMIT APP Inventor2で作成。公式環境ではBLEに対応していないため、テスト環境を使用しています。
088_6axis_and_ble

画面上方でBLE受信した回転角度をもとにGenuino101の姿勢をワイヤーフレームで可視化。下方ではBLE接続状態や受信した情報をリアルタイムで表示してます。

 

 Genuino101が1台あればこれだけのことが外付け部品いっさい無しで実現できて、さらにスマホを使用すれば制御やモニターができるとは非常に良い世の中になってきたものです。

 

 Genuino101の内蔵機能の個々の使い方はこちらの投稿に集約してます。

Arduino101/Genuino101について

 

Pocket

<スポンサーリンク>


この投稿へのコメント

  1. 匿名 said on 2016-12-14 at 16:33

    20bite>20byte

コメントを残す

メールアドレスが公開されることはありません。

この投稿へのトラックバック

トラックバックはありません。

トラックバック URL