告别复杂代码与冗长调试,exvib扩展库为三轴传感带来颠覆性变革。极简API设计实现高效对接,开发者只需少量代码即可解锁精准检测能力,轻松应对各类传感场景,让技术落地不再艰难。
一、exvib库典型应用及检测模式
1.1 三种典型应用
exvib.open(mode)接口针对三种典型应用场景提供了不同取值,可以根据自己的应用场景进行选择,也可以自己对扩展库的值进行修改。
微小震动检测:用于检测轻微震动的场景(例如:用手敲击桌面);加速度量程2g。
运动检测:用于电动车或汽车行驶时的检测,人行走和跑步时的检测;加速度量程4g。
跌倒检测:用于人或物体瞬间跌倒时的检测;加速度量程8g。
1.2 两种震动检测模式
持续震动检测模式:震动强度超过设定阈值时,会进入中断处理函数,获取xyz三轴的数据;
有效震动模式:当10秒内触发5次震动强度超过设定阈值时,持续触发震动事件,并执行相应的处理函数,30分钟内只能触发一次,直到30分钟之后,再重新开始检测。
实际应用中,也可以根据项目需求自己修改相关代码。
二、exvib库应用示例
本文以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模块。
2)vibration.lua
加载了exvib库,开启task协程,调用exvib.open(1)接口开启震动检测模式:
微小震动检测,设置gpio.WAKEUP;
防抖100ms,防抖的作用是100ms只能触发一次,防止误触;
然后设置中断模式触发。
关于触发方式,这里提供了两种应用:
第一种是持续震动:只要检测到震动,就会一直触发;
第二种是有效震动:在10秒内检测到5次震动,则判定为有效震动;有效震动触发之后,30分钟之后才能再次触发。
有效震动的判断逻辑:示例使用循环定时器的方式每秒都把tick值+1,每次触发震动则记录tick值到表里面,然后对表里面的最后一次触发的tick和第一次触发的tick进行对比——如果小于10并且第五次的值为有效值,就判定为有效震动。
也可以根据实际情况,改为自己项目的有效震动逻辑。
2.2 示例效果展示
Air8000开发板通过LuaTools烧录内核固件和demo脚本代码,烧录成功后开机运行,查看示例运行结果。
1)有效震动模式日志:
2)持续震动模式日志:
今天的内容就分享到这里了~