基于STM32单片机的无线运动传感器节点设计
2021-08-09孙弋婷翁欣濛
孙弋婷,翁欣濛
(1.杭州电子科技大学电子信息学院,浙江杭州,310018;2.杭州电子科技大学信息工程学院,浙江杭州,311305)
0 引言
无线传感器网络[1],是由大量的具有感知能力的传感器节点,通过自组织方式[2]构成的无线网络,可以监控不同位置的物理或环境状况如温度、声音、振动、运动或污染物,在促进物联网发展方面发挥着重要作用,本文结合2020年TI杯大学生电子设计竞赛与现实生活中的应用,以STM32F103C8T6作为主控制器设计的具有温度测试、心率监测[3]、运动状态分析等功能的无线传感器。
1 系统总体设计
以STM32F103单片机为主控制器,以ADS1292[4]模块为心率信号接收部分,接收采集到的心电信号并转化为数字信号传至单片机,以LMT70为温度接收部分,接收采集到的温度数据并通过ADS1115模块将模拟量转化为数字量传至单片机,以ABXL345模块为运动分析模块,将采集到的运动数据传至单片机,单片机对上述信号进行处理与分析后将对应的数据显示在屏幕,并通过HC05蓝牙模块将内容在移动端上显示。如图1所示。
图1 系统总体设计图
2 硬件系统设计
2.1 处理器模块
作为无线传感器的核心选用专为要求高性能、低成本、低功耗的的ARM Cortex-M3内核系列STM32单片机。其具有32位总线宽度,最高工作频率72MHz,1.25DMIPS/MHz。单周期乘法和硬件除法。同时具有多达13个的通信接口、112个快速I/O端口、11个定时器,对比MSP430单片机,STM32具有速度快和低功耗的优点。
2.2 供电模块
本电路采用TPS5450降压转换器。如图2所示。TPS5430是一个具有较高转换效率的高输出电流PWM转换器。输入去耦电容取10μF,根据电路的需求与参考公式可得到输出滤波电路电容与电感值。根据公式比例关系得到阻值比确定电阻值。最终将+5供电转为USB接口对单片机进行供电。
图2 直流供电电路图
2.3 心电信号采集电路
ADS1292是适用于ECG应用的24位、2通道、低功耗模拟前段。根据ADS1292的芯片手册搭建ADS1292的电路,通过ADS1292采集到信号后,将模拟量转变成数字量传至单片机,单片机通过数字信号处理将数字信号中非心电的成分滤除,即进行数字滤波。硬件结构简单,噪声消除效果较好。但在实际应用中发现其输出信号存在不稳定现象,因此在后续的设计中加入电平转换芯片对其进行隔离。如图3所示。
图3 ADS1292电路
2.4 温度测量模块
如图4所示。本电路采用LMT70测温芯片与ADS1115模数转换器芯片。LMT70是超小型、高精度(±0.1℃)、低功耗CMOS模拟温度传感器。ADS1115是具有PGA、振荡器、电压基准与比较器的4通道。当我们在被测物体温度在20℃到42℃之间、芯片的供电电压在2.7V时,测量的误差在±0.05℃,为了最大程度地降低噪声耦合,在LMT70的VDD和GND引脚之间放置至少100nF的电源去耦电容,并串联电阻以保持条件稳定。利用ADS1115进行连续地AD转换读取结果,并通过IIC串行通信总线与主机通信,并通过以下公式计算温度值。
图4 测温电路
(其中,adcx为采样数字量,无单位,tem为温度,单位为摄氏度)
2.5 步数与距离测量模块
图5 步数与距离测量电路
ADXL345是一款小而薄的超低功耗 3轴加速度计,数字输出数据可通过SPI(3线或4线)或I2C数字接口访问,非常适合移动设备应用。活动和非活动检测功能通过比较任意轴上的加速度与用户设置的阈值来检测有无运动发生,且可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动态加速度,其高分辨率(3.9mg/LSB),能够测量不到1.0°的倾斜角度变化,符合人行走时的姿态检测。通过I2C通信协议连接单片机,使用算法对得到的数据进行分析可以较为准确得到结果,且低频特性较好,符合应用场景与技术指标。
2.6 其他模块
包括HC05蓝牙模块与OLED显示模块。
图6 HC05蓝牙模块
图7 OLED显示模块
3 系统软件设计
程序初始化后,利用STM32控制ADS1292以500sps的速率对数据进行采样,将得到的数据进行滤波处理,并进行归一化处理,进而得到心率值和心电图,并对心率不齐的情况做出声音提示。同时,驱动LMT70测温模块及测得温度,利用进行AD转换获得相应数据。系统持续更新3轴加速度的最大值和最小值,每采样50次更新一次。利用公式求出“动态阈值”,接下来的50次采样利用此阈值判断个体是否迈出步伐,通过对年龄,性别,身高等数据的拟合以及每两秒内所运动的步数,得到平均步长以测出运动距离。最后,将这些数据显示在OLED上,并通过串口与蓝牙模块进行通信,最终将所有数据显示于移动终端上。
图8 软件流程图
4 系统测试与误差分析
4.1 测试方案
采用ADS1292模块作为心电信号接收部分。使用心电信号模拟仪输出标准心电信号,将单片机处理后的心率、心电图与标准信号相比较。使用电极片与三导联采集人体心电信号,将采集到经过单片机处理过后的数据与市面商品化产品所测得的心率进行比较。
采用LMT70模块作为温度接收部分,通过ADS1115模块将模拟量变为数字量送入单片机进行处理。将分析过后的数据与数字温度计进行比较。
采用ADXL345模块获得运动状态数据,将数据传入单片机进行数据的处理与分析,在OLED上实时显示并通过HC05蓝牙模块将数据内容显示到移动端。将测试结果与合格的运动分析产品以及实际进行比较。
4.2 测试结果与分析
(1)标准心率检测:与心电信号模拟仪相接,产生1mV的标准心率信号,得到结果如表1所示。可知设计结果较为准确,误差在要求范围内。
表1 心率测试
(2)温度测试:将本设计的温度探测点与数字温度计探头置于各个物体表面同一点,得到的结果如表2所示。可知设计结果较为准确,误差在要求范围内。
表2 温度测试
(3)距离测试:将设备置于手中,按照正常行走方式,走在规定长度的路线上,结果如表3所示。
表3 距离测试
(4)步数测试:将手环佩戴上与持设备的同一只手,按照正常行走方式前进既定步数,结果如表4所示。误差基本在要求范围内。
表4 步数测试
5 结语
本文设计了一个无线运动传感器节点,实现了在较低功耗的条件下心电信号、温度、运动状态的检测与分析,并完成数据的无线传输。为了对人体的运动状态进行分析,必须对心率、温度、移动距离等要素进行特征提取和总结归类。同时,对于相似且难以判断的情形,采取优先级排序的方式,将几种不同的运动状态分为不同优先级进行响应,从而降低了状态判断错误率,同时也提高了状态判断速度。