吳 超
(廣州大學(xué)華軟軟件學(xué)院,廣東 廣州 510900)
隨著傳感器、人機(jī)交互、柔性傳感器、云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等技術(shù)的發(fā)展,可穿戴設(shè)備的應(yīng)用和用戶(hù)體驗(yàn)得到不斷豐富[1-2]。除了智能眼鏡、智能手表和智能手環(huán)等產(chǎn)品之外,智能服飾、智能鞋、智能配飾等產(chǎn)品形態(tài)相繼出現(xiàn)[3]。中國(guó)人口老齡化程度的逐漸加深,慢性病人群的增多以及健康管理方式的轉(zhuǎn)變推動(dòng)了中國(guó)智能可穿戴設(shè)備的發(fā)展。可穿戴健康監(jiān)測(cè)設(shè)備改善了用戶(hù)的健康管理方式、提高了用戶(hù)的健康水平、提高了中國(guó)居民的生活質(zhì)量。心率的變化能直接或間接反映人體多方面的健康狀態(tài)[4]。當(dāng)前使用最廣泛的心率計(jì)算方法是光電體積方法[5-6]。血管里的血液體積隨心臟泵血呈周期性變化,血液體積的周期性變化成為利用PPG信號(hào)進(jìn)行心率估計(jì)的基礎(chǔ)。光電體積法容易受到干擾,如外界光干擾、手腕運(yùn)動(dòng)干擾、溫度干擾、皮膚出汗干擾等。本文將32位處理器STM32F103ZET6作為主控芯片,使用LM386聲音模塊采集數(shù)據(jù),通過(guò)低功耗藍(lán)牙模塊nRF51822發(fā)送心率數(shù)據(jù)到手機(jī),實(shí)現(xiàn)抗干擾性強(qiáng)且成本低的心率監(jiān)測(cè)設(shè)備。
設(shè)備包含數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、藍(lán)牙傳輸模塊。主控芯片為32位處理器STM32F103ZET6,主要功能包括數(shù)據(jù)處理、網(wǎng)絡(luò)傳輸、設(shè)備控制等。數(shù)據(jù)采集模塊為L(zhǎng)M386。藍(lán)牙傳輸模塊nRF51822可把心率數(shù)據(jù)發(fā)送到用戶(hù)手機(jī)。心率監(jiān)測(cè)設(shè)備通過(guò)LED燈顯示工作狀態(tài),有2個(gè)按鍵(電源開(kāi)關(guān)鍵和設(shè)備重啟鍵)。設(shè)備硬件結(jié)構(gòu)如圖1所示。
圖1 設(shè)備硬件結(jié)構(gòu)
STM32F103ZET6由ST公司出品,采用Cortex-M3內(nèi)核,CPU最高達(dá)72 MHz,具有512 KB FLASH、多種外設(shè)、USB接口和CAN接口。它適用于高速處理環(huán)境,如圖像處理、飛控等領(lǐng)域。STM32F103ZET6內(nèi)嵌8 MHz的RC振蕩器,多達(dá)8個(gè)定時(shí)器,3個(gè)16位定時(shí)器,2個(gè)看門(mén)狗定時(shí)器(獨(dú)立型和窗口型),3個(gè)USART接口,通用同步/異步串行接收/發(fā)送器。STM32F103ZET6芯片原理如圖2所示。
圖2 STM32F103ZET6主控芯片
LM386是一種音頻集成功率放大器,具有功耗低、內(nèi)鏈增益可調(diào)整、電源電壓范圍大、外接元件少和總諧波失真小等優(yōu)點(diǎn)。LM386主要應(yīng)用于低電壓消費(fèi)產(chǎn)品。微雪聲音傳感器模塊使用LM386對(duì)音頻信號(hào)進(jìn)行200倍放大,靈敏度可調(diào)。聲音模塊與STM32F103ZET6的端口連接如圖3所示。
圖3 聲音模塊與STM32端口連接
nRF51822是功能強(qiáng)大的多協(xié)議SoC,適用于Bluetooth低功耗和2.4 GHz超低功耗無(wú)線應(yīng)用。nRF51822擁有256 KB FLASH,16 KB RAM的32位ARM Cortex M0 CPU。靈活的31引腳GPIO映射方案可使I/O(例如串行接口、PWM和正弦解調(diào)器)根據(jù)PCB需求映射到任何設(shè)備引腳。nRF51822支持 S110藍(lán)牙低功耗協(xié)議堆棧及2.4 GHz協(xié)議堆棧。nRF51822電路原理如圖4所示。
圖4 nRF51822電路原理
主控芯片STM32F103ZET6通過(guò)串口1連接到nRF51822的串口,發(fā)送心率數(shù)據(jù)到nRF51822,nRF51822把心率數(shù)據(jù)通過(guò)藍(lán)牙發(fā)送到用戶(hù)手機(jī)。
主控芯片STM32F103ZET6通過(guò)串口1發(fā)送心率數(shù)據(jù)到nRF51822。串口數(shù)據(jù)傳輸格式為十六進(jìn)制,消息長(zhǎng)度為4字節(jié),第一個(gè)字節(jié)表示類(lèi)型,十六進(jìn)制表示為0x48(H);第二個(gè)字節(jié)表示id號(hào);第三個(gè)字節(jié)表示心率數(shù)值;第四個(gè)字節(jié)表示換行,十六進(jìn)制表示為0x0A。消息格式如圖5所示。
圖5 串口消息格式
可穿戴心率監(jiān)測(cè)設(shè)備首先進(jìn)行硬件初始化,包含按鍵、LED燈、ADC轉(zhuǎn)換器、定時(shí)器。主控芯片STM32F103ZET6使用定時(shí)器控制采集聲音和計(jì)算心率值的時(shí)間,聲音采集頻率為10 ms/次,心率計(jì)算頻率為30 s/次。主控芯片STM32F103ZET6計(jì)算心率值后,通過(guò)USART1發(fā)送到nRF51822模塊,nRF51822模塊通過(guò)藍(lán)牙發(fā)送到用戶(hù)手機(jī)。用戶(hù)手機(jī)APP可以顯示心率的歷史數(shù)據(jù)。程序流程如圖6所示。
圖6 心率監(jiān)測(cè)設(shè)備程序流程
主控芯片STM32F103ZET6通過(guò)LM386聲音模塊獲得聲音數(shù)據(jù)。LM386聲音模塊通過(guò)AOUT端口輸出模擬信號(hào),經(jīng)ADC轉(zhuǎn)換后獲得聲音對(duì)應(yīng)的電壓值。
心率信號(hào)是低頻信號(hào),最高值約為150次/min,最低值約為40次/min。設(shè)備通過(guò)低通濾波過(guò)濾高頻信號(hào),然后通過(guò)計(jì)數(shù)函數(shù)的波峰個(gè)數(shù)獲得用戶(hù)的心率值。
計(jì)算信號(hào)數(shù)值的一階導(dǎo)數(shù),波峰是一階導(dǎo)數(shù)從正數(shù)變?yōu)樨?fù)數(shù)的點(diǎn)。因?yàn)樾穆首罡咧导s為150次/min,設(shè)備的聲音采樣頻率為100 Hz,所以波峰點(diǎn)間的距離不能小于40。
設(shè)備采集的心率聲音信號(hào)通過(guò)低通濾波可以過(guò)濾很多高頻干擾信號(hào),使心率計(jì)算更容易。對(duì)30 s的心率聲音信號(hào)數(shù)據(jù)進(jìn)行處理,低通濾波保留小于3 Hz的信號(hào),濾波效果如圖7所示。
圖7 心率信號(hào)低通濾波
查找函數(shù)的峰值,計(jì)算心率數(shù)值,根據(jù)心率數(shù)值的正常范圍過(guò)濾異常數(shù)據(jù)點(diǎn),使心率計(jì)算更準(zhǔn)確。經(jīng)過(guò)計(jì)算,當(dāng)前的心率數(shù)值為68次/min,圖8中的紅色圓點(diǎn)是計(jì)算的波峰。圖9數(shù)據(jù)中的干擾點(diǎn)不會(huì)影響心率的計(jì)算,計(jì)算的心率數(shù)值為80次/min。
圖8 心率信號(hào)波峰個(gè)數(shù)計(jì)算
圖9 存在異常數(shù)據(jù)的心率計(jì)算
本設(shè)計(jì)實(shí)現(xiàn)了一個(gè)抗干擾性強(qiáng)且成本較低的可穿戴心率監(jiān)測(cè)設(shè)備,能夠?qū)崟r(shí)監(jiān)視用戶(hù)的心率數(shù)據(jù)。設(shè)備通過(guò)藍(lán)牙與用戶(hù)手機(jī)進(jìn)行數(shù)據(jù)傳輸,使用方便。設(shè)備使用的聲音傳感器容易安裝到衣物中,數(shù)據(jù)采集方便。未來(lái),筆者將對(duì)本設(shè)備的功耗進(jìn)行優(yōu)化,以延長(zhǎng)該心率監(jiān)測(cè)設(shè)備的使用時(shí)間。