楊 茹,陳 亮
(中國計量大學 光學與電子科技學院,浙江 杭州 310018)
隨著云平臺、物聯(lián)網(wǎng)時代的到來,智慧醫(yī)療得到了廣泛的認可[1]。在智慧醫(yī)療的大環(huán)境影響下,實現(xiàn)人體心率血壓體征參數(shù)的即時、準確、快速監(jiān)測對于疾病的早期預(yù)防和發(fā)現(xiàn)具有重要意義[2]。
目前傳統(tǒng)血壓測量方法有多種,主要包括動脈張力法、示波法以及容積補償法等[3]。它們的共同特點是在測量過程中都需要使用壓力式充氣袖帶,會給用戶造成輕微不適感,并且測量過程需要1 min左右,不能及時捕捉到人體的實時血壓,且攜帶不方便,對高血壓的預(yù)防與監(jiān)測沒有起到良好的積極作用[4]。而市面上的便攜式的血壓監(jiān)測設(shè)備,如智能手環(huán)等,又缺乏用戶健康數(shù)據(jù)管理功能,因此市場上極需要一款能夠連續(xù)測量心率血壓的便攜式健康管理系統(tǒng)。
本設(shè)計為基于光電傳感技術(shù)的端云一體化心率血壓智能監(jiān)測系統(tǒng),實現(xiàn)了人體多體征參數(shù)的檢測。系統(tǒng)由智能監(jiān)測傳感器設(shè)備、應(yīng)用終端和云平臺三部分組成。通過監(jiān)測血壓、心率等體征參數(shù),判斷用戶的健康狀況,當發(fā)生異常時可及時預(yù)警。系統(tǒng)監(jiān)測參數(shù)多元化、實時性能高,可實現(xiàn)數(shù)據(jù)的遠程傳輸、處理和展示。有助于建立人體健康監(jiān)測新模式,在穿戴式健康監(jiān)測設(shè)備領(lǐng)域有著廣闊的應(yīng)用前景[5]。
本系統(tǒng)設(shè)計包含數(shù)據(jù)采集前端(含心率血壓監(jiān)測傳感器、數(shù)據(jù)傳輸、數(shù)據(jù)處理中間件)、數(shù)據(jù)云平臺分析存儲模塊和數(shù)據(jù)可視化終端(即PC客戶應(yīng)用終端)三個部分。
數(shù)據(jù)采集前端采用STM32F103單片機作為主控模塊,搭載MKB0805心率血壓采集模塊,其傳感器利用光電容積脈搏波描記法(Photo Plethysmo Graphy,PPG),通過手腕或指尖采集人體心率血壓數(shù)據(jù),數(shù)據(jù)會實時顯示在T5L_DGUS串口屏上,而后通過搭載的ME3616窄帶物聯(lián)網(wǎng)(Narrow Band-Internet of Things,NB-IoT)模塊,采用傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP)將采集的數(shù)據(jù)以自定義的數(shù)據(jù)包格式發(fā)送至云服務(wù)器。
數(shù)據(jù)云平臺通過云服務(wù)器上部署的中間件服務(wù)程序進行數(shù)據(jù)分析,以保證傳輸數(shù)據(jù)的準確與唯一性,將最終數(shù)據(jù)存儲至MYSQL數(shù)據(jù)庫中。
數(shù)據(jù)可視化終端通過PC客戶端服務(wù)軟件,進行心率血壓歷史數(shù)據(jù)的直觀展示分析。系統(tǒng)的整體框架圖,如圖1。
圖1 系統(tǒng)總體設(shè)計框圖Figure 1 System design block diagram
目前比較流行的主控模塊主要有51單片機、STM32單片機、應(yīng)用范圍較廣泛的ARM控制器等。其中51單片機需要仿真器來實現(xiàn)軟硬件的調(diào)試,較為繁瑣,并且其片上資源相對較少,不能滿足本設(shè)計要求;STM32單片機與ARM控制器相對于51單片機,可以實現(xiàn)本設(shè)計的所有需要。但是ARM控制器相對成本較高,并且要單獨配置開發(fā)環(huán)境。STM32單片機價格低廉,功能齊全,性價比最高。綜上,本系統(tǒng)的硬件采用STM32F103芯片作為主控模塊,構(gòu)成核心控制系統(tǒng)。
在單片機串口1(UART1)搭載心率血壓采集模塊,UART2搭載數(shù)據(jù)顯示模塊,UART3搭載WIFI模塊。單片機通過串口通信與各模塊進行數(shù)據(jù)交互,實現(xiàn)心率血壓數(shù)據(jù)采集、處理、分析以及實時顯示、異常報警、遠程傳輸?shù)裙δ?系統(tǒng)硬件結(jié)構(gòu)圖如圖2。
圖2 硬件結(jié)構(gòu)圖Figure 2 Hardware structure diagram
綜合比較市面上各種測試心率血壓的模塊,包括小米手環(huán)、HRV健康測量AD8232監(jiān)測傳感器、MAX30100心率血氧傳感器以及MKB0805連續(xù)心率血壓脈搏波傳感器,對比發(fā)現(xiàn)MKB0805傳感器可以實現(xiàn)通過手指接觸即可快速測得心率血壓且測量精度高,而且可以直接接入主控模塊,具有其他模塊所不具備的穩(wěn)定性。因此,心率血壓模塊采用MKB0805傳感器。
其基本原理為:血液在流動過程中產(chǎn)生周期性的脈搏波,脈搏波波形會隨著離心臟距離的不同會有時間上的延遲即脈搏波傳導時間,由Moens-Kortweg公式和Hughes[6-7]推導出人體血壓變化與動脈血管壁楊氏彈性量以及脈搏波傳導時間的關(guān)系[8-11]:
(1)
式(1)中,P為血壓值,E0為血壓值為零時血管壁彈性模量,h為血管壁厚度,d為血管內(nèi)徑,ρ為血液密度,PTT為脈搏波傳導時間,k為無量綱常數(shù),r為血管特性參數(shù)量值。由式(1)可知,血壓值和脈搏波傳導時間具有較好的相關(guān)性,由脈搏波傳導時間可以間接地得到血壓值。
心率血壓采集模塊主要由YK1801脈搏傳感器芯片、HR6707脈搏芯片、HR6816增益芯片和SFB9712算法芯片組成。其中YK1801脈搏傳感器采用光電式容積脈搏波描記(PPG)的方式采集人體的脈搏信號,再通過HR6816芯片組成的高阻抗、低噪聲、低溫漂的增益放大電路對心電信號和脈搏信號進行放大,其原理圖如圖3。放大之后的信號通過HR6707芯片內(nèi)置的RC濾波電路和低通數(shù)字濾波器進行濾波,獲得較平滑的信號[12-13]。再將信號輸入SFB9712算法芯片,最終輸出血壓、心率等串口信號。
圖3 心率血壓采集模塊增益電路圖Figure 3 Gain circuit diagram of heart rate and blood pressure acquisition module
本系統(tǒng)心率血壓采集模塊可實現(xiàn)心率血壓采集計算、脈搏心電波形輸出、血壓跟蹤監(jiān)測等人體健康指標采集。
本系統(tǒng)數(shù)據(jù)顯示模塊采用T5L_DGUS串口屏,T5LASIC是針對AIoT應(yīng)用設(shè)計的性價比高、功耗低、GUI和應(yīng)用高度整合的單芯片雙核ASIC IC,采用成熟和穩(wěn)定且應(yīng)用廣泛的8051核,1 T(單指令周期)高速工作,最高主頻250 MHz,其信號接口定義如表1。
表1 T5L_DGUS串口屏信號接口定義
相較于傳統(tǒng)的LCD顯示模塊,其顯示功能更加豐富,分辨率高及自帶觸摸功能,可實現(xiàn)人機交互需求,且與主控模塊通信方便,更滿足本系統(tǒng)的需求。
DGUS屏采用異步、全雙工串口(UART),串口模式為8n1,即每個數(shù)據(jù)傳送采用十個位,包括1個起始位,8個數(shù)據(jù)位,1個停止位。232/TTL通訊和主板T/R輸入輸出信號交叉接線,地線必須接上;485通訊485+接A+,485-接B-。串口的所有指令或數(shù)據(jù)都是16進制(HEX)格式。采用變量驅(qū)動模式工作,屏的工作模式和GUI的狀態(tài)完全由數(shù)據(jù)變量來控制。因此,串口指令只需要對變量進行讀、寫即可。
本系統(tǒng)數(shù)據(jù)展示模塊可實現(xiàn)數(shù)據(jù)采集控制、實時時鐘顯示、實時心率血壓顯示、歷史檢測數(shù)據(jù)查看、異常數(shù)據(jù)提示等功能。
ME3616系列NB-IoT模塊是一款內(nèi)嵌了TCP/IP網(wǎng)絡(luò)服務(wù)協(xié)議棧的NB-IoT無線通信IC??梢蕴峁┳畲?6 kb/s上行速率和34 kb/s下行速率。且模塊為極小尺寸LCC緊湊型封裝模塊,適用于可穿戴設(shè)備等對于模塊尺寸有嚴格要求的應(yīng)用領(lǐng)域。
傳統(tǒng)的數(shù)據(jù)傳輸WIFI模塊,只能在固定地點連接網(wǎng)絡(luò),具切換時間長、帶寬小、覆蓋半徑小,存在數(shù)據(jù)安全隱患。而NB-IoT通信技術(shù),具有低功耗、深覆蓋、多連接、低成本、架構(gòu)優(yōu)等特點。適合靜態(tài)業(yè)務(wù)與實時傳輸數(shù)據(jù)的業(yè)務(wù)場景[14-15],更加契合本系統(tǒng)便攜性的需求。因此,本系統(tǒng)的數(shù)據(jù)傳輸模塊采用NB-IoT模塊。
NB-IoT是在基于頻分雙工長期演進技術(shù)(Frequency Division Dual-Long Term Evolution,FDD-LTE)上改造而來的,物理層設(shè)計大部分沿用LTE系統(tǒng)技術(shù),上行采用單載波頻分多址(Single-carrier Frequency-Division Multiple Access,SC-FDMA),下行采用正交頻分復(fù)用技術(shù)(Orthogonal Frequency Division Multiplexing,OFDM)。高層協(xié)議設(shè)計沿用LTE協(xié)議,針對其小數(shù)據(jù)包、低功耗和大連接特性進行功能增強。
ME3616系列NB-IoT模塊的MCU主控模塊通過UART串口和AT指令可以與模組通信,通過模塊的指令集與主控模塊(STM32)串口通信實現(xiàn)數(shù)據(jù)傳輸功能的開發(fā)。MCU原理圖如圖4。
圖4 ME3616 MCU原理圖Figure 4 Schematic diagram of the ME3616 MCU
本系統(tǒng)NB-IoT數(shù)據(jù)傳輸模塊通過TCP/IP協(xié)議,可實現(xiàn)將數(shù)據(jù)采集前端的心率血壓數(shù)據(jù)傳輸至數(shù)據(jù)云平臺的中間件服務(wù)軟件,進行數(shù)據(jù)的后續(xù)處理與存儲。
本系統(tǒng)軟件開發(fā)環(huán)境分為兩部分:單片機主控模塊采用KeilV5為開發(fā)環(huán)境,使用C語言編寫程序?qū)崿F(xiàn)單片機與各模塊的交互;而數(shù)據(jù)處理中間件軟件與PC客戶端服務(wù)軟件采用Qt5.13.0進行軟件開發(fā),結(jié)合SQL命令、Matlab算法、云計算等聯(lián)合編程,實現(xiàn)了數(shù)據(jù)采集、實時顯示、遠程傳輸、異地存儲和歷史數(shù)據(jù)動態(tài)分析等功能。
3.1.1 心率血壓數(shù)據(jù)采集單元
心率血壓數(shù)據(jù)通過主控模塊STM32單片機控制MKB0805傳感器來進行采集,是整個系統(tǒng)的至關(guān)重要的環(huán)節(jié)。
首先通過主控模塊對心率血壓模塊進行校準,單片機每隔100 ms通過串口向MKB0805傳感器發(fā)送數(shù)據(jù)采集指令FD 00 00 00 00 00,模塊回復(fù)初始的心率血壓值。
采集到初始的數(shù)據(jù)后,將數(shù)據(jù)存入單片機內(nèi)存中,當數(shù)據(jù)達到20組后,開始數(shù)據(jù)預(yù)處理。遍歷20組數(shù)據(jù)進行異常值剔除,再進行均值求和處理,得到最終的心率血壓數(shù)值,并存儲到單片機的Flash中,數(shù)據(jù)采集單元流程如圖5。
圖5 心率血壓數(shù)據(jù)采集流程圖Figure 5 Flow chart of heart rate and blood pressure data collection
3.1.2 人機交互單元
在T5L_DGUS串口屏配備的開發(fā)軟件中進行GUI設(shè)置,分配相應(yīng)的數(shù)據(jù)變量顯示接口地址。
單片機根據(jù)串口屏的數(shù)據(jù)傳輸協(xié)議,對需要顯示的數(shù)據(jù)進行封裝、校驗,發(fā)送至對應(yīng)的顯示接口地址中,取出接口地址的數(shù)據(jù)在屏幕中對應(yīng)控件進行顯示。在GUI設(shè)置添加相應(yīng)的觸控控件并在T5L芯片中分配對應(yīng)的觸控地址,觸摸屏幕時,通過串口向單片機發(fā)送對應(yīng)的觸控位置,單片機對接收的數(shù)據(jù)進行解析,實現(xiàn)對應(yīng)的人機交互功能操作,展示界面如圖6。
圖6 人機交互展示界面Figure 6 Human-computer interface
3.1.3 異常報警單元
對于處理完成的心率血壓數(shù)據(jù),在軟件中提前設(shè)定心率血壓的健康值范圍,首先與健康值范圍進行對比,若超出范圍則觸發(fā)串口屏的蜂鳴器報警信號,并在串口屏的交互界面彈出報警提示。若數(shù)值屬于健康范圍,繼而與單片機Flash中存儲的歷史數(shù)據(jù)進行比對,如若變化率超過設(shè)定的閾值,則同樣觸發(fā)報警信號,并且將異常的數(shù)據(jù)存入單片機Flash中,以便用戶在交互界面進行歷史異常數(shù)據(jù)查詢。
系統(tǒng)數(shù)據(jù)采集完成后,得到本地的心率血壓數(shù)據(jù),為了方便數(shù)據(jù)的存儲與管理,我們利用單片機串口與ME3616通訊,發(fā)送AT指令,將數(shù)據(jù)發(fā)送至指定云服務(wù)器。先將ME3616模塊連接到網(wǎng)絡(luò),成功附著到網(wǎng)絡(luò)之后,再配置目標服務(wù)器和端口號,實現(xiàn)數(shù)據(jù)的交互。
程序包含異常處理模塊,若ME3616模組入網(wǎng)失敗,則主控模塊將重新啟動ME3616模組繼續(xù)嘗試入網(wǎng);如若入網(wǎng)成功繼續(xù)接入云服務(wù)器,則進行數(shù)據(jù)傳輸;如若入網(wǎng)再次失敗,則斷電關(guān)機,手動上電重啟。整個數(shù)據(jù)上云流程圖如圖7。
圖7 NB-IoT模塊數(shù)據(jù)上云流程圖Figure 7 Flow chart of NB-IoT module data uploading to the cloud
3.3.1 中間件服務(wù)程序設(shè)計
為了將NB-IoT模組傳輸?shù)臄?shù)據(jù)存儲至云服務(wù)器上的MYSQL數(shù)據(jù)庫,通過Qt進行傳輸中間件的軟件開發(fā)。軟件接收到心率血壓實時數(shù)據(jù)后,進行數(shù)據(jù)分析,最后將解析的數(shù)據(jù)按照高壓、低壓、心率、上傳時間等標簽順序存儲在數(shù)據(jù)庫表內(nèi),以便數(shù)據(jù)展示時調(diào)用。
選擇TCP/IP作為數(shù)據(jù)傳輸?shù)耐ㄐ艆f(xié)議,為了防止數(shù)據(jù)傳輸過程中的數(shù)據(jù)丟包和誤傳等傳輸錯誤,按照自定義的數(shù)據(jù)包格式上傳至中間件。制定NB-IoT模組與中間件之間數(shù)據(jù)包的傳輸協(xié)議,協(xié)議數(shù)據(jù)包結(jié)構(gòu)包括:
u8 header[4];//數(shù)據(jù)頭
u16 len; //數(shù)據(jù)長度 包括頭
u16 cmd_no; //命令號
u8 sn[4]; //設(shè)備編號
u32 second; //當前傳輸時間(s)
u32 ms; //當前傳輸時間(ms)
u32 sys_num1; //系統(tǒng)隨機數(shù)1
u32 sys_num2; //系統(tǒng)隨機數(shù)2
u8 data[158]; //命令附加的數(shù)據(jù)
u8 crc[2]; //crc16校驗位
NB-IoT模組連接到中間件后,中間件顯示連接客戶端列表,同時開始接收來自NB-IoT模組的數(shù)據(jù)包。首先判斷數(shù)據(jù)頭是否為“HEAD”,對比數(shù)據(jù)包實際長度是否與記錄的包長度len相等,減少接收不完整的數(shù)據(jù)包或者數(shù)據(jù)粘包現(xiàn)象,此后通過16 crc校驗碼對數(shù)據(jù)包數(shù)據(jù)進行校驗,最后為防止同一數(shù)據(jù)包的重復(fù)接收,為每一個數(shù)據(jù)包配備唯一識別碼,接收數(shù)據(jù)包后判斷唯一識別碼是否與前五個包存在重復(fù)現(xiàn)象,若存在則舍棄該數(shù)據(jù)包。中間件服務(wù)程序流程圖如圖8(a),展示界面如圖8(b)。
圖8 中間件服務(wù)程序Figure 8 Middleware service program
3.3.2 MYSQL數(shù)據(jù)庫設(shè)計
云數(shù)據(jù)庫是數(shù)字智慧解決方案的重要工具,本文使用的云數(shù)據(jù)庫是部署在虛擬云服務(wù)器環(huán)境下的MYSQL數(shù)據(jù)庫[16-18]。數(shù)據(jù)庫設(shè)計是數(shù)據(jù)存儲與管理的核心,主要分為三個數(shù)據(jù)表單,分別為用戶歷史檢測數(shù)據(jù)表、用戶登錄信息表和用戶異常數(shù)據(jù)表,其中用戶歷史檢測數(shù)據(jù)表字段設(shè)計如表2。
表2 用戶歷史檢測數(shù)據(jù)表
系統(tǒng)利用QT開發(fā)了上位機PC客戶端軟件,整個軟件包括登錄界面和健康數(shù)據(jù)可視化展示兩大部分。
通過連接云端數(shù)據(jù)庫,可以實現(xiàn)數(shù)據(jù)手動及自動刷新,用戶可以觀測自己的健康數(shù)據(jù),當數(shù)據(jù)出現(xiàn)異常時,界面彈出異常警報消息框。PC客戶端軟件登錄界面展示如圖9。
圖9 PC客戶端軟件登錄界面Figure 9 Login interface of the PC client software
健康數(shù)據(jù)可視化展示界面如圖10,其中健康數(shù)據(jù)展示包括血壓走勢曲線、心率血壓歷史數(shù)據(jù)總覽表、心率血壓變化柱形圖等一系列數(shù)據(jù)動態(tài)展示??梢宰層脩舾又庇^得觀測身體健康數(shù)據(jù)的變化。
圖10 智能健康監(jiān)測系統(tǒng)數(shù)據(jù)可視化終端Figure 10 Data visualization terminal of intelligent health monitoring system
在每塊數(shù)據(jù)曲線展示部分的.cpp文件中連接MYSQL數(shù)據(jù)庫,利用QT的QtCharts/QChartView圖表類,QLineSeries的線系列類制作了心率血壓數(shù)據(jù)的走勢曲線及柱形圖。
本系統(tǒng)基于智慧醫(yī)療與云平臺背景,在對比了傳統(tǒng)心率血壓測量方式與市場常見的智能監(jiān)測設(shè)備后,設(shè)計了一種端云一體化心率血壓智能監(jiān)測系統(tǒng),該系統(tǒng)包含數(shù)據(jù)采集前端、數(shù)據(jù)云平臺和數(shù)據(jù)可視化終端三部分,整個系統(tǒng)具有數(shù)據(jù)采集精確度高、實時性強、數(shù)據(jù)管理多元化等特點。
采用STM32F103為主控模塊,通過串口通信與心率血壓采集模塊、數(shù)據(jù)顯示模塊和NB-IoT數(shù)據(jù)傳輸模塊進行交互,實現(xiàn)心率血壓數(shù)據(jù)采集、處理、分析,以及實時顯示、異常報警、遠程傳輸?shù)裙δ?。同時本系統(tǒng)還配備有數(shù)據(jù)可視化終端,即上位機PC客戶端軟件,登錄賬號后,可以實時觀測近期歷史健康數(shù)據(jù),且在異常數(shù)據(jù)出現(xiàn)時發(fā)出監(jiān)測預(yù)警。
整套系統(tǒng)成熟穩(wěn)定、體積小、方便智能,經(jīng)用戶多次測試,數(shù)據(jù)采集精度高,采集效率高。該系統(tǒng)在智慧醫(yī)療、可穿戴智能設(shè)備等健康管理行業(yè)有著廣闊的應(yīng)用前景。