注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!
QMC5883L
概要
このチュートリアルでは、GY-87 IMUモジュールに焦点を当て、特にそのQMC5883L磁力計について探求します。チュートリアルの最初の部分では、QMC5883L磁力計の校正方法について案内します。これは正確な磁場測定に不可欠です。Arduinoに校正スケッチをアップロードし、リアルタイムで校正を行い、プロジェクトにこれらの設定を適用する方法を学びます。チュートリアルの第二部では、Arduino Uno上でMPU6050(加速度計とジャイロスコープ)とQMC5883LをAdafruit MPU6050およびQMC5883LCompassライブラリを使って初期化する方法を取り上げます。センサーデータを読み取り、シリアルモニターに表示する基本的なスキルを身につけます。これは、ナビゲーション、動作追跡、方向検出などのアプリケーションに不可欠です。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
キット全体を購入するのは便利です。リンクはこちら:
名称 |
このキットのアイテム数 |
リンク |
|---|---|---|
Elite Explorer Kit |
300+ |
下記のリンクから個別に購入することもできます。
コンポーネント紹介 |
購入リンク |
|---|---|
- |
|
- |
配線図
回路図
ライブラリのインストール
QMC5883Lの校正
注釈
09-gy87_compass_calibration.inoファイルをelite-explorer-kit-main\basic_project\09-gy87_compass_calibrationのパスから直接開くことができます。または、このコードをArduino IDEにコピーします。
コードのアップロード後、シリアルモニターを開きます。シリアルモニターの指示に従ってQMC5883Lを校正します。センサーの移動を求められた場合、図8の校正方法を使用することをお勧めします。または、センサーを地面と平行に保ち、シリアルモニターが校正が完了したことを示すまで時計回りまたは反時計回りに回転させます。
校正データがすべて収集されると、スケッチは compass.setCalibrationOffsets(-375.00, -179.00, 85.00); や compass.setCalibrationScales(1.04, 0.96, 1.01); のようなコードを提供します。このコードをコピーしてください。今後の参考のために保存しておくことをお勧めします。
QMC5883Lを使用する場合:プロジェクトのスケッチを開き、 compass.init() の呼び出しの直下にコピーしたコードを貼り付けます。以下のようにします:
void initializeQMC5883L() {
compass.init();
// You should replace the code below according to your calibration results
compass.setCalibrationOffsets(-375.00, -179.00, 85.00);
compass.setCalibrationScales(1.04, 0.96, 1.01);
}
コード
注釈
磁力計はコンパスとして使用する前に校正する必要があり(QMC5883Lの校正)、使用中に水平に保持し、 鉄製品、磁化した材料、電流を運ぶワイヤーから遠ざける 必要があります。
注釈
09-gy87_qmc5883l.inoファイルをelite-explorer-kit-main\basic_project\09-gy87_qmc5883lのパスから直接開くことができます。または、このコードをArduino IDEにコピーします。
校正手順から得られたコードを、関数
initializeQMC5883L()のcompass.init()のコードの下に配置します。
コード解析
ライブラリのインクルードとセンサーの初期化 このセクションでは、MPU6050およびQMC5883Lセンサーに必要なライブラリをインクルードし、そのオブジェクトを初期化します。
#include <Adafruit_MPU6050.h> #include <Adafruit_Sensor.h> #include <Wire.h> #include <QMC5883LCompass.h> Adafruit_MPU6050 mpu; QMC5883LCompass compass;
Setup関数
シリアル通信、MPU6050センサーを初期化し、MPU6050をI2Cバイパスモードに設定してQMC5883L磁力計への直接アクセスを可能にします。その後、QMC5883L磁力計を初期化します。
void setup() { // Initialize the serial communication with a baud rate of 9600 Serial.begin(9600); // Initialize the MPU6050 sensor (accelerometer and gyroscope) initializeMPU6050(); // Enable I2C bypass on MPU6050 to directly access the QMC5883L magnetometer mpu.setI2CBypass(true); // Initialize the QMC5883L magnetometer sensor initializeQMC5883L(); }
ループ関数
QMC5883L磁力計からデータを連続的に読み取り、シリアルモニターに出力します。
void loop() { printQMC5883L(); delay(500); }
QMC5883L初期化関数
QMC5883L磁力計を初期化し、校正します。校正値は特定の校正データに基づいて調整する必要があります。(QMC5883Lの校正)
void initializeQMC5883L() { compass.init(); // You should replace the code below according to your calibration results compass.setCalibrationOffsets(-549.00, -66.00, 160.00); compass.setCalibrationScales(0.97, 1.02, 1.02); }
QMC5883Lデータ表示関数
この関数は磁力計のX、Y、Z値と方位角を読み取り、シリアルモニターに出力します。
void printQMC5883L() { Serial.println(); Serial.println("QMC5883L ------------"); int x, y, z, a; char myArray[3]; compass.read(); x = compass.getX(); y = compass.getY(); z = compass.getZ(); a = compass.getAzimuth(); compass.getDirection(myArray, a); Serial.print("X: "); Serial.print(x); Serial.print(" Y: "); Serial.print(y); Serial.print(" Z: "); Serial.print(z); Serial.print(" Azimuth: "); Serial.print(a); Serial.print(" Direction: "); Serial.print(myArray[0]); Serial.print(myArray[1]); Serial.println(myArray[2]); Serial.println("QMC5883L ------------"); Serial.println(); }