基于无线通信的智能健康监护系统的设计与实现*

2024-04-08 10:09吴乐周殷婷孙嘉诚
电脑迷 2024年2期

吴乐 周殷婷 孙嘉诚

【摘  要】 文章主要介绍一款基于无线通信技术的智能健康监护系统,系统采用STM32F103VET6为主控制器,搭建LCD液晶屏幕为显示模块、BNO055姿态检测模块、心率血氧检测模块、DHT11温湿度传感器、WIFI无线通信模块和电源模块,软件设计包括STM32监控程序设计、液晶屏控制与显示程序设计、串行通信程序设计、WIFI无线通信程序设计。通过系统的软硬件设计,实现了心率、血氧、姿态角、温度和湿度等采集数据,并将采集的数据刷新到显示屏上和OneNET云平台供用户查看,在发生异常状态时蜂鸣器报警提示用户。

【关键词】 血氧浓度监测;环境温湿度监测;WIFI无线通信

一、总体设计方案

系统主要由STM32最小系统、WIFI无线通信模块、LCD液晶显示模块、传感器检测模块、报警电路和电源电路等搭建系统的硬件电路,通过程序设计,系统可实现实时监测用户的身体指标信息和环境数据,并在液晶显示屏上显示,还能将获得的信息通过WIFI上传到云端,供远程查看。

二、系统硬件设计

(一)主控模块电路

单片机最小系统由STM32单片机、时钟电路和复位电路构成,系统选用STM32F103VET6芯片作为核心处理器,选用内部flash启动。由于STM32F103VET6的复位是低电平有效,选用一个二脚非自锁按键作为复位开关,当按键按下后,单片机复位。

(二)传感器检测电路设计

心率、血氧(MAX30102传感器)和姿态角(MPU6050 传感器)检测都涉及IIC通信。IIC是一种串行总线,它采用半双工方式进行传输。包括SDA和SCL的数据线路,可以传输和接收數据。MAX30102传感器与MPU6050传感器都是通过IIC通信与单片机进行数据传输,它们皆为3.3V供电,MAX30102传感器的SCL与PB6口连接SDA与PB7连接, MPU6050传感器的SCL与PB8口连接SDA与PB9连接。温湿度环境检测电路采用单总线方式和STM32相连。

(三)液晶显示屏接口电路设计

系统使用3.2寸LCD液晶显示屏,显示屏只需要3.3V低电压即可驱动,显示效果好,同时功耗也很低,屏幕没有辐射、不闪烁。STM32通过并行通信接口与ILI9341液晶控制芯片进行通信,用于将数据和控制信号同时传输。它包括14个信号线。其中,8个数据线用于传输数据,5个控制线用于传输控制信号,复位线用于复位ILI9341液晶控制芯片。在进行通信时,需要将对应的信号线连接到STM32的GPIO口上,并编写相应的驱动程序,实现对ILI9341液晶控制芯片的控制和通信。

(四)WIFI无线通信接口电路设计

USART是一种通用的同步/异步串口通信协议,常用于将嵌入式系统与外部设备进行数据交换,系统通过USART电路将WIFI模块与单片机进行连接,实现单片机与WIFI模块的数据交互。USART中的RXD接收总线与单片机PB10发送总线连接,TXD发送总线与单片机PB11接收总线连接。

三、系统软件设计

软件设计涉及IIC和USART通信驱动程序、心率血氧检测程序、姿态检测程序、温湿度采集程序、ILI9341液晶屏驱动程序、WIFI数据上报程序。

(一)主程序设计

主程序为系统运行的主要逻辑,包括了各个模块的初始化管理与各模块之间的工作的管理,详细的流程如图1所示。

主程序执行过程是:1. 对单片机的时钟、串口、定时器等配置和各模块控制的GPIO口进行初始化。2. 调用各模块的函数,对采集的数据进行数据处理,用于增加对实时数据的准确度。3. 将实时的监测数据进行一定的评级,让用户能实时了解身体健康状况和周围环境的测量情况,并根据设置的阈值,超出阈值进行自动报警提示。4. 通过串行通信程序将实时的数据传送到WIFI模块,并且对系统所监测的数据进行可视化处理,让用户可以比较直观地了解健康状况。

(二)心率血氧检测程序设计

在心率血氧检测中,虽然传感器的精度很高,但由于环境光和其他干扰因素的存在,传感器可能会受到干扰,导致测量结果不准确。因此,需要对MAX30102采集到的数据进行FFT算法处理,得到信号的频谱分布,找到信号的主频率,进而得到准确的心率和血氧数据。MAX30102用的脉搏测量方法为光电容积法(PPG),PPG是一种无创测量心率和血氧饱和度的方法,常用于医疗和健康监测设备中。其原理是利用LED发出的光在皮肤组织中经过吸收和散射,被光电传感器接收,从而得到一个脉冲波形信号。当心脏跳动时,血液会通过动脉和组织,引起皮肤中的血容积变化,这种变化可以被PPG信号检测到,并通过信号处理获得心率和血氧饱和度等生理参数。

1. FFT算法分析

FFT(快速傅里叶变换)是一种广泛用于数字信号处理的技术,可以将时间域信号转换为频率域信号。在MAX30102中,红外和红色光信号可以被视为时间域信号,它们的频率域表示可以通过FFT计算得到。这个频域表示包含有关心率和血氧饱和度的信息。此外,FFT处理还可以减少噪声和其他干扰,提高数据质量和准确性。

以下是对MAX30102获取的PPG数据进行FFT处理的基本步骤:

(1)采集PPG数据:MAX30102通过光传感器采集心率和血氧的PPG数据。

(2)进行预处理:预处理包括滤波和去噪,以去除环境噪声和运动伪迹。

(3)进行FFT变换:将预处理后的PPG数据进行FFT变换,得到频率谱。可以使用MATLAB等工具进行FFT变换,或使用已有的FFT库函数。

(4)计算心率:通过在频率谱中查找峰值(s1_max_index)由公式(1)计算心率。

HeartRate=60.00×((100.0×s1_max_index)/512.00)(1)

(5)计算血氧饱和度:通过测量PPG信号由公式(2)通过红光和红外光的直流(AC_red和AC_ir)和交流(DC_red和DC_ir)的比例来计算血氧饱和度。

R=(AC_red/DC_red)/(AC_ir/DC_ir)  (2)

sp02num=-45.060×R×R+30.354×R+94.845  (3)

2. 心率和血氧数据读取

上述分析得知,由公式(1)和(2)可计算出实时的心率和血氧。心率和血氧的读取需要先启动IIC总线,再发送起始信号后读取接收到的温度,此时心率和血氧由于环境光和其他干扰因素的存在,传感器可能会受到干扰,通过公式(1)和(2)就可得到最接近于实时的心率和血氧。

3. 身体健康指标判定

心率和血氧的会有一定的阈值,为了减小不必要的交互,老年人的心率和血氧正常范围可能会受到多种因素的影响,如年龄、性别、身体状况等,因此具体正常范围可能存在差异。一般而言,老年人的正常心率应在60~100次/分钟之间,血氧饱和度应在95%以上。当心率和血氧超过阈值,屏幕会出现身体健康指标异常并发出声音报警。

(三)姿态检测程序设计

姿态检测是通过MPU6050集成了数字运动处理器(DMP)处理陀螺仪传感器的原始数据,再把处理好的结果传递给单片机看是否超出阈值,如果超出阈值则在显示屏上显示异常。其中涉及了DMP 驱动程序的设计和实现、姿态角的读取和姿态角状况的判定。

1. DMP驱动程序的设计

MPU6050集成了三轴陀螺仪和三轴加速度计,可以用于检测物体的姿态、运动状态等。但是,如果直接使用主控芯片进行姿态解算和运动处理,需要消耗大量的计算资源和功耗,且算法实现复杂,容易出错。MPU6050提供了DMP功能。DMP是一种嵌入在传感器芯片内部的处理器,可以实现姿态解算、方向计算等处理,并将处理后的数据输出给主控芯片,从而减轻主控芯片的计算负担和功耗。提供更为精确和稳定的姿态解算结果。

2. 姿态检测判定

通过传感器的模拟摔倒状况,可以得到当摔倒时,传感器的俯仰角和横滚角的绝对值大于40度。

(四)USART通信程序设计

在USART通信协议中,数据传输需要指定一些参数,例如波特率、数据位、停止位和校验位等。这些参数在通信之前需要事先确定,并且在發送和接收过程中必须保持一致。单片机和ESP8266都设置同样的数据结果,数据中开始的帧头为00xAA和0xBB,当数据结束依赖于数据包长度和结束符(例如“\r\n”)。单片机解析数据过程是通过USART中断来实现,先对帧头进行检测,假使读取正确将数据位存储到BUFF内,最后再对帧尾进行检测。在其他功能下就可调用BUFF内的数据进行处理。

四、系统调试

系统可以实现远距离监测,通过访问网页(https://open.iot.10086.cn/view/main/index.html#/share2d?id= 643c2e4ee18f8400 4095111d)的方式进行远程监测,此功能通过采集数据上传OneNET云平台和OneNET云平台可视化实现。

参考文献:

[1] 骆培涛. 空巢老人风险分析与应对[J]. 安家,2018(05):46-47.

[2] 刘小滨,刘寅,沈文浩. 基于STM32单片机的环境温/湿度远程监控系统设计[J]. 中国造纸学报,2022,37(03):118-125.

[3] 张琥石,林伟龙,杨发柱,等. 基于ESP8266 WiFi模块的物联网体温监测系统[J]. 物联网技术,2020,10(12):32-35.