基于MMA7260QT三軸加速度傳感器的跌倒探測儀的研制
事務處理及狀態(tài)機
根據(jù)跌倒探測器的設(shè)計需求,系統(tǒng)要同時具備計步器、跌倒檢測、報警處理、系統(tǒng)設(shè)置和無線通信控制等功能。
事務處理的方法借鑒操作系統(tǒng)中的線程概念。首先將每項事務執(zhí)行的操作明確,確定每種操作的優(yōu)先級、相互關(guān)系和對資源的要求,然后在主循環(huán)中設(shè)置各種操作的啟動機制,從總體上看,這些事物在主循環(huán)中并行地得到實現(xiàn)。跌倒探測器事務處理的調(diào)用關(guān)系如圖6所示。
針對某些項事務處理的實現(xiàn),在軟件設(shè)計中采用了狀態(tài)機的方法以確保整個任務能夠順暢而正確地得以實現(xiàn)。
系統(tǒng)設(shè)置
系統(tǒng)設(shè)置主要完成一些初始化操作和需要使用者進行確認的系統(tǒng)信息的設(shè)定操作。
系統(tǒng)初始化工作主要由MCU完成,包括各種配置寄存器的設(shè)置、液晶初始化指令和存儲緩沖區(qū)的設(shè)置,初始化工作將保證系統(tǒng)各功能組件能夠在上電后正常啟動。
MCU初始化--MCU_Init( ):
通過設(shè)置相應的控制寄存器實現(xiàn)MCU的啟動和對各功能外設(shè)(Peripheral)的管理:
時鐘:MCU工作采用內(nèi)部時鐘,通過設(shè)置ICS控制寄存器實現(xiàn);
端口:根據(jù)系統(tǒng)端口分配方案,結(jié)合相關(guān)外設(shè)--I2C、SCI的控制寄存器實現(xiàn);
I2C控制器:傳輸速率、地址選擇設(shè)定;
SCI控制器:波特率設(shè)置。
液晶初始化--LCD_Init( ):
通過指令初始化液晶驅(qū)動控制芯片HT1621B,完成液晶顯示器的初始化。
存儲緩沖區(qū)初始化--RT_Data、 Word_Base[ ]:
MC9S08QG8內(nèi)部集成了512字節(jié)的RAM滿足程序運行所需。而在跌倒探測器運行過程中,MCU持續(xù)采集加速度傳感器的數(shù)據(jù),并進行處理,因此要為數(shù)據(jù)分析預先開辟好緩存區(qū)。同樣,在利用CDMA發(fā)布報警信息時,報警信息文字內(nèi)容需要在進行軟件設(shè)計時預先設(shè)定好,并在需要使用時通過指針調(diào)用。
需要使用者進行確認的系統(tǒng)信息的設(shè)定,是指跌倒探測器報警信息的接收方可以根據(jù)實際情況由使用者進行設(shè)定,例如親屬的移動電話或急救中心的固定座機(要求能夠接收短信)。使用者可以通過按鍵配合液晶,輸入接收方的號碼即可,必要時使用者也可以對接收方號碼進行修改。
按鍵功能
按鍵功能在軟件設(shè)計中單獨提出是因為本系統(tǒng)受限于MCU端口數(shù)量,無法按照預先設(shè)計的人機交互需求安排足夠端口作為鍵盤掃描之用。本設(shè)計中最終確定使用2個按鍵,按鍵的功能設(shè)定及使用方法設(shè)計如下。
"Alam"鍵(啟動報警接收方號碼輸入、手動報警):
跌倒探測器一般工作模式下,長按(超過2秒)"Alam"鍵,啟動報警信息發(fā)布功能,適用于除跌 倒情況外其他緊急情況;
跌倒探測器一般工作模式下,按"Alam"鍵,跌倒探測器進入設(shè)置報警接收方號碼狀態(tài),配合"Alter"鍵實現(xiàn)號碼輸入;
跌倒探測器進入報警處理狀態(tài)(蜂鳴器beep)時,按"Alam"鍵,直接發(fā)布報警信息,然后關(guān)閉蜂鳴器;
"Alter"鍵(計步器啟動、暫停、清零、取消報警、設(shè)置報警接收方號碼):
跌倒探測器一般工作模式下,按"Alter"鍵在計步器啟動、暫停和清零三項功能之間切換;
跌倒探測器進入報警接收方號碼輸入狀態(tài)時,"Alter"鍵執(zhí)行液晶顯示的數(shù)字加1的操作,數(shù)字從0-9循環(huán);
跌倒探測器進入報警處理狀態(tài)(蜂鳴器beep)時,按"Alter"鍵取消報警,然后關(guān)閉蜂鳴器。
計步器
MCU始終在分析佩戴者身體姿態(tài)的信息,因此可以將佩戴者的行走動作分析作為一項附屬結(jié)果輸出,從而使跌倒探測器還具有了計步器的功能。
參考圖1,在理想狀態(tài)下的步行過程中,X軸和Z軸都應該能夠檢測到加速度的周期性變化--X軸由前進的動作引起,Z軸由身體的上下起伏引起,這種周期性的變化可以為步行動作的分析提供依據(jù)。由于在實際使用過程中,身體隨邁步動作產(chǎn)生相應的晃動同樣會引起加速度傳感器在三個正交坐標軸方向上的輸出,因此在設(shè)計檢測算法時應設(shè)定合適的加速度閾值。只有超過一定幅度的輸出才被看作是由于邁步動作所引起,避免由于正常的身體晃動引入的各種偽差。計步器實現(xiàn)的軟件流程如圖7。
跌倒檢測
危險的或者可能已產(chǎn)生較嚴重后果的跌倒發(fā)生后,人體通常處于水平狀態(tài),因此對于這種類型的跌倒,要求跌倒探測器都能夠檢測到并實施報警處理機制。而對于其他較為復雜的跌倒過程,則需要通過報警機制的配合,實現(xiàn)對跌倒探測及危險報警的準確觸發(fā)。跌倒檢測的算法狀態(tài)機如圖8所示,
跌倒檢測算法描述如下:
1)主循環(huán)等待,監(jiān)測Z軸加速度變化,如果超過閾值,進入下一步;
2)等待加速度恢復到正常范圍內(nèi),進入下一步;
3)再設(shè)置延時10秒,等待佩戴者狀態(tài)穩(wěn)定;
4)數(shù)據(jù)分析,如果發(fā)現(xiàn)佩戴者身體水平,認為發(fā)生跌倒狀況,觸發(fā)報警處理。
報警處理
在本設(shè)計中,采用跌倒檢測算法和多種報警模式相結(jié)合的方式。跌倒探測器檢測到跌倒發(fā)生時,系統(tǒng)必須能夠準確無誤地將報警信息發(fā)布出去,才能保證跌倒者獲得救助。跌倒包含很多種類型,有些情況下,檢測到的"跌倒"是有意識的行為--或者根本不是跌倒--假陽性;另外,有時跌倒者仍然還保持一定的行動能力,為了盡快得到救助,自身可以采取一定的行動;還有一種情況,跌倒造成比較嚴重的后果,跌倒者已無法行動。
針對上面提到的幾種情況,報警處理的軟件設(shè)計將加以區(qū)分對待:
檢測到跌倒后,系統(tǒng)啟動30S的倒計時器,并打開蜂鳴器,每3S響一次,如果沒有接收到任何輸入,30S結(jié)束后,系統(tǒng)自動發(fā)布報警信息;
進入30S倒計時后,蜂鳴器"beep",系統(tǒng)可以響應用戶輸入,跌倒探測器的兩個按鍵分別設(shè)置為"手動報警"和"取消(報警)"的功能,如果用戶按"手動報警"鍵,系統(tǒng)發(fā)布報警信息;
如果用戶按"取消"鍵,系統(tǒng)關(guān)閉30S倒計時和蜂鳴器,不作任何處理,直接返回計步器和跌倒檢測狀態(tài)。
通信控制
報警信息通過CDMA短信的方式發(fā)送給接收方,跌倒探測器采用DTGS-800b型CDMA模塊,通信控制就是使其能夠正常工作的一段例程。DTGS-800b型CDMA模塊提供RS232接口,MCU可以根據(jù)需要通過AT命令實施對通信過程的控制。具體通信例程根據(jù)設(shè)計需求應包括如下內(nèi)容:
啟動CDMA模塊--Comm_Start( );
啟動GpsOne?服務--Gps_Start( );
獲得GPS空間定位信息--Gps_Position( );
發(fā)送短信息報警--Send_SMS( )。
由于通信例程涉及的狀態(tài)不多,基本是按照上面的順序進行,因而程序結(jié)構(gòu)比較簡單,這里就不再贅述。
結(jié)論
按照上述方案設(shè)計完成的跌倒探測器樣機線路板如圖9所示,左圖為帶有CDMA模塊線路,右圖為不帶CDMA模塊線路,可見其下方是讀SIM卡電路。上電后,該線路板各功能模塊工作正常,能夠完成加速度采集、EEPROM數(shù)據(jù)存儲和跌倒報警短信發(fā)送(包括自動、手動和取消模式),按鍵液晶均能夠正常
蜂鳴器相關(guān)文章:蜂鳴器原理
評論