Arduino/Genuino 101
1. 加速度センサーとは?
加速度計(Accelerometer)は、物体の加速度を計測する事が出来ます。
小型の加速度計(加速度センサ)はMEMS技術を用いて作製されています。
1.1 MEMS
MEMS(Micro Electro Mechanical Systems)を使った加速度センサーの場合、質量が小さいため加速度センサーとしての感度は低下しますが、代わりに劇的な小型化が可能になります。
1.2 Genuino101ボードのIMU
Genuino101ボードに使われているIntel Curie Moduleには図1のBosch製BMI160と言う3軸加速度センサーと、3軸ジャイロセンサーを併せ持つIMU(慣性測定ユニット)が搭載されています。
図1:Bosch製 慣性測定ユニット「BMI160」
1.3 CurieIMU.h
CurieIMU.hは、Genuino101ボードのIMUチップにおける全てのパラメータ、機能、読み取り値にアクセスできるライブラリです。
2. プログラム
2.1 サンプルプログラム読み込み
2.2 サンプルプログラムの内容
加速度センサーの各軸は、setAccelerometerRange関数によって定義された範囲内の加速度を測定し、生データを返します。
測定された生データは、加速値(X、Y、Z)の3つの値としてシリアルモニタに出力されます。
#include "CurieIMU.h" void setup() { Serial.begin(9600); // シリアル通信を初期化 while (!Serial); // シリアルポートが開くのを待つ // デバイスの初期化 Serial.println("Initializing IMU device..."); CurieIMU.begin(); // 加速度計の範囲を2Gに設定する CurieIMU.setAccelerometerRange(2); } void loop() { float ax, ay, az; //スケールされた加速度計の値 // デバイスからの加速度計測定値を設定された範囲にスケール CurieIMU.readAccelerometerScaled(ax, ay, az); // タブで区切られた加速度計のx / y / z値を表示する Serial.print("a:\t"); Serial.print(ax); Serial.print("\t"); Serial.print(ay); Serial.print("\t"); Serial.print(az); Serial.println(); }
図2:プログラム例
3. 実験!
3.1 振る!
図2サンプルプログラムを実行した結果が図3です。
特に意味はありませんが、Genuino101を必死で振りながら測定してみました
図3:シリアルモニタ出力結果
3.2 加速度センサーに関する関数
IMUで使う関数は図2で使った「CurieIMU.begin()」や「CurieIMU.setAccelerometerRange(2)」や「CurieIMU.readAccelerometerScaled(ax, ay, az)」以外にも表1の通り沢山用意されております!
表1:CurieIMU ライブラリ(加速度センサー関連)
|
〇その他関数
Curie IMUライブラリに関するその他関数については、コチラをご覧ください。
3. まとめ
表1は加速度計の基本的な部分ですが、使いこなすのはなかなか大変そうです
ライブラリの中には他にも色々有って、「落ちる」「ぶつかる」「動く」「止まる」「叩く」などの状態になった時に「true」を返してくれる面白い関数も入っていました!
これを使えば落下を察知した時、猫みたいにストンと着地するロボットとか作れるかもしれません!
励みになりますのでよければクリック下さい(^o^)/