屈晓,周挺,吴楷,林声广
(华南农业大学珠江学院,广东广州 510900)
一是医疗资源问题。目前农村医疗资源不足,技术比较落后。二是医院空间分布问题。一些乡村离医院比较远,甚至没有医院、诊所,无法进行及时就医,去医院成本较高。三是医疗系统人工智能化程度低[1]。医院、诊所没有集医疗App 和硬件模式配合在一起的系统,增加医务人员工作难度以及患者的不便。
以人为本一直是团队创作的出发点和落脚点,社会不断进步,经济能力不断提高,人们越来越意识到身体健康的重要。但是人们无论看大病还是小病都需要到医院排队挂号,还需要花费很长的时间,所以在工作繁忙时,大多数人就没时间去医院,长期以往还会造成了身体亚健康的状态。综上所述,本文开发一种基于嵌入式医疗设备配合医疗App,为用户搭建一个良好的医疗平台。
该系统分为硬件设计和App 设计。其他模块功能根据两大模块进行扩展。功能层次结构图如图1所示。
图1 功能层次结构图
在登录时,用户可以通过账号和密码进行登录操作,或者通过手机号进行验证码登录,App 登录流程模块如图2。
图2 登录流程图
用户进行登录操作后进入测量数据页面并连接硬件设备进行身体指标测量,同时将硬件测得的数据传回App 测试数据页面[2],图3 是测试身体指标的流程图。
图3 测量身体指标流程图
在整个系统中,STM32F103C8T6微控制器充当着主控制器的角色,通过各个模块之间的协同配合,实现了对患者生理数据的实时采集、处理和传输。同时,系统的扩展性也非常强,可以通过增加或替换传感器和模块,实现更多功能的扩展和应用。硬件系统整体工作流程图4所示。
图4 硬件系统整体工作流程图
通过需求分析可知,用户测完数据时,对测量的数据进行保存,所以一个用户可以对应多组数据,另外用户对系统的浏览,对所反馈的意见进行上传,所以对反馈意见的表与用户表也多对一关系,以此类推。根据App 功能的需实体对象建立相关关系构建数据库模型,如图5所示。
图5 数据库关系图
App 的后端使用了SpringBoot+JWT+Redis+Spring Data JPA 构成了后端框架,这可以构成后端的持久性,安全性。
1)SpringBoot框架
后端层次分为接口层、服务层、数据库层、工具层、异常处理层等。接口层是连通前端的桥梁,通过delete、post、get 发送请求。服务层是处理后端的逻辑代码。数据库层是直接与MySQL 连接的。工具层是装有对一些逻辑处理的工具,例如返回的参数类、JWT工具类、Redis方法调用类等[3]。异常处理层是处理后端发生异常时进行捕获。
2)JWT的运用
用户在登录成功后,根据JWT 的内置函数生成token。如果用户想要访问登录以后才能访问的模块(比如个人中心),我们就可以验证用户发送的请求携带的token,如果没有抛出异常,则说明已经登录过了,否则拒绝访问,转到登录页。
3)Redis的运用
本系统运用Redis 来缓存常访问的值,减少了对数据库的访问,而且Redis 的访问速度比MySQL 的访问速度快。
4)Spring Data JPA的运用
本系统运用了Spring Data JPA对App的数据是实现了CRUD操作,对App的数据持有持久性。
Spring Data JPA 提供了一些常用的接口,如JpaRepository、JpaSpecificationExecutor 等,这些接口包含了很多常用的CRUD 操作方法,可直接继承使用。同时,Spring Data JPA 还提供了基于方法命名规范的查询方式,可以根据方法名自动生成相应的SQL 语句,并执行查询操作。这种方式可以大大减少编写SQL 语句的工作量。
本系统使用此框架进行与数据库的直接交互。
5)Postman的调用
后端通过Postman 调用controller 接口进行测试,检测后端数据是否可以与前端通信。
前端框架运用Vue3.0进行部署,每一个组件通过路由渲染不同的数据,同时运用Vant组件库进行页面的前端布局,调用Axios第三方库对后端的数据进行通信,利用路由(router)进行页面的跳转。
1)Axios的运用
Axios 是一个基于Promise 的HTTP 库,简单地讲就是可以发送get、post、delete等请求。可以将后端请求的数据渲染到前端。
2)router的运用
本系统引用router,进行页面的跳转,能前端页面渲染不同的数据。并且利用路由守卫来截取页面是否获取token以达到此App的安全性[4]。
3)Vant组件库的调用本系统运用Vant的组件库对前端页面进行布局,例如搭建导航栏、列表、搜索框等。
该系统将STM32F103C8T6 作为系统的主控制元器件,它采用了ARM Cortex-M3内核,具有高速运算、低功耗和强大的通信接口等特点。在该系统中,STM32F103C8T6 通 过I2C 接 口 连 接MAX30102 传 感器,用于实时监测患者的心率和血氧浓度。同时,STM32F103C8T6 还通过1-wire 接口连接DS18B20 温度传感器,用于实时监测患者的体温变化。蜂鸣器是该系统的报警器,它通过PWM接口连接STM32F103C 8T6,用于在患者生命体征异常时进行声音报警[5]。OLED 显示屏通过SPI 接口连接STM32F103C8T6,用于显示患者生命体征数据和其他信息。App 和HC-08蓝牙模块通过UART接口连接STM32F103C8T6,用于与App端进行数据交互和实现远程控制。
此外,该系统还使用了按键设备,用于方便患者或医护人员对系统进行操作和控制。按键通过GPIO接口连接STM32F103C8T6,实现对系统功能的快速切换和操作。系统的硬件框图如图6所示。
图6 系统的硬件框图
图7 蜂鸣器引脚图
蜂鸣器是一种能够产生音频信号的电子元件,它通常用于发出警报、提醒和提示等应用场合。蜂鸣器可分为有源蜂鸣器和无源蜂鸣器两种类型。有源蜂鸣器需要外部电源供电,而无源蜂鸣器则不需要外部电源,它们利用自身共振频率产生声音。本系统采用的是有源蜂鸣器。本系统使用的蜂鸣器技术参数如表1所示。
表1 蜂鸣器的基本技术参数
蜂鸣器的PCB图如7所示:
OLED显示屏本身发光,因此不需要背光源,这使得OLED显示屏更加薄型化,可弯曲,更加适用于移动设备、手表和可穿戴设备等应用场景。本系统中采用的是12864 OLED 显示屏,该款显示屏的技术参数如表2所示。
表2 OLED显示屏的基本技术参数
OLED显示屏的PCB布局如图8所示:
图8 OLED显示屏引脚图
用户可以通过手机接收的验证码进行登录或者通过账号和密码进行登录,登录成功后进入App界面进行操作反之继续停留在登录页面。
图9是登录页面的时序图。
图9 登录时序图
本系统的App与硬件设备通信是通过蓝牙模块,本系统的App与硬件测量设备是通过蓝牙连接。
图10是App与硬件设备的五个交接协议图。
图10 App与硬件通信图
用户可以在App端的测量数据页面,进行连接硬件设备与身体指标的测量,在此页面中,用户点击App启动连接按钮,当App显示连接成功时,表示App与硬件连通,用户可以利用硬件设备进行身体指标测量,然后用户点击App的相应参数按钮将硬件测的数据传回到App中进行保存。
如图11是测量身体指标的时序图。
图11 身体指标测量的时序图
前端利用Vue生命周期中的mounted来调取后端的爬虫接口,后端的服务层进行函数逻辑处理进行对新闻的爬取。
如图12是爬去今日时政的时序图。
图12 爬去今日时政的时序图
为了能达到发出警报信息,并且能手动确认/取消警报信号,需要用到蜂鸣器、按键这两个部件。上述两个器件,在软件配置中,较为简单,因此一并介绍。
1) 配置IO 口:初始化蜂鸣器、按键的输入端口号。
2)配置蜂鸣器:使用HAL_GPIO_WritePin 函数来控制GPIO输出来控制蜂鸣器。
3) 配置按键:设置上/下沿触发,沿触发蜂鸣器、按键等软件初始化介绍。
由于MAX30102传感器只能测量心率、血压等信息,并不能精确测量体温信息,为此,本系统添加了DS18B20模块,作为温度传感器,用来测量体温信息。以下是DS18B20初始化,使其正常工作的步骤。
1)配置GPIO 引脚:DS18B20 使用GPIO 引脚作为1-Wire 总线,需要将GPIO 引脚设置为输出模式。使用GPIO_InitTypeDef结构体配置GPIO引脚,然后使用GPIO_Init()函数将配置应用于GPIO引脚。
2)发送初始化序列:在1-Wire 总线上通信之前,需要向DS18B20 发送初始化序列。初始化序列包括向1-Wire 总线发送复位脉冲,然后发送读取ROM 代码指令等。
3) 发送温度转换命令:将温度转换命令发送至DS18B20,启动温度转换程序。
4) 读取温度数据:温度数据可由DS18B20 用1-Wire总线在完成温度转换后进行读取。
测试用例:
测试目的是执行App的相应的流程,保证系统的正常使用和安全性。同时发现系统存在的错误,及时修改和完善。本系统使用策略表,适用于逻辑判断复杂的场景,通过相关条件获得结果,进行优化合并。
身体指标测量操作,如表3所示。
表3 测量身体指标测试
实物软硬件模块测试,如表4所示。
表4 实物软硬件模块测试表
本系统为Web 移动端搭配Stm32 嵌入式设备的一套系统设备,将开发系统部署在服务器上,实现不同移动端设备对此系统的使用,使用后端框架为SpringBoot+Spring Data JPA+Redis+JWT 和前端的Vue2.0。本系统提供对医疗设备的测量的操作,以及对硬件设备测量的数据进行保存操作,可以检测人体的血压、血氧、体温、心率以及当达到阈值时,蜂鸣器报警进行功能。总的来说,本系统为用户提供了一个可以查看自己身体指标的平台,为用户了解自己的身体健康情况提供了便捷的渠道。