老人們的保護(hù)傘,基于Arduino和三軸加速度傳感器設(shè)計(jì)“帥到報警”方案
某日,公司業(yè)務(wù)部德哥突然爆出一陣哀嚎:我去哪里找一家可以做“帥到報警”的方案商?
莊好人一聽,樂了,發(fā)問:怎么會有那么有創(chuàng)意的需求,長得帥還要報警的,應(yīng)用場景是什么,娛樂用戶嗎?
德哥一聽,也樂了,答:“不是長得帥要報警,是摔倒在地上了要發(fā)布警示信息,一般可用于護(hù)理和老人家看護(hù)防范。”
同事們打趣:莊好人,你這腦回路也是沒誰了~
不過話說回來,隨著獨(dú)居老人和老人看護(hù)產(chǎn)業(yè)的發(fā)展,老年人的移動看護(hù)需要朝著智能的方向去發(fā)展,目前國內(nèi)外市面上摔倒報警器產(chǎn)品也有了成熟的方案,做一款跌倒報警器設(shè)計(jì)不是那么難。本文中21IC網(wǎng)就給大家介紹一款基于Arduino和三軸加速度傳感器設(shè)計(jì)的跌倒檢測報警系統(tǒng)的設(shè)計(jì)原理。如果你有這種成熟方案,也可以上傳到方案超市,有需求的雇主可以通過方案超市平臺的對接,和你協(xié)商合作。
目前,研究開發(fā)人體跌倒檢測系統(tǒng)方面的技術(shù)有很多種,最常見的是圖像分析和加速度分析法。都是基于視頻圖像分析的室內(nèi)跌倒自動檢測系統(tǒng),這種技術(shù)準(zhǔn)確性高,人體動作清晰可見,但需要多部攝像機(jī)同時工作,且暴露了用戶的個人隱私,監(jiān)測范圍有限,受環(huán)境的影響也很大。另一種加速度分析方法,主要基于微機(jī)電系統(tǒng)(Micro-Electromechanical System,MEMS)傳感器。MEMS技術(shù)近幾年得到了快速發(fā)展,廣泛應(yīng)用在跌倒檢測、狀態(tài)檢測、運(yùn)動檢測等方面。都是利用MEMS技術(shù)進(jìn)行人體跌倒檢測的,目前國內(nèi)一些基于MEMS技術(shù)的跌到檢測雖可較好實(shí)現(xiàn)跌倒檢測,但大多計(jì)算量較大、設(shè)計(jì)復(fù)雜、價格昂貴,難以得到廣泛的應(yīng)用。
設(shè)計(jì)一種基于Arduino和三軸加速度傳感器的跌倒檢測報警系統(tǒng),實(shí)時采集人體加速度參數(shù)和地理位置信息,應(yīng)用于老年人意外跌倒后及時報警,兼具了性價比高、設(shè)計(jì)簡單、實(shí)時性高、低功耗、可擴(kuò)展的特點(diǎn),實(shí)驗(yàn)證明了該系統(tǒng)的可行性和準(zhǔn)確性。
1 系統(tǒng)總體設(shè)計(jì)
跌倒檢測報警系統(tǒng)由Arduino最小系統(tǒng)、加速度參數(shù)采集模塊、GPS定位模塊、GSM通信模塊組成,其系統(tǒng)框圖如圖1所示。
圖1 跌倒檢測報警系統(tǒng)框圖
Arduino實(shí)時接收加速度參數(shù)采集模塊傳來的人體加速度參數(shù)值,單片機(jī)通過接收來的加速度值,經(jīng)過跌倒檢測算法來判斷穿戴者的體態(tài),如果檢測出跌倒的發(fā)生,便觸發(fā)跌倒報警機(jī)制。當(dāng)?shù)拱l(fā)生時,通過GPS定位模塊能捕獲到穿戴者的具體地理位置,然后發(fā)出包含跌倒位置的報警求救信息,通知佩戴者的監(jiān)護(hù)人或醫(yī)療機(jī)構(gòu),進(jìn)行后續(xù)的救治。本系統(tǒng)在考慮這些功能需求的前提下,采用Arduino為控制核心,外圍連接加速度參數(shù)采集模塊、GPS定位模塊、GSM通信模塊,來完成整個系統(tǒng)的功能。
2 硬件設(shè)計(jì)
硬件部分主要包括微控制器最小系統(tǒng)的選取、加速度參數(shù)采集模塊、GPS定位模塊、GSM通信模塊,以及各個模塊之間的連接。
2.1 Arduino平臺
Arduino是一款基于開源的電子原型設(shè)計(jì)平臺。Arduino包含兩個主要的部分:硬件部分是可以用來做電路設(shè)計(jì)的電路板,基于AVR系列單片機(jī)和ARM微控制器,有豐富的外設(shè)接口和硬件資源;軟件部分則是Arduino IDE,是在計(jì)算機(jī)中的程序開發(fā)環(huán)境。Arduino的模塊化設(shè)計(jì),大大簡化了電子系統(tǒng)的設(shè)計(jì)過程。
其中,微控制器最小系統(tǒng)選用Arduino Uno,它是基于ATMEL公司的ATmega328P單片機(jī)的硬件平臺,具有32KB Flash、1KB EEPROM、14路數(shù)字輸入輸出口(其中6路可用于PWM輸出)、6路模擬輸入接口。同時,Uno預(yù)置了Bootloader程序,不需要其他外部燒寫器,可以直接通過USB下載程序。
2.2 加速度傳感器ADXL345
ADXL345是ADI公司最近推出的基于iMEMS技術(shù)的3軸、數(shù)字輸出加速度傳感器。ADXL345具有多種可變的測量范圍,高分辨率,高靈敏度,超小的封裝,超低的功耗,標(biāo)準(zhǔn)的I2C或SPI數(shù)字接口,32級FIFO存儲,以及內(nèi)部多種運(yùn)動狀態(tài)檢測和靈活的中斷方式等特性。所有這些特性,使得 ADXL345有助于大大簡化跌倒檢測算法,使其成為一款非常適合用于跌倒檢測器應(yīng)用的加速度傳感器。圖2為ADXL345功能框圖。
圖2 ADXL345功能框圖
ADXL345標(biāo)準(zhǔn)的I2C數(shù)字接口可以和Arduino Uno的I2C接口方便通信,將ADXL345采集到的人體三軸加速度數(shù)據(jù)傳給單片機(jī)進(jìn)行跌倒檢測算法處理,圖3給出了ADXL345和單片機(jī)之間的I2C總線典型連接圖。ADXL345的(CS) ?管腳接高電平,表示ADXL345工作在I2C模式。SDA和SCL是I2C總線的數(shù)據(jù)線和時鐘線,分別連接到Arduino Uno相應(yīng)的I2C總線接口(A4和A5)。ADXL345的INT1管腳連接到Arduino Uno的INT0(Pin 2),用來產(chǎn)生中斷信號。
圖3 ADXL345和單片機(jī)之間的I2C典型連接圖
2.3 GPS定位和GSM通信模塊SIM908
SIM908是一款集成了高性能GSM/GPRS引擎和GPS引擎的芯片。其中的GSM/GPRS引擎可以工作在GSM 850MHz,EGSM 900MHz,DCS 1800MHz和PCS 1900MHz四個頻段;GPS引擎具有一流的采集和跟蹤靈敏度、TTFF(Time-To-First-Fix)和準(zhǔn)確度[12],這些特性可以很好地完成跌倒位置定位和發(fā)送報警信號的任務(wù)。在SIM908芯片上可以同時完成GPS定位和GSM通信功能,可以大大減少系統(tǒng)芯片的數(shù)量和功耗。圖4為SIM908的功能框圖。SIM908通過UART口與Arduino Uno進(jìn)行通信,RXD和TXD分別與Uno的TXD和RXD相連,完成跌倒位置的GPS數(shù)據(jù)的捕獲和發(fā)送GSM報警短信功能。
圖4 SIM908功能框圖
3算法設(shè)計(jì)與實(shí)驗(yàn)
3.1 跌倒檢測算法
對跌倒檢測原理的研究主要是找到人體在跌倒過程中的加速度變化特征。圖5給出的是加速度在不同運(yùn)動過程中的變化曲線,包括(a)步行上樓、(b)步行下樓、(c)坐下、 (d)起立。其中紅色的曲線是Y軸(垂直方向)的加速度曲線,其正常靜止?fàn)顟B(tài)下應(yīng)該為-1g;黑色和黃色的曲線分別是X軸(前后方向)和Z軸(左右方向)的加速度曲線,其正常靜止?fàn)顟B(tài)下應(yīng)該為0g;綠色的曲線是三軸加速度的矢量和,其正常靜止?fàn)顟B(tài)下應(yīng)該為+1g。
圖5 不同運(yùn)動過程中的加速度變化曲線
由于老年人的運(yùn)動相對比較慢,所以在普通的步行過程中,加速度變化不會很大。最明顯的加速度變化就是在坐下動作中Y軸加速度(和加速度矢量和)上有一個超過3g的尖峰,這個尖峰是由于身體與椅子接觸而產(chǎn)生的。而跌倒過程中的加速度變化則完全不同。圖6給出的是意外跌倒過程中的加速度變化曲線。通過圖6和圖5的比較,可以發(fā)現(xiàn)跌倒過程中的加速度變化有4個主要特征,這可以作為跌倒檢測的準(zhǔn)則。這4個特征在圖6中以紅色的方框標(biāo)注,下面將對其逐一進(jìn)行詳細(xì)介紹。
圖6 意外跌倒過程中的加速度變化曲線
失重:在跌倒的開始都會發(fā)生一定的失重現(xiàn)象。在自由落體的下降過程,這個現(xiàn)象會更加明顯,加速度的矢量和會降低到接近0g。對于一般的跌倒,也會發(fā)生合加速度小于1g的情況。因此,這可以作為跌倒?fàn)顟B(tài)的第一個判斷依據(jù)??梢杂葾DXL345的Free_Fall中斷來檢測。
撞擊:失重之后,人體發(fā)生跌倒的時候會與地面或其他物體發(fā)生撞擊,在加速度曲線中會產(chǎn)生一個很大的沖擊。這個沖擊可以通過ADXL345的Activity中斷來檢測。因此,F(xiàn)ree_Fall中斷之后,緊接著產(chǎn)生Activity中斷是跌倒?fàn)顟B(tài)的第二個判斷依據(jù)。
靜止:人體在跌倒后,也就是撞擊發(fā)生之后,不可能馬上起來,會有短暫的靜止?fàn)顟B(tài)(如果人因?yàn)榈苟鴮?dǎo)致昏迷,甚至可能是較長時間的靜止)。表現(xiàn)在加速度曲線上就是會有一段時間的平穩(wěn)。這可以通過ADXL345的Inactivity中斷來檢測。因此,Activity中斷之后的Inactivity中斷是跌倒?fàn)顟B(tài)的第三個判斷依據(jù)。
與初始狀態(tài)比較:跌倒之后,人體會發(fā)生翻轉(zhuǎn),因此人體的方向會與原先靜止站立的姿態(tài)不同。這使得跌倒之后的靜止?fàn)顟B(tài)下的三軸加速度數(shù)值與初始狀態(tài)下的不同,如圖5所示。因此,跌倒檢測的第四個依據(jù)就是跌倒后的靜止?fàn)顟B(tài)下加速度值與初始狀態(tài)發(fā)生變化,且矢量變化超過一定的門限值。
這四個判斷依據(jù)綜合在一起,構(gòu)成了整個的跌倒檢測算法,可以對跌倒?fàn)顟B(tài)給出報警。
另外,如果跌倒造成了嚴(yán)重的后果,比如,導(dǎo)致了人的昏迷。那么人體會在更常的一段時間內(nèi)都保持靜止。這個狀態(tài)仍然可以通過Inactivity中斷來檢測。也就是說,如果發(fā)現(xiàn)在跌倒之后的很長時間內(nèi)都保持Inactivity狀態(tài),可以再次給出一個嚴(yán)重報警。算法的流程圖如圖7所示。
圖7 算法流程圖
3.2 實(shí)驗(yàn)結(jié)果
本文設(shè)計(jì)了一個實(shí)驗(yàn)方案對算法進(jìn)行驗(yàn)證。實(shí)驗(yàn)對向前跌倒,向后跌倒,向左、右兩側(cè)跌倒等不同跌倒姿勢以及跌倒后是否有長時間靜止?fàn)顟B(tài)的情況分別進(jìn)行了10次測試,表1中給出的是相關(guān)測試結(jié)果。
表1 實(shí)驗(yàn)結(jié)果
本設(shè)計(jì)將加速度傳感器ADXL345、GPS和GSM模塊SIM908與Arduino Uno平臺結(jié)合在一起,通過加速度傳感器采集人體三軸加速度值,實(shí)時檢測人體體態(tài),完成對人體跌倒的檢測和報警。整體設(shè)計(jì)成本低、可靠性高、算法復(fù)雜度低、檢測準(zhǔn)確度高和可擴(kuò)展的優(yōu)點(diǎn),具有很高的實(shí)用性,可以滿足對人體跌倒檢測報警的需要。