今回は、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方向の加速度がグラフ表示されます。
なお、今回の実験では、センサをかなりしっかり揺らさないと、グラフを見てすぐに判別可能なレベルの信号変化は起きませんでした。
冷蔵庫など、家電製品の微小な振動を観測できないか?と考えていたのですが、そのような用途に適用するのはちょっと難しそうです。