リンク
今回は、M5StickCに、GROVEの「I2C 三軸加速度センサ」をつないでみようと思います。
M5StickC本体にも加速度センサは内蔵されているようですが、今回は、センサをM5StickCから離した状態で使いたかったので、外付けのセンサをつなぐことにしました。
まずは、本センサ用のライブラリを、ダウンロードページ( https://github.com/Seeed-Studio/Accelerometer_MMA7660 )からダウンロードし、Arduino IDEにインストールします。
スケッチは、以下のようなものを書いてみました。
「ファイル」>「スケッチ例」>「Accelerometer_MMA7660」>「MMA7660FC_Demo」を、M5StickC向けに若干変更しただけのものです。
#include <M5StickC.h>
#include <Wire.h>
#include "MMA7660.h"
MMA7660 accelemeter;
void setup() {
M5.begin();
M5.Lcd.setRotation(1);
accelemeter.init();
Serial.begin(115200);
}
void loop() {
int8_t x, y, z;
float ax, ay, az;
M5.Lcd.setCursor(0, 0, 2);
M5.Lcd.fillScreen(BLACK);
accelemeter.getXYZ(&x, &y, &z);
accelemeter.getAcceleration(&ax, &ay, &az);
M5.Lcd.printf("%d %d %d %.2f %.2f %.2f\n", x, y, z, ax, ay, az);
Serial.printf("%.2f,%.2f,%.2f\n", ax, ay, az);
delay(500);
}
このスケッチをM5StickCに書き込むと、画面にX, Y, Z方向の傾きと加速度が表示されます。
また、Arduino IDEのシリアルプロッタを開くと、以下のように、X, Y, Z方向の加速度がグラフ表示されます。
なお、今回の実験では、センサをかなりしっかり揺らさないと、グラフを見てすぐに判別可能なレベルの信号変化は起きませんでした。
冷蔵庫など、家電製品の微小な振動を観測できないか?と考えていたのですが、そのような用途に適用するのはちょっと難しそうです。
リンク
なお、私がM5Stack、M5StickCの使い方を習得するのにあたっては、以下の書籍を参考にさせていただきました。
リンク
ごく基本的なところから、かなり複雑なスケッチや、ネットワーク接続など、比較的高度なものまで、つまづかずに読み進めていけるような構成になっており、大変わかりやすい本です。