任志敏,李長旺
(常州紡織服裝職業(yè)技術(shù)學院,江蘇 常州 213164)
目前,家中的各種電器設(shè)備眾多,既有電燈、電視機、電扇等傳統(tǒng)電器,也有掃地機器人、藍牙功放等新設(shè)備,不管是哪種電器,開關(guān)機的方式無非就是三種,一是傳統(tǒng)的機械開關(guān);二是遙控器開關(guān);三是通過手機端APP實現(xiàn)開關(guān)機。從中不難發(fā)現(xiàn),機械開關(guān)需要人體直接接觸,遙控器和APP雖然增加了便利性,比起機械開關(guān)方式進步了很多,但是還需要人為操作干預,三種開關(guān)機方式都未能做到真正的智能化自主開關(guān)機。
傳感器技術(shù)的發(fā)展,使得我們可以較為方便地隨時隨地獲取人體的心率數(shù)據(jù)。本課題設(shè)計了一個系統(tǒng),在人體進入睡眠狀態(tài)后,自主關(guān)閉電燈等家用電器,人體開始蘇醒時,自主打開相關(guān)家用電器和設(shè)備。
通過研究發(fā)現(xiàn),獲取心率數(shù)據(jù)的有效方案主要有以下三種。
方案一是使用攝像頭拍攝人體手指等部位,把采集的視頻信息進行數(shù)字化處理,分析視頻信息的顏色變化,經(jīng)過一系列的處理獲取心率數(shù)據(jù)[1]。
方案二是ECG(Electrocardiograph)[2],ECG的典型應用就是醫(yī)院的心電圖,其優(yōu)點是測量數(shù)據(jù)精確,缺點是需要較多測量裝置,體積較大,不易佩戴。
方案三是PPG(Photoplethysmography)[3]。PPG指的是光電容積脈搏波描記法。血管中的血液流動會受到心臟搏動影響,而產(chǎn)生周期性活動,形成血壓呈周期性變化,在充滿彈性的血管中因為連續(xù)的壓力變化,因而造成血管的截面管徑會因此而改變血管直徑大小,這種血管變化亦會造成血壓在變化上呈現(xiàn)連續(xù)的狀態(tài)[4]。PPG測量脈搏就是基于以上基礎(chǔ),采用LED和光電探測器,LED一般向血管發(fā)射綠色光,有部分發(fā)射光被吸收,還有一部分光被反射或透射,被光接收器接收,其工作原理如圖1所示。
圖1 反射式光電探測器工作原理圖
PPG的典型應用是現(xiàn)在的運動手環(huán)或手表,其優(yōu)點是體積較小,攜帶方便,易于佩戴,缺點是較之ECG方案心率數(shù)據(jù)精確性稍低。
經(jīng)過研究比較現(xiàn)有的三種方案后發(fā)現(xiàn),方案一操作起來比較麻煩,而且需要使用攝像頭,需處理的數(shù)據(jù)量較大。方案二也不適合本課題,顯然不可能在人體睡眠時佩戴各種電極裝置,因此,排除方案一和二。方案三的裝置倒是合適的,但是現(xiàn)有的運動手環(huán)或手表僅僅局限于測量心率,數(shù)據(jù)通過藍牙傳輸至手機APP端顯示,用戶僅僅能讀取心率數(shù)據(jù),了解自己身體狀況,無法有效利用數(shù)據(jù)。因為大多數(shù)該類型APP程序并未公開源碼,用戶無法對其數(shù)據(jù)進行二次處理。
為此,我們提出了本課題的方案,借鑒方案二的一些優(yōu)點,摒棄其局限性。本課題總體設(shè)計方案如圖2所示。
圖2 總體設(shè)計方案圖
從圖2中可以看出,系統(tǒng)一共由四部分組成,分別是①心率采集處理裝置S(以下簡稱為裝置S);②開關(guān)機命令接收執(zhí)行裝置R(以下簡稱為裝置R);③PC端上位機處理程序(以下簡稱PC端程序);④手機或平板設(shè)備處理程序(以下簡稱手機端程序)。其中裝置S處于整個系統(tǒng)的核心地位,負責心率數(shù)據(jù)采集,處理,學習,判斷,基于數(shù)據(jù)判斷情況通過無線模塊發(fā)出開關(guān)機命令。
根據(jù)總體設(shè)計方案,選擇低功耗藍牙無線傳輸方式,分別設(shè)計了心率數(shù)據(jù)采集模塊,無線模塊電路,裝置S主板電路,裝置R主板等電路。
如前文所述,采用PPG方式獲取心率數(shù)據(jù)。心率數(shù)據(jù)采集模塊主要由環(huán)境光傳感器APDS-9008,綠色光源發(fā)光二極管AM2520ZGC09和運放MCP6001組成。共引出三個引腳,分別是電源VCC,電源地GND和信號SIGNAL。
nRF52832是Nordic公司推出的一款支持BLE(Bluetooth4.0 low energy)的嵌入式微控制器[9]。它是一款為超低功耗無線應用ULP(Ultra Low Power)打造的多協(xié)議單芯片解決方案。nRF52832整合了Nordic一流的無線收發(fā)器,一個ARM Cortex-M4內(nèi)核以及512KB的Flash+64KB的RAM,其支持BLE和專用2.4GHz協(xié)議棧。nRF52832有豐富的外設(shè)接口,包括31個靈活可配置的通用輸入輸出引腳,支持SPI/TWI/UART等串行通信,支持10bit ADC模數(shù)轉(zhuǎn)換,最高工作主頻達64 MHz。
從中我們不難發(fā)現(xiàn),nRF52832既支持低功耗藍牙BLE5.0,即支持主從一體模式,又采用32位ARM Cortex-M4內(nèi)核,不管是從運行速度還是藍牙支持方面都符合本課題的設(shè)計需求。因此,nRF52832作為裝置S和R的核心微控制器,用于核心板的設(shè)計,如圖3所示。
圖3 無線模塊nRF52832原理圖
nRF52832基于Cortex-M4內(nèi)核設(shè)計,內(nèi)部設(shè)置了PPI(Programmable Peripheral Interconnect)可編程外設(shè)接口,功能上PPI和DMA(Direct Memory Access)直接存儲訪問有些類似。PPI通道使得外設(shè)可以通過PPI自動連接任務(wù)和事件,不需要CPU參與,可以有效降低功耗,提高處理器效率。PPI一端連接的是事件端點(EEP),另外一端連接的是任務(wù)端點(TEP)。因此PPI可以通過一個外設(shè)上發(fā)生的事件自動觸發(fā)另一個外設(shè)上的任務(wù)。首先外設(shè)事件需要通過與事件相關(guān)的寄存器地址連接到一個事件端點,另一端外設(shè)任務(wù)事件也需要通過此任務(wù)相關(guān)的任務(wù)寄存器地址連接到任務(wù)端點,當兩端連接好后就可以通過PPI自動觸發(fā)了。
為了保證心率采集數(shù)據(jù)的準確性、穩(wěn)定性和可靠性,本課題把心率采集模塊的Signal信號輸出口與P0.31引腳模擬輸入通道7相連,配置為單通道輸入方式,采樣精度為10位,參考電壓為內(nèi)部0.6V。采用連續(xù)轉(zhuǎn)換模式(continuous mode),連續(xù)采樣模式能夠通過內(nèi)部定時器實現(xiàn)定時采樣,或者觸發(fā)任務(wù)通過PPI連接一個通用寄存器來實現(xiàn)。為了提高轉(zhuǎn)換效率,本課題采用精確的1/16 MHz定時器通過PPI啟動的雙緩沖中斷采樣模式,把啟動ADC采樣事件的任務(wù)交給定時器和PPI通道來完成,CPU不需要參與。
基于以上分析,本課題采用PPI通道雙緩沖采集數(shù)據(jù)步驟為:
Step1:SAADC初始化,設(shè)置ADC轉(zhuǎn)換通道為NRF_SAADC_INPUT_AIN7,配置好SAADC轉(zhuǎn)換回調(diào)函數(shù),設(shè)置雙緩沖數(shù)組。
Step2:配置好定時器事件和PPI觸發(fā)通道,定時時間為2ms。
Step3:使能PPI觸發(fā)通道,等待SAADC采用完成觸發(fā)中斷,調(diào)用回調(diào)函數(shù)。
其中Step1中設(shè)置雙緩沖數(shù)據(jù)傳輸機制,通過設(shè)置2個緩沖數(shù)組,啟動采樣后數(shù)據(jù)依次進入緩沖數(shù)組1和緩沖數(shù)組2,當兩個數(shù)組內(nèi)都有數(shù)據(jù)就會觸發(fā)中斷事件發(fā)生,中斷后輸出緩沖數(shù)組2的內(nèi)容。數(shù)據(jù)流向如圖4所示。
圖4 雙緩沖數(shù)據(jù)傳輸流程圖
設(shè)置雙緩沖機制的好處是顯而易見的,心率數(shù)據(jù)采集為2ms一次,雙緩沖可以保證有足夠的時間處理心率數(shù)據(jù),避免前后心率數(shù)據(jù)覆蓋。
為了實現(xiàn)通過心率數(shù)據(jù),特別是BPM值準確判斷人體狀態(tài)的目的,本課題研究了幾種方案。方案一是設(shè)定兩個BPM閾值,比如70和75,即若監(jiān)測500次BPM值,平均值低于74,認為人體進入睡眠狀態(tài);若平均值位于70~75之間,認為人體開始進入蘇醒狀態(tài)。方案二是監(jiān)測心率變化的狀態(tài),即從BPM曲線看,曲線趨勢是下降的,認為人體進入睡眠狀態(tài);曲線趨勢是高低不平的,認為人體是日?;顒訝顟B(tài);曲線趨勢是上升的,認為人體開始進入蘇醒狀態(tài)。經(jīng)過實驗表明,方案一的BPM閾值設(shè)定不是一件容易的事情,因為BPM與每個個體相關(guān)。方案二曲線趨勢變化,當人體進入睡眠狀態(tài),曲線趨勢也是有高有低的??紤]到以上兩種方案的劣勢,本課題研究了第三種方案,步驟是:
Step1:首先學習人體在不同狀態(tài)時的BPM值,比如人體在22:00開始睡覺,與此同時開始監(jiān)測BPM值,設(shè)定監(jiān)測時間,可以是30 min,45 min,60 min等,統(tǒng)計這段時間內(nèi)人體的BPM平均值;其次,持續(xù)監(jiān)測人體在睡眠狀態(tài)時的BPM值,直到人體開始進入蘇醒狀態(tài)的時刻,每隔1 h計算一次平均BPM值,通過這些平均BPM值可以較好判斷人體到底處于哪種狀態(tài),這些學習經(jīng)驗值存入裝置S的EEPROM存儲器。
Step2:關(guān)機判斷算法。有了Step1的人體狀態(tài)經(jīng)驗數(shù)據(jù),接下來就可以通過其做出判斷和決策了。關(guān)機判斷程序算法如圖5所示,算法描述中使用的相關(guān)變量描述見表1。
表1 關(guān)機判斷程序相關(guān)變量描述
從圖5中可以看出,從某個時間點開始,持續(xù)監(jiān)測人體心率BPM,并作計數(shù),每個BPM與用戶設(shè)定的myThresh值與經(jīng)驗學習的人體進入睡眠狀態(tài)BPM平均值A(chǔ)VE比較大小,分別計數(shù)小于次數(shù)countd和大于次數(shù)countu,共監(jiān)測500次BPM作為一組,若計數(shù)countd多余countu,則認為人體進入睡眠狀態(tài),發(fā)出關(guān)機命令,否則繼續(xù)進入下一個500次BPM數(shù)據(jù)的比較。開機判斷算法與關(guān)機算法類似,在此不再贅述。
PC端通過串口與裝置S相連,本課題設(shè)計的PC端上位機實現(xiàn)兩大任務(wù),一是直觀顯示心率曲線,二是設(shè)定心率學習參數(shù),比如設(shè)定心率學習時間段,設(shè)定閾值等,用于測試裝置S心率學習、判斷、決策、指揮的功能能否順利實現(xiàn)[5]。上位機程序運行圖如圖6所示。
圖6 PC端上位機程序運行圖