ESP32驱动MPU-6050三轴加速度与三轴陀螺仪传感器串口输出数据

大怪科学 20260609

  • 传感器
  • 陀螺仪传感器
  • mpu-6050
  • 串口

ESP32驱动MPU-6050三轴加速度与三轴陀螺仪传感器串口输出数据

MPU-6050是一款集成度较高的运动传感器模块,内置三轴MEMS陀螺仪和三轴MEMS加速度计,同时配备一个可扩展的数字运动处理器(DMP),支持从外部传感器读取数据的辅助I2C接口。该模块可连接第三方数字传感器,例如IIC接口的三轴磁场传感器,从而构建九轴姿态检测系统。

MPU-6050分别使用三个16位ADC将陀螺仪和加速度计的模拟信号转换为数字输出。其测量范围支持用户自定义配置,陀螺仪可设置为±250、±500、±1000、±2000 dps,加速度计则支持±2、±4、±8、±16g,以适应不同运动速度的检测需求。

目前市面上流通的MPU-6050芯片有两种版本,旧版的设备ID为0x68,而新版的设备ID为0x70。在本实验中,使用的是新版芯片。

二、原理图与引脚说明

MPU-6050的引脚功能如下:

引脚名称 功能描述
VDD 直流+5V电源输入
GND 接地
SCL I2C时钟线或SPI时钟端口
SDA I2C数据线或SPI数据输入
XDA 辅助I2C数据线,用于连接其他传感器
XCL 辅助I2C时钟线,用于连接其他传感器
AD0 I2C地址选择位或SPI数据输出
INT 中断信号输出引脚

三、MPU-6050与ESP32开发板的连接方式

MPU-6050与ESP32开发板的连接方式如下:

MPU-6050引脚 ESP32引脚
VCC 5V
GND GND
SDA 21
SCL 22

四、Arduino开发环境配置与代码示例

在Arduino IDE中,需安装相关依赖库,包括Adafruit_MPU6050和Adafruit_Sensor。安装完成后,打开示例代码目录,修改头文件中的设备ID为0x70,以适配新版MPU-6050。

以下是完整的Arduino示例代码:


// 基础示例代码,用于读取MPU6050的加速度数据

#include 
#include 
#include 

Adafruit_MPU6050 mpu;

void setup(void) {
  Serial.begin(115200);
  while (!Serial)
    delay(10); // 等待串口连接

  Serial.println("Adafruit MPU6050 测试开始");

  // 初始化MPU6050
  if (!mpu.begin()) {
    Serial.println("未检测到MPU6050芯片");
    while (1) {
      delay(10);
    }
  }
  Serial.println("MPU6050检测成功");

  mpu.setAccelerometerRange(MPU6050_RANGE_8_G);
  Serial.print("加速度计量程设置为: ");
  switch (mpu.getAccelerometerRange()) {
  case MPU6050_RANGE_2_G:
    Serial.println("+/-2G");
    break;
  case MPU6050_RANGE_4_G:
    Serial.println("+/-4G");
    break;
  case MPU6050_RANGE_8_G:
    Serial.println("+/-8G");
    break;
  case MPU6050_RANGE_16_G:
    Serial.println("+/-16G");
    break;
  }

  mpu.setGyroRange(MPU6050_RANGE_500_DEG);
  Serial.print("陀螺仪量程设置为: ");
  switch (mpu.getGyroRange()) {
  case MPU6050_RANGE_250_DEG:
    Serial.println("+/-250 deg/s");
    break;
  case MPU6050_RANGE_500_DEG:
    Serial.println("+/-500 deg/s");
    break;
  case MPU6050_RANGE_1000_DEG:
    Serial.println("+/-1000 deg/s");
    break;
  case MPU6050_RANGE_2000_DEG:
    Serial.println("+/-2000 deg/s");
    break;
  }

  mpu.setFilterBandwidth(MPU6050_BAND_21_HZ);
  Serial.print("滤波器带宽设置为: ");
  switch (mpu.getFilterBandwidth()) {
  case MPU6050_BAND_260_HZ:
    Serial.println("260 Hz");
    break;
  case MPU6050_BAND_184_HZ:
    Serial.println("184 Hz");
    break;
  case MPU6050_BAND_94_HZ:
    Serial.println("94 Hz");
    break;
  case MPU6050_BAND_44_HZ:
    Serial.println("44 Hz");
    break;
  case MPU6050_BAND_21_HZ:
    Serial.println("21 Hz");
    break;
  case MPU6050_BAND_10_HZ:
    Serial.println("10 Hz");
    break;
  case MPU6050_BAND_5_HZ:
    Serial.println("5 Hz");
    break;
  }

  Serial.println("");
  delay(100);
}

void loop() {
  sensors_event_t a, g, temp;
  mpu.getEvent(&a, &g, &temp);

  Serial.print("加速度 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("角速度 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("温度: ");
  Serial.print(temp.temperature);
  Serial.println(" degC");

  Serial.println("");
  delay(500);
}

将代码编译并上传至ESP32开发板后,打开串口监视器,即可实时查看MPU-6050输出的三轴加速度、三轴角速度以及内部温度数据。

五、注意事项与调试建议

在使用新版MPU-6050进行测试时,若程序无法正常运行或出现错误提示,可能是由于代码中未正确设置设备ID。新版MPU-6050的默认ID为0x70,而部分示例代码默认使用0x68。因此,建议在代码中修改宏定义中的ID值,或删除相关检测语句以避免冲突。

审核编辑:黄宇

查看全文

点赞

大怪科学

作者最近更新

  • 激光雷达三维建模技术助力果园测产:突破人工限制,推动果业数字化转型
    大怪科学
    1天前
  • Teledyne 推出 Linea HS2 8k 线阵相机,实现低光环境下的高速成像
    大怪科学
    1天前
  • Wi-Fi 6在IoT领域是超前配置,还是刚好解了燃眉之急?
    大怪科学
    2天前

期刊订阅

相关推荐

  • 香港大学开发新型GPS辅助系统:可检测汽车是否已驶入高架桥

    2018-12-04

  • 谷歌借助陀螺仪和加速计研发手机应用AR新功能

    2019-03-28

  • 我国工业物联网规模预计2020年将突破4500亿

    2018-12-07

  • 传感器在我国桥梁养护这一数千亿大市场中大有可为

    2018-12-07

评论0条评论

    ×
    私信给大怪科学

    点击打开传感搜小程序 - 速览海量产品,精准对接供需

    • 收藏

    • 评论

    • 点赞

    • 分享

    收藏文章×

    已选择0个收藏夹

    新建收藏夹
    完成
    创建收藏夹 ×
    取消 保存

    1.点击右上角

    2.分享到“朋友圈”或“发送给好友”

    ×

    微信扫一扫,分享到朋友圈

    推荐使用浏览器内置分享功能

    ×

    关注微信订阅号

    关注微信订阅号,了解更多传感器动态

  • #{faceHtml}

    #{user_name}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 查看评论 回复

    共#{comment_count}条评论

    加载更多

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} #{reback} 回复

  • #{ahtml}#{created_at}

    #{content}

    展开

    #{like_count} #{dislike_count} 回复

  • 关闭
    广告