プロジェクト22:加速度センサー

プロジェクト22:加速度センサーで動きをデジタル取得

このプロジェクトで学ぶこと: MPU6050というI2C接続の6軸センサーから加速度と角速度のデータを取得する方法を学びます。スマートフォンの傾き検知に使われている技術を体験します。


完成イメージ

[ブレッドボードを傾けるとシリアルモニタのX・Y・Z軸の加速度値が変化するスクリーンショットを挿入]


必要な部品

部品名 数量
Arduino Uno R3 1
MPU6050 加速度・ジャイロセンサーモジュール 1
ブレッドボード 1
ジャンパー線 4本

回路図と配線

[回路図画像を挿入]

配線手順

  1. MPU6050の VCC3.3Vピン(または5V、モジュールによる)に接続する
  2. MPU6050の GNDGNDピン に接続する
  3. MPU6050の SDAA4ピン に接続する
  4. MPU6050の SCLA5ピン に接続する

事前準備:ライブラリのインストール

  1. Arduino IDEのライブラリマネージャーを開く
  2. 「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を初期化し、ライブラリが内部でアドレス指定・データ読み取りを行います。


動作確認

  1. スケッチをアップロードしてシリアルモニタを開く(9600bps)
  2. センサーを水平に置くとZ≈1.0g、X≈0g、Y≈0gが表示されれば成功
  3. センサーを傾けると各軸の値が変化することを確認する

このプロジェクトで学んだこと

  • 6軸センサー: 加速度3軸+ジャイロ3軸のデータを同時取得する方法を習得しました
  • I2Cライブラリ: Wire.hとデバイスライブラリを組み合わせたI2C通信の実践を学びました
  • センサー生値の変換: スケールファクターを使ってセンサー出力を物理量に変換する考え方を理解しました

次のプロジェクト「ステッピングモータードライバー」では、より高トルク・高精度な制御を実現します。


深掘り:技術の背景と社会への広がり

MEMSセンサーの革命:シリコンに動きを刻む

加速度センサーの歴史は1979年にスタンフォード大学で小型シリコン製センサーが開発されたことにさかのぼります。1990年代に自動車のエアバッグシステムへの搭載が始まり、衝突を検知してエアバッグを展開する「命を守る部品」として普及しました。MEMS(微小電気機械システム)技術が進歩し2000年代にはiPhone(2007年)に3軸加速度センサーが搭載されました。これがスマートフォン革命の1ピースとなり、縦横自動回転・ゲーム操作・万歩計アプリを可能にしました。

ウェアラブルデバイスと医療・スポーツへの応用

MPU6050のような6軸IMU(慣性計測装置)は現代の医療・スポーツ分野で重要な役割を担っています。転倒検知システムは高齢者の腰部や腕にセンサーを装着し、転倒を検知すると自動的に緊急連絡する製品が普及しています。スポーツ分野では野球の投球フォーム分析・テニスのスイング解析・スキーのターン計測にIMUが使われ、データドリブンなコーチングが可能になっています。また宇宙開発では国際宇宙ステーションの姿勢制御にも使われており、手のひらサイズのICが宇宙と日常生活の両方で活躍しています。


プロジェクト21:パーキングセンサー全プロジェクト一覧 | 次のプロジェクト:ステッピングモータードライバー →