Arduinoで加速度センサMMA8452Qの使い方

Arduinoで加速度センサMMA8452Qの使い方
Arduinoで加速度センサMMA8452Qの使い方

この記事では、Arduinoで加速度センサの使い方を解説する。加速度センサは、MMA8452Qを搭載したSparkFunのモジュールを使用した。MMA8452Qは、フリースケール社の製造している三軸加速度センサで、I2C通信でアクセス、12ビットもしくは8ビットの分解能の選択が可能である。

開発環境

項目バージョン
ArduinoデバイスArduino Uno Rev3
加速度センサー3軸加速度センサー MMA8452Q(SparkFun)
Arduino IDE1.8.13
パソコンmacOS Big Sur 11.0.1

Arduino Uno Rev3を使用したが、皆さんはお好きなArduinoでどうぞ。

ArduinoとMMA8452Qの配線

ArduinoとMMA8452Qの配線図
ArduinoとMMA8452Qの配線図

ArduinoとMMA8452Qの配線で注意したいのは、330Ωの抵抗を通してSCLとSDAを繋ぐこと。ArduinoのGPIOが5Vであるのに対し、MMA8452Qが3.3V基準なので破損を防ぐために抵抗でレベルシフトさせている。

MMA8452Qライブラリのインストール

加速度センサからデータを読み取るには、SparkFunが公開しているMMA8452QのArduinoライブラリを使うと簡単。下記のGitHubページからzipファイルをダウンロードする。

zipファイルを解凍し、フォルダを~/Document/Arduino/libraries/へ移動する。そして、Arduino IDEを再起動。

するとFileExamplesSparkFun MMA8452Q Accelerometer以下にサンプルプログラムが表示される。

また、VS CodeのPlatform IOで開発する場合は、「SparkFun MMA8452Q」でライブラリ検索すれば簡単にインストールできる。

Platform IOでMMA8452Qライブラリ検索
Platform IOでMMA8452Qライブラリ検索

サンプルプログラム

加速度をシリアルプロッターで表示
加速度をシリアルプロッターで表示

サンプルプログラムを使用して、加速度をシリアルモニタやシリアルプロッターで表示させてみよう。

#include <Wire.h>
#include "SparkFun_MMA8452Q.h"

MMA8452Q accel;

void setup() {
  Serial.begin(9600);
  Wire.begin();

  if (accel.begin() == false) {
    Serial.println("Not Connected. Please check connections and read the hookup guide.");
    while (1);
  }
}

void loop() {
  if (accel.available()) {
    Serial.print(accel.getCalculatedX(), 3);
    Serial.print("\t");
    Serial.print(accel.getCalculatedY(), 3);
    Serial.print("\t");
    Serial.print(accel.getCalculatedZ(), 3);
    Serial.println();
  }
}

accel.getCalculatedXなどで取得される値は、重力加速度1gが単位となっている。また、Spark FunのMMA8452Qチュートリアルによれば、データの速度は800Hzであり、±2gまで測ることができるようだ。

SparkFun MMA8452Qのチュートリアルはこちら。

こちらの記事も参考に。

記事に関するご質問などがあればTwitterへお返事ください。
この記事で紹介した商品
人気のArduino互換機
Arduinoで人気の周辺パーツ
Arduinoのオススメ参考書

▼ Arduino初心者向きの内容となっています。ほかのArduino書籍と比べて図や説明がとてもていねいで、読みやすかったです。Arduinoで一通りのセンサーが扱えるようになります。

▼ 外国人が書いた本を翻訳したものです。この手の書籍は、目からうろこな発見をすることが多いです。

▼ Arduinoの入門書を既に読んでいる方で、次のステップを目指したい人向きの本です。C言語のプログラミングの内容が中心です。ESP32だけでなく、ふつうのArduinoにも役立つ内容でした。

関連記事