注釈

こんにちは、SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community on Facebookへようこそ!Raspberry Pi、Arduino、ESP32を愛好する仲間たちと一緒に、これらの技術を深く探求しましょう。

参加する理由

  • 専門家のサポート: コミュニティやチームの助けを借りて、購入後の問題や技術的な課題を解決します。

  • 学びと共有: スキルを向上させるためのヒントやチュートリアルを交換します。

  • 独占プレビュー: 新製品の発表やプレビューに早期アクセスできます。

  • 特別割引: 最新の製品に対する独占割引を楽しめます。

  • フェスティブプロモーションとギブアウェイ: ギブアウェイやフェスティブプロモーションに参加できます。

👉 私たちと一緒に探索と創造を始める準備はできましたか?[ここ]をクリックして、今日参加しましょう!

2.2.6 MPU6050モジュール

イントロダクション

MPU-6050は、スマートフォン、タブレット、ウェアラブルセンサー向けに設計された世界初の6軸モーショントラッキングデバイスです(3軸ジャイロスコープおよび3軸加速度計)。これには、低消費電力、低コスト、および高性能の要件が含まれます。

この実験では、I2Cを使用してMPU6050の三軸加速度センサーと三軸ジャイロスコープの値を取得し、画面に表示します。

コンポーネント

../_images/list_2.2.61.png

回路図

MPU6050はI2Cバスインターフェースを介してマイクロコントローラーと通信します。SDA1とSCL1は対応するピンに接続する必要があります。

../_images/image3301.png

実験手順

ステップ1: 回路を構築します。

../_images/image2271.png

ステップ2: I2Cの設定を行います(「I2Cの設定」参照。I2Cを設定済みの場合、このステップはスキップしてください)。

ステップ3: コードのフォルダに移動します。

cd ~/davinci-kit-for-raspberry-pi/nodejs/

ステップ4: 依存関係をインストールします。

sudo npm install mpu6050-gyro

ステップ5: コードを実行します。

sudo node mpu6050_module.js

コードが実行されると、MPU6050によって読み取られたx軸とy軸の傾斜角、および各軸の加速度、角速度が画面に表示されます。

コード

var gyro = require("mpu6050-gyro");

var address = 0x68; //MPU6050のアドレス
var bus = 1; //使用するi2cバス
var gyro = new gyro( bus, address );

async function update_telemetry() {

    var gyro_xyz = gyro.get_gyro_xyz();
    var accel_xyz = gyro.get_accel_xyz();

    var gyro_data = {
        gyro_xyz: gyro_xyz,
        accel_xyz: accel_xyz,
        rollpitch: gyro.get_roll_pitch( gyro_xyz, accel_xyz )
    }

    console.log(gyro_data);

    setTimeout(update_telemetry, 500);
}

if ( gyro ) {
    update_telemetry();
}

コードの説明

var gyro = require("mpu6050-gyro");

var address = 0x68; //MPU6050のアドレス
var bus = 1; //使用するi2cバス
var gyro = new gyro( bus, address );

mpu6050-gyro モジュールをインポートし、MPU6050のアドレスとバスを指定してオブジェクトgyroを作成します。 これにより、モジュール内の関数を呼び出すことができます。

注釈

このモジュールについての詳細は、https://www.npmjs.com/package/mpu6050-gyro を参照してください。

var gyro_xyz = gyro.get_gyro_xyz();
var accel_xyz = gyro.get_accel_xyz();

var gyro_data = {
    gyro_xyz: gyro_xyz,
    accel_xyz: accel_xyz,
    rollpitch: gyro.get_roll_pitch( gyro_xyz, accel_xyz )
}

console.log(gyro_data);

setTimeout(update_telemetry, 500);

モジュールには3つの利用可能な関数がカプセル化されています:

gyro.get_gyro_xyz() : ジャイロスコープからの生のx, y, zデータを含むJSONオブジェクトを返します。

gyro.get_accel_xyz() : 加速度計からの生のx, y, zデータを含むJSONオブジェクトを返します。

gyro.get_roll_pitch( gyro_xyz, accel_xyz ) : ロールとピッチを度単位で含むJSONオブジェクトを返します。

現象の写真

../_images/image2281.jpeg