极简API重构三轴传感:exvib库开启“零负担”开发时代

exvib扩展库以极简API重新定义三轴传感开发流程,摒弃繁琐参数配置与底层调试。开发者聚焦业务逻辑,传感器数据精准采集、实时处理一气呵成,开发周期缩短超50%!

一、exvib库典型应用及检测模式

1.1 三种典型应用

exvib.open(mode)接口针对三种典型应用场景提供了不同取值,可以根据自己的应用场景进行选择,也可以自己对扩展库的值进行修改。

image

微小震动检测:用于检测轻微震动的场景(例如:用手敲击桌面);加速度量程2g。

运动检测:用于电动车或汽车行驶时的检测,人行走和跑步时的检测;加速度量程4g。

跌倒检测:用于人或物体瞬间跌倒时的检测;加速度量程8g。

1.2 两种震动检测模式

持续震动检测模式:震动强度超过设定阈值时,会进入中断处理函数,获取xyz三轴的数据;

有效震动模式:当10秒内触发5次震动强度超过设定阈值时,持续触发震动事件,并执行相应的处理函数,30分钟内只能触发一次,直到30分钟之后,再重新开始检测。

实际应用中,也可以根据项目需求自己修改相关代码。

二、exvib库应用示例

image

本文以Air8000开发板为例,分享exvib库三轴加速度传感器的震动触发功能应用要点。

最新源码下载:https://gitee.com/openLuat/LuatOS/tree/master/module/Air8000/demo/vibration

实操教程详见:https://docs.openluat.com/air8000/luatos/app/gsensor/

2.1 示例代码解析

1)main.lua

程序主入口,主要用于加载vibration模块。

image

image

image

2)vibration.lua

加载了exvib库,开启task协程,调用exvib.open(1)接口开启震动检测模式:

微小震动检测,设置gpio.WAKEUP;

防抖100ms,防抖的作用是100ms只能触发一次,防止误触;

然后设置中断模式触发。

关于触发方式,这里提供了两种应用:

第一种是持续震动:只要检测到震动,就会一直触发;

第二种是有效震动:在10秒内检测到5次震动,则判定为有效震动;有效震动触发之后,30分钟之后才能再次触发。

有效震动的判断逻辑:示例使用循环定时器的方式每秒都把tick值+1,每次触发震动则记录tick值到表里面,然后对表里面的最后一次触发的tick和第一次触发的tick进行对比——如果小于10并且第五次的值为有效值,就判定为有效震动。

也可以根据实际情况,改为自己项目的有效震动逻辑。

image

image

image

image

2.2 示例效果展示

Air8000开发板通过LuaTools烧录内核固件和demo脚本代码,烧录成功后开机运行,查看示例运行结果。

1)有效震动模式日志:

image

2)持续震动模式日志:

image

今天的内容就分享到这里了~

posted @ 2025-09-15 16:23  合宙LuatOS  阅读(8)  评论(0)    收藏  举报