国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

CC3200與Android的跌倒檢測系統(tǒng)上位機設(shè)計※

2016-03-10 01:58:49趙旭強高天星馬忠梅

趙旭強,高天星,馬忠梅

(北京理工大學(xué) 計算機學(xué)院,北京 100081)

?

CC3200與Android的跌倒檢測系統(tǒng)上位機設(shè)計※

趙旭強,高天星,馬忠梅

(北京理工大學(xué) 計算機學(xué)院,北京 100081)

摘要:Android系統(tǒng)使用 OpenGL 的標(biāo)準(zhǔn)接口來支持3D圖形功能。通過處理CC3200下位機發(fā)送的數(shù)據(jù),計算出加速度芯片模型四邊形的4個頂點坐標(biāo)。系統(tǒng)使用OpenGL ES在窗口中顯示模型四邊形,能夠?qū)⑿酒藨B(tài)的3D形式準(zhǔn)確顯示到窗口中。通過分析數(shù)據(jù),可有效判斷出人體是否處于跌倒?fàn)顟B(tài)。

關(guān)鍵詞:CC3200;Android;OpenGL;跌倒檢測

引言

近年來,老人摔倒的問題越來越嚴(yán)重。為了在老人跌倒后能夠得到及時的處理,本文設(shè)計了一種基于Android智能手機和CC3200微控制器,并結(jié)合MMA7260加速度傳感器的老人跌倒檢測系統(tǒng)。

SimpleLink Wi-Fi CC3200是由TI公司研制的低功耗MCU平臺,集成了高性能的ARM Cortex-M4處理器核和Wi-Fi網(wǎng)絡(luò)處理器,網(wǎng)絡(luò)通信穩(wěn)定可靠,并擁有完整的安全協(xié)議,其外接了多種設(shè)備,包括快速并行接口、SPI、UART串口、ADC模塊等。MMA7260是一款低功耗、低成本、高靈敏三軸加速度傳感器,其加速度以模擬電壓的形式輸出。通過CC3200的ADC模塊對MMA7260的加速度模擬電壓進(jìn)行轉(zhuǎn)換,并通過其Wi-Fi模塊與Android智能設(shè)備連接,在Android強大的計算能力和OpenGL庫的支持下,可以將MMA7260的姿態(tài)顯示到手機界面,然后通過對數(shù)據(jù)進(jìn)行分析,實現(xiàn)對老人跌倒的檢測。

1系統(tǒng)設(shè)計

1.1系統(tǒng)整體設(shè)計

系統(tǒng)主要由兩大模塊組成:CC3200下位機模塊和Android智能設(shè)備上位機模塊,其系統(tǒng)整體結(jié)構(gòu)如圖1所示。

圖1 系統(tǒng)整體結(jié)構(gòu)

下位機CC3200采用TI-RTOS操作系統(tǒng)作為平臺,利用RTOS的多線程能力,創(chuàng)建了兩個線程,分別用于對MMA7260的加速度模擬電壓值進(jìn)行A/D轉(zhuǎn)換和將得到的加速度數(shù)據(jù)利用TCP/Socket發(fā)送到上位機。Android上位機創(chuàng)建了一個Wi-Fi熱點,下位機通過此熱點建立與上位機的通信。Android上位機接收到加速度電壓數(shù)據(jù)之后,首先計算芯片上3個坐標(biāo)軸與重力方向的夾角,然后計算芯片3個坐標(biāo)軸在地面坐標(biāo)系中的坐標(biāo),并計算芯片四邊形4個頂點在地面坐標(biāo)系中的坐標(biāo),最終通過OpenGL ES將坐標(biāo)軸和芯片四邊形繪制到窗口中。

1.2上位機軟件設(shè)計

使用一臺Android智能終端設(shè)備作為上位機,建立與CC3200的連接,并循環(huán)接收加速度的電壓數(shù)據(jù),經(jīng)過一系列轉(zhuǎn)換得到芯片的姿態(tài)并顯示到界面上。

首先,需要建立一個SocketSever,等待CC3200的連接。為了使得手機和CC3200能夠連接在一起,需要讓手機和CC3200位于同一個局域網(wǎng)內(nèi),因此,需要使用該手機建立一個Wi-Fi熱點,讓CC3200能夠連接并發(fā)送數(shù)據(jù)。

然后,SocketServer接收到一個Socket,并獲得其IP地址,新建一個文件用于保存接收到的數(shù)據(jù),其次獲取Socket的數(shù)據(jù)流,從中獲取加速度電壓數(shù)據(jù)。

接著根據(jù)電壓數(shù)據(jù)計算出芯片的3個坐標(biāo)軸與重力方向的夾角,根據(jù)夾角計算芯片的3個坐標(biāo)軸在地面坐標(biāo)系中的坐標(biāo)關(guān)系,從而計算芯片四邊形4個頂點的位置坐標(biāo),最后使用OpenGL ES將四邊形顯示在窗口中。

上位機程序流程圖如圖2所示。

圖2 上位機軟件設(shè)計流程圖

2上位機軟件實現(xiàn)

2.1連接網(wǎng)絡(luò)并獲得加速度數(shù)據(jù)

網(wǎng)絡(luò)連接使用TCP/Socket實現(xiàn)。首先,應(yīng)用程序建立一個SocketServer,將端口設(shè)置為與CC3200中一致,即5001,然后使用SocketServer的Accept方法等待CC3200連接本服務(wù)器,并得到連接Socket。

2.2根據(jù)加速度計算角度

得到3個坐標(biāo)軸加速度的值之后,可以計算3個坐標(biāo)軸與重力方向的角度。重力分解示意圖如圖3所示。

圖3 重力分解示意

將重力G沿3個坐標(biāo)軸方向分解,則:

Gcosθx=Gx

Gcosθy=Gy

Gcosθz=Gz

因此:

θx=arccos (Gx/G)

θy=arccos (Gy/G)

θz=arccos (Gz/G)

在實際計算中,由于采集到的加速度值并不只有重力加速度的分量,在運動狀態(tài)時還有比較大的運動加速度,因此,Gx、Gy、Gz的絕對值可能大于重力加速度g,此時無法計算arccos的值。在計算中,只需要求得角度值而并不需要加速度的具體數(shù)值,所以對Gx、Gy、Gz進(jìn)行閾值處理:

Gx=Gx

Gy=Gy

Gz=Gz

使得角度均可計算。

2.3根據(jù)角度計算向量

在跌倒檢測系統(tǒng)中,存在兩個不同的坐標(biāo)系:世界坐標(biāo)系和模型坐標(biāo)系。其中,世界坐標(biāo)系即大地坐標(biāo)系,其z坐標(biāo)軸與重力方向相反,此坐標(biāo)系相對于地面是靜止的。模型坐標(biāo)系,即CC3200或者M(jìn)MA7260芯片的坐標(biāo)系,本文中所述的采集得到的3個加速度方向即為此坐標(biāo)系的3個坐標(biāo)軸方向,即2.2節(jié)中所述的Gx、Gy、Gz。

本文需要計算模型坐標(biāo)系坐標(biāo)軸的單位向量在世界坐標(biāo)系中的坐標(biāo)。

一般情況下,芯片位置姿態(tài)固定,世界坐標(biāo)系中x、y方向可以任意選擇,如圖4所示,四邊形代表芯片位置,長坐標(biāo)軸為地面坐標(biāo)系,地面坐標(biāo)系不同但芯片位置相同。因此,為了計算方便,將兩個坐標(biāo)系的原點重合,并使得模型坐標(biāo)系的x軸位于世界坐標(biāo)系的yOz平面內(nèi)。

圖4 芯片位置姿態(tài)固定示意圖

首先計算模型坐標(biāo)系x軸單位向量的坐標(biāo)。由于x軸單位向量在yOz平面內(nèi),設(shè)其單位向量X=(0,yx,zx),如圖5所示,在yOz平面內(nèi),X向量與z軸的夾角為θx,因此X=(0,sin θx,cos θx)。

圖5 芯片x軸在世界 坐標(biāo)系中的位置

然后計算模型坐標(biāo)系y軸單位向量Y=(xy,yy,zy)的坐標(biāo)。對于此單位向量,其與世界坐標(biāo)系z軸的夾角為θy,因此:

同時,y軸單位向量與x軸單位向量垂直,因此:

聯(lián)立上述方程組,可以得到:

得到x軸單位向量和y軸單位向量的坐標(biāo)后,可以得到z軸單位向量:

X·Z=0

Y·Z=0

|Z|=1

然而,在本系統(tǒng)中,根據(jù)x軸單位向量和y軸單位向量便可完全確定模型坐標(biāo)系的xOy平面,即確定芯片在世界坐標(biāo)系中的姿態(tài),因z軸單位向量的表述比較復(fù)雜,因此不再計算z軸單位向量。

2.4顯示四邊形的頂點坐標(biāo)計算

圖6 模型四邊形

在得到模型坐標(biāo)系xOy平面的單位坐標(biāo)之后,即可計算模型四邊形的頂點,即芯片四邊形在世界坐標(biāo)系中的頂點。如圖6所示,顯然,四邊形的4個頂點的坐標(biāo)分別為X+Y,-X+Y,-X-Y,X-Y。其中,X為模型坐標(biāo)系中x軸單位向量坐標(biāo),Y為模型坐標(biāo)系中y軸單位向量坐標(biāo)。

2.5OpenGL軟件設(shè)計

在本系統(tǒng)中,需要將芯片模型的姿態(tài)以3D形式顯示出來,因此采用Android 3D 引擎OpenGL ES。

在Android中使用GLSurfaceView來顯示 OpenGL 視圖。它提供了一個專門用于渲染3D 的接口類,即Renderer類,使用setRenderer(new MyRenderer())將GLSurfaceView和渲染接口Renderer類連接起來。實現(xiàn)Renderer需要它的3個接口:onSurfaceCreated()、onSurfaceChanged()、onDrawFrame()。其中,onSurfaceCreated()接口在創(chuàng)建窗口時調(diào)用,通常在此接口中對 OpenGL 做一些初始化工作,例如設(shè)置背景等。onSurfaceChanged()接口在窗口大小發(fā)生改變時調(diào)用,可以重新設(shè)置場景大小等。onDrawFrame()接口即為最重要的接口,所有繪圖操作都在此函數(shù)中實現(xiàn)。

當(dāng)OpenGL引擎啟動之后,將會循環(huán)調(diào)用onDrawFrame()進(jìn)行繪圖。在onDrawFrame()中要完成清空屏幕、設(shè)置攝像機、繪圖任務(wù)。調(diào)用glClear()方法可以實現(xiàn)清空緩沖區(qū)任務(wù),使用gluLookAt()方法可以設(shè)置攝像機位置。其繪圖流程圖如圖7所示。

圖7 上位機繪圖流程圖

在繪圖時,首先根據(jù)加速度計算得到的角度數(shù)據(jù)計算模型坐標(biāo)系的單位向量,并計算模型四邊形頂點坐標(biāo),將得到的數(shù)據(jù)放入Buffer準(zhǔn)備繪圖。繪圖主要代碼略——編者注。

首先申請一個ByteBuffer,并設(shè)置Buffer中點的繪圖順序,然后將坐標(biāo)以及顏色數(shù)據(jù)轉(zhuǎn)換為float型Buffer,并將頂點坐標(biāo)放入到floatbuffer中,其次使用glColor4f()設(shè)置繪圖時使用的顏色,也可使用顏色數(shù)組給每個頂點分別設(shè)置顏色,最后使用glVertexPointer()將數(shù)據(jù)放入繪圖緩沖區(qū)中,并使用glDrawArrays()進(jìn)行圖像繪制。主要繪制的圖像有5個坐標(biāo)軸,每個坐標(biāo)軸有兩個頂點,是以GL_LINES的形式繪制;還有一個模型四邊形,4個頂點以GL_TRIANGLE_STRIP的形式繪制。

3實驗結(jié)果及分析

在跌倒檢測前首先將數(shù)據(jù)保存在文件中并分析,以確定設(shè)備正常工作并得到傳感器的各狀態(tài)數(shù)值。

根據(jù)MMA7260用戶手冊,對任意方向,V0=1.65 V,R=0.8 V/g。由于采用分壓電路,CC3200中的Vout是實際Vout的一半。同時,由于不同設(shè)備的差異性,V0并不嚴(yán)格等于1.65 V,R也不嚴(yán)格等于0.8 V/g,并且不同方向的數(shù)值并不嚴(yán)格相同。對于本系統(tǒng),因使用了分壓電路,以上數(shù)值均應(yīng)減少一半。將MMA7260穩(wěn)定放在標(biāo)準(zhǔn)位置,即讓芯片的x軸、y軸、z軸分別處于與重力方向相同并固定,經(jīng)過分壓電路的分壓處理,得到的數(shù)值如表1所列。當(dāng)x軸上加速度為 -1g時,其電壓平均值為1.011 V;當(dāng)加速度為0時,其電壓平均值為0.733 V,當(dāng)加速度為1g時,其電壓平均值為0.42 V,并計算得到其分辨率為0.275 V/g,即加速度每變化1g,x軸電壓值變化0.275 V。同樣,與x軸類似,當(dāng)y軸與z軸上加速度為0時,其電壓值分別為0.770 V和0.788 V,y軸和z軸上分辨率同樣為0.275 V。三軸加速度電壓如表1所列。

表1 三軸加速度電壓

實際加速度為0時,電壓值和分辨率都與用戶手冊誤差較大。因此,由2.1節(jié)可知,對于3個方向上的加速度值的計算公式為:

實現(xiàn)硬件連接、組網(wǎng)與程序之后,對其進(jìn)行測試。當(dāng)系統(tǒng)正常運行時,手機端軟件界面如圖8所示。界面中顯示了連接狀態(tài)、連接IP和端口,中間黑色框即為OpenGL的View窗口,顯示了芯片的姿態(tài);同時,還顯示了3個軸方向得到的加速度電壓值,以及計算得到的模型坐標(biāo)系3個軸與重力方向的角度值。

圖8 不同狀態(tài)時系統(tǒng)界面

當(dāng)MMA7260處于不同姿態(tài)時,手機上顯示的姿態(tài)與MMA7260的姿態(tài)有較為一致的變化,MMA7260芯片處于不同姿態(tài)時的結(jié)果略——編者注。

從上述結(jié)果可以看到,手機界面中顯示的四邊形姿態(tài)與MMA7260芯片姿態(tài)基本一致,能夠較準(zhǔn)確地識別姿態(tài)。

將MMA7260和CC3200固定在一起,并將CC3200板與人體平行,佩戴在身體腰部靠下位置(這一部位比較穩(wěn)定,在一般的彎腰、行進(jìn)、坐下等動作中對跌倒判斷影響比較小)。

結(jié)語

本文利用SimpleLink Wi-Fi CC3200微控制器、MMA7260和Android智能終端設(shè)備,設(shè)計了一種跌倒檢測系統(tǒng),能夠較好地檢測到人體摔倒并進(jìn)行警報。系統(tǒng)對CC3200發(fā)送的加速度數(shù)據(jù)進(jìn)行處理,通過OpenGL將芯片的姿態(tài)顯示在窗口中。通過對加速度數(shù)據(jù)進(jìn)行分析,可以有效判斷出人體所處狀態(tài),當(dāng)摔倒時能夠及時作出判斷并發(fā)出報警。

參考文獻(xiàn)

[1] TI.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加速度傳感器的跌倒檢測[J].單片機與嵌入式系統(tǒng)應(yīng)用,2013(6):49-52.

[3] TI.TI-RTOS 2.14 User’s Guide[EB/OL].[2015-09].http://www.ti.com/lit/ug/spruhd4j/spruhd4j.pdf.

[4] TI.CC3200 SimpleLink Wi-Fi and Internet-of-Things Solution,a Single Chip WirelessMCU Technical Reference Manual[EB/OL].[2015-09].http://www.ti.com/lit/ug/swru367b/swru367b.pdf.

趙旭強、高天星(碩士研究生),馬忠梅(副教授):主要研究方向為嵌入式系統(tǒng)和物聯(lián)網(wǎng)應(yīng)用。

Upper Computer Design of Fall Detection System Based on CC3200 and Android※

Zhao Xuqiang,Gao Tianxing,Ma Zhongmei

(School of Computer Science and Technology,Beijing Institute of Technology,Beijing 100081,China)

Abstract:Using a standard interface of OpenGL,Android system can support 3D graphics.In this paper,the four vertex coordinates of the chip quadrilateral model are calculated by processing data received from the lower computer of CC3200.OpenGL ES is applied to display this quadrangle in the window of Android system.The chip status can be presented in 3D form exactly in the window.By analyzing the data,whether the human has falling down can be judged efficiently.

Key words:CC3200;Android;OpenGL;fall detection

收稿日期:(責(zé)任編輯:薛士然2015-09-20)

中圖分類號:TP368

文獻(xiàn)標(biāo)識碼:A

莎车县| 自贡市| 南召县| 渝北区| 辰溪县| 龙山县| 海盐县| 囊谦县| 榆树市| 鹤山市| 如东县| 长岛县| 北川| 桓台县| 富源县| 赤城县| 邹平县| 晋宁县| 海淀区| 建德市| 阿拉善左旗| 普兰县| 丹凤县| 嘉峪关市| 正蓝旗| 闸北区| 喀什市| 贺州市| 宁化县| 黔西| 明溪县| 包头市| 托里县| 仙桃市| 迁安市| 闽清县| 新乐市| 乐清市| 奈曼旗| 清河县| 区。|