鄭桂林,游孟,蘇文鵬
(滁州學院,安徽滁州239000)
目前我國已進入老齡化社會,未來20-40年將成為中國人口老齡化的高峰階段[1]。國務院辦公廳于2019年4月發布了關于推進養老服務發展的意見,意見指出要持續推動智慧健康養老產業發展,拓展信息技術在養老領域的應用,促進人工智能、物聯網、大數據等信息技術和智能硬件等產品在養老服務領域深度應用[2]。分析居家行為習慣是智慧養老領域的研究熱點,運用傳感器進行數據記錄,對數據分析進而得出居家行為習慣,以此可判斷是否有異常情況發生。本文設計的家庭用水行為檢測裝置可用于居家用水行為分析的數據采集,能給智慧養老產業提供更多的選擇。
系統主要由ADXL362加速度傳感器模塊、MSP430F6989微控制器模塊、CC2530 ZigBee自組網模塊構成,使用兩節7號堿性干電池直接為各模塊供電。系統框圖如圖1所示。ADXL362傳感器模塊采集水管的震動信號,將震動信號轉換為數字量送給微控制器模塊。MSP430F6989對獲取的震動數據進行處理、分析,判斷水管中是否有水流,同時將水流狀態送給CC2530 ZigBee自組網模塊。自組網模塊將水流狀態通過ZigBee發送到網關,進而上傳到后臺進行處理,通過這一過程完成對居家用水行為的檢測。
系統采用電池供電,電量有限。如何降低功耗以延長電池的使用時間,是系統設計面臨的一個難題。本文提出了一種三級休眠機制,大大降低了系統功耗。三級分別指傳感器模塊、微控制器模塊、自組網模塊。系統上電后,各模塊配置為休眠模式,等待組網以降低功耗。當按下組網按鍵后,CC2530 ZigBee自組網模塊被喚醒,啟動組網。組網完成后,組網指示燈閃爍發出完成組網信號,并通過中斷喚醒MSP430F6989微控制器模塊,微控制器模塊對ADXL362傳感器模塊進行初始化配置,之后各模塊進入休眠模式;若組網不成功則再次進入休眠模式等待組網。

圖1 系統框圖
傳感器在休眠模式下,具有震動喚醒功能,即檢測到震動時可自行喚醒,使之進入正常的測量模式。當組網成功且傳感器初始化完成后,若有震動產生,傳感器將被喚醒。喚醒后會發出中斷喚醒微控制器模塊。微控制器喚醒后,讀取傳感器的數據并進行處理、分析。若未檢測到水流,則將傳感器配置為休眠模式,之后微控制器也進入休眠模式;若檢測到水流,則通過中斷喚醒自組網模塊,同時自身進入休眠模式。自組網模塊將向網關發送水流開始信號,之后自身也進入休眠模式。傳感器則進入靜止檢測模式,若一定時間內均未檢測到震動,則認為水流停止,通過中斷依次喚醒后級模塊,向網關發出水流停止信號,之后系統再次進入休眠模式。后臺結合水流開始信號和水流停止信號,即可完成一次用水行為的記錄。在三級休眠模式下,供電電壓為3V時,供電電流僅1.5μA,可滿足電池供電對功耗的要求。
微控制器依據水管的震動數據判斷是否有水流。裝置初始化時,保持裝置靜止,獲取加速度傳感器一定數量的數據,由這些數據計算出靜態的震動量,記為σ0。再結合閾值自適應設定法,設定一個閾值σT。當傳感器檢測到震動時,通過獲取加速度傳感器的數據,計算出此時的震動量,記為σt。若σt>σT,則認為有水流,反之則認為無水流。
本文所設計裝置需安裝在各用水點位的上水軟管處,通常情況下這些安裝環境沒有市電接入端口,不方便采用適配器供電方式,因此選用電池供電。一般折中考慮容量和成本,選擇干電池供電。查詢器件手冊可得,ADXL362的供電電壓范圍為1.6V-3.5V,MSP430F6989的供電電壓范圍為1.8V-3.6V,CC2530的供電電壓范圍為2.0V-3.6V。一節7號堿性干電池的電壓初值約為1.5V,為覆蓋三個模塊供電范圍,采用兩節干電池串聯為裝置供電。在電源電路中,采用LDO或DC-DC芯片對電源進行穩壓是通用處理方法。LDO芯片轉換效率較高,經實測在供電電壓為3.3V時,采用的一款LDO芯片會增加30μA的供電電流,如此大的靜態電流很難做到低功耗。干電池在放電電流較小時,放電曲線較為線性[3],考慮到電壓小幅度下降不會影響系統工作,因此裝置采用干電池直接供電。
具有加速度傳感功能的傳感器有很多種類,根據軸數可分為3軸、6軸、9軸的傳感器。6軸傳感器集成了3軸加速度計和3軸陀螺儀,9軸傳感器又額外集成了3軸磁力計。軸數越多則功耗越大,3軸加速度計即可滿足系統的數據采集需求,本裝置選用了亞德諾半導體公司的ADXL362。
ADXL362是一款超低功耗、數字輸出3軸微電子機械系統加速度計。提供12位數據分辨率,輸出數據速率(ODR)從12.5Hz到400Hz可配置。測量范圍可選擇±2 g、±4 g和±8 g,其中±2 g范圍內的分辨率可達1 mg/LSB。本裝置ODR配置為200Hz,測量范圍選擇±2 g。表1給出了供電電壓為2V、ODR為100Hz時ADXL362的典型供電電流,由此可見其非常適用于低功耗應用場景。

表1 ADXL362典型供電電流
在正常工作模式下,ADXL362具有靜止檢測功能。當加速度低于設定的閾值且持續設定的時間時,即認為檢測到靜止事件。在喚醒模式下,傳感器以每秒6次的頻率測量加速度以確定是否發生運動,檢測到運動后可以通過中斷喚醒微控制器并切換到正常工作模式。本系統中,ADXL362在喚醒模式、正常工作模式、靜止檢測模式中進行模式切換。
微控制器采用了德州儀器的低功耗系列單片機MSP430FR6989。MSP430FR6989是基于RSIC架構的16位單片機,時鐘頻率最高可達16MHz。內部采用了超低功耗鐵電RAM,非易失性存儲器容量高達128KB。具有經過優化的超低功耗模式,待機模式電流低至0.4μA,與飛思卡爾公司的KL03 2.2μA待機電流相比功耗更低。工作模式約100μA/MHz,擁有四級低功耗模式(Low-Power Mode,LPM)可選[4]。本系統使用了LPM4模式,當中斷喚醒微控制器時會切換至工作模式,為降低功耗,時鐘頻率設為1MHz。
Zigbee是基于IEEE802.15.4標準的低功耗局域網協議。相對傳統無線通信,Zigbee耗能低、復雜度低、自組織且安全可靠,非常適合短距離通信[5]。針對本裝置應用場景,Zigbee低功耗、適用短距離的優點明顯[6]。Zigbee自組網模塊選用了易佰特公司的E18集成模塊。模塊采用德州儀器的CC2530射頻芯片。芯片內部集成有8051內核的單片機和無線收發器,支持ZigBee以及IEEE 802.15.4協議。模塊內含功放,增強了通信距離,且引出了單片機的I/O口,方便進行二次開發。
MSP430FR6989軟件分為兩個部分,主程序部分和中斷部分。中斷不宜用來做大量的工作,因此除了閾值設定部分在中斷服務內完成,水流數據的分析、處理均在主程序中完成。
主程序流程圖如圖2所示。上電初始化完成了系統時鐘初始化、通用I/O低功耗處理、SPI初始化。微控制器通過SPI與ADXL362通信,MSP430作為主機,對時鐘精度要求較低。MSP430時鐘均設置為1MHz內部DCLOCK;為盡可能降低功耗,將所有未使用到的I/O狀態配置為低電平輸出;SPI依據ADXL362傳感器要求,配置為3-Pin、8-Bits、SPIMaster模式。系統如果初次上電,需等待組網成功后,微控制器被中斷喚醒才能進行閾值設定,否則將進入睡眠模式等待組網。若是掉電后重新上電、則要判斷是否已經完成組網,如果已經完成組網,則要重新進行閾值設定,之后微控制器進入睡眠模式,等待被傳感器中斷。傳感器產生中斷后,微控制器根據中斷類型進行處理。若檢測到震動且判斷為水流,則喚醒ZigBee模塊報告水流開始信號。若檢測到靜止事件則報告水流結束信號。完成后,重新開啟中斷進入睡眠模式,等待下一次中斷。

圖2 MSP430FR6989主程序流程圖
圖3 給出了微控制器的中斷服務程序流程圖。中斷產生后,首先關閉中斷功能退出睡眠模式,然后根據中斷類型進行處理。若是傳感器中斷,則清除中斷標志,退出中斷服務,在主程序中進行處理;若是ZigBee模塊產生的中斷,則啟動閾值設定,完成后打開中斷再次進入睡眠模式。
閾值σT是影響用水行為檢測效果的重要參數,不同安裝點位的震動幅度不一致,因此需要設定不同的閾值。本文采用一種自適應閾值設定方法,針對不同的安裝點位,可自動設定不同的閾值。

圖3 MSP430FR6989中斷服務程序流程圖
在裝置靜態時,各軸獲取一定數量的數據,數據量記為Average_Num。由公式(1)計算三個軸震動數據的均值Xˉ、Yˉ、Zˉ,

其中X_inact_valuen、Y_inact_valuen、Z_inact_valuen分別表示靜止時加速度傳感器X軸、Y軸、Z軸的原始數據。
求出各軸的均值后,由公式(2)即可計算出靜態時水管的震動量σ0:

之后在家庭用水裝置打開的情況下(即水管中有水流流動),各軸再獲取Average_Num個數據。參考公式(2),可計算出有水流時水管的震動量σnom:

其中X_nom_valuen、Y_nom_valuen、Z_nom_valuen分別表示有水流時加速度傳感器X軸、Y軸、Z軸的原始數據。
得到σ0、σnom之后,根據以下規則設定閾值

其中range1、range2、range3可根據工程數據進行調整,本系統分別設定為3、5、10。該方法中,不同點位的閾值由各點位的震動數據判斷得來,大大提高了系統對不同環境的適用性。
ZigBee自組網模塊在初始化后即開啟中斷進入睡眠模式等待配網,系統任務全部在中斷中完成,圖4給出了ZigBee自組網模塊的中斷服務程序流程圖。中斷喚醒后判斷中斷類型,若是配網中斷,則啟動組網,成功后喚醒MSP430;若組網不成功則進入睡眠,等待重新組網。如果是MSP430發出的中斷,則依據中斷類型向網關發送水流開始或水流結束信息,完成后重新進入睡眠,等待下一個中斷事件。

圖4 自組網模塊中斷服務程序流程圖
為了驗證裝置的實用性,選取了不同的點位對裝置進行了測試,結果如表2所示。從表中可以看出在不同的位置,裝置都能對σT進行自適應的設定,且能檢測出水流。靜態震動量σ0與環境相關,但整體都較小。用水時的震動量跟也跟環境有關,但不同的環境,震動量相差較多,因此閾值σT也相差較多。值得注意的是,雖然裝置極少出現漏報的情況,但裝置周邊如有強干擾導致震動較為劇烈時,會被認為是用水行為發生誤報。如測試中發現,在洗菜池附近的櫥柜上快速大幅度連續剁菜,裝置出現過誤報情況。

表2 測試數據匯總表
本文設計的居家用水行為檢測裝置功耗低且具有自適應環境的能力,使用方法簡單,能有效地檢測用水行為。但仍有改進的空間,如抗干擾能力有待增強,安裝位置有一定的局限性,只能安裝在上水軟管外露的用水裝置上,部分用水裝置上水軟管采用隱蔽式安裝,會導致該裝置不可用。對于干擾問題,一方面可嘗試從頻域角度對震動信號進行分析,另一方面可嘗試多傳感器相結合的方式來剔除部分誤報,以提高抗干擾能力。