注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ ここ]をクリックして今すぐ参加しましょう!
MPU6050
概要
このチュートリアルでは、GY-87 IMUモジュールをArduino Unoと接続し、MPU6050センサーに焦点を当てて学びます。MPU6050の初期化と、加速度計、ジャイロスコープ、温度データをシリアルモニターに表示する方法をカバーします。このレッスンは、ロボティクス、ジェスチャー制御デバイス、インタラクティブなアートインスタレーションなど、運動と温度センシングが必要なプロジェクトに不可欠です。
必要なコンポーネント
このプロジェクトでは、以下のコンポーネントが必要です。
キットを丸ごと購入すると便利です。リンクはこちらです:
名称 |
このキットのアイテム数 |
リンク |
|---|---|---|
Elite Explorer Kit |
300+ |
また、以下のリンクから個別に購入することもできます。
コンポーネント紹介 |
購入リンク |
|---|---|
- |
|
- |
配線図
回路図
コード
注釈
ファイル
09-gy87_mpu6050.inoを直接elite-explorer-kit-main\basic_project\09-gy87_mpu6050のパスから開くことができます。または、このコードをArduino IDEにコピーしてください。
注釈
ライブラリをインストールするには、Arduino Library Managerを使用し、 「Adafruit MPU6050」 を検索してインストールしてください。
1/*
2 This Arduino code is designed for interfacing with the GY-87 IMU module, focusing
3 specifically on the MPU6050 sensor, which includes an accelerometer and a gyroscope.
4 The code initializes the MPU6050 sensor and prints its accelerometer, gyroscope, and
5 temperature readings to the Serial Monitor at regular intervals.
6
7 Board: Arduino Uno R4
8 Component: GY-87 IMU Module
9 Library: https://github.com/adafruit/Adafruit_MPU6050 (Adafruit MPU6050 by Adafruit)
10*/
11
12// Include required libraries
13#include <Adafruit_MPU6050.h>
14#include <Adafruit_Sensor.h>
15#include <Wire.h>
16
17// Initialize sensor objects
18Adafruit_MPU6050 mpu;
19
20void setup() {
21 // Initialize the serial communication with a baud rate of 9600
22 Serial.begin(9600);
23
24 // Initialize the MPU6050 sensor (accelerometer and gyroscope)
25 initializeMPU6050();
26}
27
28void loop() {
29 // Print MPU6050 data
30 printMPU6050();
31
32 delay(500);
33}
34
35
36void initializeMPU6050() {
37 // Check if the MPU6050 sensor is detected
38 if (!mpu.begin()) {
39 Serial.println("Failed to find MPU6050 chip");
40 while (1)
41 ; // Halt if sensor not found
42 }
43 Serial.println("MPU6050 Found!");
44
45 // set accelerometer range to +-8G
46 mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
47
48 // set gyro range to +- 500 deg/s
49 mpu.setGyroRange(MPU6050_RANGE_500_DEG);
50
51 // set filter bandwidth to 21 Hz
52 mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
53
54 Serial.println("");
55 delay(100);
56}
57
58void printMPU6050() {
59
60 Serial.println();
61 Serial.println("MPU6050 ------------");
62
63 /* Get new sensor events with the readings */
64 sensors_event_t a, g, temp;
65 mpu.getEvent(&a, &g, &temp);
66
67 /* Print out the values */
68 Serial.print("Acceleration X: ");
69 Serial.print(a.acceleration.x);
70 Serial.print(", Y: ");
71 Serial.print(a.acceleration.y);
72 Serial.print(", Z: ");
73 Serial.print(a.acceleration.z);
74 Serial.println(" m/s^2");
75
76 Serial.print("Rotation X: ");
77 Serial.print(g.gyro.x);
78 Serial.print(", Y: ");
79 Serial.print(g.gyro.y);
80 Serial.print(", Z: ");
81 Serial.print(g.gyro.z);
82 Serial.println(" rad/s");
83
84 Serial.print("Temperature: ");
85 Serial.print(temp.temperature);
86 Serial.println(" degC");
87
88 Serial.println("MPU6050 ------------");
89 Serial.println();
90}
コード解析
ライブラリのインクルード
センサーのインターフェースと通信のために、
Adafruit_MPU6050,Adafruit_Sensor,Wireライブラリが含まれています。#include <Adafruit_MPU6050.h> #include <Adafruit_Sensor.h> #include <Wire.h>
センサーオブジェクトの初期化
Adafruit_MPU6050 クラスのオブジェクトを作成し、MPU6050 センサーを表します。
Adafruit_MPU6050 mpu;
セットアップ関数
シリアル通信を初期化し、MPU6050 センサーを初期化する関数を呼び出します。
void setup() { Serial.begin(9600); initializeMPU6050(); }
ループ関数
MPU6050 のデータを表示する関数を繰り返し呼び出し、各呼び出しの間に 500 ミリ秒の遅延を入れます。
void loop() { printMPU6050(); delay(500); }
MPU6050 の初期化関数
MPU6050 が接続されているかを確認し、加速度計とジャイロの範囲を設定し、フィルタの帯域幅を設定します。
void initializeMPU6050() { // Check if the MPU6050 sensor is detected if (!mpu.begin()) { Serial.println("Failed to find MPU6050 chip"); while (1) ; // Halt if sensor not found } Serial.println("MPU6050 Found!"); // set accelerometer range to +-8G mpu.setAccelerometerRange(MPU6050_RANGE_8_G); // set gyro range to +- 500 deg/s mpu.setGyroRange(MPU6050_RANGE_500_DEG); // set filter bandwidth to 21 Hz mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); Serial.println(""); delay(100); }
MPU6050 データ表示関数
MPU6050 から加速度、ジャイロスコープ、温度データを読み取り、シリアルモニターに表示します。
void printMPU6050() { Serial.println(); Serial.println("MPU6050 ------------"); /* Get new sensor events with the readings */ sensors_event_t a, g, temp; mpu.getEvent(&a, &g, &temp); /* Print out the values */ Serial.print("Acceleration X: "); Serial.print(a.acceleration.x); Serial.print(", Y: "); Serial.print(a.acceleration.y); Serial.print(", Z: "); Serial.print(a.acceleration.z); Serial.println(" m/s^2"); Serial.print("Rotation X: "); Serial.print(g.gyro.x); Serial.print(", Y: "); Serial.print(g.gyro.y); Serial.print(", Z: "); Serial.print(g.gyro.z); Serial.println(" rad/s"); Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degC"); Serial.println("MPU6050 ------------"); Serial.println(); }