加速度センサー 動作検知システム

加速度センサーでできる!動きを検知するシステム

加速度センサーでできる!動きを検知するシステム

このブログ記事では、加速度センサーを使って、人が動いたかどうかを検知するシステムの作り方を解説します。 Arduino と加速度センサー(例:MPU6050)を組み合わせて、簡単な動作検知システムを構築してみましょう。 このシステムは、例えば、睡眠中の動きを検知したり、ペットの活動量を計測したりするのに活用できます。

必要なもの

構築に必要なものは以下の通りです。

  • Arduino Uno (または互換ボード)
  • MPU6050 加速度センサー
  • ジャンパーワイヤー (オス-オス)
  • USBケーブル (Arduino と PC 間の通信用)
  • 抵抗 (10kΩ)
  • ブレッドボード (推奨)

回路図

以下の回路図を参考に、MPU6050 を Arduino に接続します。

// Arduino  | MPU6050
// ------------------
// VCC       | 3.3V または 5V (MPU6050 の仕様を確認してください)
// GND       | GND
// SCL       | SCL
// SDA       | SDA
// INT       | INT (デジタルピンを接続)

コード例

以下は Arduino IDE で使用できるコード例です。


#include <Wire.h>
#include <SPI.h>

#define DATA_ADDRESS 0x68  // MPU6050 のデータアドレス
#define INT_PIN 2          // INT ピンに接続する Arduino ピン

void setup() {
  Serial.begin(115200);
  Wire.begin();
  pinMode(INT_PIN, INPUT_PULLUP);
}

void loop() {
  int axis;
  if (digitalRead(INT_PIN) == HIGH) {
    // センサーからの割り込み信号を検出
    axis = readAxis();
    Serial.print("Axis: ");
    Serial.println(axis);
    delay(100); // 割り込み信号が残る可能性に対応
  }
  delay(10);
}

int readAxis() {
  // MPU6050 から軸のデータを読み取る
  Wire.beginTransmission(DATA_ADDRESS);
  Wire.write(0x00);
  Wire.endTransmission();

  Wire.requestBytes(6, 0x00);
  byte data[6];
  Wire.read(data, 6);

  // データを解釈して軸を返す
  return data[1] | (data[2] & 0x03);
}

動作の仕組み

このコードは、加速度センサーから定期的にデータを読み取ります。 MPU6050 は、X 軸、Y 軸、Z 軸の加速度を測定し、その値を Arduino に送信します。 Arduino は、これらの値の変動を検知し、人が動いたかどうかを判断します。 例えば、X 軸、Y 軸、Z 軸のいずれかの加速度が一定の閾値を超えた場合、人が動いていると判断できます。

応用例

このシステムを応用して、以下のようなことができます。

  • 睡眠中の動きを検知して、睡眠時間や睡眠の質を計測する
  • ペットの活動量を計測し、健康状態をモニタリングする
  • ゲームコントローラーのセンサーとして利用する

このブログ記事が、あなたの動作検知システムの開発の一助となれば幸いです。

Comments

Popular posts from this blog

How to show different lines on WinMerge

Detect Bluetooth LE Device with BlueZ on RaspberryPi

I2C vs SPI:使い分けガイド