MPU6050
概述
在本教程中,您将学习如何将 GY-87 IMU 模块与 Arduino Uno 连接,重点介绍 MPU6050 传感器。我们将介绍初始化 MPU6050 并在串口监视器上显示其加速度计、陀螺仪和温度数据的内容。本课程对于需要运动和温度传感的项目(如机器人技术、手势控制设备和互动艺术装置)至关重要。
所需元件
本项目中,我们需要以下元件。
购买整套套件会更加方便,以下是链接:
名称 |
套件所含项目 |
链接 |
|---|---|---|
Elite Explorer 套件 |
300+ |
您也可以从以下链接单独购买。
元件介绍 |
购买链接 |
|---|---|
- |
|
- |
接线
原理图
代码
备注
您可以直接打开路径
elite-explorer-kit-main\basic_project\09-gy87_mpu6050下的09-gy87_mpu6050.ino文件。或者将以下代码复制到 Arduino IDE 中。
备注
要安装库,请使用 Arduino 库管理器搜索 “Adafruit MPU6050” 并安装。
代码分析
包含库
包含了
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() { // 检查是否检测到 MPU6050 传感器 if (!mpu.begin()) { Serial.println("Failed to find MPU6050 chip"); while (1) ; // 如果未找到传感器则暂停 } Serial.println("MPU6050 Found!"); // 设置加速度计范围为 +-8G mpu.setAccelerometerRange(MPU6050_RANGE_8_G); // 设置陀螺仪范围为 +- 500 deg/s mpu.setGyroRange(MPU6050_RANGE_500_DEG); // 设置滤波器带宽为 21 Hz mpu.setFilterBandwidth(MPU6050_BAND_21_HZ); Serial.println(""); delay(100); }
打印 MPU6050 数据函数
从 MPU6050 读取加速度、陀螺仪和温度数据并打印到串口监视器。
void printMPU6050() { Serial.println(); Serial.println("MPU6050 ------------"); /* 获取新的传感器事件读数 */ sensors_event_t a, g, temp; mpu.getEvent(&a, &g, &temp); /* 打印数值 */ 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(); }