高天星, 趙旭強(qiáng), 馬忠梅
(北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京 100081)
?
基于CC3200的Wi-Fi無線組網(wǎng)式跌倒檢測(cè)系統(tǒng)※
高天星, 趙旭強(qiáng), 馬忠梅
(北京理工大學(xué) 計(jì)算機(jī)學(xué)院,北京 100081)
摘要:TI公司的CC3200是一款基于ARM Cortex-M4處理器核的微控制器,是TI SimpleLink產(chǎn)品線上的一員,其具有既方便又強(qiáng)大的Wi-Fi網(wǎng)絡(luò)通信能力。本文利用CC3200這些特性,結(jié)合MMA7260加速度傳感器,設(shè)計(jì)了一種新型的以Wi-Fi作為組網(wǎng)模式的無線加速度檢測(cè)系統(tǒng),其主要應(yīng)用方向?yàn)闄z測(cè)人的跌倒等情況。
關(guān)鍵詞:CC3200;Wi-Fi;跌倒檢測(cè)
引言
近些年來,由于智能移動(dòng)設(shè)備的飛速發(fā)展,Wi-Fi這種無線互聯(lián)技術(shù)被廣泛應(yīng)用在各種各樣的生活場(chǎng)景中,如辦公室、咖啡廳、校園、家庭等。因此,使用Wi-Fi技術(shù),可以以最方便快捷的方式接入到互聯(lián)網(wǎng),或與其他智能移動(dòng)設(shè)備互聯(lián)。在這一背景下,衍生了許多具有Wi-Fi能力的MCU,使用它們可以方便地實(shí)現(xiàn)物理控制功能,進(jìn)行物理數(shù)據(jù)的采集。此外,通過Wi-Fi以無線的方式向智能終端傳遞數(shù)據(jù),可以獲得更好的交互效果。
SimpleLink Wi-Fi CC3200是由TI公司研制的低功耗MCU平臺(tái),SimpleLink Wi-Fi技術(shù)可以方便地編寫運(yùn)行在CC3200上的Wi-Fi數(shù)據(jù)傳輸程序,大大降低了過去將MCU與Wi-Fi結(jié)合開發(fā)的復(fù)雜度與成本。CC3200芯片上有豐富的資源可供使用,因此將其作為開發(fā)平臺(tái),自制了一套無線加速度傳感器采集系統(tǒng),通過對(duì)加速度的實(shí)時(shí)監(jiān)控,可以方便地檢測(cè)出老年人是否意外摔倒。
1平臺(tái)介紹
1.1Simplelink Wi-Fi CC3200
CC3200是內(nèi)置 Wi-Fi模塊的微控制器,TI專為物聯(lián)網(wǎng)的開發(fā)與應(yīng)用設(shè)計(jì)了這塊集成芯片。在這塊芯片上集成了高性能的ARM Cortex-M4處理器內(nèi)核和Wi-Fi網(wǎng)絡(luò)處理器,CC3200的網(wǎng)絡(luò)通信能力穩(wěn)定可靠,并擁有完整的安全協(xié)議。不僅如此,CC3200平臺(tái)還提供了完整的開發(fā)軟件、開發(fā)樣例、調(diào)試工具與文檔,是十分理想的開發(fā)平臺(tái)[1]。
ARM Cortex-M4處理器的運(yùn)行頻率為80 MHz,并外接多種外設(shè),包括快速并行接口、SPI、UART串口、ADC模塊等。芯片中的ROM存儲(chǔ)了相關(guān)外設(shè)驅(qū)動(dòng)程序。此外,CC3200的網(wǎng)絡(luò)處理子系統(tǒng)包含一個(gè)802.11b/g/n射頻模塊,以滿足各頻段Wi-Fi的連接需要。而在網(wǎng)絡(luò)處理芯片的軟件部分,其內(nèi)置了TCP/IP等協(xié)議棧,極大方便了接入互聯(lián)網(wǎng)的軟件操作。
1.2MMA7260加速度傳感器
MMA7260是一款低功耗、低成本的高靈敏加速度傳感器。通過調(diào)整芯片,選擇性地輸入電平,可以設(shè)定4種不同的高靈敏度模式,這些模式以加速度量程區(qū)分,包括±1.5 g、±2 g、±4 g 和±6 g,在1.5 g范圍內(nèi),敏感度可以達(dá)到800 mV/g。另外它體積非常小,采用6 mm×6 mm×1.45 mm QFN 封裝,并擁有睡眠模式以節(jié)電。以上這些特性,讓MMA7260非常適合運(yùn)用于以電池供電的手持設(shè)備上[2]。
TI-RTOS是由TI開發(fā)的可裁減嵌入式實(shí)時(shí)操作系統(tǒng),此操作系統(tǒng)是在一個(gè)名為SYS/BIOS的實(shí)時(shí)多線程內(nèi)核基礎(chǔ)之上構(gòu)建的,提供了實(shí)時(shí)多任務(wù)搶占式調(diào)度機(jī)制,并包含了硬件抽象和實(shí)時(shí)性能分析,可以有效地優(yōu)化目標(biāo)機(jī)的內(nèi)存和CPU使用。在內(nèi)核層之上,TI-RTOS不僅提供了一套設(shè)備驅(qū)動(dòng),還附加了諸如文件系統(tǒng)、網(wǎng)絡(luò)層等組件,使開發(fā)者可以將精力集中在應(yīng)用的開發(fā)上[3]。
2系統(tǒng)設(shè)計(jì)
2.1網(wǎng)絡(luò)拓?fù)?/p>
系統(tǒng)的整體網(wǎng)絡(luò)拓?fù)淙鐖D1所示,作為數(shù)據(jù)的接收方和交互終端由Android智能設(shè)備擔(dān)任,其可以是智能手機(jī)、平板等,目前攜帶無線網(wǎng)卡的Android智能設(shè)備,均可以在系統(tǒng)設(shè)置中開啟共享網(wǎng)絡(luò)選項(xiàng),使設(shè)備變?yōu)橐粋€(gè)無線熱點(diǎn),令其他同樣采用802.11標(biāo)準(zhǔn)的無線設(shè)備可以接入。
圖1 系統(tǒng)網(wǎng)絡(luò)拓?fù)?/p>
因熱點(diǎn)AP具有一對(duì)多的連接能力,本系統(tǒng)采取了兩個(gè)接有MMA7260傳感器的CC3200作為Station接入熱點(diǎn)AP。而當(dāng)選取的智能設(shè)備擁有3G上網(wǎng)能力時(shí),甚至可以將數(shù)據(jù)通過3G網(wǎng)絡(luò)傳入位于因特網(wǎng)的云端,令其他觀測(cè)者獲取。采用這一拓?fù)浣Y(jié)構(gòu)有以下優(yōu)點(diǎn):
① 采用雙CC3200,極大提高了采集數(shù)據(jù)的穩(wěn)定性與容錯(cuò)性,即使一臺(tái)設(shè)備宕機(jī)或斷開連接,另一臺(tái)也可以正常工作。
② 使系統(tǒng)可攜帶。通常情況下,AP熱點(diǎn)由無線路由器擔(dān)任,但是對(duì)于摔倒檢測(cè),始終令用戶隨身攜帶無線路由是不現(xiàn)實(shí)的,而諸如手機(jī)等智能設(shè)備是方便攜帶的。由MMA7260與CC3200組成的傳感器設(shè)備體積小,可以將其別在衣物上以便使用。
2.2接口連接
MMA7260與CC3200的連接方式如圖2所示,接入3.3 V電壓并令Sleep引腳保持高電平。g-Select1與g-Select2引腳懸空,表示選擇模式00,即為量程1.5g模式。此外,圖2中用到了6個(gè)10 kΩ電阻,這些電阻起到調(diào)整電壓的作用。CC3200的ADC引腳P58、P59、P60的輸入電壓范圍為1.5 V,如果超過這個(gè)電壓值,ADC模塊將不會(huì)檢測(cè)到電壓變化,始終判定為1.5 V[4],而MMA7260的輸出電壓可以達(dá)到2.85 V,使用電阻并聯(lián)后輸入電壓減少至一半,即可正常檢測(cè)傳感器數(shù)據(jù)。
圖2 MMA7260與CC3200連接圖
2.3軟件設(shè)計(jì)
應(yīng)用部署在TI-RTOS上,利用TI-RTOS的多線程能力,可以將運(yùn)行在CC3200微控制器上的軟件分為采集任務(wù)、網(wǎng)絡(luò)任務(wù)、發(fā)送任務(wù)。其中,采集任務(wù)用來驅(qū)動(dòng)ADC接口,收集由MMA7260傳感器得到的三軸加速度數(shù)據(jù);網(wǎng)絡(luò)任務(wù)用于在CC3200啟動(dòng)時(shí)與Android設(shè)備AP建立連接;而發(fā)送任務(wù)用于將采集的數(shù)據(jù)發(fā)送給AP。
當(dāng)MCU啟動(dòng)后,會(huì)由TI-RTOS創(chuàng)建3個(gè)線程,分別運(yùn)行以上描述的3個(gè)任務(wù),在這3個(gè)線程中,網(wǎng)絡(luò)連接的優(yōu)先級(jí)最高,因?yàn)檫B接網(wǎng)絡(luò)的操作是整個(gè)檢測(cè)系統(tǒng)的運(yùn)行基礎(chǔ)。采集任務(wù)和數(shù)據(jù)發(fā)送任務(wù)同步運(yùn)行,由ADC采集到的三軸加速度數(shù)據(jù)存儲(chǔ)在公共緩沖區(qū)中,數(shù)據(jù)發(fā)送任務(wù)從公共緩沖區(qū)提取數(shù)據(jù),并通過TCP/IP協(xié)議以數(shù)據(jù)包形式發(fā)送。
同樣,在Android設(shè)備AP上運(yùn)行接收程序,這一程序周而復(fù)始地運(yùn)行,采集從MCU設(shè)備傳送過來的數(shù)據(jù),并將數(shù)據(jù)進(jìn)行解析處理顯示在屏幕上。如果設(shè)備支持3G網(wǎng)絡(luò),可以同時(shí)將數(shù)據(jù)上傳到物聯(lián)網(wǎng)云平臺(tái),以支持遠(yuǎn)程設(shè)備監(jiān)視。
3軟件實(shí)現(xiàn)
3.1采集任務(wù)
CC3200提供了API以供開發(fā)者調(diào)用,所以可以很容易地獲取到CC3200的采集數(shù)據(jù)。
CC3200的ADC模塊的內(nèi)存映射地址由DriverLib給出,本程序使用到的符號(hào)分別為ADC_BASE基地址、ADC_CH_1、ADC_CH_2、ADC_Ch1偏移地址。使用前對(duì)ADC模塊進(jìn)行初始化,代碼如下:
MAP_ADCTimerConfig(ADC_BASE,2^17);
MAP_ADCTimerEnable(ADC_BASE);
MAP_ADCEnable(ADC_BASE);
MAP_ADCChannelEnable(ADC_BASE, ADC_CH_1);
首先使用MAP_ADCTimerConfig與MAP_ADCTimerEnable函數(shù)對(duì)ADC模塊的定時(shí)器進(jìn)行設(shè)置與使能,這里使能了全部17個(gè)位作為時(shí)間戳的長(zhǎng)度,并使用MAP_ADCChannelEnable使能ADC通道。
ADC模塊的采樣數(shù)據(jù)存儲(chǔ)于ADC模塊的FIFO數(shù)據(jù)寄存器中,在其32位的長(zhǎng)度中,2~13位為采樣數(shù)據(jù),使用DriverLib中提供的MAP_ADCFIFORead函數(shù)即可獲取相應(yīng)通道FIFO數(shù)據(jù)寄存器的long型數(shù)值。之后,將采樣的X、Y、Z軸的數(shù)值向右移2位,并用掩碼去掉時(shí)間戳等多余信息,按照電壓比換算,進(jìn)一步轉(zhuǎn)換為電壓值,存儲(chǔ)在全局?jǐn)?shù)組中,以供發(fā)送程序采集使用。
3.2網(wǎng)絡(luò)任務(wù)
網(wǎng)絡(luò)任務(wù)按順序共分為3部分:第一部分在SimpleLink軟件層,將相關(guān)的網(wǎng)絡(luò)器件狀態(tài)調(diào)整為默認(rèn)態(tài),并調(diào)用sl_Start函數(shù)以就緒設(shè)備;第二部分為連接部分,使用函數(shù)sl_WlanConnect進(jìn)行對(duì)AP的連接,將AP的SSID作為參數(shù)傳入;第三部分將設(shè)置一個(gè)循環(huán)來監(jiān)聽g_ulStatus的狀態(tài),當(dāng)g_ulStatus同時(shí)滿足已獲取IP和網(wǎng)絡(luò)已連接狀態(tài),說明網(wǎng)絡(luò)已成功連接,跳出循環(huán)使程序繼續(xù)運(yùn)行。
3.3發(fā)送任務(wù)
發(fā)送任務(wù)程序采用TCP/Socket實(shí)現(xiàn),MCU端作為TCP Client,首先連接運(yùn)行位于AP設(shè)備上的TCP Server。使用SlSockAddr_t結(jié)構(gòu)體存儲(chǔ)TCP Server的IP地址與端口號(hào),并在調(diào)用連接函數(shù)sl_Connect時(shí)作為參數(shù)傳入。
數(shù)據(jù)發(fā)送代碼如下:
while (1){
sprintf(g_cBsdBuf, " x: %f y: %f z: %f ",
(((float)((pulAdcSamples1[4] >> 2 ) & 0x0FFF))*1.4)/4096,
(((float)((pulAdcSamples2[4] >> 2 ) & 0x0FFF))*1.4)/4096,
(((float)((pulAdcSamples3[4] >> 2 ) & 0x0FFF))*1.4)/4096);
// sending packet
iStatus = sl_Send(iSockID, g_cBsdBuf, 38, 0 );
}
因sl_Send每次只能發(fā)送一個(gè)數(shù)據(jù)包,故使用while循環(huán)來發(fā)送多個(gè)數(shù)據(jù)包,iSockID為建立特定Socket連接后提供的標(biāo)識(shí)符,g_cBsdBuf和sTestBufLen為發(fā)送數(shù)據(jù)的緩沖區(qū)和發(fā)送長(zhǎng)度。
3種任務(wù)通過函數(shù)的形式封裝,并使用由TI-RTOS提供的osi_TaskCreate對(duì)任務(wù)進(jìn)行注冊(cè),待系統(tǒng)啟動(dòng)時(shí),操作系統(tǒng)會(huì)自動(dòng)調(diào)度3種任務(wù)。優(yōu)先級(jí)最高的網(wǎng)絡(luò)任務(wù)優(yōu)先執(zhí)行,待其結(jié)束后,優(yōu)先級(jí)稍低的采集任務(wù)和發(fā)送任務(wù)開始執(zhí)行,兩種任務(wù)都是常駐的循環(huán)程序,所以需要在它們的循環(huán)中調(diào)用osi_Sleep函數(shù)使任務(wù)停轉(zhuǎn),以保證另一任務(wù)可以搶占,讓多任務(wù)可以并行。在微控制器上運(yùn)行的所有程序的流程圖如圖3所示。
圖3 軟件整體流程圖
3.4接收模塊
接收模塊程序在Android智能終端上實(shí)現(xiàn),將其作為Android應(yīng)用來實(shí)現(xiàn),當(dāng)應(yīng)用程序啟動(dòng)時(shí),建立一個(gè)端口號(hào)為5001的TCP Server以供CC3200的TCP模塊進(jìn)行連接。當(dāng)連接建立成功后,Server端源源不斷地從Socket數(shù)據(jù)流讀取數(shù)據(jù),每條數(shù)據(jù)以換行符作為分隔,包含了加速度傳感器的三軸加速度信息。
在界面上將不斷輸出變化的三軸傳感器數(shù)值,并將數(shù)值連帶時(shí)間戳寫入日志中以供觀測(cè)和統(tǒng)計(jì)。
4跌倒檢測(cè)
在進(jìn)行跌倒測(cè)試前可以進(jìn)行串口數(shù)據(jù)測(cè)試,以確定設(shè)備正常工作并得到傳感器的各狀態(tài)數(shù)值。在發(fā)送任務(wù)中使用提供的PinMuxConfg函數(shù)進(jìn)行初始化,并調(diào)用UART_PRINT函數(shù),即可按一定格式進(jìn)行串口輸出。在計(jì)算機(jī)上安裝FTDI驅(qū)動(dòng)之后連接CC3200,可以在設(shè)備管理器中得到設(shè)備串口號(hào)。此時(shí),打開串口工具Trea Term,并設(shè)置波特率為115 200 bps,待CC3200連接AP正常工作后,可以看到串口終端中的數(shù)據(jù)顯示,包括X、Y、Z三個(gè)加速度方向的電壓值。
實(shí)現(xiàn)硬件連接、組網(wǎng)與程序之后,對(duì)設(shè)備進(jìn)行部署,首先將傳感器佩戴在人體的臀部,這一部位相對(duì)比較穩(wěn)定,在平時(shí)行進(jìn)、彎腰等動(dòng)作時(shí)不會(huì)對(duì)檢測(cè)造成明顯影響,并將其標(biāo)志面向上與地面平行作為標(biāo)準(zhǔn)狀態(tài)。作為采集終端的AP熱點(diǎn)Android設(shè)備,可以置于衣物口袋中以保證連接,并每隔100 ms將數(shù)據(jù)寫入文件中。之后,進(jìn)行每段時(shí)長(zhǎng)為10 s的人體靜止、行進(jìn)和摔倒動(dòng)作,將文件中記錄的300條三軸電壓變化數(shù)據(jù)導(dǎo)入Excel表格,并做了折線圖繪制。
① 在第一個(gè)10 s內(nèi),人體保持靜止,其三軸加速度變化如圖4所示。
圖4 靜止?fàn)顟B(tài)三軸電壓變化
② 在第二個(gè)10 s內(nèi),人體行進(jìn),其三軸加速度變化如圖5所示。
圖5 行進(jìn)狀態(tài)三軸電壓變化
③ 在第三個(gè)10 s內(nèi),人體跌倒并倒地側(cè)臥,其三軸加速度變化如圖6所示。
圖6 跌倒?fàn)顟B(tài)三軸電壓變化
通過對(duì)以上數(shù)據(jù)進(jìn)行分析,可以得知在靜止?fàn)顟B(tài)下,CC3200獲取的X、Y、Z三軸的電壓維持在0.65 V、0.75 V和1.05 V。而在人的行進(jìn)狀態(tài)下,三軸電壓的浮動(dòng)值不超過0.4 V。通過可以進(jìn)一步計(jì)算出各個(gè)方向的角度值,在人體跌倒時(shí),Z軸(即垂直方向)在一定時(shí)間(1~2 s)內(nèi)大幅度下降,代表人體位置大幅下墜,其電壓的振幅超過0.5 V,通過這一條件的判斷,即可得知人體可能摔倒,并發(fā)出警告。
結(jié)語
本文利用SimpleLink Wi-Fi CC3200平臺(tái),與MMA7260加速度傳感器結(jié)合,設(shè)計(jì)了一套新型組網(wǎng)方式下的加速度檢測(cè)系統(tǒng)。其無線的連接方式使檢測(cè)系統(tǒng)的部署與測(cè)試更加靈活,而通過Android智能終端提供的數(shù)據(jù)顯示與采集為分析數(shù)據(jù)帶來了極大的便利,通過分析人體摔倒時(shí)的規(guī)律,可以很好地起到跌掉檢測(cè)和報(bào)警的作用。
參考文獻(xiàn)
[1] Texas Instruments.CC3200 SimpleLink Wi-Fi and Internet-of-Things Solution, a Single-Chip Wireless MCU[EB/OL].[2015-09].http://www.ti.com/lit/ds/symlink/cc3200.pdf.
[2] 陳鈺琨.LM4F232pQD與MMA7260加速度傳感器的跌倒檢測(cè)[J] .單片機(jī)與嵌入式系統(tǒng)應(yīng)用, 2013(6): 49-52.
[3] Texas Instruments.TI-RTOS 2.14 User’s Guide[EB/OL].[2015-09].http://www.ti.com/lit/ug/spruhd4j/spruhd4j.pdf.
[4] Texas Instruments.CC3200 SimpleLink Wi-Fi and Internet of Things Solution, a Single Chip Wireless MCU Technical Reference Manual[EB/OL].[2015-09].http://www.ti.com/lit/ug/swru367b/swru367b.pdf.
高天星、趙旭強(qiáng)(碩士研究生),馬忠梅(副教授):主要研究方向?yàn)榍度胧较到y(tǒng)和物聯(lián)網(wǎng)應(yīng)用。
Wi-Fi Wireless Fall Detection System Design Based on CC3200※
Gao Tianxing,Zhao Xuqiang,Ma Zhongmei
(School of Computer Science and Technology,Beijing Institute of Technology,Beijing 10081,China)
Abstract:The CC3200 MCU is produced by TI company based on ARM Cortex-M4,which belongs to TI SimpleLink product line.CC3200 has powerful Wi-Fi network communication ability.In this paper,a new wireless acceleration detection system is designed using CC3200 and MMA7260 acceleration sensor,which takes Wi-Fi as the networking model.The system can be used for the falling detection.
Key words:CC3200;Wi-Fi;fall detection
收稿日期:(責(zé)任編輯:楊迪娜2015-09-11)
中圖分類號(hào):TP368
文獻(xiàn)標(biāo)識(shí)碼:A