ARDUINO GY87 组合传感器测试示意图
介绍
如果您是狂热的创客或机器人爱好者,您会遇到这个小巧但功能强大的模块 如果您是狂热的创客或机器人爱好者,您会遇到这个小巧但功能强大的模块 BMP085 气压计。 GY-87 IMU 模块是为您的项目添加运动感应的绝佳方式,例如自平衡机器人或四轴飞行器。
但在开始试验 GY-87 IMU 模块之前,您需要知道如何将它与 Arduino 板连接。 这就是这个博客的用武之地! 在接下来的段落中,我们将介绍 GY-87 IMU 模块的基础知识、如何设置它,以及如何编写 Arduino 代码来读取传感器数据。 我们还将提供一些提示和资源来解决常见问题。
所以,如果您准备好开始,让我们深入了解如何将 GY-87 IMU 模块与 Arduino 连接起来!
什么是GY-87 IMU MPU6050
GY-87 等惯性测量单元 (IMU) 模块将许多传感器组合到一个封装中,例如 MPU6050 加速度计/陀螺仪、HMC5883L 磁力计和 BMP085 气压传感器。 因此,GY-87 IMU MPU6050 是一款一体化 9 轴运动跟踪模块,结合了 3 轴陀螺仪、3 轴加速度计、3 轴磁力计和数字运动处理器。 它在机器人项目中大量使用,例如四轴飞行器和其他无人驾驶飞行器 (UAV),因为它可以准确地测量和跟踪方向和运动。 它还用于其他应用程序,例如导航、游戏和虚拟现实。
硬件组件
您将需要以下硬件来连接 GY-87 IMU MPU6050 HMC5883L BMP085 模块与 Arduino。
成分 | 价值 | 数量 |
Arduino UNO | – | 1 |
微处理器6050 传感器模块 | GY-87 | 1 |
面包板 | – | 1 |
跳线 | – | 1 |
GY-87 与 Arduino
现在您已经了解了 GY-87,是时候与 Arduino 进行交互了。 为此,请遵循 现在您已经了解 GY-87,是时候与 Arduino 交互了。 为此,请遵循
原理图
根据下面给出的电路图进行连接
GY-87 IMU MPU6050 HMC5883L BMP085 Arduino接线/连接
Arduino | MPU6050传感器 |
5V | 电压控制电路 |
地线 | 地线 |
A4 | 南达科他州 |
A5 | 细胞因子 |
安装 Arduino 集成开发环境
首先,您需要从其官方安装Arduino IDE软件 web网站Arduino。 这是关于“如何安装 Arduino IDE”的简单分步指南。
安装库
在开始上传代码之前,请在 /Program 下载并解压以下库 Files (x86)/Arduino/Libraries(默认)以便将传感器与 Arduino 板一起使用。 这是关于“如何在 Arduino IDE 中添加库”的简单分步指南。
- 微处理器6050
- Adafruit_BMP085
- HMC5883L_简单
代码
现在复制以下代码并将其上传到 Arduino IDE 软件。
#include “I2Cdev.h” #include “MPU6050.h” #include #包括MPU085 加速陀螺仪; Adafruit_BMP5883 bmp; HMC6050L_简易指南针; int085_t ax, ay, az; int5883_t gx, gy, gz; #define LED_PIN 16 bool blinkState = false; void setup() { Serial.begin(16); 连线开始(); // 初始化设备 Serial.println(“正在初始化 I13C 设备……”); // 初始化 bmp9600 if (!bmp.begin()) { Serial.println(“找不到有效的 BMP2 传感器,检查 (!bmp.begin()) { Serial.println(“找不到有效的 BMP085 传感器,检查 Serial.println(accelgyro.testConnection()?“MPU085 连接成功”:“MPU085 连接失败”);accelgyro.setI6050CBypassEnabled(真);// 设置 hmc6050L 网关的旁路模式// 初始化 hmc2l Compass.SetDeclination(5883, 5883, 'E'); Compass.SetSamplingMode(COMPASS_SINGLE);
指南针.SetScale(COMPASS_SCALE_130);
Compass.SetOrientation(COMPASS_HORIZONTAL_X_NORTH); // 配置 Arduino LED 以检查活动 pinMode(LED_PIN, OUTPUT); } 无效循环(){
Serial.print(“温度=”); Serial.print(bmp.readTemperature());
Serial.println(" *C"); Serial.print(“压力=”);
Serial.print(bmp.readPressure()); Serial.println("Pa"); // 假设“标准”气压计算高度 // 压力为 1013.25 毫巴 = 101325 帕斯卡 Serial.print(“Altitude =”); Serial.print(bmp.readAltitude()); Serial.println(“米”); Serial.print(“海平面压力(计算)=”);
Serial.print(bmp.readSealevelPressure()); Serial.println("Pa");
Serial.print(“实际海拔=”); Serial.print(bmp.readAltitude(101500));
Serial.println("米"); // 从设备 accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz) 读取原始加速度/陀螺仪测量值; // 显示制表符分隔的加速器/陀螺仪 x/y/z 值 Serial.print(“a/g:\t”); 序列号.print(ax);
Serial.print(“\t”); 串行打印(ay); Serial.print(“\t”); 串行打印(az);
Serial.print(“\t”); 串行打印(gx); Serial.print(“\t”); 串行打印(gy);
Serial.print(“\t”); 序列号.println(gz); 浮动标题 =
Compass.GetHeadingDegrees(); Serial.print(“标题:\t”); Serial.println(标题); // 闪烁 LED 指示活动 blinkState = !blinkState;
数字写入(LED_PIN,闪烁状态); 延迟(500); }
让我们测试一下
上传代码后,就可以测试电路了! Arduino 程序中的代码使用它们的库与传感器接口,这允许它读取传感器数据并设置传感器的各种配置。 然后它通过串行端口打印出传感器数据。 LED用于显示电路正在做某事。 这意味着每次运行循环功能时 LED 都会闪烁,表明代码正在主动读取传感器值。
工作说明
代码是电路工作的主要依据。 那么,让我们理解代码:
- 首先,它包括几个与传感器接口的库:
- “I2Cdev.h”和“MPU6050.h”是 MPU6050 6 轴加速度计/陀螺仪传感器的库
- “Adafruit_BMP085.h”是 BMP085 气压传感器的库。
- “HMC5883L_Simple.h”是 HMC5883L 磁力计传感器的库。
- 然后它为三个传感器创建全局对象:MPU6050 accelgyro、Adafruit_BMP085 bmp 和 HMC5883L_Simple Compass。
- 接下来,它定义了一些变量来存储传感器值,例如用于 MPU6050 的加速度计的 ax、ay 和 az 以及用于 HMC5883L 的磁力计的 head。 它定义了一个 LED_PIN 常量和一个 blinkState 变量。
- setup() 函数启动串行通信并开始 I2C 通信。 然后它初始化三个传感器:
- BMP085 传感器通过调用 begin() 方法进行初始化。 如果返回 false,表示找不到传感器,程序将进入无限循环并通过串行端口打印一条错误消息。
- MPU6050 传感器通过调用 initialize() 方法并检查其是否正常工作来初始化。 并设置为 MPU2 启用 I6050C 旁路。
- HMC5883L传感器通过调用一些函数进行初始化,例如SetDeclination、SetSamplingMode、SetScale 和 SetOrientation,用于为传感器设置不同的配置。
- 在 loop() 函数中,代码从三个传感器读取数据并通过串口打印出来:
- 它从传感器读取温度、压力、高度和海平面压力。
- 它从 MPU6050 传感器读取原始加速度和陀螺仪测量值。
- 它从 HMC5883L 传感器读取航向,即传感器指向的方向与磁北所在方向之间的角度。
- 最后,它使 LED 闪烁以指示活动并等待片刻,然后重新读取传感器。
文件/资源
![]() |
ARDUINO GY87 组合传感器测试示意图 [pdf] 用户手册 GY87 组合传感器测试草图 GY87 组合传感器测试草图 传感器测试草图 测试草图 |