屈曉,周挺,吳楷,林聲廣
(華南農業大學珠江學院,廣東廣州 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。本系統提供對醫療設備的測量的操作,以及對硬件設備測量的數據進行保存操作,可以檢測人體的血壓、血氧、體溫、心率以及當達到閾值時,蜂鳴器報警進行功能。總的來說,本系統為用戶提供了一個可以查看自己身體指標的平臺,為用戶了解自己的身體健康情況提供了便捷的渠道。