找回密码
 注册
关于网站域名变更的通知
查看: 1040|回复: 3
打印 上一主题 下一主题

智能手环中计步算法实现--得这么搞

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-3-30 09:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x

有时因为有些毛刺峰值经过滤波后仍然存在,所以仅仅检测周围一个数据的峰值检测方法并不完善。优化后峰值检测方法为当前加速度值比前两个加速度值与后两个加速度值都大,才能判断为峰值。

8 H' c1 X8 W; d& |3 b9 e, B
  N8 z! _: o# F1 v% P

由于人体在静止时也会有轻微的摆动,此时人体虽然看似静止,但是加速度数据也会有轻微的变化。轻微的变化也会出现峰值,所以本文在峰值检测的同时加入阈值判断,如果检测到的峰值大于一个幅度阈值变算作有效步数,若不大于幅度阈值则不计入步数,这样便可以避免将错误峰值计入步数。

/ K2 ?) e, S; ]  P6 w6 j* }

人在平常生活的过程中,纵使是静止,也总有一些小的肢体动作,这些动作会影响加速度的曲线变化,有些动作甚至可能对步伐判断产生很大的影响,如图所示,这是偶尔晃动智能手环的加速度曲线,它与人体行走时的加速度曲线很相似。

为了防止这些间歇性的小动作影响本文的步伐判断,本文设置了时间检测算法:只有走路具有一定步数的时候才算作计步。在一段时间内如果只判断出了一个步伐或者两个步伐,则判断为无效步数,并将之去除。


' K3 m9 K5 T7 ?7 T0 B

从算法流程图可以看出,处理完成的加速度数据被存入缓存区,缓存区满了以后进行信号滤波滤波消除一部分噪声;消除噪声后求出幅度阈值,之后开始峰值检测,如果检测到了峰值便判断是否满足幅度阈值;如果峰值满足幅度阈值的要求,就步数加一。缓存区所有加速度值检测完毕后进行时间检测,如果此次步数检测为有效步数,则开始新一轮的加速度数据获取,否则将本次缓存区中检测到的步数清零,重新开始加速度数据的获取。


, F; d" }; X  v3 I, J

计步算法的实现依靠智能手环硬件来实现。智能手环的硬件主要由主控模块、传感器模块、通信模块、显示模块与电源模块组成。主控模块主要负责采集加速度传感器模块的各种数据,并进行数据处理与发送。模块内含有主控芯片。传感器模块主要负责采集外界的各种信息,由主控模块读取进行处理,传感器为加速度传感器。通信模块负责智能手环与上位机的通信,上位机可以是手机app或者电脑服务器;该模块主要由蓝牙通信模组组成。显示模块负责显示各类信息,如步数、时间等,方便佩戴者实时查看各项信息,该模块包含OLED显示屏。电源模块负责给给智能手环供电。

2 G! M& n" i2 V' D8 A) ]  F; K
( Y1 f( c, o0 k: {

主控模块芯片使用的是STM32F103C8T6芯片,STM32F103芯片功耗低,工作模式下功耗仅0.11W左右。同时该芯片体积小,适合用于可穿戴设备。STM32芯片的主频高达72MHz,性能强劲,能够胜任加速度数据处理并对各外设调度,满足本文设计的计步手环的要求。本文使用的STM32F103C8T6芯片有48个引脚,且带有串口、定时器与I2C等功能,可以很方便的与外设进行通信。且该芯片LQFP的封装形式极大缩小了芯片体积,很适合用于计步手环中。

/ k( `" y/ V) k( H$ n' Q, |

文选择LIS3DH加速度计作为计步手环的传感器模块的芯片。该芯片以LGA形式封装,体积极小,功耗在正常工作模式下仅有11mA。同时该芯片的采样频率可从1Hz到5kHz变化,且有自动唤醒中断与跌落检测功能,节省了二次开发。LIS3DH集成了32级先进先出缓存区以供主控模块读取数据,减少主控芯片对加速度计的干扰,同时拥有I2C与SPI两种工作接口,方便主控芯片通讯。


" W9 ^4 `. g1 R, f

本文设计的手环系统采用HC-08蓝牙模块作为无线通讯模块,该模块基于蓝牙4.2协议,兼容蓝牙4.0与4.1,并能够直接使用串口与主控芯片进行通信,也可以使用AT指令进行蓝牙功能的配置,节省了开发时间。通信模块与主控芯片使用串口的方式进行通信。为了方便开发,通信模块直接使用插针方式嵌入计步手环系统中。


% K* m% [. ^7 |1 X  v/ M% R

OLED屏幕配合SSD1306驱动芯片整合成了OLED模块,将SSD1306的I2C通信引脚引出插针后,显示模块便可以以I2C的方式与主控芯片进行通信。


5 U8 M; I/ W# F. w% U

AMS1117-33C是一款低电压差的降压线性稳压器,能够将5V电压转换成3.3V电压。在电流输出有1A的情况下,输入端与输出端之间的电压相差为 1.2V。该芯片最大输出电流有1A,完全能够满足各个模块的供电需求。

由电源模块原理图所示,电源芯片的输入端与输出端需要各并联一个旁路电容,该电容目的是为了滤除电流中的高频成分,使输入电流更加稳定。输出端的LED灯用作电源指示,当电源成功转换并输出时,电源模块会进行亮灯提示;反之,则电源模块工作不正常。输入端的5V电压由USB提供,使用USB线直接连接计算机USB端口或者电源适配器上,便可以提供5V电压。


: W# f( C- [6 R. r3 l8 ~
- L+ i& s+ t8 V) \
3 r. }5 h& Y$ x+ k0 E
  • TA的每日心情
    开心
    2023-6-1 15:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-3-30 17:38 | 只看该作者
  • TA的每日心情
    开心
    2023-5-15 15:14
  • 签到天数: 1 天

    [LV.1]初来乍到

    3#
    发表于 2020-3-31 09:00 | 只看该作者
    确实比较详细,各个传感器选择的也比较好

    该用户从未签到

    4#
    发表于 2020-3-31 15:02 | 只看该作者
    ST的Sensor自带计算算法
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-8-21 03:13 , Processed in 0.140625 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表