【基于STM32单片机的老年人身体健康检测系统设计与实现11000字】_第1页
【基于STM32单片机的老年人身体健康检测系统设计与实现11000字】_第2页
【基于STM32单片机的老年人身体健康检测系统设计与实现11000字】_第3页
【基于STM32单片机的老年人身体健康检测系统设计与实现11000字】_第4页
【基于STM32单片机的老年人身体健康检测系统设计与实现11000字】_第5页
已阅读5页,还剩18页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于STM32单片机的老年人身体健康检测系统设计与实现摘要:近年来,我国社会人口的老龄化趋势十分明显,老人数量庞大,老年人的健康问题需要重视,而传统的医疗设备形式落后,效率低下,不便于老年人随时携带进行检测,问题颇多。为了解决传统检测健康设备的各种问题,本文旨在设计一个老年人身体健康系统,该系统为便携式设备,以STM32芯片为核心,包含的功能有心率检测、运动计步、温度检测以及时钟日期显示。该设计通过温度采集模块获得人体的温度及外界温度,通过心率脉搏传感模块获得手指血管搏动的透光率,通过加速度传感器判断人体运动起伏实现步数累计,经过简单的算法推理分析将人的生理信号转换为具体的数据,如温度、心率值、步数计数等。并且通过单片机处理数据并将其传输到OLED屏上显示。该系统同时包含一些细微功能,包括时间日期的查看调整,步数清零等。该设计便于携带,简单方便、可靠实用且实时显示生理数据,在日常生活中能够优化老年人的生活。关键词:STM32;心率;运动计步;健康检测目录TOC\o"1-3"\h\u10521253401绪论 4150951.1研究目标与意义 4184791.2国内研究背景及现状 4296961.3国外研究背景及现状 5320841.4主要研究内容 5259701.5论文结构 5249582总体方案设计 6199882.1设计功能要求 6113422.2元件选型 648912.2.1主控制的选型 6209832.2.2温度传感器的选型 652632.2.3心率传感器的选型 711402.2.4加速度传感器的选型 7118192.2.5显示器的选型 790863系统硬件设计 841113.1总体硬件设计 8145813.2电源电路设计 8199383.3STM32最小系统模块电路设计 9144543.3.1STM32F103C8T6芯片介绍 910853.3.2STM32F103C8T6最小系统 10217113.4心率采集电路设计 1110433.5RTC时钟电路设计 1274993.6OLED显示电路设计 12324573.7ADXL345加速度传感器电路设计 13113373.8DS18B20温度传感器电路设计 13249753.9键盘电路设计 14116143.10本章小结 15225864系统软件设计 16310374.1软件开发环境介绍 1631024.2软件设计要求 1686194.3软件总体流程图 1698964.4温度采集程序设计 17302594.5运动计步程序设计 1876154.5.1加速度传感器读取 1839694.5.2计步算法 19164404.6心率采集程序设计 2078184.7键盘程序设计 21273624.8本章小结 22260845系统调试 23212335.1硬件调试 23140815.2软件调试 23309355.3实物测试 23230876总结 2511979参考文献 261绪论1.1研究目标与意义随着我国社会老龄化的不断发展,未来的十多年我国基本都将会处于老龄化社会的这种阶段,老人们的医疗保健方面问题不断引起人们的重视,他们的健康意识也在不断提高。而且老年人是心血管等疾病的高发群体,大部分老人更不具备对自己的生理指标进行长期监控的意识和方法,此次研究用到的心率传感器能够实时监控老年人用户的心率,从而在遇到疾病突发时能够及时掌握,做到有效应对[1]。另外,老年人群体常常会外出散步或者跑步做一些锻炼,此系统的运动加速度传感器通过采集人体走路时的身体波动来进行步数计算,并且能够准确累加用户每日步数,通过显示器反馈信息给用户自己,有效鼓励了老人外出运动[2]。新冠疫情当下,除了要首先做好对肺炎的预防,及时测量体温,其他的身体健康问题也不容忽视,此次课题将老年用户日常生活中可能遇到的健康问题整合,设计了一个能防止心率异常以及体温异常导致严重后果的健康检测系统,且能够计算步数鼓励老年人运动,里面的时钟及日期功能也能够方便老年用户随时查看,鉴于当下老龄化社会的发展趋势,老年人口增多,该系统的设计成本低、技术实现较为容易[3],能够为广大的老年人用户群体带来便利,也有相当的前景和意义,真正做到用科技改变人们的生活,保障人们养老的生活质量与生命安全。1.2国内研究背景及现状我国在90年代左右已经有简便的智能物联网家居出现,当时国内的科技并不发达,也没有企业去专门研究改良,更不用说一套针对老人的健康检测系统。而我国人口年龄结构分布因为当时的生育政策是计划生育,虽然减少了人口,但影响了如今人口年龄分布占比,所以近几年左右人口中老人数量比例已经很高,都快延迟退休了,再加上有专家统计很多家庭未富就已经先老,这极大地考验着政府和社会各方的应对方法。我们的目的是通过现代计算机等技术,以老年人为重点关照对象,为老年人提供安全舒适、健康方便的服务,让他们享受到健康的高质量生活。目前智能化的身体健康检测设备也存在一些问题,首先设备功能不足以满足所有的需求,尤其是当下疫情严重时对于体温检测这一方面,价格高是另一方面,最重要的是使用起来不够方便,开发者并没有真正站在老人的角度去设计。对于各类硬件设备来说,智能化并不是简单的联网与增加传感器终端。老年人使用就必须按照老年人生活中真正的实际需求来做产品[5]。智能手机给人们的生活带来有益变化,同时也让很多人沉迷成为低头族。因此开发一款便携手环式的电子产品是很有必要的,该款可穿戴设备具有心率测量、运动计步器、OLED显示屏、时间显示、温度测量等功能。1.3国外研究背景及现状欧洲等发达国家在早些年就已经开始研究相关的便携式系统。如英国公布的“交互屋”,运用计算机算法,把检测到的老年人生活习惯作为远程报警的依据[4]。互联的智慧穿戴设备,可以提供摔倒检测报警,走失警报等功能。房间内的红外线感应器可以根据老人日常行为习惯分析老人在家中不慎摔倒或长时间静止时的情况,直接向子女手机或者平台等进行反馈,并开启远程摄像头监控查看老人的实时情况;2015年,可穿戴医疗领域在Googleglass等“明星效应”的扩散下,已成为最值得关注的行业之一。目前如Embrace智能腕带、ScanaduUrine尿液检测工具、Helius智能药丸、QUELL疼痛缓解仪[5]等等一系列高科技公司生产的智能穿戴医疗设备是目前该行业的代表。1.4主要研究内容本文主要是介绍基于STM32单片机的老年人身体健康检测系统设计与实现。本次设计结合单片机和传感器技术,实现该系统的数据采集与显示等功能。1.5论文结构本论文主要内容包含以下六部分:第一章为绪论。分析了本次课题的背景意义和国内外研究现状,研究概述老年人健康检测系统的发展,设计出有新意的产品。第二章是总体方案设计,通过了解此系统的功能要求,对比选择合适的元器件,从而能够较好实现主要功能,增加适配性。第三章是本次系统设计的硬件设计部分,在上一章选好合适的元器件之后,依据对应元件的手册资料,对每个模块进行电路图设计。第四章为本设计的软件系统设计部分,根据设计完成的电路图,在开发平台进行代码的编写。通过画出程序流程图然后依据所学单片机和C语言知识,利用选好的芯片和传感器进行数据采集,并传出到屏幕显示。第五章为本设计最终的系统调试与测试,分为硬件测试、软件测试以及实物测试,经过严格测试,分析并改进其中的问题,最终实现系统功能。第六章是对本次设计的总结,对整篇论文内容进行总结与收尾,并且对系统的缺陷与不足提出问题与相应的改善方案。2总体方案设计2.1设计功能要求本次设计的老年人身体健康检测系统主要具有以下功能:1、系统为便携式,简洁灵活;2、三大功能:体温测量、运动计步、测量心率;3、日期、时间显示;4、具有按键调整功能,可以调整时间、清除每天累计的步数。2.2元件选型2.2.1芯片选型方案一:STM32F103系列微控制器,是意大利公司推出的一款32位中低端ARM微控制器,性能强大。FLASH最大容量为512K,内核:Cortex-M3。芯片外设功能有Timer、ADC、I2C、SPI、CAN、UART、USB。该系列芯片具有低功耗的特点,最高可达72MHz工作频率,供电电源范围2.0-3.6V。方案二:STC89C52RC单片机,此8位单片机是目前51系类单片机代表,该芯片适合新手入门学习使用,资源丰富,寄存器较少。并且该控制器相比传统的MCS-51芯片做出了很多的改进,例如其P0口无需上拉电阻,可实现ISP在线编程,在电路调试时方便了很多。该芯片具有低功耗、性能好的特点,具有8K字节flash,内部资源具有定时器、串口、外部中断等等。综上所述,根据本次设计的要求,要实现对应的诸多功能,就必须采用性能比较高而功耗比较低的STM32F103系列芯片,其中具有128kflash的芯片STM32F103C8T6就是最为合适的主控芯片选型。2.2.2温度传感器的选型方案一:热敏电阻对于温度非常敏感,属于半导体器件,能测出6-10℃的温度变化,测温范围也宽,最低-55℃、最高315℃。精度不是非常高,也不太可靠,采集的信号需要进行A/D转换才能传输,结构有一点复杂。方案二:DS18B20是一款单线数字温度传感器,在使用时无需任何的外围元件,而且测量在温度范围很广的同时保持了精度高的特点,一般测温范围为-55℃~+125℃;在-10~+85°C范围内,精度为±0.5°C。接口方式为单总线,仅一根线就能实现与单片机之间的双向通信,直接将温度数据转变为数字信号并且传输给单片机进行处理,抗干扰能力很强。另外就是供电方式灵活,不用接外部电源,会让系统结构变得简单可靠。综上所述,本次设计用于老年人身体健康检测系统,对于电路上的设计,需要减少复杂度,而且对测温的精度要求比较高,故而采用方案二,数字式传感器电路简单,性能稳定。2.2.3心率传感器的选型方案一:采用pulsesensor心率传感器,该传感器是一款用于测量心率的光电反射式模拟传感器,采用的原理是光电容积法:人体的血管随着心脏脉搏在不断搏动的时候,血液也会受到影响,从而其人体组织的透光率也会产生细微变化,以此来进行心率的测量,利用红外可以有效抗干扰,传感器输出波形直观,方法简单可靠便捷。方案二:透射型光电式传感器,利用上端二极管发出红外光线,透射手指其中的血液循环,根据心脏跳动时血管的舒张与收缩,血管中的血液浓度发生变化,底部另一个红外接收二极管会收到穿过不同血液浓度的光信号,传感器会根据透射红外线的光电信号变化进行测量从而计算出心率。综上,方案二的透射型传感器,需要夹着手指进行心率测量,而相比于此,方案一的pulsesensor红外反射型传感器可用于人体多个部位测量心率,所以选择方案一。2.2.4加速度传感器的选型方案一:MPU-6050为一款六轴加速度传感器,六轴是集成了三轴MEMS陀螺仪和三轴MEMS加速度计,是整合性的一款加速度传感器,减少了大量的封装空间。方案二:ADXL345是一款三轴数字化加速度传感器,能测X、Y、Z三轴方向的加速度,可以在倾斜时测量静态重力加速度,也可以在运动时检测动态加速度。分辨率用户可选,固定分辨率为10位,最高可达13位。该传感器广泛用于各种移动设备,功耗低,灵敏度高。综上所述,考虑到性价比和体积问题,选择方案二低功耗的数字式传感器ADXL345作为计步器的传感器。2.2.5显示器的选型方案一:OLED12864显示器,这是一款低功耗的显示器,数据通信采用IIC接口驱动显示,具有数据通信简单等特点。采用OLED的特点是该器件采用的是二极管自行发光器件,不需要背光电源,是通过软件控制的一款显示模块。其工作电压在3.3V-5.V之间,体积小显示内容丰富。方案二:LCD1602是字符型显示模块显示屏。性价比高,功耗低,适用于显示日常的字符或数字。显示时,有两行内容,每行16个字符,所以基本的数字符号显示是没问题的。该款屏幕通过4线串行接口和8线并行接口驱动,简单所以适合日常开发使用。综上所述,本次设计选取的液晶显示屏是用于一个便携式的系统,因此要尽可能的选择低功耗类的屏幕,故而选择方案一OLED12864显示。3系统硬件设计3.1总体硬件设计要实现以上的要求,就必须确定好元件选型。通过询问老师和查阅资料,对照相似元器件的特性、价格、稳定性、便携等众多考量因素,设计出了适合该系统的硬件方案。具体方案如下:采用STM32F103C8T6为系统主控芯片,利用ADXL345加速度传感器实现用户的运动计步;DS18B20温度传感器实现人体体温测量;PulseSensor心率传感器测量心率,通过STM32内部AD转换器实现AD转换通过简单计算显示实时心率。通过STM32F103C8T6内部RTC时钟读取出时间日期等信息,并且通过OLED显示屏显示当前数据,用键盘模块的按键切换显示界面、调整日期时间和清除步数等功能。综上所述,整个硬件部分组成:STM32芯片模块为主控;温度模块、心率模块、加速度计步模块、键盘模块为输入、输出到OLED显示模块,RTC时钟模块为双向。硬件框图如下图3-1所示。STM32F103C8T6STM32F103C8T6单片机最小系统温度传感器心率传感器加速度模块键盘模块OLED显示模块RTC时钟模块图3-1硬件整体框图3.2电源电路设计本次设计的供电电源要求不高,基本的USB供电便可以实现,如下图3-2为本设计的电源接口及开关控制的电路图。通过开关进行电源的通断,接VCC5V。P4是插口用来插USB进行供电,同时2、3引脚接地,1接开关进行控制。电路USB供电电源为直流5V,芯片自带稳压芯片能够实现稳压,将5V的供电通过ME6211-3.3V芯片转换为3.3V,从而达到STM32芯片的正常工作电压。如下图3-3所示,为稳压电路图。P11为电源插口,电源正极接开关,通过滤波电容输出。图3-2电源接口及开关控制电路图图3-3稳压电路设计图3.3STM32最小系统模块电路设计上一章节选定了该系统的主控芯片为STM32F103C8T6,对于本次设计,该款芯片功能强大,内部资源丰富,能写到的代码量达到128k字节,足够完成各个模块的功能,内部SRAM高达20K字节。3.3.1STM32F103C8T6芯片介绍此芯片最佳工作电压为3.3V,需要加一个上拉电阻来达到最佳工作电压,系统时钟最高为72MHZ。内部有晶体振荡器以及RTC振荡器。该芯片功耗低,有待机停机睡眠三种模式。程序存储器容量为64KB,RAM容量20KB,37个通用I/O口,12路通道(2个12bitADC),4个16bit定时器,2个IIC,2个SPI,3个USART,1个CAN,工作温度范围-40℃~85℃,内部还有温度传感器来获取芯片工作时的内部温度。目前暂无可替代品,比起简单的51单片机,功能强大,性能可靠,是嵌入式开发的首选。如下图3-4为STM32F103C8T6管脚图:图3-4STM32F103C8T6管脚图3.3.2STM32F103C8T6最小系统从日常的学习中也知道一个STM32芯片无法完成整个控制系统,所以本次设计中所用到的STM32F103系列芯片还需要其他外围电路来完成整个系统:晶振、滤波、调试、复位、boot电路等。STM32F103C8T6由时钟电路和复位电路组成,单片机的时钟电路组成是一个晶振(8M)和两个小电容(20pf)。而复位电路仅需一个100nf电容;BOOT0和BOOT1引脚选择:BOOT0为低电平,代表了不同启动模式。微控制器的稳定运行决定了系统是否能够稳定运行,所以微处理器作为核心十分重要,芯片供电电源为3.3V。电源和外围都要有滤波电容,下载程序接ST-LINK。如下图3-5为本次设计使用的STM32F103C8T6内部电路图。图3-5STM32F103C8T6最小系统板本次设计选型用LQPF44封装的STM32F103C8T6为主控,如图中U1,供电电源为3.3V,主要电路:电源滤波、晶振、复位、SW接口调试、BOOT模式选择等等。(1)STM32最小系统电路最小系统电路由STM32F103C8T6和时钟电路组成,时钟电路要串联8M晶振和两个30pf电容然后接入时钟输入脚。(2)启动模式选择电路通过BOOT0和BOOT1脚的电平高低控制器启动模式。(3)复位电路STM32具有软件复位和硬件复位,上电复位芯片需要足够时间进行初始化,需要在NRST脚保持低电平信号,利用复位电路的电容充放电作用,STM32启动时由低电平变高,芯片从而复位,转换芯片正常工作。3.4心率采集电路设计设计中采用PulseSensor心率传感器模块,该模块是一款光电式传感器,LED发光信号波长为515nm,模块可工作在3.3V,在进行正常工作时,检测的信号为光反射信号,进过模块内部放大、整形、滤波等处理,最终从输出脚输出模拟信号。通过A/D转换器可实现心率波形的采集以及心率的计算。由于本次设计采用STM32F103C8T6芯片为主控制,该芯片具有1个16通道的12位ADC模数转换器,可利用该A/D转换直接读取心率传感器的内部信号,将模拟量转换为数字量,最终通过心率算法计算出心率。如下图3-6所示为PulseSensor传感器的电路设计图,该心率传感器具有三个脚,VCC、GND、信号输出脚。如下图中1脚信号输出脚接STM32F103C8T6的ADC引脚,PA0为STM32F103C8T6的ADC0通道0的转换脚,通过控制A/D转换寄存器从而实现心率采集。2脚接电源3.3V,3脚接地,1接PA0。图3-6PulseSensor传感器路设计图3.5RTC时钟电路设计本次设计的健康检测系统设计具有实时时钟功能,由于STM32芯片内部具有RTC时钟功能,内部RTC是独立的定时器。需要在STM32的VBAT引脚加上一个纽扣电池,以此来完成掉电走时。如下图3-7所示为本次设计的RTC时钟电路设计图,当系统上电时,3.3V电源通过D1IN4148二极管,二极管是单向导电的,该二极管导通,STM32的VBAT脚通电,T1为纽扣电池,此时通过D2二极管,由于D1的作用,D2被截止,故而系统上电时VBAT由系统供电;当系统断电时,D1二极管处于未工作状态,D2则导通,通电至VBAT脚,此时VBAT由纽扣电池T1供电;由此不管系统断电还是通电VBAT脚始终处于通电状态,故而达到保持掉电走时的功能。图3-7RTC时钟电路设计3.6OLED显示电路设计本次老年人身体健康检测系统的显示屏是0.96寸的OLED显示屏,OLED全称:有机发光二极管(OrganicLight-EmittingDiode)。具有轻薄、低功耗的特点,广泛应用于之前的MP3,以及现在很多手机屏幕都是OLED屏,由于其低功耗的特性,市场上很多智能穿戴式产品上也在使用。该OLED常用的驱动方式:SPI和IIC驱动,本次采用IIC接口方式,IIC接口使用原理简单,只需要两根数据线即可驱动显示。因为该模块内部不带任何字符,所以在显示字符、数字和汉字时都需要去制作字库,因此可以显示各图案。如下图3-8所示为OLED电路设计图。该模块具有4个引脚,VCC接电源3.3V供电,GND接地线,SCL接STM32F103C8T6的IICSCL脚PB6,SDA接STM32F103C8T6的IICSDA脚PB5,如下图3-8所示。图3-8OLED电路设计图3.7ADXL345加速度传感器电路设计本系统是采用ADXL345加速度传感器来进行运动计步,该传感器本身不是计步传感器,是一款集三轴加速度传感器,平常用于一些智能移动设备。设计中通过读取其三轴角度的信息,然后分析算法算出步数信息来达到运动计步的功能。ADXL345具有X、Y、Z三个方向上的加速度由G-Cell传感器感知,内部电压输出方式:容压变换器->增益放大器->滤波器->温度补偿,最终通过内部芯片将模拟量读取,通过数字接口输出实际数据。本次系统采用的是ADXL345模块,该模块已经集成了ADXL345芯片的功能,设计中将模块的数据接口接到单片机,可通过单片机程序来读写传感器的三轴加速度数据。如下图3-9为ADXL345模块电路设计图。图中P3为模块的接口引脚,模块一共有8个引脚,分别是GND、VCCC、CS、INT1、INT2、SDO、SDA、SCL。本次设计主要是读取三轴加速度数据,故而采用串行两线通信接口SDA(IIC数据)和SCL(IIC时钟),两脚分别接STM32的硬件IIC接口PB10、PB11,模块电源接5V,如图所示。图3-9ADXL345模块接口电路设计图3.8DS18B20温度传感器电路设计本次设计的基于STM32单片机的老年人身体健康检测系统具有温度检测功能,设计中采用的是插件式DS18B20传感器。该传感器有三个引脚,电路十分简单。该传感器工作电源范围在3.0V~5V,测温范围:-55到125摄氏度,精度:±0.5摄氏度,最低分辨率:0.0625摄氏度,在测温这方面精度非常高。如下图3-10。图3-10DS18B20温度传感器封装图设计中采用DS18B20采集温度,DS18B20是实用性很强的一款数字化温度传感器,如下图3-11,这是STM32与DS18B20管脚连接图。通过STM32的I/O读取DS18B20的数据,通过计算转换为实际的温度值。DS18B20以单总线的方式驱动,凭一根数据线实现双向传输。芯片通过图中所示的PA7口与DS18B20数据线(标示2)连接,并且串接一个电阻(10K)上拉到3.3V。图3-11DS18B20温度传感器的电路设计图3.9键盘电路设计本次设计的键盘模块有四个独立式按键,分别用来实现时间调整、步数清除、界面切换等功能。四个按键:设置/退出键、时间日期加键和时间日期减键(清除步数键)、切换键。设置键/退出键的功能是按下进入设置时间日期界面和退出设置界面等功能,设置加键是用来对数据进行设置加,设置减键是用来对数据进行设置减。在主界面的情况下,按下设置减键(清除步数键)可实现手动清除步数。界面切换键可实现对主界面和时间日期显示界面进行切换。下图中3-12为键盘电路设计图,图中四个按键一端接地,另一端分别接STM32的输入输出口。三个按键接口分别接单片机的PB12、PB13、PB14、PB15四个引脚,当单片机的相应引脚检测到低电平时,说明该引脚被触发也就是相应按键被按下,从而实现相应的动作。图3-12键盘电路设计图3.10本章小结本章主要内容:完成基于STM32的老年人身体健康检测系统的硬件电路设计,通过查阅电子元器件中文手册,了解管脚电路图,做出具体的电路设计,具体模块有主控芯片电路设计、电源电路设计、pulsesensor心率传感器电路设计、时钟电路设计、显示屏显示电路设计、加速度传感器电路设计、DS18B20温度传感器电路设计、键盘电路设计等。接下来会根据上面设计好的电路图进行焊接、验证、调试,并记录相应参数等。4系统软件设计4.1软件开发环境介绍软件设计部分用到的开发平台是KEIL5,该软件是STM32开发的首选平台,实用性很强,大学实验课也一直用此软件进行单片机的开发,编译环境集成化非常高,开发效率高,仿真也很方便,有助于后续的软件硬件调试。4.2软件设计要求上一章介绍的是硬件部分设计以及各个子模块电路设计。而本章是展示软件的流程图,本设计的设计功能要求具体如下:体温测量、心率测量、运动计步、时间日期显示、按键切换分屏显示、按键调整时间及清除步数等。软件部分用Keil5进行编程,以STM32F103C8T6为整个系统的主控芯片,结合三个传感器模块(加速度、心率、温度)等进行硬件设计,最后通过液晶显示屏显示数据,以此实现老年人身体健康检测系统的对应功能。本章通过系统总体软件流程图的介绍(包含主程序和各个子模块程序)结合硬件写出软件程序。4.3软件总体流程图本次系统软件设计用Keil5写程序调试,C语言因为其移植性高而且简单易懂所以是编程不二之选。总体流程图如下图所示。要实现以上功能,先设计出软件程序总体框图,如下图4-1所示。首先是系统初始化,本次系统的初始化配置包括OLED显示屏和加速度传感器初始化、内部的RTC时钟、串口、定时器及AD转换初始化配置。然后进入循环。系统的循环中主要是温度传感器采集数据,读取时间,测量心率。利用A/D转换和定时器实现心率脉冲信号的捕获,最终计算得到实际的心率值。加速度传感器读取人体加速度变化从而计算并累加步数,并将步数保存到FLASH中。同时键盘子程序实时扫描,检测到切换键按下时,屏幕会切换界面;对应按键按下时会清除步数。程序的总体流程图,如图4-1所示:开开始系统初始化读取时钟、温度计步并保存切换显示按键按下?得出心率值0:00到?清零步数结束否是否是A/D转换图4-1主程序流程图4.4温度采集程序设计本次设计采用DS18B20温度传感器进行测温,该传感器是单总线方式传输,用一个数据线来测量,数据精度为12bit,DS18B20内部都有ROM和唯一的ID号,具体流程如下:首先写程序读取DS18B20内部的唯一ID号并且记录,之后进行温度读取。先发送复位脉冲信号,等待传感器响应,若成功响应则发送匹配ROM指令,启动温度转换,发送之前读取的ID号等待传感器响应,成功的话就发送0x44开始转换,读取相应ID号的温度,流程图4-2如下:开开始发送复位脉冲信号DS18B2响应?发送匹配ROM指令发送启动温度转换指令读取相应ID的温度返回是否图4-2温度传感器流程图4.5运动计步程序设计4.5.1加速度传感器读取该设计中使用ADXL345加速度传感器采集人体加速度变化的数据,采用IIC标准总线接口读取传感器原始数据。下面是该部分的流程图,首先开始初始化IIC接口,检测ADXL345是否存在,若为真则下一步进行循环,读取数据,先发一个IIC起始信号,发送器件地址-发送寄存器地址,分别等待响应,接着发送读数指令,等待传感器输出数据,将采集的数据保存在缓存区中,最后发送停止信号完成这次读数转换。如下图4-3所示。开始开始喀什IIC初始化IIC起始信号ADXL345检测存在?发送器件地址发送寄存器地址等待响应读取数据保存返回喀什NY图4-3加速度传感器流程图4.5.2计步算法利用计步算法,在计步算法中首先输入三轴X、Y、Z原始数据值,将数值进行采样滤波、分离,得到一次数据。通过计算动态门限和动态精度本次算法采样50次数据进行动态分析,通过线性移位寄存器和动态门的判决来推算步数是否加一。ADXL345三轴加速度传感器可以检测三轴X、Y、Z轴加速度,但是在测量时,往往不能够确定整个硬件的方向,所以不能完全依靠运动轴和加速度计测轴两者的关系。想要去检测人体步数,就得先观察人们走路时的运动姿态,对其规律性变化有一定掌握,在走动时人体全身都在运动从而产生加速度的变化,在运动到某一个点时,脚步的加速度一般可以用来检测步数,由于考虑到计步器位置,数据要进行转化。这时候就需要数字滤波器来使信号更加平滑。或者用4个DATA寄存器加上1个求和单元,如下图4-4所示,同样使用的寄存器数量越多,数据也会更加平滑,当然数据越多计算时消耗的时间就越多,相应测量就越慢。动态阈值与动态精度:传感器不断采集三轴加速度的变化数据,得出最大值和最小值,通常是每50次更新一次。动态阈值计算方法:平均值(最大值+最小值)/2。而50次的数据采集就利用这个算出来的动态阈值来判断携带者是否迈出步伐。动态阈值每50次采集后更新一次。这样的优点:能够自适应、速度快。动态精度也会进一步滤波。如何判断是否迈出步数:当加速度变化曲线低于动态阈值下方时,其曲线的斜率为负的。峰值如何检测:ADXL345根据XYZ三轴中加速度变化最大的一个轴计算步数。如果加速度变化不明显,不能超过正常阈值,步数就不会被传感器计算进去。计步算法数据速率:50Hz即20ms。两步之间的数据更新次数则会被Interval的寄存器记录下来。当时间间隔在10~100这个区间时,两步间隔时间是在有效窗口之内的;而当两步时间间隔在时间窗口之外,步伐则是无效,不会被记录。图4-4数字滤波器原理示意图4.6心率采集程序设计心率传感器的数据读取采集运用A/D数模转换的原理,将信号量转换为数字量。采集心率指标的步骤如下:首先是将A/D转换器初始化,配置好ADC1的通道1。配置一个2ms中断的定时器然后进入循环,每2ms中断一次,每次都会读取A/D转换的值,将数据通过串口发送给芯片,同时通过心率固定算法算出测出的心率值,处理器会将数值在OLED上显示出来,流程图如下图4-5所示。开开始A/D、定时器初始化2ms?读取A/D值用算法计算心率显示心率值返回NY图4-5心率传感器流程图4.7键盘程序设计键盘模块在本系统中体现为4个按键,每个按键都有其对应的功能,分别是步数清零、界面切换及调整时间,大体的工作流程:在运行状态下,按下设置键,OLED切换为时间日期显示,通过下面两个加减键进行调整日期时间,设置完成后再次按下设置键进行保存,调整之后的数据会被保存到芯片的内部RTC时钟的寄存器中,具题流程图如下图4-6所示。图4-6键盘按键模块流程图4.8本章小结本章介绍了此次设计的软件部分,首先注意系统的整体功能,将系统的整体功能框图仔细研究,然后分割整体软件模块,分成各个小模块,每个子程序模块都有他对应的程序流程图及实现功能,这样将程序模块化有助于简化系统的复杂度,从实现各个子模块开始来一步步完成整体的系统设计。模块化的编程也让后续的问题测试能够有序进行,遇到错误可以找到对应的子模块,进行及时修改调试。5系统调试通过系统硬件设计与软件设计两部分完成整个系统的设计,设计功能实现后需要对硬件和软件进行调试,最后还得进行实物测试,有效的测试可以测出系统的性能以及稳定性。本章通过硬件、软件调试来分别对系统测试,并且有实物整体测试,最终得到结果。5.1硬件调试本次设计采用AltiumDesigner13设计出了PCB电路板线路图,该软件是一款高性能、开发方便的EDA软件,不仅能够绘制原理图、PCB等,还能进行嵌入式应用开发。本次采用该软件绘制出来整个系统的电路图以及PCB图,在设计过程中的注意点:(1)线宽规则:地线铺铜,电源线宽大于信号线宽。(2)走线不能直角,尽量45度转角。(3)电源电路要远离信号电路。(4)滤波电容布线输出电源线。5.2软件调试软件调试在KEIL5上进行,这是一款日常开发教学所用到的单片机开发软件,也能够实现软件仿真的功能,在KEIL5平台上进行程序的调试与仿真测试,可以及时找出潜在的问题,能够避免烧写到STM32芯片后才发现错误,因为不用在单片机上频繁测试,也是一定程度上增加了STM32的使用寿命。同时在MDK上也方便查看代码以及各种寄存器,在仿真中减少了许多不必要的错误问题。通过软硬件的系统设计,将最终修改好的程序通过ST-Link下载到单片机。具体操作:在仿真之前,先在IDE里面点击确定target选项卡检查一下配置的正确性,确认晶振频率为8.0MHZ之后再点击debug。5.3实物测试通过之前对本次老年人身体健康检测系统的硬件电路设计,在电路板上完成每个模块的焊接。焊接电路板时要注意各个元件的布局,也要按照对应的先后顺序,先焊电源和单片机,一般大元件要在最后才焊接,焊接完成之后用万用表测试电路是否正常,最终焊接完成的实物图如下图5-1所示。完成焊接之后,接上电源,按下开机键,OLED屏幕上会出现欢迎界面,几秒钟之后页面会自动切换成心率步数体温的显示界面,如下图5-2为主界面检测结果图。在主屏幕上会不断刷新显示心率、步数和体温。按下键盘模块其中一个切换按键,会切换到时间日期显示界面,第一行显示年月日,第二行显示时间精确到秒,第三行显示星期几。如下图5-3为时间显示界面图。通过按键进行时间调整,先按下设置键进入调整界面,屏幕中会出现箭头“>”,其指向的数字就是当前正在调整的数字,通过对应的加减键进行上下调整,再按设置键会到下个参数设置,设置完成之后再次按下会自动保存,然后退回到主界面。另外对应的清零键会让累计的步数清零。如下如5-4为时间调整图。6总结随着我国社会人口老龄化趋势进一步发展,老年

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论