系统总体框架
该系统硬件部分主要由传感器模块、蓝牙模块、时钟模块、STM32单片机、报警电路和按键电路组成。此外,手机端还有一个和蓝牙模块通信的APP。传感器模块、电路、蓝牙APP和Keil软件中的编译程序,共同组成了整个健康手环系统。系统的整体框架如图0所示。
图0 系统框架图
实物图:
原理图:
1、STM32单片机介绍
由知名半导体半导体(ST公司)开发的STM32系列处理器,是一款基于ARM7架构的32位微控制器。在选择这款控制芯片时,我并不是单纯地追求成本或功耗的优化,而是为了给实验各个实验功能构建所需的外围扩展电路,更多样化的接口和功能,同时保证设计功能的实现。值得一提的是,单片机课程学习后,由于其操作界面直观,编程环境友好,这款控制芯片相对容易上手。
在本次设计中,选择了STM32F103C8T6单片机作主控。相较于传统的51系列单片机,C8T6在多个方面展现出了显著的优势。首先,从运行速度来看,C8T6的性能远超51单片机。这得益于其采用的高性能ARM Cortex-M3内核,主频可达72MHz,确保了更快速、更高效的指令执行和数据处理能力。这使得C8T6能够轻松应对复杂的任务和实时性要求较高的应用。其次,C8T6内置了两个AD转换器,这是其相较于51单片机的另一大优势。AD转换器(模拟-数字转换器)能够将连续的模拟信号转换为离散的数字信号,这在许多应用中都是至关重要的。例如,声音大小、温度、湿度、光强等模拟信号都可以通过AD转换器转换为数字信号,进而被单片机处理和控制。C8T6的两个AD转换器可以同时工作,提高了数据采集的效率和精度,满足了复杂系统中对多种模拟信号的处理需求。此外,C8T6还具备其他丰富的外设接口和功能,如GPIO、USART、SPI、I2C等,为设计师提供了更多的选择和灵活性。同时,其低功耗设计和多种省电模式也有助于延长设备的整体运行时间,降低了系统的能耗。其引脚功能图如下图1所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps10.png
图1 STM32F103C8T6引脚功能图
综上所述,STM32F103C8T6单片机凭借其卓越的性能、丰富的功能集和高效的AD转换器,在本次设计中被选定为核心控制单元,将为整个系统提供稳定、可靠且高效的控制能力,无需额外添加外部ADC模块,为用户提供了极大的便利。此外,STM32单片机支持多种时钟工作模式,使其在功耗敏感的产品中具有广泛的应用前景。其实物如下图2所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps11.jpg
图2 STM32F103C8T6实物图
2、电源电路设计
此次设计的电源有两种供电方式。一是采用5V直流供电,方便调试。二是使用7.2V锂电池经过稳压电路降压输出5V给整个系统供电,该供电方式便于手环进行计步等功能测试。开关是用来控制5V电压是否对系统进行供电。其中DC和CN1是电源接口,SW是电路开关,LED为电源指示灯,C1、C3、C5、C6为补偿电容,C4为电源滤波电容。其电路结构如下图3所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps1.jpg
图3 电源接口电路图
2、 ADXL345传感器
通过研究人行走的形态发现人在行走时会产生三个方向的加速度。利用加速度传感器捕捉人行走三个方向的加速度,正好可以模拟人跑步时候形成的垂直,前,侧向的加速度。据调查,正常人的步幅大约在50到80厘米之间,这个范围的波动因人的身高和步行速度等因素有所不同。为了计步的准确性,本次设计选用ADXL345模块。这是一款采用5V电压供电的三轴加速度传感器,具有高分辨率和可变测量范围等特点。该传感器可以测量x、y、z三个轴向的加速度值,其比例因子为3.9mg/lsb。值得注意的是,X、Y、Z三轴的走向,要视芯片的落位情况而定。ADXL345传感器的检测轴如图3所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps2.jpg
图3 ADXL345检测轴图
三轴加速度中的某一轴在人体运动过程中,一般会表现出较显著的活动能力。通过实验观察和芯片放置位置的组合分析,我们发现Y轴加速的峰值在运动过程中表现得比较明显。我们可以通过多次测量来确定运动时加速和加速幅度。为了判断运动状态,我们比较了ADXL345测量的加速度值和多次实验后得出的加速度阈值。如果加速值超过了这个阈值,手环处于倾斜状态,我们就认定它是运动状态,同时开始计步,并通过步数与步幅的关系计算出步行的路程。其公式为:
S=N*L (3-1)
其中S为路程,N为步数,L为步幅。
3、心率传感器
心率是每分钟内心脏跳动的次数,它是我们判断个人健康状况和衡量运动强度的一个直观且便捷的方法。心率作为人体生命体征中至关重要的一环,其数值因人而异,这取决于每个人的年龄、性别以及其他生理特性。一般来说,一位健康的成年人在安静状态下,其心率大致维持在每分钟75次左右,当然,这个数值会在60到100次每分钟之间波动。正常人的心率如图4所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps3.jpg
图4 正常情况下的心率图
Pulsesensor是一款生物传感器模块,,该模块是根据光电反射原理来确定人体心率。将手指夹住心率传感器,由特殊波长的红外光或LED光源照射皮肤,当光東透过人体外周血管,由于动脉搏充血容积变化导致这束光的透光率发生变化,此时由光电变换器接受经人体组织反射的光线转变为电信号。此时通过信号输出口将采集到的数据传输至STM32单片机,数据输入后单片机直接计算相邻的两个脉搏波的峰值点的时间并滤波,得到两次心跳之间的时间,即为BI数值,经过BPM(心率)=60/BI的简单计算即能够获得心率值。pulsesensor传感器的心率检测功能为医疗健康领域提供了重要的数据支持,同时也为人们的生活和健康提供了便利和保障。pulsesensor传感器模块在数字示波器中测得的波形如图5所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps4.png
图5 pulsesensor传感器波形图
4、OLED显示屏
LED(有机发光二极管)显示屏以其独特的优势在显示技术领域占据了重要的地位,尤其是在智能手机和平板电脑等便携设备上得到了广泛应用。OLED显示屏具有自发光、视角广、色彩鲜艳、可弯曲等特性,被视为引领未来平面显示技术革新潮流的新兴应用技术。在本次设计中使用的是0.96寸OLED显示屏,使用标准的IIC来实现通信。其实引脚功能如表1所示:
表1 OLED显示屏引脚
引脚 | 引脚功能 |
1 | GND(接地) |
2 | VCC(3.3V或5V供电) |
3 | SCL(串行时钟) |
4 | SDA(串行数据) |
在设置显示屏时,启动条件是通过将SCL数据线从高拉到低,同时SDA时钟线保持高来建立的;停止条件是通过将SDA时钟线从低到高拉入来建立的。其时序图如图6所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps5.jpg
图6 OLED时序图
5、 DS18B20温度检测
据医学研究显示,人体手腕温度的正常范围在36-37.3摄氏度之间,如果超过这个温度,则可能是出现发热情况。为了温度测量的准确性,本次设计使用了DS18B20温度传感器。它由前置的3.3V电路进行供电,其目的是使输出的电压信号全步数字化,这样我们就不必再为模拟信号设计A/D转换电路,从而大大简化了电路设计,并减少了温度测量的误差。相较于传统的热敏电阻等测温设备,DS18B20的单总线数据传输方式显得尤为突出,既方便又简洁。由于DS18B20的“一线总线”特性,作为从机的它与作为主机的STM32F103C8T6仅需通过一条数据线就可以与单片机的IO口连接,就能实现高效的数据传输。其具体参数如表2所示:
表2 DS18B20参数表
供电电压 | 3.3V |
检测温度范围 | -55~125℃(误差±2~10%) |
分辨率 | 9到12位 |
ROM | 64位编码(相当于设备地址) |
温度检测的指令代码如表3所示:
表3 DS18B20控制指令
指令名称 | 指令代码 |
温度转换 | 0x44 |
读暂存器 | 0xBE |
写暂存器 | 0x4E |
重调EEPROM | 0xB8 |
复制暂存器 | 0x48 |
6、 DS1302时钟芯片
DS1302是由美国Dalas公司制造的一款集高性能、低功耗及内置RAM于一体的实时时钟芯片,其特点在于具备微电流充电能力。这款芯片采用了常见的32.76k Hz晶振,能精确记录年、月、日、星期、时、分、秒,并具备闰年自动补偿功能。它的工作电压范围在2.5-5.5V之间这个范围允许它在多种电源条件下稳定工作,满足不同的应用需求。在这个电压范围内,DS1302能够精确计时,提供稳定的时钟信号,并且保持低功耗运行,适用于各种需要准确时间管理且对功耗要求严格的场合.DS1302与CPU之间的通信,通过三线接口实现同步交流,这一接口不仅支持突发模式,还允许一次性传输多个字节的时钟或RAM数据,极大提升了数据传输效率。同时,DS1302内部集成了高达31个字节的RAM存储器,为数据的存储提供了充足的空间。为了满足多样化的电源需求,DS1302特别设计了双电源引脚,并具备对后备电源进行微电流充电的功能,从而确保了其在不同电源环境下的稳定运行。在数据传输方面,它采用串行方式,不仅为掉电保护电源提供了可编程的充电功能,而且允许用户根据需要关闭充电功能。其内部结构如下图7所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps6.jpg
图7 DS1302内部结构图
7、 按键设置电路
本设计一共设置有3个控制命令按键:参数设置;设置加;设置减;此外还有一个确定按键。可以通过这三个按键对系统的参数进行设置。例如设置心率的报警阈值。按键的一端接地,且以低电平作为有效信号,当按键被按下时,就会接通相应的线路[13]。为了消除按键的抖动,我选择了软件消除法。当检测到按键闭合时,先调用一个子程序执行延时功能;同样,当按键断开时,也会执行数毫秒的延时,按键断开时也执行数毫秒的功能从而达到消除抖动的目的。其电路图如图8所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps7.jpg
图8 按键电路图
8、 蜂鸣器报警电路
按键我们可以用于设置心率体温上限下限,当参数不在范围内蜂鸣器进行声光报警提醒。
蜂鸣器作为一种发声元件,通电时即会发出蜂鸣声,操作起来相当便捷。在市面上,蜂鸣器的种类繁多,我们特别选择了那些支持5V电源的款式,它们在实际应用中展现出了较高的实用性。在本次设计中,当系统检测到温度或心率超过预设的报警阈值时,蜂鸣器便会发出警报声。关于蜂鸣器的电路设计,它由三部分构成:一个1k的电阻、一个NPN三极管以及蜂鸣器本身。这里选择NPN三极管的主要原因在于其电流和电平放大功能,因此需要利用三极管的电流和电平放大特性来驱动蜂鸣器。其原理图如图9所示。
file:///C:\Users\ADMINI~1\AppData\Local\Temp\ksohtml8760\wps8.jpg
图9 蜂鸣器报警原理图
9、 蓝牙传输模块
在本次设计中,蓝牙传输模块的主要作用是把体温,心率,步数等信息同步发送到手机端的APP中,以便陪练人员更直观地了解到手环佩戴者的生理指标。HC05蓝牙模块的参数如表4所示:
表4 蓝牙模块参数表
参考距离 | 10m内 |
供电电压 | 3.2-6V |
通信方式 | 全双工通信 |
波特率 | 9600 |
发射功率 | 4dBm |
空中速率 | 2Mbps |
工作频段 | 2.4G |