基于 STM32F103C8T6 单片机的多功能智能手表设计
扫描二维码
随时随地手机看文章
引 言
体温是机体不断新陈代谢的结果,同时体温又是机体功能活动正常进行的重要保障。在正常情况下,人体温度不随外界环境温度的变化而变化,保持在 37 ℃左右。但是当人体内的某些机能发生变化或某些部位产生病变时,恒定的体温将会发生改变。在临床医学中,体温是一个重要的生理参数,病人的体温为医生提供了了解生理状况的重要信息,同时还可以对某些重大疾病或隐藏于身体内部的健康问题起到积极的预防和警示作用 [1]。所以人们需要并有必要实时了解自身的体温状况,使自己的体温维持在一个相对稳定的状态。
针对人们对自身体温实时监测的需求,本文设计了一个拥有 128×64 大小 OLED 显示屏的智能多功能手表,主要采用 STM32F103C8T6 单片机作为系统主控单元,将德州仪器设计生产的 TMP100 作为温度采集传感器。该手表可实时记录采集的数据与每日运动量,并对人体温度进行实时监控。当用户获得自身的健康数据后便可以采取相应措施使自己保持健康的状态。在这基础之上,本文采用更低功耗的主控芯片与外围器件,提高设备的续航能力,优化用户操作界面, 使设备能真正运用到生活中,为实时健康监测提供可能。
1 系统功能介绍
本文设计的智能手表主要具有时钟功能、体温实时检测功能和计步功能,系统功能结构如图 1 所示。
(1) 在时钟功能界面下,用户可以选择手动校准时间。
(2) 在体温检测功能界面下,用户可以查看此刻自身的体温,也可以查看当天自身体温的变化情况。
(3) 在计步功能界面下,用户可以查看当天的累计步数,了解自身运动量。
图 1 系统功能结构图
此外,用户在使用设备的过程中一旦体温下降或者上升, 低于或超过阈值,则系统会向用户发出警告,提醒用户此刻体温处于非正常状态,用户可根据自身情况及时处理。
2 系统硬件设计
2.1 系统硬件组成及原理
多功能智能手表系统硬件主要由电源管理模块、主控芯片模块、温度传感器模块、加速度传感器模块和 OLED 液晶显示器与按键组成,硬件系统的组成及连接关系如图 2 所示。电源管理模块将不稳定的电池电压转换成系统需要的 3.3 V 稳定电压,并输送给各个模块。主控芯片从温度传感器和加速度传感器获取采集数据并对数据进行算法处理,最终通过人机交互模块显示出来。
2.2 系统主要硬件模块设计
STM32F103C8T6 是一款基于 ARM 32 位 Cortext M3 内核的单片机,具有 2.0 ~ 3.6 V 的宽电压供电范围,CPU 工作频率最大可达 72 MHz,具有单周期乘法指令和硬件除法功能,以及优先级可编程的中断系统 [2]。同时它还具有 64 KB 的 FLASH 存储器与 20 KB 的 SRAM 存储器, 集成了丰富的片内外设,如看门狗,定时器,GPIO 口,DMA 控制器, ADC,UART,SPI 接口,I2C 接口等,具有成本低、速度快、性价比高等优点 [3]。
图 2 系统硬件框图
人体温度采集传感器采用德州仪器生产的 TMP100。TMP100 是一个 SOT23-6 封装的两线串行输出温度传感器, 无需其他元器件,精度可达 0.062 5 ℃。此外 TMP100 具有系统管理总线以及 I2C 接口的兼容性,可在总线上挂载 8 个设备。工作温度为 -55 ~ 125 ℃,测量精度可通过程序编程选择。TMP100 的器件地址由 ADD0 和 ADD12 个引脚决定, 引脚输入与器件地址的关系见表 1 所列。根据设计原理与图中 ADD0 和 ADD1 引脚接地可知,TMP100 的器件地址应为0x48。
加速度传感器模块采用飞思卡尔,这是一款比较新的MMA8452 加速度传感器。飞思卡尔是具有 12 位分辨率的智能低功耗、三轴、电容式微机械加速度传感器,其主要特性如下 :
可以感受 X,Y,Z三个自由度的加速度信号,全方位感知人体运动信息。
具有 ±2g/±4g/±8g的可选量 程。 传感器的灵敏度在 ±2g量程时为 1024个数字 /g, 灵敏度精度为±2.5%。
采集的加速度数据可以通过传感器内部的高通滤波器实时输出,滤波器的截止频率可以通过软件设置,也可以不经过滤波器直接输出。输出信号被转换为 12 位数字量信号, 经I2C接口输出,输出数据速率在1.25~800 Hz之间,可调[4]。电源管理芯片采用德州仪器设计生产的 TPS79333,其具有超低噪声、高 PSRR、快速射频、高电平启用的 200 mA低压降稳压器,可将 3.7 ~ 5 V 的电源电压稳定在 3.3 V,具有体积小、效率高、噪声小等特点 [5-7]。
3 系统软件设计
3.1 程序主框架搭建
本文设计采用主循环和定时器中断相结合的运行框架。主循环中实现 OLED 显示功能。定时器可定时对温度、加速度传感器进行数据采集和算法处理。程序主框架如图 3 所示。
图 3 程序主框架图
时钟功能设计与实现
时钟模块主要以定时器中断为主,打开一个定时器中断, 中断时间为0.1 s,累计600 次加1 分钟,累计60 分钟加1 小时,效果如图 4 所示。
图 4 时钟界面图
3.3 体温监测功能设计与实现
TSP100 温度传感器是一款数字传感器,为 I2C 通信方式。ADD0 和 ADD1 同时接地,查表可知,器件地址为 0x90,初始化STM32F103C8T6 的I2C 后就可得到TSP100 采集的数据。相比其他等价传感器,TSP100 温度传感器的精度较高,但也会因为环境等因素产生一些噪音(噪音可控),本文采用中位值滤波解决该问题。体温检测界面效果如图 5 所示。
图 5 测温界面图
3.4 记步功能设计与实现
MMA8452 加速度传感器是一款数字输出传感器,与采集温度的方式相同,不同之处在于加速度传感器是惯性传感器,在静态状态下能表现出良好的稳定性,但运动后其数据变化较大。如果将处于运动中的加速度计的返回值以时间为X 轴,值为 Y 轴,静态时会呈现一条平滑的曲线,运动时将会是杂乱无章的噪点,所以对加速度传感器的采集值进行滤波十分必要。本文设计采用低通滤波和防脉冲干扰平均滤波相结合的方式 [8-12]。
当对加速度传感器采集到的数据进行处理后,默认当前获得的数值即实际数值,之后对数据进行分析,使之转化为需要的步数。据研究,距离、速度、加速度等都可以作为描述人体行走状态的参数。近年来,由于 MEMS 加速度传感器的快速发展和其优越特性,被广泛用于人体运动检测。行走时脚、腿、腰、手臂都在运动,会产生相应的加速度,垂直方向的加速度信号变化最大。人行走的过程分析 :脚蹬地离开地面是一步的开始,此时由于地面的反作用力,垂直加速度开始增大,身体重心上移,当脚要达到最高位置时垂直加速度达到最大,然后脚向下运动,垂直加速度开始减小,直至脚着地,加速度减小至最小值,接着下一次迈步发生。利用腰部的垂直加速度来检测步数是可行的,通过对加速度的峰值检测可以得到行走的步数 [13-15]。
一对连续的波峰和波谷代表了人体行走的一步,本文采用统计波峰的方法来统计步数。由于人体运动一般不会超过5 步 /s,即在 1 s 内理论上不会出现多于 5 个波峰,连续两个波峰之间的时间差也不会小于0.2 s。设定采样频率为50次/s,记录采样时间 t 和 Z 轴的加速度信息 Acc。如果一个点的 Acc值比前后各两次采样值都大,则视为一个极大值并将该信息与前一个极值的时间差 Δt 及 Acc 值存入一个二维链表。时间差 Δt 代表两个假定步伐之间的时间差,如果 Δt 小于 0.2 s,则将两个极大值中 Acc 较小者视为采样噪点,从二维链表中去掉,并将剩下的数据重新与链表中前一记录比较,大于0.2 s 且 Acc 值比前后 Acc 值都小 20% 或者更多,也视为噪点去掉。剩下的极大值就确定为一个有效步伐 [10]。最后系统可获得比较精准的计步结果,如图 6 所示。
4 结 语
本文设计了一个可实现对人体温度实时监测、运动步数实时统计的智能可穿戴多功能手表。通过理论与实践的结合,从硬件实现与软件实现切入,清晰展现了软硬件的设计流程,并提供了解决办法。从实现结果可以看出,本文的设计方案可行,能实现对人体温度的实时监控和对个人每日运动量的实时记录,当体温处于不正常数据值时,智能手表又能给出相应的提示警告,从而方便用户根据获取的体温及运动数据对自身的健康状况及时做出处理。