感震センサで揺れを記録する M5Stack編 (2) 加速度センサ

 M5Stackは、Arduino IDE 1.8.9をインストールして利用します。こちらの記事で、Arduino IDEのインストール方法を説明しています。

 写真のようにGroveコネクタでセンサ形D7Sをつなぎます。正しく接続できているかを確認のために、I2CScannerを利用します。

 I2Cscannerは、7ビットのスレーブ・アドレス空間をスキャンして、応答のあったデバイスのアドレスを表示します。
 ライブラリがあります。メニューのツール-ライブラリ管理を選択します。検索欄に「I2Cscanner」を入れると、下記のように一つ見つけてくるのでインストールします。

 メニューのファイルから、スケッチ例-I2CScanner-Scannerを選び、コンパイル、実行します。書き込みが完了したら、シリアルモニタを開きます。

 0x550x75を見つけました。このスケッチは、時間をおいて繰り返し実行するので、センサ形D7SをGroveコネクタから抜いてしまうと、0x75だけになります。したがって0x55がセンサ形D7Sであり、0x75は内蔵の9軸加速度センサになります。

9軸加速度センサMPU9250のおもなスペック

 内蔵の9軸加速度センサは、次の二つのデバイスから構成されています。

  • MPU6500;3軸のジャイロ・センサと3軸の加速度センサ
  • AK8963;3軸地磁気センサ

 MPU6500はInvenSense(現在TDKの子会社)の製品で、I2CとSPIの二つのインターフェースをもった小型のセンサです。

  • 動作電圧 1.71~3.45V
  • 加速度(Accelerometer) X、Y、Z軸。±2g、4g、8g、16g。16ビット、出力データ・レート0.24~40000Hz
  • ジャイロ(Gyroscope) X、Y、Z軸。±250、±500、±1000、±2000(°/sec)。16ビット、出力データ・レート4~8000Hz

 AK8963は旭化成エレクトロニクスの製品で、I2CとSPIの二つのインターフェースをもった小型のセンサです。この地磁気センサは、地球の地磁気を検知し、北の方向を知ることができます。単位のuTは磁束密度を表し、Tはテスラです。μは10^-6です。

  • 動作電圧 アナログ;2.4~3.6V、ディジタル;1.65V~アナログ電源電圧
  • 測定レンジ ±4900μT、14/16ビットの分解能

 

 Digi-Keyのドキュメントには、生データ・フォーマット以外に、回転マトリックス、四元数、オイラー角が得られるとありますが、まだそのような変換式を見つけられていません。

センサのデータ読み出し

 M5Stackには加速度センサとジャイロの関数が用意されています。

関数 機能
initMPU9250() MPU6500チップを初期化
initAK8963() AK8963チップを初期化
calibrateMPU9250() ジャイロと加速度センサーの補正値を計算
readByte() MPU9250の指定のレジスタから1バイト分のデータを取得
readGyroData() 3軸ジャイロ・センサの値を取得
readAccelData() 3軸加速度センサから値を取得

 readGyroData()とreadAccelData()のサンプルを動かしましたが、M5Stackを傾けたり揺らしても、LCDに表示されるデータは変わりませんでした。原因は不明です。ESP32は、ボードマネージャで確認すると1.0.2がインストールされていました。

前へ

感震センサで揺れを記録する M5Stack編 (1) 準備

次へ

感震センサで揺れを記録する M5Stack編 (3) Wireライブラリ