感震センサで揺れを記録する M5Stack編 (2) 加速度センサ
M5Stackは、Arduino IDE 1.8.9をインストールして利用します。こちらの記事で、Arduino IDEのインストール方法を説明しています。
写真のようにGroveコネクタでセンサ形D7Sをつなぎます。正しく接続できているかを確認のために、I2CScannerを利用します。
I2Cscannerは、7ビットのスレーブ・アドレス空間をスキャンして、応答のあったデバイスのアドレスを表示します。
ライブラリがあります。メニューのツール-ライブラリ管理を選択します。検索欄に「I2Cscanner」を入れると、下記のように一つ見つけてくるのでインストールします。
メニューのファイルから、スケッチ例-I2CScanner-Scannerを選び、コンパイル、実行します。書き込みが完了したら、シリアルモニタを開きます。
0x55と0x75を見つけました。このスケッチは、時間をおいて繰り返し実行するので、センサ形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がインストールされていました。