倪 力,張政云,焦 俊,袁晨晨,王謨仕
安徽農業大學信息與計算機學院,安徽 合肥 230036
隨著電子技術的發展,最近幾年可穿戴設備已經從學科實驗室走向了消費者市場,從蘋果手表到小米手環[1],開始逐漸被普通消費者所接受,目前的可穿戴設備的功能主要還是針對于人體的健康狀況和運動狀態的追蹤,應用于動物的可穿戴設備還比較少,而動物的活動量大小又是精準飼養的主要參考依據,為此,本文設計了一種可以為山羊所佩戴的穿戴式設備,采用Arduino為設備軟硬件平臺,集成三軸加速度傳感器采集山羊活動數據,并將數據通過傳輸到服務器,結合服務器端算法分析得出分類結果。
穿戴設備端完成對山羊加速度數據的實時采集、保存和傳輸。設備和服務器通過藍牙4.0技術通信[3]。服務器端將接受到的數據保存并進行分析,系統框圖如圖1所示。

圖1 系統結構框圖Fig.1 Diagram of System structure
設備控制的核心為Arduino最小系統[2],控制三軸加速度傳感器實時采集運動數據,由于要保存一天的采集數據,數據量較大,所以設備集成了Mirco SD卡模塊,將采集的數據先保存到Mirco SD卡中,待山羊回舍后,設備的藍牙模塊將自動連接到服務器藍牙端,并按照約定好的協議格式發送數據,上傳完成后將清空設備端的數據,服務器將數據按照設備唯一編號和對應的數據保存到SQLSERVER數據庫已建立好的表中。然后在服務器端使用Matlab R2013a作為分析平臺,選用模糊C-均值聚類算法對數據進行處理。
設備主要由系統控制、加速度采集、數據存儲、藍牙4.0通信和電源管理這五個模塊組成。

圖2 硬件結構框圖Fig.2 Block diagram of the hardware structure
Arduino是一款基于開源的電子原型設計平臺[4],包含軟件和硬件兩個部分。設備采用以AVR 328 p為主控芯片,一個16 M晶振、兩個22 pF電容和一個復位電路搭建的最小系統作為Arduino硬件部分。主控芯片共引出了3個模擬端口,7個數字端口,以及SPI和I2C兩種通信方式,最小系統原理圖如圖3所示。

圖3 主控芯片電路原理圖Fig.3 Circuit scheme diagram of main control chip
硬件部分搭建完成后,還需要使用AVR專用的USBASP下載器為最小系統燒入bootloader,為Arduino軟件部分實現做準備,此后在計算機端就可以使用Arduino的IDE軟件平臺對設備進行程序的編寫、下載和調試。
采用了意法半導體的LIS3DH三軸加速度傳感器作為山羊運動狀態采集模塊[7],傳感器輸出前進方向x、水平方向y和垂直方向z三個軸的數據,采用I2C方式與主控芯片通信時,需將傳感器芯片CS端口置為高電平,同時為了保證IO部分先于加速度部分工作,傳感器芯片供電引腳VDD比數字IO供電VDD_IO另外并聯了兩個電容。當20 s內傳感器沒有檢測到任何加速度的變化則自動進入休眠狀態,將進入休眠模式,當傳感器檢測到變化并產生數據時內置的96級的FIFO可以作為數據緩存存儲32組三軸加速度數據,如果FIFO溢出便會產生一個中斷輸出,將中斷輸出映射到主控芯片的外部中斷源上,主控芯片將會從待機模式喚醒讀取FIFO中的數據,緩存的存在能使單片機一次連續讀取32組的數據,相比一次讀取一組數據的方式能讓單片機更多時間處于待機模式,從而降低單片機功耗,其具體外圍電路如圖4所示。

圖4 加速度傳感器電路原理圖Fig.4 Circuit scheme diagram of acceleration sensor
為了能夠至少保存一天采集的數據,設備采用了體積較小的Mirco SD卡用來實時存儲數據,存儲容量為1GB,通過ISP方式與主控芯片通信,采集到的加速度數據被拼接成一定的格式以文本文件的方式進行保存,經測試一天數據約16 M左右,其具體外圍電路如圖5所示。
設備采用的是TI公司的藍牙4.0模塊[5],通過串口方式與主控芯片通信,為了充分利用藍牙4.0的低功耗特性,在數據發送時將藍牙模塊EN端口為低電平,發送完畢后再置為高電平,使得模塊發送完后立即進入休眠模式,當藍牙接收到外部數據時通過中斷方式通知主控芯片有數據到來,其具體外圍電路如圖6所示。

圖5 存儲卡電路原理圖Fig.5 Memory card circuit schematic diagram

圖6 藍牙電路原理圖Fig.6 Bluetooth circuit schematic diagram
設備的軟件代碼是在Arduino提供的IDE上編寫完成的[7],依據Arduino編寫規范[5]在Setup()中完成程序的初始化,在Loop()中編寫程序主體,該函數將無限循環直至設備掉電。程序編寫完成后通過USB燒寫器上傳到單片機中。
軟件設計主要包括四部分:三軸加速度傳感器數據采集、數據存儲芯片讀寫、與服務器藍牙數據通信、設備電壓實時檢測。在三軸加速度傳感器采集數據前需要對其做初始化設置,因為使用I2C方式與傳感器通信,所以要引入Arduino IDE提供的Wire.h函數庫,傳感器需要初始化設置的地方有3處,采樣頻率設置為1 Hz,大約1S產生1到2個數據和開啟低功耗模式,根據數據手冊檢測震動時靈敏度設置為-2.0 g~+2.0 g,需設置0×20寄存器為0×1F,開啟高精度,需置0×23位寄存器為0×80。對設備電壓實時檢測程序的目的是為了檢測鋰電池電量,單片機使用了3.7 V 800 mA的鋰聚合物電池供電,電池自帶保護板,在充滿電量情況下能達到4.2 V。電壓檢查實現方式是將主控芯片的模擬口A0接到芯片的AREF口,從A0讀入模擬數據,由于讀入的數據是介于0~1023之前的,所以我們要轉換成0~4.2 V,當電量小于3.3 V時控制LED燈閃爍提示電池電量較低,同時通過打開藍牙模塊發送低電量告警信息。圖7給出了設備程序流程圖。

圖7 設備程序流程圖Fig.7 Program flow chart of device
由于可穿戴設備非常強調低功耗,因此我們在程序設計上也充分利用芯片的低功耗特性,設備啟動后,在初始化中首先開啟加速度傳感器的低功耗模式,然后初始化SD卡,如果SD卡設備正常則將藍牙模塊的EN引腳置高,藍牙模塊立即進入休眠模式,隨后主控芯片將進入“Power-down”休眠模式,此時設備測試耗電量約為15 mA。如果SD卡初始化失敗,將閃爍LED燈并打開藍牙模塊發送提示初始化失敗告警信息。主控芯片在休眠模式下被喚醒的情況有兩種,一是當三軸加速度傳感器檢采集到數據后會通過中斷喚醒單片機處理數據,二是當藍牙成功連接到上位機后也將通過中斷喚醒單片機上傳數據。
根據前期對山羊的日常行為的觀察,山羊的靜臥、行走、采食、跨跳行為占據日常行為的90%以上,因此我們主要對這4種行為進行分類[8]。在試驗中我們選擇了兩頭體態健康的成年山羊作為實驗對象,將設備綁在羊角的中心處,三軸加速度傳感器的Z軸指向山羊頭部正上方,X軸指向山羊的前進方向,Y軸指向山羊右側。各采集了4組數據,每組記錄了約一天的活動量。
加速度傳感器一次會輸出X、Y、Z三個軸的數據,由于無法預知重心運動的方向,選用某個軸的數據分析是不合適的,因此我們需要定義一個特征量SVM(Single Vector Magnitude)用來表示和加速度向量大小[9],既有:
式中,X、Y、Z是三個軸向的輸出,它的大小與速度變化的劇烈程度有關,與運動方向無關。同時為了消除設備本身抖動產生的噪聲信號,需先將數據進行濾波,由于小波去噪有濾波后還能成功保留原信號特征的特性,我們選用小波去噪。圖8為部分三軸加速度數據與對應的和加速度數據及小波去噪后的和加速度數據。當山羊處于跳躍行為階段時,三個軸的數據曲線出現明顯急升急降,Z軸數據反應最為明顯。當山羊處于靜臥階段時,數據曲線比較穩定。當山羊處于采食階段時,數據曲線比較劇烈且無規律性。當山羊處于行走階段時,數據曲線出現有規律的波動,Z軸數據的波動規律性最為明顯,X軸也有規律性的大幅升降。而這些數據特征在和加速度曲線上也均能準確反應,且運動數據與靜止數據區分度更加明顯。

圖8 加速度傳感器的三軸輸出Fig.8 3-axis output of acceleration sensor
給定山羊的三軸加速度數據集[10]X={X1,X2,...,Xn},mj(j=1,2,...k)為每個聚類的中心,k為類別數目,μj(xi)是第i個樣本對應第j類的隸屬函數,基于隸屬度函數的聚類損失函數可以寫為:



采用迭代的方法求解(3)式和(4)式,直至滿足收斂條件,得到最優解。
算法步驟如下:
(1)主要期望是聚類得到山羊的4種日常行為:靜臥、行走、采食和跨跳,但是考慮到干擾數據和誤差等因素,將給定的聚類類別數設為5,設定迭代收斂條件,初始化各個聚類中心;
(2)反復執行下面的運算,直到各樣本隸屬度值趨于穩定:
A.用當前的聚類中心根據公式(4)計算隸屬度函數;
B.用當前的隸屬度函數根據公式(3)重新計算各個聚類的中心。
當算法收斂時,就得到了各類的聚類中心和隸屬度值,從而完成了模糊聚類劃分(圖9)。

圖9 加速度數據分類結果Fig.9 Classification result of acceleration data
由分類結果圖可見兩組山羊和加速度數據的波動部分和平穩部分(圖中圓形點)區分明顯,而且平穩部分是在大幅波動后逐漸減弱后出現,說明山羊靜臥數據已經被較好的區分開。根據實地觀察,山羊在行走時經常伴隨著采食行為,而采食行為又占據了山羊一天的大部分時間,在分類結果圖中看出行走和采食的數據互相重合出現也印證了這一點(圖中三角形點和矩形點)。根據實驗觀察,山羊日常行為中跳躍情況很少,為了產生跳躍數據,我們在山羊活動區域設置了一些障礙,從結果圖中可以看出明顯劇烈波動的數據被區分開(圖中星型點)。從分類結果來看,各組的數據分類比較明顯,且兩組的分類結果的相似度也較高。
本文設計的針對山羊的可穿戴設備,完成了山羊日常行為數據的采集和傳輸,并使用模糊C均值算法較好的對數據樣本集進行聚類,實驗表明:該設備體積小、功耗低、佩戴在山羊身體無應激反應、分類結果可靠,為后續建立山羊精準飼養模型奠定了基礎。
[1]楊繼志,郭 敬.Arduino的互動產品平臺創新設計[J].單片機與嵌入式系統應用,2012,12(4):39-41
[2]袁本華,董 錚.基于Arduino控制板的溫室大棚測溫系統設計[J].安徽農業科學,2012,40(8):5049-5050
[3]Jiao J,Ma H,Qiao Y,etal.Design of Farm Environmental Monitoring System Based on the Internet of Things[J]. Advance Journal of Food Science&Technology,2014,6(3):368-373
[4]紀欣然.基于Arduino開發環境的智能尋光小車設計[J].現代電子技,2012(15):161-163
[5]鄭 昊,鐘志峰,郭 昊,等.基于Arduino/Android的藍牙通信系統設計[J].物聯網技術,2012(5):50-51
[6]卞云松.基于Arduino單片機的避障小車機器人[J].自動化技術與應用,2014,33(1):16-19
[7]王 磊,邵平凡.基于MSP430和μC/OS-Ⅱ的低功耗智能手環設計[J].微型機與應用,2015,34(15):95-98
[8]陶 強,劉 莉.一種魯棒的聚類算法在加速度計數據集中的應用[J].儀表技術,2016(3):23-27
[9]高新波,李 潔,謝維信.模糊c均值聚類算法中參數m的優選[J].模式識別與人工智能,2000,13(1):7-11
[10]郭東東,郝潤芳,吉增濤,等.基于三軸加速度傳感器的山羊行為特征分類與識別[J].家畜生態學報,2014,35(8):53-57