プロジェクト22:加速度センサーで動きをデジタル取得
このプロジェクトで学ぶこと: MPU6050というI2C接続の6軸センサーから加速度と角速度のデータを取得する方法を学びます。スマートフォンの傾き検知に使われている技術を体験します。
完成イメージ
[ブレッドボードを傾けるとシリアルモニタのX・Y・Z軸の加速度値が変化するスクリーンショットを挿入]
必要な部品
| 部品名 | 数量 |
|---|---|
| Arduino Uno R3 | 1 |
| MPU6050 加速度・ジャイロセンサーモジュール | 1 |
| ブレッドボード | 1 |
| ジャンパー線 | 4本 |
回路図と配線
[回路図画像を挿入]
配線手順
- MPU6050の VCC を 3.3Vピン(または5V、モジュールによる)に接続する
- MPU6050の GND を GNDピン に接続する
- MPU6050の SDA を A4ピン に接続する
- MPU6050の SCL を A5ピン に接続する
事前準備:ライブラリのインストール
- Arduino IDEのライブラリマネージャーを開く
- 「MPU6050」を検索して「MPU6050 by Electronic Cats」または「Adafruit MPU6050」をインストールする
Arduinoスケッチ(プログラム)
// MPU6050から加速度とジャイロデータを取得
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
Serial.println("MPU6050接続エラー");
while (1); // 接続できなければ停止
}
Serial.println("MPU6050 接続OK");
}
void loop() {
int16_t ax, ay, az; // 加速度(生の値)
int16_t gx, gy, gz; // 角速度(生の値)
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
// 重力加速度単位(g)に変換(±2gスケール: 16384 LSB/g)
float axG = ax / 16384.0;
float ayG = ay / 16384.0;
float azG = az / 16384.0;
Serial.print("加速度 X:");
Serial.print(axG, 2);
Serial.print("g Y:");
Serial.print(ayG, 2);
Serial.print("g Z:");
Serial.print(azG, 2);
Serial.println("g");
delay(200);
}
コードのポイント解説
int16_t型 -32768〜32767の範囲の16ビット整数型です。センサーから返ってくる生の数値(ADC値)はこの型で取得します。
センサー生値からg値への変換 MPU6050を±2gスケールで使う場合、1g(重力加速度)が16384という生の値に対応します。静止状態でZ軸が1.0g(地球の重力)に近い値になれば正常です。
Wire.hによるI2C通信 I2Cプロトコルを使ってSDAとSCLの2本でArduinoとMPU6050が通信します。Wire.begin()でI2Cを初期化し、ライブラリが内部でアドレス指定・データ読み取りを行います。
動作確認
- スケッチをアップロードしてシリアルモニタを開く(9600bps)
- センサーを水平に置くとZ≈1.0g、X≈0g、Y≈0gが表示されれば成功
- センサーを傾けると各軸の値が変化することを確認する
このプロジェクトで学んだこと
- 6軸センサー: 加速度3軸+ジャイロ3軸のデータを同時取得する方法を習得しました
- I2Cライブラリ:
Wire.hとデバイスライブラリを組み合わせたI2C通信の実践を学びました - センサー生値の変換: スケールファクターを使ってセンサー出力を物理量に変換する考え方を理解しました
次のプロジェクト「ステッピングモータードライバー」では、より高トルク・高精度な制御を実現します。
深掘り:技術の背景と社会への広がり
MEMSセンサーの革命:シリコンに動きを刻む
加速度センサーの歴史は1979年にスタンフォード大学で小型シリコン製センサーが開発されたことにさかのぼります。1990年代に自動車のエアバッグシステムへの搭載が始まり、衝突を検知してエアバッグを展開する「命を守る部品」として普及しました。MEMS(微小電気機械システム)技術が進歩し2000年代にはiPhone(2007年)に3軸加速度センサーが搭載されました。これがスマートフォン革命の1ピースとなり、縦横自動回転・ゲーム操作・万歩計アプリを可能にしました。
ウェアラブルデバイスと医療・スポーツへの応用
MPU6050のような6軸IMU(慣性計測装置)は現代の医療・スポーツ分野で重要な役割を担っています。転倒検知システムは高齢者の腰部や腕にセンサーを装着し、転倒を検知すると自動的に緊急連絡する製品が普及しています。スポーツ分野では野球の投球フォーム分析・テニスのスイング解析・スキーのターン計測にIMUが使われ、データドリブンなコーチングが可能になっています。また宇宙開発では国際宇宙ステーションの姿勢制御にも使われており、手のひらサイズのICが宇宙と日常生活の両方で活躍しています。
← プロジェクト21:パーキングセンサー | 全プロジェクト一覧 | 次のプロジェクト:ステッピングモータードライバー →

