init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
--[[
|
||||
@module main
|
||||
@summary MPU6050 六轴姿态传感器 Demo 入口
|
||||
@version 1.0
|
||||
@date 2026.07.23
|
||||
@author 王城钧
|
||||
]]
|
||||
|
||||
--[[
|
||||
=== 演示内容 ===
|
||||
|
||||
本 demo 演示 exs_mpu6050 扩展库的完整功能,顺序为:
|
||||
HELLO→[1/4]→[2/4]→[3/4]→[4/4]→End
|
||||
1、初始化和数据读取([1/4])- 加速度/角速度/温度
|
||||
2、静态倾角测量([2/4])- 加速度计推算俯仰/横滚
|
||||
3、动态姿态解算,互补滤波([3/4])- 陀螺+加速度融合
|
||||
4、碰撞检测与自由落体([4/4])
|
||||
|
||||
]]
|
||||
|
||||
--[[
|
||||
VERSION:项目版本号,ascii string类型
|
||||
如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
|
||||
X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
|
||||
因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为000
|
||||
如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
|
||||
]]
|
||||
-- main.lua - 程序入口文件
|
||||
|
||||
PROJECT = "MPU6050_Demo" -- 项目命名
|
||||
VERSION = "001.999.000" -- 项目版本号
|
||||
|
||||
-- 在日志中打印项目名和项目版本号
|
||||
log.info("main", PROJECT, VERSION)
|
||||
|
||||
-- 设置日志输出风格为样式2(建议调试时开启)
|
||||
-- log.style(2)
|
||||
|
||||
|
||||
-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
|
||||
-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
|
||||
-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
|
||||
-- 启动errDump日志存储并且上传功能,600秒上传一次
|
||||
-- if errDump then
|
||||
-- errDump.config(true, 600)
|
||||
-- end
|
||||
|
||||
|
||||
-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
|
||||
-- 可以使用合宙的iot.openluat.com平台进行远程升级
|
||||
-- 也可以使用客户自己搭建的平台进行远程升级
|
||||
-- 远程升级的详细用法,可以参考fota的demo进行使用
|
||||
|
||||
|
||||
-- 启动一个循环定时器
|
||||
-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
|
||||
-- 方便分析内存使用是否有异常
|
||||
-- sys.timerLoopStart(function()
|
||||
-- log.info("mem.lua", rtos.meminfo())
|
||||
-- log.info("mem.sys", rtos.meminfo("sys"))
|
||||
-- end, 3000)
|
||||
|
||||
-- 加载 mpu6050_demo.lua 演示模块
|
||||
require "mpu6050_demo"
|
||||
|
||||
|
||||
-- 用户代码已结束
|
||||
-- 结尾总是这一句
|
||||
sys.run()
|
||||
-- sys.run()之后不要加任何语句!!!!!因为添加的任何语句都不会被执行
|
||||
@@ -0,0 +1,212 @@
|
||||
--[[
|
||||
@module mpu6050_demo
|
||||
@summary MPU6050 六轴姿态传感器演示模块
|
||||
@version 2.0
|
||||
@date 2026.07.23
|
||||
@author 王城钧
|
||||
@usage
|
||||
=== 演示流程: 基础测试(10项) → 持续读取(10秒) → DMP测试(可选) ===
|
||||
|
||||
本文件通过 exs_mpu6050 扩展库的 API 逐一演示 MPU6050 的以下功能:
|
||||
|
||||
1. I2C 初始化与芯片自检 -- i2c.setup + mpu.setup, 自动检测地址 0x68/0x69, 自动加载校准
|
||||
2. 芯片温度读取 -- mpu.get_data().temp, 单位 ℃
|
||||
3. 三轴加速度读取 -- mpu.get_data().accel, 单位 g, 静止水平时 Z≈1.0g
|
||||
4. 三轴角速度读取 -- mpu.get_data().gyro, 单位 °/s, 静止时应接近 0
|
||||
5. 静态倾角测量 -- mpu.get_tilt(), 通过加速度计直接推算俯仰/横滚角
|
||||
6. 碰撞/敲击检测 -- mpu.detect_tap(阈值, 去抖时间), 检测瞬时加速度冲击
|
||||
7. 自由落体/失重检测 -- mpu.detect_freefall(阈值), 三轴合加速度低于阈值时触发
|
||||
8. 校准状态查询 -- mpu.is_calibrated(), 检查加速度/陀螺零偏是否已校准
|
||||
9. 手动重新校准(注释) -- mpu.calibrate(), 设备需水平静止, 200次采样取平均
|
||||
10. 持续读取(加速度+互补滤波+碰撞) -- 循环 10 秒, 演示 get_attitude() 动态姿态融合
|
||||
|
||||
附加: DMP 数字运动处理器 -- mpu.dmp_init() + mpu.dmp_get_euler(), 固件已内置
|
||||
]]
|
||||
|
||||
-- 加载 exs_mpu6050 扩展库
|
||||
-- 该库提供 MPU6050 的全部驱动功能: 初始化/校准/数据读取/姿态解算/DMP
|
||||
local mpu = require "exs_mpu6050"
|
||||
|
||||
-- 硬件 I2C 总线 ID
|
||||
-- Air780EGH: 使用 I2C1 (Pin66=SDA, Pin67=SCL) → hwid=1
|
||||
-- Air8000: 使用 I2C0 (GPIO2=SDA, GPIO1=SCL) → hwid=0
|
||||
local i2c_hwid = 1
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- 基础功能测试 (10 项, 顺序执行)
|
||||
-- 覆盖: 初始化 → 温度 → 加速度 → 陀螺仪 → 倾角 → 碰撞 → 失重 → 校准 → 持续读取
|
||||
----------------------------------------------------------------
|
||||
local function mpu6050_task()
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [1/10] 初始化 I2C + MPU6050
|
||||
-- - i2c.setup 配置 I2C 总线为快速模式(400kHz)
|
||||
-- - mpu.setup 自动检测芯片地址(先试0x68, 再试0x69), 验证 WHO_AM_I 寄存器(应为0x68)
|
||||
-- - 无校准数据时建议调用 calibrate(): 设备需水平静止, 采样200次, 需要50次以上有效静止采样
|
||||
-- - 校准数据会保存到文件 /mpu6050_calib.txt, 后续启动自动加载
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [1/10] 初始化 ===")
|
||||
i2c.setup(i2c_hwid, i2c.FAST)
|
||||
|
||||
if not mpu.setup({ i2c_id = i2c_hwid }) then
|
||||
log.error("TEST", "初始化失败! 检查接线: VCC=3.3V GND SCL SDA")
|
||||
while true do sys.wait(1000) end
|
||||
end
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [2/10] 芯片温度读取
|
||||
-- - MPU6050 内置温度传感器, 用于内部补偿陀螺零漂
|
||||
-- - 正常工作时芯片温度约 30~45℃, 随运行时间缓慢上升
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [2/10] 温度 ===")
|
||||
local temp = mpu.get_data().temp
|
||||
log.info("TEST", string.format("芯片温度: %.1f°C", temp))
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [3/10] 三轴加速度读取 (已校准)
|
||||
-- - 返回 x, y, z 分量, 单位 g (1g ≈ 9.8m/s² 重力加速度)
|
||||
-- - 静止水平放置时: Z≈+1.0g, X≈0g, Y≈0g
|
||||
-- - Z 轴正向为芯片顶面朝上, X/Y 向由芯片丝印方向决定
|
||||
-- - 量程默认 ±2g, 分辨率 16384 LSB/g
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [3/10] 加速度 (单位g) ===")
|
||||
local a = mpu.get_data().accel
|
||||
log.info("TEST", string.format("accel x=%.3f y=%.3f z=%.3f", a.x, a.y, a.z))
|
||||
-- 如果 Z 轴偏差超过 0.15g, 提示检查放置或校准
|
||||
if math.abs(a.z - 1.0) > 0.15 then
|
||||
log.warn("TEST", "Z轴偏差较大(期望≈1.0g), 检查传感器是否水平")
|
||||
end
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [4/10] 三轴角速度读取 (已校准)
|
||||
-- - 返回 x, y, z 分量, 单位 °/s (度每秒)
|
||||
-- - 静止时应全部接近 0, 超过 ±5°/s 说明零偏校准不佳
|
||||
-- - 量程默认 ±250°/s, 分辨率 131 LSB/(°/s)
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [4/10] 陀螺仪 (单位°/s) ===")
|
||||
local g = mpu.get_data().gyro
|
||||
log.info("TEST", string.format("gyro x=%.1f y=%.1f z=%.1f", g.x, g.y, g.z))
|
||||
if math.abs(g.x) > 5 or math.abs(g.y) > 5 or math.abs(g.z) > 5 then
|
||||
log.warn("TEST", "陀螺零偏较大(期望≈0), 重新校准试试")
|
||||
end
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [5/10] 静态倾角读取 (加速度计直接推算)
|
||||
-- - pitch(俯仰): 设备前后倾斜角度, 前倾为正
|
||||
-- - roll(横滚): 设备左右倾斜角度, 右倾为正
|
||||
-- - 纯加速度推算, 静态精度高(受重力矢量影响)
|
||||
-- - 动态时受运动加速度干扰, 噪声大, 不宜用于运动中的姿态估计
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [5/10] 倾角 (单位°) ===")
|
||||
local pitch, roll = mpu.get_tilt()
|
||||
log.info("TEST", string.format("tilt pitch=%.1f° roll=%.1f°", pitch, roll))
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [6/10] 碰撞/敲击检测
|
||||
-- - detect_tap(threshold, debounce_ms)
|
||||
-- threshold: 加速度合矢量阈值(g), 默认 2.0g, 轻敲可设 1.5g
|
||||
-- debounce_ms: 去抖时间(ms), 默认 500ms, 防止单次敲击被多次触发
|
||||
-- - 原理: 三轴加速度模长 sqrt(x²+y²+z²) 超过阈值则触发
|
||||
-- - 静止时模长约 1.0g, 敲击瞬间可达 3~5g
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [6/10] 碰撞检测 ===")
|
||||
if mpu.detect_tap(2.0) then
|
||||
log.info("TEST", "碰撞检测: YES")
|
||||
else
|
||||
log.info("TEST", "碰撞检测: NO (正常, 静止时不应触发)")
|
||||
end
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [7/10] 自由落体/失重检测
|
||||
-- - detect_freefall(threshold)
|
||||
-- threshold: 加速度合矢量阈值(g), 默认 0.3g
|
||||
-- - 原理: 三轴合加速度 < 阈值时判定为失重/自由落体
|
||||
-- - 自由落体时加速度趋近于 0, 正常静止时为 1.0g
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [7/10] 自由落体检测 ===")
|
||||
if mpu.detect_freefall() then
|
||||
log.info("TEST", "自由落体: YES (你在自由落体?)")
|
||||
else
|
||||
log.info("TEST", "自由落体: NO (正常)")
|
||||
end
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [8/10] 校准状态查询
|
||||
-- - is_calibrated() 返回校准数据是否就绪
|
||||
-- - 校准数据来自: 首次自动校准 或 手动 calibrate() 调用
|
||||
-- - 数据保存在 /mpu6050_calib.txt (6个值: gx,gy,gz,ax,ay,az)
|
||||
-- - 无校准时 get_data() 返回原始值, 精度降低
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [8/10] 校准状态 ===")
|
||||
log.info("TEST", "已校准:", mpu.is_calibrated())
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [9/10] 手动重新校准 (默认注释)
|
||||
-- - 在运行过程中需要重新校准时取消注释
|
||||
-- - 调用前确保设备水平静止, 否则校准结果不准确
|
||||
-- - 校准完成会自动覆盖 /mpu6050_calib.txt
|
||||
------------------------------------------------------------
|
||||
-- log.info("TEST", "=== [9/10] 手动校准 ===")
|
||||
-- local ok = mpu.calibrate()
|
||||
-- log.info("TEST", "校准结果:", ok)
|
||||
|
||||
------------------------------------------------------------
|
||||
-- [10/10] 持续读取 (10秒循环)
|
||||
-- - 每 200ms 读取一次: 加速度 + 互补滤波姿态 + 碰撞检测
|
||||
-- - get_attitude() 使用互补滤波: alpha=0.96
|
||||
-- 陀螺积分权重 96% + 加速度推算权重 4%
|
||||
-- 陀螺积分提供高频动态响应, 加速度修正低频漂移
|
||||
-- - 必须持续循环调用以保持积分连续性, 中断后积分重置
|
||||
-- - 在循环中同时监控碰撞事件并累计次数
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "=== [10/10] 持续读取 (10秒) ===")
|
||||
local start = os.clock()
|
||||
local tap_count = 0
|
||||
while os.clock() - start < 10 do
|
||||
local a = mpu.get_data().accel
|
||||
local p, r = mpu.get_attitude()
|
||||
if mpu.detect_tap(2.0, 500) then
|
||||
tap_count = tap_count + 1
|
||||
log.info("TEST", string.format("碰撞! 第%d次", tap_count))
|
||||
end
|
||||
log.info("TEST", string.format(
|
||||
"a:(%5.2f,%5.2f,%5.2f)g p=%.1f° r=%.1f°",
|
||||
a.x, a.y, a.z, p, r))
|
||||
sys.wait(200)
|
||||
end
|
||||
log.info("TEST", string.format("持续读取完成, 碰撞%d次", tap_count))
|
||||
|
||||
------------------------------------------------------------
|
||||
-- 基础测试完毕
|
||||
------------------------------------------------------------
|
||||
log.info("TEST", "========== 所有测试完成 ==========")
|
||||
end
|
||||
|
||||
|
||||
----------------------------------------------------------------
|
||||
-- DMP 数字运动处理器测试 (可选)
|
||||
-- - DMP 是 MPU6050 内置的运动处理引擎, 直接输出融合后的四元数/欧拉角
|
||||
-- - 相比互补滤波, DMP 精度更高、CPU 负载更低
|
||||
-- - DMP 固件已内置在 exs_mpu6050.lua 中 (MotionApps v20), 无需额外文件
|
||||
-- 固件来源: GitHub i2cdevlib → Arduino/MPU6050/MPU6050_6Axis_MotionApps20.h
|
||||
-- - DMP 输出: Roll(横滚), Pitch(俯仰), Yaw(偏航, 无磁力计会漂移)
|
||||
----------------------------------------------------------------
|
||||
local function mpu6050_dmp()
|
||||
sys.wait(3000) -- 等待基础测试开始后再启动 DMP
|
||||
if mpu.dmp_init() then
|
||||
log.info("DMP_TEST", "DMP 就绪")
|
||||
while true do
|
||||
local r, p, y = mpu.dmp_get_euler()
|
||||
if r then
|
||||
log.info("DMP", string.format("R:%.1f P:%.1f Y:%.1f", r, p, y))
|
||||
end
|
||||
sys.wait(3000)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- 启动基础测试任务 (协程运行, 通过命名函数指定)
|
||||
sys.taskInit(mpu6050_task)
|
||||
|
||||
-- 启动 DMP 测试任务 (可选)
|
||||
sys.taskInit(mpu6050_dmp)
|
||||
@@ -0,0 +1,216 @@
|
||||
# MPU6050 六轴姿态传感器演示
|
||||
|
||||
## 一、功能模块介绍
|
||||
|
||||
### 1.1 核心主程序模块
|
||||
|
||||
1. **main.lua** - 主程序入口,负责项目初始化、版本定义和任务调度
|
||||
2. **mpu6050_demo.lua** - MPU6050 功能演示模块,包含数据读取、静态倾角、动态姿态解算、碰撞检测等所有功能的演示用例
|
||||
|
||||
### 1.2 扩展库模块
|
||||
|
||||
1. **exs_mpu6050** - MPU6050 扩展库,提供 I2C 初始化、三轴加速度/角速度数据读取、温度、倾角、姿态解算(互补滤波)、碰撞/敲击检测、自由落体检测、自动校准等 API
|
||||
|
||||
## 二、演示流程介绍
|
||||
|
||||
本 demo 按顺序演示 exs_mpu6050 扩展库的 4 项功能:HELLO → [1/4] → [2/4] → [3/4] → [4/4] → End
|
||||
|
||||
### 2.1 功能演示项说明
|
||||
|
||||
1. **[1/4] 初始化与数据读取** - 初始化 MPU6050 传感器并读取三轴加速度(X/Y/Z,单位 g)、三轴角速度(X/Y/Z,单位 °/s)、芯片温度
|
||||
2. **[2/4] 静态倾角测量** - 通过加速度计推算俯仰角(Pitch)和横滚角(Roll),适用于静态姿态测量
|
||||
3. **[3/4] 动态姿态解算(互补滤波)** - 融合陀螺仪积分与加速度计数据,通过互补滤波输出动态姿态角
|
||||
4. **[4/4] 碰撞检测与自由落体** - 演示敲击检测(detect_tap)和失重/自由落体检测(detect_freefall)
|
||||
|
||||
## 三、演示硬件环境
|
||||
|
||||
### 3.1 硬件清单
|
||||
|
||||
- Air780EPM 核心板
|
||||
|
||||
- MPU6050 六轴姿态传感器模块 × 1
|
||||
|
||||
- 母对母杜邦线 × 4
|
||||
|
||||
- TYPE-C 数据线 × 1
|
||||
|
||||

|
||||
|
||||
### 3.2 接线配置
|
||||
|
||||
#### 3.2.1 MPU6050 模块接线(硬件 I2C)
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Air780EPM 核心板<br/></td><td>MPU6050 模块(GY-521)<br/></td></tr>
|
||||
<tr>
|
||||
<td>67 / I2C1_SCL<br/></td><td>SCL<br/></td></tr>
|
||||
<tr>
|
||||
<td>66 / I2C1_SDA<br/></td><td>SDA<br/></td></tr>
|
||||
<tr>
|
||||
<td>VDD_EXT<br/></td><td>VCC<br/></td></tr>
|
||||
<tr>
|
||||
<td>GND<br/></td><td>GND<br/></td></tr>
|
||||
</table>
|
||||
|
||||
|
||||
> 说明:接线时注意杜邦线不宜过长,以免通信不稳定。MPU6050 模块(GY-521)通常包含 3.3V 稳压器,可直接使用 VDD_EXT 供电。
|
||||
|
||||
## 四、演示软件环境
|
||||
|
||||
### 4.1 开发工具
|
||||
|
||||
- [Luatools下载调试工具](https://docs.openluat.com/air780epm/luatos/common/download/)
|
||||
|
||||
### 4.2 内核固件
|
||||
|
||||
- [点击下载Air780EPM系列最新版本内核固件](https://docs.openluat.com/air780epm/luatos/firmware/version/),demo 使用 LuatOS-SoC_V2050_Air780EPM 1号固件
|
||||
|
||||
### 4.3 脚本文件
|
||||
|
||||
- **main.lua** - 程序入口
|
||||
- **mpu6050_demo.lua** - 演示模块
|
||||
- **exs_mpu6050** - 扩展库
|
||||
|
||||
## 五、演示核心步骤
|
||||
|
||||
### 5.1 硬件准备
|
||||
|
||||
1. 按照接线表将 MPU6050 模块连接到核心板
|
||||
2. 确保电源连接正确,通过 TYPE-C USB 口供电
|
||||
3. 首次上电请将设备水平放置,以便自动校准
|
||||
4. 检查所有接线无误,避免短路
|
||||
|
||||
### 5.2 软件配置
|
||||
|
||||
在 `main.lua` 中加载对应的演示模块:
|
||||
|
||||
```lua
|
||||
-- 加载 mpu6050_demo.lua 演示模块
|
||||
require "mpu6050_demo"
|
||||
|
||||
```
|
||||
|
||||
### 5.3 软件烧录
|
||||
|
||||
1. 使用 Luatools 选择最新内核固件
|
||||
2. 下载本项目所有脚本文件
|
||||
3. 将固件和脚本一起烧录到设备
|
||||
4. 烧录成功后设备自动重启后开始运行
|
||||
|
||||
### 5.4 功能测试
|
||||
|
||||
#### 5.4.1 初始化与数据读取演示
|
||||
|
||||
1. 设备启动后打印 "HELLO",随后自动进入 [1/4] 初始化与数据读取
|
||||
2. 观察日志输出,确认初始化成功
|
||||
3. 观察三轴加速度数据(X/Y/Z,单位 g)、角速度(°/s)、温度(℃)输出
|
||||
4. 静止水平放置时,加速度 Z 轴应接近 1.0g,X/Y 接近 0
|
||||
|
||||
#### 5.4.2 静态倾角测量演示
|
||||
|
||||
1. 自动进入 [2/4] 静态倾角测量
|
||||
2. 保持设备静止,观察俯仰角和横滚角
|
||||
3. 水平放置时倾角应接近 0°
|
||||
4. 可倾斜设备观察角度变化
|
||||
|
||||
#### 5.4.3 动态姿态解算演示
|
||||
|
||||
1. 自动进入 [3/4] 动态姿态解算(互补滤波)
|
||||
2. 缓慢转动设备,观察俯仰角和横滚角的变化
|
||||
3. 互补滤波融合了陀螺仪和加速度计数据,动态响应更好
|
||||
|
||||
#### 5.4.4 碰撞检测演示
|
||||
|
||||
1. 自动进入 [4/4] 碰撞检测与自由落体
|
||||
2. 5 秒检测窗口内,用手指轻轻敲击传感器
|
||||
3. 观察日志是否输出"检测到敲击!"
|
||||
4. 快速抛接设备可触发"失重/自由落体"检测
|
||||
|
||||
### 5.5 预期效果
|
||||
|
||||
- **初始化与数据读取**:MPU6050 初始化成功,自动校准完成,三轴加速度/角速度/温度数据正常输出
|
||||
- **静态倾角**:水平放置时俯仰/横滚接近 0°,倾斜设备时角度准确响应
|
||||
- **动态姿态解算**:转动设备时姿态角平滑跟踪,互补滤波有效抑制噪声
|
||||
- **碰撞检测**:敲击传感器可被 detect_tap 捕获,自由落体可被 detect_freefall 捕获
|
||||
- **日志如下:**
|
||||
|
||||
```lua
|
||||
[2026-07-23 18:22:49.845][000000000.253] I/user.TEST === 1. 初始化 ===
|
||||
[2026-07-23 18:22:49.846][000000000.253] I2C_MasterSetup 426:I2C1, Total 65 HCNT 22 LCNT 40
|
||||
[2026-07-23 18:22:49.848][000000000.305] I/user.mpu6050 WHO_AM_I 0x68 addr 0x68
|
||||
[2026-07-23 18:22:49.850][000000000.560] I/user.mpu6050 已加载校准 g:(-283,-72,239) a:(-1851,2252,-28738)
|
||||
[2026-07-23 18:22:49.851][000000000.561] I/user.mpu6050 init 完成
|
||||
[2026-07-23 18:22:49.858][000000000.561] I/user.TEST === 2. 温度 ===
|
||||
[2026-07-23 18:22:49.860][000000000.562] I/user.TEST 芯片温度: 29.6°C
|
||||
[2026-07-23 18:22:49.863][000000000.562] I/user.TEST === 3. 加速度 (单位g) ===
|
||||
[2026-07-23 18:22:49.867][000000000.564] I/user.TEST accel x=0.127 y=-0.077 z=1.112
|
||||
[2026-07-23 18:22:49.870][000000000.564] I/user.TEST === 4. 陀螺仪 (单位°/s) ===
|
||||
[2026-07-23 18:22:49.873][000000000.566] I/user.TEST gyro x=1.9 y=9.1 z=3.6
|
||||
[2026-07-23 18:22:49.876][000000000.566] W/user.TEST 陀螺零偏较大(期望≈0), 重新校准试试
|
||||
[2026-07-23 18:22:49.879][000000000.566] I/user.TEST === 5. 倾角 (单位°) ===
|
||||
[2026-07-23 18:22:49.883][000000000.568] I/user.TEST tilt pitch=-3.7° roll=6.4°
|
||||
[2026-07-23 18:22:49.885][000000000.568] I/user.TEST === 6. 碰撞检测 ===
|
||||
[2026-07-23 18:22:49.888][000000000.570] I/user.TEST 碰撞检测: NO (正常, 静止时不应触发)
|
||||
[2026-07-23 18:22:49.891][000000000.570] I/user.TEST === 7. 自由落体检测 ===
|
||||
[2026-07-23 18:22:49.894][000000000.572] I/user.TEST 自由落体: NO (正常)
|
||||
[2026-07-23 18:22:49.897][000000000.572] I/user.TEST === 8. 校准状态 ===
|
||||
[2026-07-23 18:22:49.900][000000000.572] I/user.TEST 已校准: true
|
||||
[2026-07-23 18:22:49.903][000000000.572] I/user.TEST === 10. 持续读取 (10秒) ===
|
||||
[2026-07-23 18:22:49.906][000000000.578] I/user.TEST a:( 0.12,-0.07, 1.09)g p=-0.1° r=0.3°
|
||||
[2026-07-23 18:22:49.945][000000000.783] I/user.TEST a:( 0.14,-0.09, 0.98)g p=-0.3° r=0.7°
|
||||
[2026-07-23 18:22:49.948][000000000.990] I/user.TEST a:( 0.14,-0.07, 0.98)g p=-0.6° r=0.9°
|
||||
[2026-07-23 18:22:49.950][000000001.195] I/user.TEST a:( 0.13,-0.05, 0.97)g p=-1.9° r=2.7°
|
||||
[2026-07-23 18:22:49.953][000000001.401] I/user.TEST a:( 0.13,-0.06, 0.97)g p=-2.0° r=2.9°
|
||||
[2026-07-23 18:22:49.990][000000001.607] I/user.TEST a:( 0.14,-0.06, 0.97)g p=-2.0° r=3.1°
|
||||
[2026-07-23 18:22:50.135][000000001.813] I/user.TEST a:( 0.13,-0.06, 0.98)g p=-2.1° r=3.3°
|
||||
[2026-07-23 18:22:50.341][000000002.019] I/user.TEST a:( 0.14,-0.06, 0.97)g p=-3.4° r=1.9°
|
||||
[2026-07-23 18:22:50.545][000000002.225] I/user.TEST a:( 0.13,-0.05, 0.98)g p=-3.4° r=2.1°
|
||||
[2026-07-23 18:22:50.752][000000002.431] I/user.TEST a:( 0.13,-0.05, 0.98)g p=-3.4° r=2.3°
|
||||
[2026-07-23 18:22:50.958][000000002.637] I/user.TEST a:( 0.13,-0.05, 0.98)g p=-3.4° r=2.5°
|
||||
[2026-07-23 18:22:51.162][000000002.843] I/user.TEST a:( 0.13,-0.05, 0.98)g p=-3.3° r=2.7°
|
||||
[2026-07-23 18:22:51.369][000000003.049] I/user.TEST a:( 0.13,-0.05, 0.97)g p=-2.3° r=1.0°
|
||||
[2026-07-23 18:22:51.575][000000003.255] I/user.TEST a:( 0.13,-0.06, 0.98)g p=-2.4° r=1.3°
|
||||
[2026-07-23 18:22:51.591][000000003.271] I/user.mpu6050 DMP固件加载中, 1929字节
|
||||
[2026-07-23 18:22:51.783][000000003.461] I/user.TEST a:( 0.13,-0.05, 0.97)g p=-2.4° r=1.6°
|
||||
[2026-07-23 18:22:51.909][000000003.589] I/user.mpu6050 固件写入完成
|
||||
[2026-07-23 18:22:51.989][000000003.667] I/user.TEST a:( 0.13,-0.06, 0.97)g p=-2.4° r=1.8°
|
||||
[2026-07-23 18:22:52.115][000000003.791] I/user.mpu6050 DMP 就绪
|
||||
[2026-07-23 18:22:52.119][000000003.791] I/user.DMP_TEST DMP 就绪
|
||||
[2026-07-23 18:22:52.121][000000003.800] I/user.DMP R:-173.1 P:0.2 Y:0.3
|
||||
[2026-07-23 18:22:52.196][000000003.873] I/user.TEST a:( 0.13,-0.06, 0.98)g p=-2.4° r=2.0°
|
||||
[2026-07-23 18:22:52.400][000000004.079] I/user.TEST a:( 0.14,-0.05, 0.96)g p=-0.8° r=2.4°
|
||||
[2026-07-23 18:22:52.606][000000004.285] I/user.TEST a:( 0.13,-0.05, 0.98)g p=-0.8° r=2.6°
|
||||
[2026-07-23 18:22:52.813][000000004.491] I/user.TEST a:( 0.13,-0.05, 0.97)g p=-0.9° r=2.8°
|
||||
[2026-07-23 18:22:53.018][000000004.697] I/user.TEST a:( 0.13,-0.06, 0.98)g p=-1.0° r=3.0°
|
||||
[2026-07-23 18:22:53.220][000000004.903] I/user.TEST a:( 0.13,-0.05, 0.98)g p=-1.0° r=3.2°
|
||||
[2026-07-23 18:22:53.425][000000005.109] I/user.TEST a:( 0.13,-0.05, 0.98)g p=0.5° r=3.8°
|
||||
[2026-07-23 18:22:53.644][000000005.315] I/user.TEST a:( 0.13,-0.05, 0.97)g p=0.4° r=3.9°
|
||||
[2026-07-23 18:22:53.836][000000005.521] I/user.TEST a:( 0.13,-0.04, 0.98)g p=0.3° r=4.1°
|
||||
[2026-07-23 18:22:54.042][000000005.727] I/user.TEST a:( 0.12,-0.06, 0.99)g p=0.2° r=4.2°
|
||||
[2026-07-23 18:22:54.263][000000005.933] I/user.TEST a:( 0.13,-0.05, 0.98)g p=0.1° r=4.4°
|
||||
[2026-07-23 18:22:54.454][000000006.139] I/user.TEST a:( 0.13,-0.05, 0.97)g p=1.6° r=5.0°
|
||||
[2026-07-23 18:22:54.660][000000006.345] I/user.TEST a:( 0.13,-0.04, 0.98)g p=1.5° r=5.1°
|
||||
[2026-07-23 18:22:54.865][000000006.551] I/user.TEST a:( 0.13,-0.04, 0.99)g p=1.3° r=5.2°
|
||||
[2026-07-23 18:22:55.074][000000006.758] I/user.TEST a:( 0.13,-0.05, 0.98)g p=1.2° r=5.3°
|
||||
[2026-07-23 18:22:55.152][000000006.828] I/user.DMP R:0.0 P:-0.1 Y:-1.4
|
||||
[2026-07-23 18:22:55.280][000000006.965] I/user.TEST a:( 0.13,-0.06, 0.99)g p=1.0° r=5.4°
|
||||
[2026-07-23 18:22:55.487][000000007.170] I/user.TEST a:( 0.13,-0.05, 0.98)g p=2.4° r=6.0°
|
||||
[2026-07-23 18:22:55.695][000000007.376] I/user.TEST a:( 0.14,-0.04, 0.97)g p=2.3° r=6.1°
|
||||
[2026-07-23 18:22:55.899][000000007.582] I/user.TEST a:( 0.14,-0.05, 0.99)g p=2.1° r=6.2°
|
||||
[2026-07-23 18:22:56.104][000000007.788] I/user.TEST a:( 0.14,-0.04, 0.97)g p=1.9° r=6.2°
|
||||
[2026-07-23 18:22:56.324][000000007.994] I/user.TEST a:( 0.13,-0.04, 0.98)g p=1.7° r=6.3°
|
||||
[2026-07-23 18:22:56.516][000000008.200] I/user.TEST a:( 0.13,-0.04, 0.98)g p=3.5° r=6.7°
|
||||
[2026-07-23 18:22:56.722][000000008.406] I/user.TEST a:( 0.13,-0.05, 0.97)g p=3.2° r=6.8°
|
||||
[2026-07-23 18:22:56.928][000000008.612] I/user.TEST a:( 0.14,-0.05, 0.97)g p=3.0° r=6.8°
|
||||
[2026-07-23 18:22:57.136][000000008.818] I/user.TEST a:( 0.14,-0.04, 0.97)g p=2.8° r=6.9°
|
||||
[2026-07-23 18:22:57.341][000000009.024] I/user.TEST a:( 0.13,-0.04, 0.98)g p=4.7° r=7.4°
|
||||
[2026-07-23 18:22:57.547][000000009.230] I/user.TEST a:( 0.14,-0.04, 0.96)g p=4.4° r=7.4°
|
||||
[2026-07-23 18:22:57.751][000000009.436] I/user.TEST a:( 0.14,-0.05, 0.98)g p=4.2° r=7.4°
|
||||
[2026-07-23 18:22:57.957][000000009.643] I/user.TEST a:( 0.14,-0.04, 0.97)g p=3.9° r=7.5°
|
||||
[2026-07-23 18:22:58.179][000000009.855] I/user.DMP R:0.0 P:-0.0 Y:-1.5
|
||||
[2026-07-23 18:22:58.182][000000009.862] I/user.TEST a:( 0.14,-0.05, 0.97)g p=3.7° r=7.5°
|
||||
[2026-07-23 18:22:58.383][000000010.063] I/user.TEST 持续读取完成, 碰撞0次
|
||||
[2026-07-23 18:22:58.385][000000010.063] I/user.TEST ========== 所有测试完成 ==========
|
||||
|
||||
```
|
||||
Reference in New Issue
Block a user