MPU6050 六轴陀螺仪
大约 4 分钟
MPU6050 六轴陀螺仪
功能说明
MPU6050 是一款六轴运动传感器(3轴加速度计 + 3轴陀螺仪),通过 I2C 总线通信。可测量加速度、角速度,并计算倾斜角度。适用于姿态检测、运动追踪、倾斜报警等场景。
固件要求:仅 ESP32-S3 full 固件支持(需启用
FASTBEE_ENABLE_I2C_SENSORS编译开关)。
支持的外设类型
| 类型 | type值 | 说明 |
|---|---|---|
| SENSOR | 38 | I2C 传感器(MPU6050) |
硬件接线
| MPU6050 引脚 | ESP32-S3 GPIO | 说明 |
|---|---|---|
| VCC | 3.3V | 电源 |
| GND | GND | 地 |
| SDA | GPIO 21 | I2C 数据线 |
| SCL | GPIO 22 | I2C 时钟线 |
| INT | GPIO(可选) | 中断输出(数据就绪) |
MPU6050 支持 3.3V 和 5V 供电,ESP32 建议使用 3.3V。
配置方式
方式1:Web界面配置(推荐)
MPU6050 保存前重点核对 I2C 地址、采集字段和安装方向。
步骤1:进入外设管理页面
- 打开浏览器访问 ESP32 IP 地址
- 登录后点击左侧菜单 外设配置
步骤2:添加MPU6050外设
点击 新增外设 按钮
填写配置:
字段 填写内容 说明 外设ID mpu6050_1唯一标识符 名称 MPU6050陀螺仪显示名称 外设类型 通用传感器 (type: 38) I2C传感器 SDA引脚 21I2C数据引脚 SCL引脚 22I2C时钟引脚 驱动名称 MPU6050固定值 I2C地址 0x680x68或0x69 采集间隔 10001秒(≥500ms) 加速度量程 2±2g 陀螺仪量程 250±250°/s 点击 保存
步骤3:验证配置
- 在外设列表中找到刚添加的外设
- 点击 启用 开关
- 等待1秒后查看加速度、角速度、倾斜角度数据
⚠️ 重要:仅ESP32-S3 full固件支持,需启用I2C传感器编译开关
方式2:JSON配置文件导入
将以下配置添加到 data/config/peripherals.json 的 peripherals 数组中:
{
"id": "mpu6050_1",
"name": "MPU6050陀螺仪",
"type": 38,
"enabled": false,
"pins": [21, 22],
"params": {
"driver": "MPU6050",
"i2cAddress": "0x68",
"interval": 1000,
"accelRange": 2,
"gyroRange": 250
}
}参数说明
| 参数 | 说明 |
|---|---|
| driver | 驱动名称,固定为 "MPU6050" |
| i2cAddress | I2C 地址,默认 0x68(AD0 接 GND),AD0 接 VCC 时为 0x69 |
| interval | 采样间隔(ms),建议 ≥ 500 |
| accelRange | 加速度量程:2/4/8/16(单位:g) |
| gyroRange | 陀螺仪量程:250/500/1000/2000(单位:°/s) |
pins[0] = SDA 引脚,pins[1] = SCL 引脚
数据上报格式
传感器数据通过 MQTT 上报:
[
{"id": "mpu6050_1", "value": "ax:0.12,ay:-0.03,az:9.78,gx:1.2,gy:-0.5,gz:0.1,tilt:5.3"}
]| 字段 | 说明 | 单位 |
|---|---|---|
| ax/ay/az | 三轴加速度 | m/s² |
| gx/gy/gz | 三轴角速度 | °/s |
| tilt | 综合倾斜角度 | ° |
驱动注册机制
MPU6050 使用 ISensorDriver + DriverRegistry 机制注册:
- 编译时通过
FASTBEE_ENABLE_I2C_SENSORS宏开关启用 - 驱动自动注册到全局注册表
- 配置中的
driver字段用于匹配具体驱动实现
与外设执行联动
Web界面配置步骤
创建倾斜检测报警规则
- 切换到 外设执行管理 标签
- 点击 新增规则 按钮
- 配置轮询触发器:
- 触发类型:轮询触发
- 数据源:mpu6050_1
- 数据字段:tilt(倾斜角度)
- 比较操作:大于
- 比较值:30(度)
- 添加动作:
- 动作1:蜂鸣器报警
- 动作类型:高电平
- 目标外设:buzzer1
- 动作2:触发设备事件
- 动作类型:触发事件
- 事件ID:tilt_alarm
- 动作1:蜂鸣器报警
- 点击 保存
💡 提示:可与BMP280共用I2C总线(地址不同)
JSON配置示例
倾斜检测报警
{
"name": "倾斜报警",
"enabled": true,
"triggers": [
{
"type": "poll",
"params": {
"periphId": "mpu6050_1",
"field": "tilt",
"operator": ">",
"threshold": 30
}
}
],
"actions": [
{
"type": "gpio_write",
"params": {
"periphId": "buzzer1",
"value": "1"
}
},
{
"type": "event_emit",
"params": { "event": "tilt_alarm" }
}
]
}姿态数据显示到 OLED
{
"name": "显示姿态",
"enabled": true,
"triggers": [
{
"type": "timer",
"params": { "interval": 2000 }
}
],
"actions": [
{
"type": "sensor_read",
"params": { "periphId": "mpu6050_1" }
},
{
"type": "display_write",
"params": {
"periphId": "oled1",
"template": "Tilt:{mpu6050_1.tilt}deg\nAx:{mpu6050_1.ax}"
}
}
]
}注意事项
- 固件版本:仅 ESP32-S3 full 固件包含 MPU6050 驱动,slim 固件不支持
- 安装方向:传感器安装方向影响轴向定义,需根据实际安装校准
- 零偏校准:首次使用建议进行零偏校准,将设备水平静置读取偏移值
- 振动干扰:安装环境振动会影响读数精度,建议添加减震垫
- I2C 共享:可与 BMP280 共用同一 I2C 总线(地址不同),节省引脚资源
- 采样率:高速采样(< 100ms)会增加 CPU 负载,普通应用建议 500-2000ms
