多环境人体机能检测预警系统设计_第1页
多环境人体机能检测预警系统设计_第2页
多环境人体机能检测预警系统设计_第3页
多环境人体机能检测预警系统设计_第4页
多环境人体机能检测预警系统设计_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

多环境人体机能检测预警系统设计-1-第1章绪论1.1研究背景及意义随着经济的迅猛发展,人们对健康的关注度与日俱增,如何快速便捷地监测自身的身体健康状况,及时了解身体的各项指标参数就显得尤为重要REF_Ref9793\r\h[1]。医院检测比较全面但耗时较久,人们在快节奏的社会生活中,往往并没有太多时间等待做各项检测,同时一些基础的检测完全可以通过便携式智能健康检测产品进行测量,检测方式由传统的去医院排队检测逐步发展到社区和家庭中自行检测,部分医疗检测仪器也慢慢地从医用发展到家用,故而便携式健康检测产品应运而生REF_Ref9832\r\h[2]。据中国市场调研在线网2018—2025年中国家用医疗器械市场深度调查研究与发展趋势分析报告,中国家庭医疗器械产品的市场规模从2014年的176.6亿元增加到2018年的近600亿元REF_Ref11527\r\h[3],现阶段我国公共医疗资源还是比较短缺,解决现状的有效途径就是加强对慢性病的日常监测,于是家用医疗监测产品便得到了快速发展。根据最近的数据显示,医疗行业在我国不断的兴起,针对医疗器械市场需求急剧增加,因此,市场增加刺激医疗器械的快速迭代,随着技术的不断进步,医疗器械出现了便携式器件,便携式健康检测产品逐渐朝着智能化、云端化的方向发展,未来的便携式健康检测产品,一定有着更广阔的发展空间REF_Ref11602\r\h[4]。1.2研究现状伴随着生活质量的改善,人们对于健康状态十分的重视,特别是近些年,高血压、糖尿病等基础疾病的激增,对人们的健康有很大的关系,尤其是针对血压、心率、体温等生理指标,是日常生活最重视的三个生理指标,这些指标也是一些重大疾病的前兆,因此对人体生理指标的日常监测技术开发就显得非常的重要REF_Ref11628\r\h[5]。目前,学者开始研究智能化的可穿戴设备,不仅能够随时随地采集信息,而且还方便,不会给人们带来负担,一些学者们集中于嵌入式开发技术,穿戴式医疗设备的开发在国内有三种发展趋势。国内针对其研究有小米、苹果公司生产制造的智能手表手环等等,以及一些企业自己成立监护中心目前这些是被广泛应用的,近些年,随着技术的进步,研究者加入了远程控制功能,当系统检测有危险信号,可以实现远程的提醒[6]。首先人体健康监护系统是非介入的,同时是无创的,正是因为有了这些优势,使得一些佩戴者们没有心理压力,人体健康监护系统拥有市场,将可穿戴设备与手机等终端进行通信[7]。在国外,美国首先发明了可穿戴式设备,其中超过80%的人拥有健康设备REF_Ref22323\r\h[8]。这群人对新技术很好奇,而且受过良好的教育。国外,可穿戴设备在美国市场的发展是最快和最广泛的REF_Ref22323\r\h[8]。智能手表使用最普遍和最受个人需求的REF_Ref22323\r\h[8],45%的人选择了智能腕带,30%的人选择了智能手表REF_Ref22323\r\h[8]。可以看出都与健康有关,这直接表明了个人对健康的重视程度REF_Ref22323\r\h[8]。1.3研究内容及章节安排本课题基于嵌入式技术、传感器技术为基础,针对目前人体健康检测的现状,进行设计,实际了一款基于单片机的多环境人体机能检测预警系统设计,利用单片机实现控制并结合相关传感器采集人体健康信息,运用wifi技术对收集信号信息进行无线传输,利用GPS进行定位,通过手机APP向用户反映出监测结果,提前预警。论文共分六章:第一章主要从课题研究的意义及目的出发,结合近些年国内外的发展趋势进行分析,提出本课题研究的主要内容。第二章围绕基于多环境人体机能检测预警系统设计的具体需求,对比控制系统的方案,提出了总体设计方案。第三章就多环境人体机能检测预警系统设计的硬件设计电路图及芯片原理进行介绍,主控芯片与相关功能模块功能,搭建出整体系统架构。第四章建立了多环境人体机能检测预警系统软件,根据整个设计的流程图,分析模块化程序流程图,最后对程序进行编译,验证编写没有语法错误。第五章将程序下载至制作好的实物中,对各个功能逐一进行调试。第六章对本课题的研究作了总结,得出研究结论。

第2章系统总体结构2.1系统结构系统硬件部分包括单片机STM32、OLED显示屏、人体体温检测模块、血压监测模块、心率血氧 传感器模块、运动状态传感器模块、GPS、 通信模块、蜂鸣器报警等。实现的功能如下:1.采用心率传感器、体温检 ‎测模块、血压、运动状态进行数据采集传输给单片机进行分析处理;2.能够利用单片机对信号进行分析处理,判断心率是否超过阈值并对佩戴者是否失去平衡进行分析处理;3.可通过蜂鸣器进行警报;4.可通过WiFi远程APP模块接收远程信号;5.在佩戴者心率、体温超过阈值时通过蜂鸣器引起周围人的注意同时给设定好的手机号发送信息;6.能通过GPS定位模块能让人第一时间知道佩戴者位置赶来救援;该该系统由信息接收模块、控制模块、信息处理模块组成。数据收集主要收集心率,温度等数据;体温和运动状态等数据的收集,以MCU为核心的控制模块,以蜂鸣器为核心的执行模块。图2.1结构图2.2方案选择2.2.1单片机的选择方案一:系统控制采用51单片机。51单片机是一种小型、低功耗、高可靠性的集成电路,目前应用最为广泛的单片机,应用灵活,使用方便,这是因为其内部结构中具有完善的总线专用寄存器,除此之外,在寻址时,RAM区内的地址区间具有双重功能,但其缺点就在于这款单片机的运行速度较慢,并且容易损坏芯片。方案二:系统控制采用32单片机。STM32F103C8T6型号的芯片,不仅能有效的增强容量,而且其属于32位的ARM内核,接口主要有USB接口、CAN接口、定时器接口、ADC接口等REF_Ref7548\r\h[9]。其TISC内核性能在ARM®Architecture™-M3系列中属于较高性能的,采用72MHz的工作频率,配备高速存储器,增强型的多个I/O端口,同时外设与两个APB总线连接REF_Ref7548\r\h[9]。设备类型主要有两个12位的ADC,三个通用类16位的定时器,以及一个PWM定时器,还有三个USART接口和一个USB接口与CAN接口REF_Ref7548\r\h[9]。经过对比分析,本系统选择方案二,STM32单片机能够满足本系统设计功能需求。2.2.2温度检测模块的选择方案一:采用DHT11数字温度传感器采集。DHT11数字温度传感器是一种能够准确检测到人体温度变化和环境湿度状况的传感器它可以将采集到的信息校准后转化成数字量直接输出。它内部一共有4个引脚。结构非常的简单。主要产品应用到了数字影像采集网络技术和图像传感器技术,具有着极高稳定的运行可靠性能和具有长期使用的良好稳定性能力的突出特点。通过和控制器相连可以测温湿度。该传感器信号响应频率快,抗干扰能力比较强,性价比相对较高。具有超长的信号传输距离,且超低能耗。方案二:采用DS18B20数字温度传感器采集。DS18B20温度传感器,其体积较小并且引脚数量少,因此在后续系统组装时能够便捷地将其安装到系统内部,与DHT11温度传感器相比,这款传感器是将采集到的信息通过数字信号的方式传输到外界,并且精度较高,其常被应用于数字测温或控制领域。根据上述对两种传感器进行分析,本系统设计更加适用方案二。2.2.3蓝牙模块的选择方案一:WiFiESP8266技术WiFi通讯技术是需要建立局域网的,这样才能够让多个用户使用,有着通讯高效安全、能够侦听载波的功能。但是同时因为建立局域网和路由器会增加设计成本并且难以实现,而高效的通讯意味着功率也会很高。因此高耗能、难设计的原因使得不适合应用于宿舍安全的设计上。方案二:蓝牙技术蓝牙技术主要是一种无线传输,适用于距离近的传输,当距离过远时,连接会中断。而利用蓝牙技术,设备之间的通讯则更加方便快捷、成本更加低廉。蓝牙通讯的实质就是在设备间无需使用电线或电缆的情况下,让多个设备能够互相连接和通讯。因为现有技术限制蓝牙传输在功耗上也相对较高,距离较近受环境影响较大不能在宿舍楼和管控室进行远距离传输[11]。经过对比分析,蓝牙模块传输距离较近,并且受障碍物影响较大,当前无线网络和有线网络布线比较方便,物联网不受距离和地域显示,所以采用方案一进行设计。2.2.4显示模块的选择方案一:LED数码管。利用LED数码管动态显示信息,虽然数显具有短小、功耗低、直角显示平坦、图像稳定而不闪烁等优点,但考虑到其亮度低,特别是价格偏高,只能显示简单的数字,无法实现中英文转换,因此,输出能力有限。方案二:OLED液晶屏显示。该系统可通过液晶显示屏显示信息,并实现中英文转换,但编程较为繁琐。该模块体型较小,性能较强,功耗低,刷新反应速度快适用于物联网设备的开发。此外低耗电及高对比度不仅可以节能,更增加了可视化界面美观性。可与单片机直接连接,方便易用。系统稳定运行,且抗干扰能力强。经过对比分析,本设计选择方案二,采用OLED作为显示系统。2.2.5按键模块的选择方案一:独立按键独立按键在生活中也是常见的,它的工作方式主要就是直接连接在单片机的引脚上,另一端接地,这样的话,每个按键都单独占用一个I/O口,结构简单,编程容易,但是不适用于按键数量较多的场合,浪费资源,使得外设接口减少。方案二:矩阵键盘矩阵键盘是4*4矩阵键盘,在行列的交叉处设置按键,提高了单片机引脚利用率,采用的是行列扫描进行识别,实际编码中需要对应采用二进制编码高低四位进行排排列[12]。对比上述两种按键的设置方式,结合本设计的实际需求,由于本设计采用的按键功能极少,因此符合本次设计选择方案一。2.2.6报警模块的选择方案一:语音播报此方式设计报警部分电路比较高端,在家庭医疗在线监测系统中显得大材小用,设计硬件电路时,还需查阅语音芯片及其模块资料,增加工作量,也加重程序编写的任务量,同时也增加硬件设计成本。方案二:声光报警由LED灯和蜂鸣器为主要元器件,元器件比较基础,方便设计者使用,电路连接简单,程序编写也非常容易,通过程序内电平的变化,可以轻松实现灯的亮灭和发出声响。在实际使用上,可操作性强,报警效果好,监控人员可以在视觉和听觉两方面得到提示,价格很是低廉。综上所述,采用方案二中的声光报警来作为报警模块。2.2.7心率血氧模块的选择MAX30102心率血氧模块,集成了一个红光LED和一个红外光发射管、光电检测器、光器件,带环境光抑制的低噪声电子电路,应用在可穿戴设备上实现心率和血氧采集检测REF_Ref24614\r\h[16]。因为其优异的性能,本文选用此传感器作为心率传感器。2.2.8定位模块的选择ATK-NEO-6M模块,是一款高性能的GPS模块,模块核心采用的是UBLOX生产的NEO-6M模组,追踪灵敏度高,测量输出频率高等特性REF_Ref27759\r\h[18]。ATK-NEO-6M具有以下特点:使用方便,通过串口就可设置各种参数并保存在EEPROM里,模块有高增益的LNA芯片和陶瓷天线等,搜索卫星能力强REF_Ref27759\r\h[18]。2.2.9运动状态检测模块的选择MPU6050模组集成了三轴的三轴加速度表及三轴的陀螺仪,此晶片共有八根管脚,经由每根管脚的联接,可与单片机进行资料传送,藉由此感测器来侦测位姿;再将该数据通过I2C接口传送到主机。

第3章系统的硬件设计3.1单片机最小系统本设计使用STM32 单片机作为系统的主控制芯片。芯片引脚连接如图3.1所示。图3.1STM32单片机的接线图3.2温度检测模块设计温度传感器型号为DS18B20,该模块主要实现温度的采集,通过对外部环境的温度检测,将其环境温度转换为,单片机可处理的数字量,这个温度传感器,是由美国半导体公司发明的,该装置十分的简单,外部只有4个引脚,并且只有一根数据线,它可以进行串行通信,并且可以进行双向通信,完成温度检测的功能,不需要外接任何器件,这使得单片机的I/O口大大节省,通过总线协议进行数据的读,写时序,读写时序都是需要初始化的,初始化的完成主要是依靠控制器拉低火松开总线。DS18B20芯片主要分为读写时序两个部分,1时段9时段的写入读入,每个时段都需要延时,两个写时段都是需要初始化,初始化的完成依靠的是主控制器拉低总线。图3.2温度检测电路图3.3wifi模块设计本设计选择使用中国移动开发的WIFI模块设备作为远程传输设备,采用的核心控制器为ESP8266WIFI模块,该芯片内部集成出口通信模块,方便与单片机进行通信,也是目前应用相对广泛的一款wifi芯片,具有透传功能,无需关心内部协议,该芯片工作频率为2.4GHZ,并且通过由于手机或者路由器热点建立网络连接,根据手机APP建立的EDP协议封包传输数据[15],云平台连接通过添加的设备ID和API值作为连接平台的关键字,实现数据远程传输功能,该模块供电电压为3.0V到3.6V设计,并且将芯片的第一管脚接上LDO稳压芯片输出的3.3V并且连接10uF和0.1uF滤波电容,防止电源受到干扰影响数据传输。将第二管脚外接10K上拉电阻并留出其余GPIO口预留,将RXD和TXD管脚留出接口与单片机通讯使用。图3.3ESP8266电路连接图3.4心率检测电路设计血氧心率检测模块采用的是Max30102模块,该模块的原理是根据血液对光的吸收量,来表征脉搏的变化,也就是说当脉搏不动时,血液对光的吸收量是一个固定不变的值,当脉搏跳动时,血液对光的吸收量是呈现一定周期变化的,变化根据脉搏的跳动是有规律的。它主要用来测量血氧浓度和心率的一款器件,他也采用的是iPhoneC兼容的通信接口,需要一根数据线和一根时钟线来进行数据通信,通过将检测到的数据传输给单片机,进行心率和血氧浓度的计算,片片机通过两个引角与数据线和时钟线相连接,进行数据的相互通信,心率血氧检测模块如图3.4所示。图3.4心率传感器检测模块3.5运动状态检测电路设计本文主要设计的运动状态检测电路核心使用MPU-6050传感器,此传感器主要是由加速度传感器和陀螺仪组合而成的,该芯片一共有八个引脚,通过对各个引脚进行连接与单片机进行数据的传输,用该传感器检测姿态,实际应用中,在mpu6050中是用陀螺仪传感器测角度,用加速度传感器测加速度。电路图如图3.5所示。图3.5姿态检测电路设计表3.1引脚定义名称功能VCC接3.3V或5V电源GND接地SCL作为从机,接单片机的I2C2_SCLSDA作为从机,接单片机的I2C2_SDAXDA辅助IIC用来连接其他器件,不需要连接单片机XCL辅助IIC用来连接其他器件,不需要连接单片机AD0地址管脚(可以不接单片机)INT中断引脚(可以不接单片机)3.6显示电路设计显示模块负责显示信息。本系统选用的是128×64的OLED显示屏,该模块体型较小,性能较强,功耗低,刷新反应速度快适用于物联网设备的开发。此外低耗电及高对比度不仅可以节能,更增加了可视化界面美观性[17]。通过单片机引脚PB11、PB10引脚进行数据传输,电源接VCC另一端接地。它的驱动电压低、能耗低,可与太阳能电池、集成电路等相匹配。显示模块电路设计图如图3.6所示。图3.6ATK-0.96'OLED接线图3.7气压检测设计本款采用压力装置对压力进行感知检测,外部压力或压差可使装置电容值发生变化,通过数字信号转换,转化为频率信号送至微芯片,微芯片计算输出一个电流主信号到当前主控电路,再生成4-20mA模拟电流输出,同时微芯片充电进行操作(显示和设定)。通信接口用于数据通信的专用接口。气压监测模块接线图如图3.7所示。图3.7气压检测模块接线图3.8定位模块设计本设计定位模块选用的是GY-ONE-6M模块,该模块一共有4个引脚,真正与单片机进行通信的只有一个引脚,A10引脚进行连接,使用极其简单,而且性能优异,具有容量大的特点,通道多,模块供电采用3.3V/5V电平,是非常方便连接各种单片机系统。定位模块设计如图3.8所示。图3.8定位模块接线图3.9报警模块设计在多环境人体机能检测预警控制系统的设计上,对其报警执行选择了声光报警方式。声音信号电流与唯一芯片数字计算机PA6的引脚相连,因此唯一芯片数字计算机引脚输出的电流通过NPN真空管放大。唯一的芯片数字计算机PA6引脚机械输出偶电平,以使蜂鸣器导电,因此蜂鸣器发送相关报警提示用户。报警模块电路图如图3.9所示。图3.9按键模块接线图第4章系统的软件设计4.1主程序流程图主流程图如图4.1所示。NYYNYY图4.1主流程图4.2底层驱动程序开发4.2.1温度采集模块的软件设计测量温度的子程序采用的是DS18B20芯片,最开始对传感器初始化处理,然后传感器内部自带数据校准的软件,当数值校准出现错误是则先进行数据处理再进入主控芯片进行无线的数据传输。温度子程序流程图,流程图如图4.2。开始DS18B20初始化启动温度转换跳过读序列号延时DS18B20初始化跳过读序列号读取温度的高低位数据转化处理开始DS18B20初始化启动温度转换跳过读序列号延时DS18B20初始化跳过读序列号读取温度的高低位数据转化处理结束图4.2温度检测流程图4.2.2显示模块软件的设计通过启动在这之后系统界面进入初始化,开始读取状态之后开始分析数据并处理。显示程序设计流程图如图4.3所示。图4.3显示程序设计流程图4.2.3按键模块子程序设计开始检测到有按键按下‎信号时,利用软件的延时进行延时消抖 ,再对是否有按钮按下进行检测,若此 时检测到有按钮按下, 则表示有按钮信号;进行下一步的操作,按键模块流程图如图4.4所示。

开始开始等待按键按下有按键按下延时消抖是否有按键按下按键数据处理结束YN图4.4按键检测流程图YN4.2.4WIFI模块驱动程序设计其工作流程图如图4.5所示:程序开始读取保存在程序开始读取保存在eeprom中的wifi数据通过得到的WiFi数据联网WiFi是否连接成功?完成数据传输等待手机一键配网配网完成将WiFi数据保存到eepromYY图4.5wifi模块工作流程图YY

4.2.5心率检测程序设计心率检测模块的原理是通过IIC进行数据传输的,只需要两根线一根是数据线,一根是时钟线与单片机引脚相连接,系统进行初始化完毕之后开始检测,此时检测是采用血氧心率传感器模块,将检测到的数据进行测试并存储,把探测到的数据显示在显示屏上,再用WiFi模块把它的数据传送到上位机上,然后再用显示屏来显示,整个过程一直循环下去,显示屏显示计数子程序系统初始化开始测量测试并储存,心率检测程序流程图如图4.6NY程序开始NY程序开始系统初始化计数子程序开始测量测试并储存数据显示屏显示返回图4.6心率检测流程图4.2.6气压检测程序设计气压检测模块系统进行初始化完毕之后开始检测,将检测到的数据进行测试并存储,把探测到的数据显示在显示屏上,显示屏显示计数子程序系统初始化开始测量测试并储存,气压检测程序流程图如图4.7所示NY程序开始NY程序开始系统初始化计数子程序开始测量测试并储存数据显示屏显示返回图4.7气压检测工作流程图4.2.7定位模块程序设计开始开始系统初始化开始检测获取位置信息上传数据返回图4.8定位模块流程图4.2.8姿态检测程序设计YN开始YN开始系统初始化获取姿态信息上传数据返回开始检测?图4.9姿态检测工作流程图4.3程序编写及调试首先打开KEIL软件,在指定文件夹下创建一个新的项目,新建工程界面如图4.10所示,保存为一个名字方便以后查找,接着创建一个文本文件后缀名为“.c”的文件,之后添加到此项目中,依次对各个模块的程序进行编写,通过设置“Hex”文件经过编译后,出现“Hex”文件下载到实物后便可以运行实物。图4.10新建工程界面图4.11芯片选择在软件中编写好程序后,按下编译按钮来检查时候有语法问题,得到图4.12程序编译结果界面,出现“0error”说明程序编写没有格式语法问题,可以进行下一步操作,如果出现语法问题,找到对应的定位,更改错误后重新编译即可。图4.12程序编译

第5章实物制作与调试5.1系统实物制作系统实物的制作主要是根据电路图去选型焊接,根据清单选取对应型号的器件,STM32单片机、温度传感器、心率检测传感器、wifi模块、血压检测传感器、按键、显示屏,电阻、电容、二极管、导线。备好器件后,不要着急焊接,查看哪些器件有正负极的区分,在焊接时需要注意,再根据总体的设计电路图,对其进行布局,选择合适的位置进行器件的焊接,实物图如图5.1所示。图5.1实物图5.2系统调试焊接完毕后进行各个模块的调试,首先将编写好的程序运行无误后下载到焊接好的芯片中,要保证程序没有语法错误,之后验证该功能,最后对硬件进行调试。在调试之前,先检查硬件电路是否完好,在安装好硬件的各个部分,对其进行焊接,在完成后,检查是否都符合相关焊接设计规定参数和焊接设计工艺要求,是否完全能够完美实现焊接设计和设计功能。图5.2系统初始化5.2.1显示功能测试图5.3显示模块实物图通过OLED显示屏显示的关键信息,温度、血压、心率血氧功能是否正常显示。5.2.2功能测试图5.4测试实物图体温检测、血压检测、心率血氧检测、姿态检测显示正常。5.2.3WiFi功能测试图5.5手机端显示实物图通过WiFi模块,手机端正常显示数据。

第6章结论本次毕业设计过程中系统地梳理了多环境人体机能检测预警系统设计的目的及意义综述了国内外研究现状,提出本次设计的核心思想,对功能进行分析选用合适的设计方案,并对各个模块进行了充分的介绍,本次设计多环境人体机能检测预警系统从软硬件两个方面设计,并完成APP提前预警设计。完成以下工作:(1)分析课题研究的背景及意义,并提出该系统具体功能,根据设计功能需求,对比不同的设计方案,进行器件选型,最后得出系统整体设计方案。(2)针对温度、心率、血压等不同监测对象,针对性地选择了芯片作为系统传感器部件,对wifi与相关功能模块的整合提出了应用方案,从而完成本设计的总体硬件系统。(3)从系统软件总设计流程图出发,并对底层驱动程序进行编写,最后对程序进行了调试,设计了APPA应用开发界面。(4)完成多环境人体机能检测预警系统设计的实物制作,对制作好的实物进行调试与测试,完成模块化测试功能,最后对全文进行总结及展望。

参考文献胡钰宽,孙唯证.基于无线运动传感器节点的人体运动状态监测装置设计[J].科技创新与生产力,2022(05):86-89.唐家豪,李志明,周红波,皮涛涛.无线人体健康监控系统设计[J].电子制作,2022,30(05):11-14.王琪;李波涛.智能化家庭综合医疗产品的设计与发展[J].设计,2019,(12):122-124.林同涛,吴宸宸,陈清华.基于STM32的多环境人体机能监测登山服设计[J].信息技术与信息化,2021(12):85-87.杜健宁,卢东生,王梦娇,司啸辰,孟祥雨.基于WeMosD1Mini开发板的脉搏与体温检测装置设计[J].中国医学装备,2021,18(02):1-4.王洪生.基于单片机与传感器的智能家居环境监测系统设计[J].电子制作,2020(22):24-27.董静涵.用于人体健康监测的检测系统设计与开发[J].电子技术与软件工程,2020(20):75-77.吴卿.基于STM32的健康监护系统的设计[C].哈尔滨理工大学,2016.彭俊;陈顺材;张泽;张诗;董铮.基于STM32的智能交通灯设计[J].电子测试,2022,(19):18-20+23.吴昊;蔡翔;杨佳沩;石洋铭;吴兆丰;罗贤林;黄利军.濒危特色物种信息监测系统设计[J].电子世界,2021,(24):162-163.丁青锋,王丽姚.基于复合传感器的人体健康监测系统设计[J].传感器与微系统,2019,38(11):82-84+88.徐均,王学勇,张谦,张文博.智能小区安防系统的设计与实现[J].工程建设与设计,2019(04):100-101.吕峻达,王景泰.基于单片机的人体心率监测系统的设计与实现[J].电子元器件与信息技术,2018(08):26-28.汪涛,田睿智,赵有明,等.基于STM32和滤波算法的生理参数多点监测系统及电路设计[J].实验技术与管理,2021,38(11):77-83+95.高明华,许丽金,柯成成,杨根红.基于Android便携式人体健康监测系统设计[J].现代电子技术,2017,40(12):86-89.刘雯;郑心雨;高宇晖;杨衍玥.基于nRF51-DK的智能心率手环设计[J].物联网技术,2019,9(01):75-77.岳骏;解乃军.基于STM32的物联网智能家居系统设计[J].工业仪表与自动化装置,2022,(02):27-31.周孟强;童忠晴;李刚.基于STM32的北斗/GPS定位系统的设计[J].电子制作,2018,(13):8-10.曹文昌,郭俊,刘志平,黄雪霁.一种便携式人体生理指标检测器的设计[J].自动化与仪器仪表,2015(09):66-68.AutonomicResearch;DataonAutonomicResearchDiscussedbyResearchersatWroclawMedicalUniversity(PassiveBilateralLegCyclingWithConcomitantRegionalCirculatoryOcclusionforTestingMechanoreflex-metaboreflexInteractionsInHumans)[J].ScienceLetter,2020.DingYourong,BaoKe,ZhangJianzhong.AnIntelligentSystemforDetectingAbnormalBehaviorinStudentsBasedontheHumanSkeletonandDeepLearning.[J].Computationalintelligenceandneuroscience,2022,2022.NguyenV.Dien,NguyenV.Tuan,LeT.P.Mai,NguyenV.Hieu,VuongQ.Phuoc,NguyenQ.N.Quynh,NguyenT.Hung,ToleranceofSCMNyquistandOFDMsignalsforheterogeneousfiber-opticandmillimeter-wavemobilebackhaullinksundertheeffectofpoweramplifiersaturationinducedclipping,ComputerNetworks,Volume204,2022.WANGJ,CUIE.TheDesignofaMultifunctionalRemote-ControlIntelligentVehicleBasedonSTC89C52[J].AppliedMechanicsandMaterials,2015,4113(789).ZOUH,ZHOUY,YANGJ,CostasJ.Spanos.TowardsoccupantactivitydrivensmartbuildingsviaWiFi-enabledIoTdevicesanddeeplearning[J].Energy&Buildings,2018,177.LIANGM,HEY,CHENL.GreenhouseEnvironmentdynamicMonitoringsystembasedonWIFI[J].IFACPapersOnLine,2018,51(17).

附录电路图源代码#include"led.h"#include"delay1.h"#include"usart1.h"#include"usart2.h"#include"timer2.h"#include"timer3.h"#include"timer4.h"#include"wifi.h"#include"stdio.h"#include"math.h"#include"mqtt.h"#include"ds18b20.h"#include"stdio.h"#include"oled.h"#include"myiic.h"#include"timer1.h"#include"stdlib.h"#include"MAX30100.h"#include"stm32f10x.h"#include"MAX30100_Filters.h"#include"MAX30100_PulseOximeter.h"#include"MAX30100_SpO2Calculator.h"#include"mpu6050.h"#include"inv_mpu.h"#include"inv_mpu_dmp_motion_driver.h"voidstae(void);u8flag=0;u32TimingDelay=0;u16led_count=0;u8str[20];//字符串缓存_Boolsend_flag=0;//发送标志位u8mpu_flag=0;//人体跌倒检测标志位标志位1、2任意一个异常该标志位为1【1:跌倒,0:正常】_Boolmpu_1_flag=0;//人体跌倒检测标志位1角度异常标志【1:异常,0:正常】_Boolmpu_2_flag=0;//人体跌倒检测标志位2加速度异常标志【1:异常,0:正常】intSVM;//人体加速度向量幅值SVM和微分加速度幅值的绝对平均值DSVM是区分人体运动状态的重要参量。SVM通过计算加速度幅度表征人体运动的剧烈程度,其值越大表明运动越剧烈。u8t=0,i=10;u8T;u8ZT;u16XueYa;u8BJ=0;char*subString;char*subStringNext;signedshortHeartRate_val=0;//心跳速率u8SPO2_val=0;//血氧浓度floatpitch,roll,yaw;//欧拉角shortaacx,aacy,aacz;//加速度传感器原始数据intmain(void){LED_Init();Usart1_Init(9600);Usart2_Init(115200);//串口2功能初始化,波特率115200TIM4_Init(300,7200);//TIM4初始化,定时时间300*7200*1000/72000000=30msWiFi_ResetIO_Init();//初始化WiFi的复位IOMQTT_Buff_Init();//初始化接收,发送,命令数据的缓冲区以及各状态参数AliIoT_Parameter_Init();//初始化连接阿里云IoT平台MQTT服务器的参数DS18B20_Init();OLED_Init();//初始化OLED模块SCLK接到“B7”脚SDIN接到“B6”脚IIC_Init();//血氧浓度模块IICSCLK接到“B8”脚SDIN接到“B9”脚TIM1_Init();//每1ms执行一次中断,RunTime每1ms加1SPO2_Init();MPU_Init();//初始化MPU6050delay_ms(1000);//等待初始化稳定while(mpu_dmp_init()){delay_ms(200);u1_printf("连接已拒绝,未知状态,准备重启\r\n");}u1_printf("连接已拒绝,未知状态,准备重启\r\n");show_interface();//显示主界面while(1){if(flag==1){POupdate();//更新FIFO数据血氧数据心率数据show_temp(T);//屏幕显示温度T=DS18B20_Get_Temp()/10;//获取人体温度//====MPU6050数据获取====if((t%10)==0){if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0){MPU_Get_Accelerometer(&aacx,&aacy,&aacz);//得到加速度传感器数据SVM=sqrt(pow(aacx,2)+pow(aacy,2)+pow(aacz,2));//分析x、y、z角度的异常判断if(fabs(pitch)>40||fabs(roll)>40||fabs(yaw)>40)//倾斜角度的【绝对值】大于40°SVM大于设定的阈值时,即认为摔倒mpu_1_flag=1;elsempu_1_flag=0;//分析加速度SVM的异常判断if(SVM>23000||SVM<12000)i=0;i++;if(i<=10)mpu_2_flag=1;else{i=10;mpu_2_flag=0;}//综合欧拉角、SVM异常判断异常if(mpu_2_flag||mpu_1_flag)mpu_flag=1;elsempu_flag=0;show_mpu(mpu_flag);}t=0;}t++;delay_ms(10);}/**//*Connect_flag=1同服务器建立了连接,我们可以发布数据和接收推送了*//**/if(Connect_flag==1){/**//*处理发送缓冲区数据*//**/if(MQTT_TxDataOutPtr!=MQTT_TxDataInPtr){//if成立的话,说明发送缓冲区有数据了if((MQTT_TxDataOutPtr[2]==0x10)||((MQTT_TxDataOutPtr[2]==0x82)&&(ConnectPack_flag==1))||(SubcribePack_flag==1)){u1_printf("发送数据:0x%x\r\n",MQTT_TxDataOutPtr[2]);//串口提示信息MQTT_TxData(MQTT_TxDataOutPtr);//发送数据MQTT_TxDataOutPtr+=BUFF_UNIT;//指针下移if(MQTT_TxDataOutPtr==MQTT_TxDataEndPtr)//如果指针到缓冲区尾部了MQTT_TxDataOutPtr=MQTT_TxDataBuf[0];//指针归位到缓冲区开头}}/*处理接收缓冲区数据*/if(MQTT_RxDataOutPtr!=MQTT_RxDataInPtr){//if成立的话,说明接收缓冲区有数据了u1_printf("接收到数据:");/*处理CONNACK报文*///if判断,如果第一个字节是0x20,表示收到的是CONNACK报文//接着我们要判断第4个字节,看看CONNECT报文是否成功if(MQTT_RxDataOutPtr[2]==0x20){switch(MQTT_RxDataOutPtr[5]){case0x00:u1_printf("CONNECT报文成功\r\n");//串口输出信息ConnectPack_flag=1;//CONNECT报文成功,订阅报文可发break;//跳出分支case0x00//跳出分支case0x05default:u1_printf("连接已拒绝,未知状态,准备重启\r\n");//串口输出信息Connect_flag=0;//Connect_flag置零,重启连接break;//跳出分支casedefault}}//if判断,第一个字节是0x90,表示收到的是SUBACK报文//接着我们要判断订阅回复,看看是不是成功elseif(MQTT_RxDataOutPtr[2]==0x90){switch(MQTT_RxDataOutPtr[6]){case0x00:case0x01:u1_printf("订阅成功\r\n");//串口输出信息SubcribePack_flag=1;//SubcribePack_flag置1,表示订阅报文成功,其他报文可发送LED2=0;Ping_flag=0;//Ping_flag清零TIM3_ENABLE_30S();//启动4s的PING定时器TIM2_ENABLE_2S();//启动4s的上传数据的定时器flag=1;stae();break;//跳出分支default:u1_printf("订阅失败,准备重启\r\n");//串口输出信息Connect_flag=0;//Connect_flag置零,重启连接break;//跳出分支}}//if判断,第一个字节是0xD0,表示收到的是PINGRESP报文elseif(MQTT_RxDataOutPtr[2]==0xD0){u1_printf("PING报文回复\r\n");//串口输出信息if(Ping_flag==1){//如果Ping_flag=1,表示第一次发送Ping_flag=0;//要清除Ping_flag标志}elseif(Ping_flag>1){//如果Ping_flag>1,表示是多次发送了,而且是2s间隔的快速发送Ping_flag=0;//要清除Ping_flag标志TIM3_ENABLE_2S();//PING定时器重回4s的时间}}//if判断,如果第一个字节是0x30,表示收到的是服务器发来的推送数据//我们要提取控制命令elseif((MQTT_RxDataOutPtr[2]==0x30)){u1_printf("服务器等级0推送\r\n");//串口输出信息MQTT_DealPushdata_Qs0(MQTT_RxDataOutPtr);//处理等级0推送数据}MQTT_RxDataOutPtr+=BUFF_UNIT;//指针下移if(MQTT_RxDataOutPtr==MQTT_RxDataEndPtr)//如果指针到缓冲区尾部了MQTT_RxDataOutPtr=MQTT_RxDataBuf[0];//指针归位到缓冲区开头}//处理接收缓冲区数据的elseif分支结尾/**//*处理命令缓冲区数据*//**/if(MQTT_CMDOutPtr!=MQTT_CMDInPtr){//if成立的话,说明命令缓冲区有数据了u1_printf("接收到的数据:%s\r\n",&MQTT_CMDOutPtr[2]);//串口输出信息MQTT_CMDOutPtr+=BUFF_UNIT;//指针下移if(MQTT_CMDOutPtr==MQTT_CMDEndPtr)//如果指针到缓冲区尾部了MQTT_CMDOutPtr=MQTT_CMDBuf[0];//指针归位到缓冲区开头}//处理命令缓冲区数据的elseif分支结尾}/**//*Connect_flag=0同服务器断开了连接,我们要重启连接服务器*//**/else{u1_printf("需要连接服务器\r\n");//串口输出信息TIM_Cmd(TIM4,DISABLE);//关闭TIM4TIM_Cmd(TIM3,DISABLE);//关闭TIM3WiFi_RxCounter=0;//WiFi接收数据量变量清零memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收缓冲区if(WiFi_Connect_IoTServer()==0){//如果WiFi连接云服务器函数返回0,表示正确,进入ifu1_printf("建立TCP连接成功\r\n");//串口输出信息Connect_flag=1;//Connect_flag置1,表示连接成功WiFi_RxCounter=0;//WiFi接收数据量变量清零memset(WiFi_RX_BUF,0,WiFi_RXBUFF_SIZE);//清空WiFi接收缓冲区MQTT_Buff_ReInit();//重新初始化发送缓冲区}}}}/**//*函数名:采集数据,并发布给服务器*//**/voidstae(void){chartp[256];LED2=~LED2;USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//开启中断delay_ms(100);if(Save_Data.isGetData){Save_Data.isGetData=false;for(i=0;i<=6;i++){if(i==0){if((subString=strstr(Save_Data.GPS_Buffer,","))==NULL)u1_printf("解析错误");;//errorLog(1);//解析错误}else{subString++;if((subStringNext=strstr(subString,","))!=NULL){charusefullBuffer[2];switch(i){case3:memcpy(Save_Data.latitude,subString,subStringNext-subString);break;//获取纬度信息case4:memcpy(Save_Data.N_S,subString,subStringNext-subString);break;//获取N/Scase5:memcpy(Save_Data.longitude,subString,subStringNext-subString);break;//获取经度信息case6:memcpy(Save_Data.E_W,subString,subStringNext-subString);break;//获取E/Wdefault:break;}subString=subStringNext;Save_Data.isParseData=true;if(usefullBuffer[0]=='A')Save_Data.isUsefull=true;elseif(usefullBuffer[0]=='V')Save_Data.isUsefull=false;}else{u1_printf("解析错误");//打印;//errorLog(2);//解析错误}}}}USART_ITConfig(USART1,USART_IT_RXNE,DISABLE);//开启中断sprintf(tp,"{\"method\":\"perty.post\",\\"id\":\"2\",\"params\":{\"T\":%d,\"XL\":%d,\"XY\":%d,\\"ZT\":%d,\"JD\":\"%s\",\"WD\":\"%s\",\\"XX\":%d,\"BJ\":%d},\"version\":\"1\"}",T,HeartRate_val,SPO2_val,ZT,Save_Data.longitude,Save_Data.latitude,XueYa,BJ);MQTT_PublishQs0(P_TOPIC_NAME,tp,strlen(tp));//添加数据,发布给服务器}/**//*函数名:串口2接收中断函数*//*参数:无*//*返回值:无*//**/voidUSART2_IRQHandler(void){if(USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET){//如果USART_IT_RXNE标志置位,表示有数据到了,进入if分支if(Connect_flag==0){//如果Connect_flag等于0,当前还没有连接服务器,处于指令配置状态if(USART2->DR){//处于指令配置状态时,非零值才保存到缓冲区Usart2_RxBuff[Usart2_RxCounter]=USART2->DR;//保存到缓冲区Usart2_RxCounter++;//每接收1个字节的数据,Usart2_RxCounter加1,表示接收的数据总量+1}}else{//反之Connect_flag等于1,连接上服务器了Usart2_RxBuff[Usart2_RxCounter]=USART2->DR;//把接收到的数据保存到Usart2_RxBuff中if(Usart2_RxCounter==0){//如果Usart2_RxCounter等于0,表示是接收的第1个数据,进入if分支TIM_Cmd(TIM4,ENABLE);}else{//else分支,表示果Usart2_RxCounter不等于0,不是接收的第一个数据TIM_SetCounter(TIM4,0);}Usart2_RxCounter++;//每接收1个字节的数据,Usart2_RxCounter加1,表示接收的数据总量+1}}}/**//*函数名:定时器4中断服务函数*//*参数:无*//*返回值:无

温馨提示

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

评论

0/150

提交评论