王思奇,王致杰
(上海電機學院,電氣學院,上海 201306)
人口老齡化已經被認為是一個極其嚴重的社會問題,因為我國的人口老齡化是存在惰性的,雖然每對夫婦的子女數量一直很少,但由于育齡夫婦的人口老齡化程度仍然非常高,我國人口將在15年后快速達到30億保持不變。根據國家的人口普查技術,截至2014年為止,我國老年人口已經占總人口的14%,已經成為世界上老人人口最多的國家。
老人由于機體退化骨質疏松非常容易摔倒,摔倒會帶來一系列的疾病甚至會導致死亡。除了可能導致人體死亡外,跌倒受到撞擊或物體墜落等還可能會給人帶來更多的其他嚴重后果,如重度殘疾、機體活動功能嚴重損壞、身體活動持續時間受限。因此降低老年人摔倒帶來的傷害或及時救助是目前國內外最新的研究熱點。在不影響老年人的正常活動的情況下,摔倒時及時發出預警告知監護人,這樣老年人能夠第一時間被救治,減少了老年人摔倒時產生的醫療費用和死亡率。
國內外主要有三個研究方向分別為老人自主啟動報警設備、視頻監控設備、易攜帶式老人摔倒檢測定位系統。第一種裝置局限性較大,因為它不能自己報警,必須摔倒后老人自己按報警健,可是大多數時候老人摔倒以后都是處在昏迷狀態,無法自主報警,所以這種設備的實用性非常差,而且設備過于簡單,不具備本文的參考性。第二種設備局限性也很大,這種設備一般裝在家中和病房中,這樣可控范圍就很小,而且需要大量的人力和物力。第三種就是本文研究的這種,由于上述產品的限制,出現了一些可穿產品。這個裝置不是由老年人自己操作的,地域也很廣,不僅可以在室內,也可以在室外,不需要人員去監控,只要老人一摔倒就會馬上判斷并且發出警報,成本低,實用性非常高。
針對上述問題,本文提出了基于STM32單片機老人摔倒檢測定位系統設計。首先,對各硬件做出簡單的介紹,對實物電路原理圖做出描述。其次,用模擬摔倒實驗得出加速度值和角速度值再運用SVM得出判斷摔倒閥值。再次,運用KEIL程序開發編寫程序以及用FlyMcu程序燒錄軟件。最后,實物功能展示。
(1)硬件系統在通常情況下垂直放置在腹部口袋里(ADXL 345垂直站立),傾斜角傳感器比較數據和用 SVM算法設計的閥門值進行比較來判斷摔倒,如果判斷摔跤、蜂鳴器警報、倒地的時間超過15 s就會向監護人發短信(15 s是用來讓老人反應是否嚴重,能不能自己站起來報警,或者是不是誤報警,可以自己按取消鍵)。
(2)啟動GSM800發送短信給監護人,發送的內容有help me!包括經度信息和緯度信息。
(3)當要發短信時狀態指示燈就會不斷閃爍。
如果硬件太大就不適合老年人日常活動攜帶,所以本文采用了集成化思想來設計硬件。硬件系統主要可以分為五個模塊:STM32主板模塊,ADXL345加速度傳感器信號采集器模塊,定位GPS模塊,報警器模塊,SIM800發短信模塊。五大模塊互相結合組成了硬件系統。將GPS模塊的TXD串口接在單片機的TXD串口就可以傳送數據,RXD模塊串口發送腳接單片機串口 RXD接收數據;GSM模塊RXD串口和單片機的PA9串口相連就可以接收數據,TXD串口發送端與單片機的PA10串口相連就可以發送數據;采用的報警模塊為5 V 有源蜂鳴器模塊,采用三極管 8050來驅動,只要單片機控制引腳為高電平,蜂鳴器就會鳴叫報警,反之則不鳴叫。圖1為電路原理圖。
要檢測摔倒就要把摔倒和非摔倒時的運動特征區別開來。非摔倒時人的某一方向上的加速度和角加速度都不會有很大的變化,而摔倒情況下,人在某一方向上的加速度和角加速度都會有短時間的極快變化。人在摔倒時身體的各部位受力情況都會不同,加速度也不同。摔倒主要分為三個狀態:不穩定狀態,倒地狀態,躺倒狀態。
圖2為人體運動的抽象圖,將人的運動方向分為 xyz三個方向。人在平常運動時 xoy面與地面平行,xyz三方向上的加速度也不會短時間改變。但由于老人和年輕人不一樣,大部分老人都會駝背,所以一開始的 xoy面與地面就有一個傾角。從而加速度和 xoy與地面就可以明顯反應出老人的運動情況。當老人摔倒時腰部會有明顯的受力變化,假設腰部質量為m,xyz軸合并的加速度為a,腰部受力F為:
圖3根據笛卡爾系建立的 xyz軸坐標系能很好的反應出加速度和角度變化,設x方向的加速度為ax,y方向的加速度為ay,z方向的加速度為az,這可以得到合加速度a為:
根據笛卡爾坐標系也可以很容易觀察到老人在摔倒時的角度變化,如圖 3,當老人摔倒是側倒下時,y軸偏轉角度為θy,當老人摔倒是前倒,則z軸與豎直方向上形成角度θz,當老人摔倒時是后仰,則x軸偏轉角度為θx,當老人摔倒時旋轉也會形成一個偏轉角度θ。這些偏轉角度有時是單獨出現,但絕大多數情況下都同時出現。
要想判斷老人是否摔跤就必須把摔跤和非摔跤區分開來,根據第二章的笛卡圖坐標系來采集人體的運動學信息樣本。
如圖3我們可以知道xyz各方向上的加速度ax,ay,az,現在就要根據各方向的加速度求出合加速度a=(ax,ay,az):
設角速度w1為x軸的偏轉角速度,w2為y軸的角度變化速度,定義w=(w1,w2)為合角速度:
實際采用的傳感器采集到的角加速度都是離散分量,所以要求出x軸的角度變化θ1,y軸的角度變化θ2不能用積分計算而用累加計算:
由上文我們就得到了合加速度和合偏轉角,但是這只是角度傳感器所測得的初步數據不夠準確還需要STM32的預處理。
由上文我們得到了合加速度和合偏轉角,此時我們就要確定一個閾值來判斷摔跤與否。本文的閾值確定運用的是機械學習中的SVM算法。
SVM(代碼全名:矢量機支持)支持矢量機,SVM最基本的應用就是對矢量機進行分類,解決最佳的分類表面,然后將其應用到各種矢量機中。對于SVM,有一個被稱為分類表面,兩個點組被設置為到該平面的最低距離,以及從兩個點組的邊緣點到該平面的最高距離。SVM使用軸心損失功能計算經驗風險,向解決方案提供系統添加監督條款,優化系統的結構風險。SVM可以通過核訓練法進行非線性分類,這也是核訓練的一般方法之一。
用SVM來求閾值,就要對老人的日常生活過程中的信息進行分類,需要創造出訓練樣本集和實驗樣本集:
y1:訓練樣本集,獲得最優分類界面。則要完成40次模擬摔跤實驗獲得摔跤數據樣本,完成40次行走過程摔跤,40次行走轉身模擬,40次坐下起立模擬,40次蹲下模擬。共獲得200組模擬數據樣本。
y2:實驗樣本集,用來檢驗所設閥值的準確性:完成 10次模擬摔跤,10次行走過程摔跤,10次行走過程蹲下模擬,10次轉身模擬,10次自立坐下模擬。運用上面的訓練樣本集來測試檢測系統的準確性。
部分轉身數據獲取,見表1。

表1 轉身數據Tab.1 turn round and data
部分蹲下數據獲取,見表2。

表2 蹲下數據Tab.2 squat down data
部分坐下數據獲取,見表3。

表3 坐下數據Tab.3 sit down and data
部分摔倒數據獲取,見表4。

表4 摔倒數據Tab.4 fall data
此時我們運用libsvm程序來得出我們想要的閾值。將上文中的數據以 libsvm的格式輸入到libsvm中,在python中將下文的程序輸入就可以調用libsvm,從而得到最優分類面和想要的閥值。
最后得出我們合加速度的閾值和合偏轉角的閾值,X=650,y=490。
由此可以得出比較閥值。
程序部分主要開發了一個主程序和七個子程序,子程序分別是:按鍵初始化子程序 key;通用定時器子程序 timer;ADXL345檢測角度加速度變化;延時子程序 delay;led驅動子程序;系統中斷設置化子程序sys;收發經緯度日期信息子程序usart。圖4為程序流程圖。
當老人摔倒時首先蜂鳴器會報警,當15 s以后沒有按下暫停鍵就會發短信給家人,短信內容包含經緯度。因為硬件并未安裝電池但是外接USB,只需要將數據線插在一般的充電寶上就可以實現功能,但是因為GPS的局限性,定位功能并不能完全準確,且在高樓多的地方和陰雨天不太靈敏,在室內是無法定位的。圖5和圖6為功能演示圖,板子直立模擬老人未摔倒時,平躺模擬老人摔倒時。
隨著老齡化社會的不斷加劇,我國空巢老人日益增多。每年因為摔倒而死亡的老人也日益增多,如果能研究出老人摔倒檢測定位系統,會減少因為摔倒而產生的醫療費和死亡率,對老人看護和健康管理有重要作用。研究的主要結論如下:
(1)獲取數據的過程,區分出老人摔倒和老人正常運動特征的區別,從而得到兩者加速度和角速度的區別。其后設計采集加速度和角速度的易攜帶設備。實驗中采集了200組數據,旋轉、蹲下、坐下各40組,跌倒80組包括步行跌倒和直立跌倒在內,共獲得200組數據。
(2)大部分的老人摔倒檢測定位大多是使用三軸加護速度傳感器去檢測,也有用6050去檢測的。本系統用加速度和角加速度變化來和SVM算法設計的閥值進行比較。用 SVM取得最優分類界面,選擇最優分類界面上的值來區別老人是否摔倒,這就大大降低了誤判可能。
(3)運用STM32硬件去開發傳感器檢測到的加速度和角速度與閥值比較來判斷摔倒,再通過SIM800發短信給手機。
(4)該裝置通過物聯網技術實現遠程監控,具有實時性強,使用簡單,效率高的特點,市場前景廣闊。