加速度センサー 動作検知システム
加速度センサーでできる!動きを検知するシステム
このブログ記事では、加速度センサーを使って、人が動いたかどうかを検知するシステムの作り方を解説します。 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
Post a Comment