1软件设计语言及其应用
Python作为一门计算机软件开发语言,其定位较为简单、明确,且具有较为丰富的类库,能够对所采用的各项代码的精准性进行保障,[1]并且在遇到各项错误时及时进行合理修正,因此选用Python作为脉诊仪的主要环境语言。
脉诊仪的整体程序设计如下
import time
class PulseImage:
def __init__(self):
self.pulse_data = []
def record_pulse(self, pulse_parameter):
self.pulse_data.append(pulse_parameter)
def analyze_pulse(self):
if len(self.pulse_data) == 0:
print("没有可分析的脉象数据")
return
average_pulse = sum(self.pulse_data) / len(self.pulse_data)
print(f"脉象特征为 {characteristic_pulse}")
if characteristic_pulse != predata:
print("脉搏正常")
else:
print("可能存在中风疾病的风险,请采取措施")
self.trigger_alarm()
def trigger_alarm(self):
# 发出报警信号的代码,这里假设使用time.sleep()模拟报警信号的持续时间
print("发出报警信号")
time.sleep(5) # 假设报警信号持续5秒
def clear_data(self):
self.pulse_data = []
def main():
monitor = PulseImage()
while True:
user_input = input("请输入脉搏率(输入q退出):")
if user_input.lower() == "q":
break
try:
pulse_rate = int(user_input)
monitor.record_pulse(p
2系统整体工作流程设计
采集由传感器传输的脉象基本数据,将病人的正常脉象信息复合参数进行分析,提取“位数形势”的特征信息,从多个维度来进行统计和观察,并判断佩戴者的正常脉象特点,建立佩戴者的正常脉象数据库。采集佩戴者的实时脉象信息,提取其“位数形势”的特征信息与数据库进行比对、分析,以中风病的脉象特征为判断基础,确定疾病突发的阈值,通过个体化诊疗来实现对疾病的判断。下图1是本系统的软件工作流程图。
图1软件工作流程图
2.1脉象采集模块设计
2.1.1基于MEMS的脉象采集
主要由传感器、FPGA与ARM组成。其中加速度传感器,陀螺仪以及磁传感器共输出9路模拟信号,通过A/D转换将模拟信号转换成16位数字信号,FPGA通过相关I2C总线协议与传感器进行通信,传感器对FPGA发出指令应答之后,FPGA读取传感器的内部数据,存于FIFO存储器中,然后通过ARM处理器中断采集接收,ARM处理器将进行存储,通过无线传输协议传输到上位机或存储器中。将采集到的运动状态数据读取之后,首先通过坐标系转换,将载体坐标系转换到地理坐标系,对得到的加速度信号再通过Kalman随机噪声滤波与零状态自适应消除累计误差,得到更加精确的运动状态数据。[2]
2.1.2基于DataSocket的脉象数据传输
先在发送方计算机上单独创建一个DataSocket连接,通过指定目标地址(接收方计算机的IP地址)和端口号来建立两者之间的联系。具体可以使用DataSocket提供的API或者编程语言的相关库函数来完成这个操作步骤。二者之间一旦建立起了联系,在发送方计算机上可以使用DataSocket来发送数据。
利用DataSocket技术和internet通信技术建立数据传输系统,并不需要采用太多复杂的底层编程,但却能够充分利用现有资源和网络带来的种种好处,以实现各种资源最有效合理的配置且,具有一定的可靠性和安全性。符合脉诊仪的设计需求。
2.2脉象信号分析与处理模块设计
2.2.1小波阈值去噪
脉象信息去噪采用小波阈值去噪方,其应用较为广泛。该方法的基本原理是,先选定一个阈值,凡是低于该临界阈值的小波系数被认是噪声信号,并对其进行剔除,阈值选取方式可以把弱信号筛选出来,低频去噪效果较好。[3]
2.2.2时频域联合特征提取
时频联合分析将信号由一维状态转换为时间和频率的二维函数,即时频平面,从而表示出各个时刻的谱成分。人体循环系统是极其复杂的,它将各种动态特性在时间和空间上进行標合,也使得包含的信息具有非线性。因此,从整个循环系统的角度来看,脉象信号更适合被认定为一种非线性、非平稳信号。相比单纯的时域分析或频域分析,时频域联合分析提取特征更符合人体生理特征。[4]
3.2.3脉象的模式识别
脉象模式识别的关键核心在于对特征值的提取。对一个脉搏波周期内的特征值进行分析。模式识别函数的判别规则:先以脉搏波的周期为分界点,若已经被分割好的脉搏波的周期大小相等,则将脉象分三种,分别为促脉、代脉和结脉。若已经被分割好的脉搏波的周期大小不相等,则属于脉律的异常现象,分为脉率,脉行,脉位异常三种。脉率异常就是芤脉。脉行异常包含弦脉、滑脉、涩脉、弦脉、紧脉大脉、小脉、细脉和长脉九种脉象。脉位异常则包含缓脉、数脉、迟脉和疾脉四种。[5]
3.3GPS定位传输与接收模块设计
GPS模块跟踪灵敏度高、功耗低、体积小。本研究中定位模块选用NEO-6M-0-001,使该模块具有灵敏度高、静态漂移低、功耗低、体积小等特点,适用于本研究的腕表设备,是GPS产品的理想选择。
GPS模块运行流程如图所示
图2GPS运行流程图
3.4WiFi通讯与OLED显示模块设计
3.4.1基于ESP8266芯片的WiFi通讯模块
WiFi模块作为智能手环系统中的重要组成部分,主要用于实现WiFi定位功能和腕表与服务器之间的通信。拟采用ESP8266芯片来完成WiFi模块的设计和开发。ESP8266 WiFi模块是一种可编程的、低功耗、高性价比的无线网联芯片方案。它支持TCP/IP协议栈,并可以通过串口实现与其他设备的连接和通讯。ESP8266 WiFi模块与STM32F103C8T6主控芯片之间的通信通过串行实现,ESP8266模块可以通过UART(串行通信)与STM32F103C8T6进行数据交换。ESP8266的主要引脚连接如下:VCC,电源正极接口,连接至3.3V电源;RXD、TXD串口通信引脚,分别与STM32F103C8T6主控板上的PA9和PA10引脚相连。在连接之后,需要配置串口通信参数,使用AT指令设置波特率为9600,数据位为8位,停止位为1位,无校验位,以确保数据的准确传输和接收。[6]
3.4.2OLED屏幕显示模块
OLED屏幕功耗低、响应速度快、体积。其作用是接收并显示STM32F103C8T6单片机传送过来的脉象数据和定位地图等,OLED屏幕VCC引脚连接到+3.3V电源供电,SDA连接STM32的PB11引脚,SCL连接STM32的PB10引脚,确保与STM32能够保持正常通信。连接好OLED屏幕之后对其进行初始化,配置通信接口并编写OLED驱动程序,以显示图像和文字。 [7]
4结论
此款产品主要利用微机电生物压力传感器对佩戴人群进行脉象信息的采集,对前期采集的信息进行信息整理和储存,与中风病脉象特征进行比对,建立针对个体脉象的病理判断标准,当实时监测的数据超过这一标准时,实施自主定位和报警功能。具有一定的现实意义和前景。
参考文献
[1] 阿不都艾尼·阿不都肉素力.Python的计算机软件应用技术分析【J】.电脑编程技巧与维护,2021,No.435(09):29-30+58.
[2] 陈健伟,陈鸿,王晋祺,苏明辉.基于MEMS传感器的数据采集识别系统设计【J】.电子器件,2019,42(02):463-468.
[3] 刘攀.基于HHT和多分类支持向量机的脉象信号分析与研究【D】.华东理工大学,2015(12).
[4] 曾俊峰.基于MATLAB的中医脉象模式识别及应用研究【D】.燕山大学,2017(11).曾俊峰.基于MATLAB的中医脉象模式识别及应用研究【D】.燕山大学,2017(11).
[5] 朱扬,杨延宁,董晨乐,冯树栋,杜永星.基于STM32F103C8T6的游乐场智能手环设计【Z】.计算机测量与控制.
[6] 王彰云.基于STM32智能手环控制系统设计与实现【J】.湖北农机化,2020,No.254(17):108-109