基于GPS和GPRS的智能手杖設(shè)計
引 言
隨著嵌入式技術(shù)的發(fā)展,智能設(shè)備已經(jīng)普遍進(jìn)入到人們的生活,很多人都擁有一到兩件智能設(shè)備或更多,但針對老年人的設(shè)備卻寥寥無幾。目前通用的智能設(shè)備科技含量高,而老年人接受和適應(yīng)新事物的能力較差,對于一些智能設(shè)備并不能熟練操作,因此本文針對以上問題,設(shè)計了一款針對行動不便的老年人使用的智能手杖,該手杖無需復(fù)雜操作,只需在電源沒電時及時充電即可。同時在手杖上集成了GPRS 模塊、GPS 模塊、角度傳感器以及攝像頭,家人可以實時查看老人的位置, 在老人摔倒后及時通知,并針對社會上 扶不扶 的熱門話題, 特別增加了攝像功能為老人摔倒提供錄像證據(jù)支持。
1 硬件設(shè)計
本設(shè)計硬件由一根普通手杖、電源模塊、攝像模塊、GPS模塊、GSM模塊和角度傳感器模塊構(gòu)成。電源為其他模塊提供能量,攝像模塊為 扶不扶 提供證據(jù),GPS模塊接收定位信息,GSM模塊發(fā)送定位信息和報警信息,角度傳感器通過檢測手杖的傾斜角度來判斷老人是否摔倒。系統(tǒng)結(jié)構(gòu)如圖 1所示。
系統(tǒng)通過 CC3200 OURS 開發(fā)板驅(qū)動角度傳感器,數(shù)據(jù)經(jīng)過處理判斷,發(fā)出報警信號并傳送給 51 主控芯片。GPS 信號經(jīng)過NEO 數(shù)據(jù)處理模塊,以串口方式傳送至 51 主控芯片。51 主控芯片接收到數(shù)據(jù)后,通過AT 指令控制SIM 模塊向服務(wù)器上傳地理位置和報警信號。攝像模塊長時間開機(jī),不間斷錄取周圍環(huán)境音視頻,保存 8 小時以內(nèi)的攝像資料,內(nèi)存耗盡后具有自動刪除舊視頻并保存新視頻,必要時刻取下內(nèi)存卡讀取錄制資料的功能。
1.1 SIM900模塊
SIM900A是緊湊型、高可靠性的無線模塊,采用SMT 封裝的雙頻GSM/GPRS 模塊解決方案,采用功能強大的處理器ARM9216EJ-S內(nèi)核,能滿足低成本、緊湊尺寸的開發(fā)要求。使用工業(yè)標(biāo)準(zhǔn)界面,使得具備 GSM/GPRS900/1800MHz功能的SIM900A以小尺寸和低功耗實現(xiàn)語音、SMS、數(shù)據(jù)和傳真信息的高速傳輸。SIM900A不僅結(jié)構(gòu)小巧、緊湊,還能滿足M2M幾乎所有的應(yīng)用要求。可取出SD卡查看手杖內(nèi)錄像, 為社會熱點問題 扶不扶 提供視頻證據(jù)。
1.2 GPS模塊
GPS 導(dǎo)航系統(tǒng)的基本原理是測量出已知位置的衛(wèi)星到用戶接收機(jī)之間的距離,然后綜合多顆衛(wèi)星的數(shù)據(jù)就可知道接收機(jī)的具體位置。要達(dá)到這一目的,衛(wèi)星的位置可以根據(jù)星載時鐘所記錄的時間在衛(wèi)星星歷中查出。而用戶到衛(wèi)星的距離則通過紀(jì)錄衛(wèi)星信號傳播到用戶所經(jīng)歷的時間,再將其乘以光速得到真實距離。
GPRMC 數(shù)據(jù)詳解:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1> UTC時間,hhmmss(時分秒)格式,與北京時間相差 8個小時,我們在使用時要在這個時間基礎(chǔ)上加 8個小時。
<2> 定位狀態(tài),A 為有效定位,V 為無效定位。
<3> 緯度ddmm.mmmm(度分)格式。
<4> 緯度半球 N(北半球)或 S(南半球)。
<5> 經(jīng)度dddmm.mmmm(度分)格式。
<6> 經(jīng)度半球 E(東經(jīng))或 W(西經(jīng))。
1.3 六軸傳感器
六軸模塊采用高精度的陀螺加速度計MPU6050,通過處理器讀取MPU6050 的測量數(shù)據(jù)然后通過串口輸出,避免自己開發(fā)MPU6050 復(fù)雜的I2C 協(xié)議。模塊保留了 MPU6050 的I2C 接口,以滿足高級用戶希望訪問底層測量數(shù)據(jù)的需求。采用先進(jìn)的數(shù)字濾波技術(shù)能有效降低測量噪聲,提高測量精度。模塊內(nèi)部集成了姿態(tài)解算器,配合動態(tài)卡爾曼濾波算法,能夠在動態(tài)環(huán)境下準(zhǔn)確輸出模塊的當(dāng)前姿態(tài),姿態(tài)測量精度為0.01 度,穩(wěn)定性高。
加速度計算公式:
ax=((AxH<<8)│ AxL) 32 76816g
ay =((AyH<<8)│ AyL) 32 76816g
az=((AzH<<8)│ AzL) 32 76816g
在計算加速度時,g 為重力加速度,可取 9.8 m/s2。角速度計算公式:
wx=((wxH<<8)│wxL) 32 768 2 000(/s)
wy =((wyH<<8)│wyL) 32 768 2 000(/s)
wz=((wzH<<8)│wzL) 32 768 2 000( /s) 角度計算公式:
滾轉(zhuǎn)角(x 軸)Roll=((RollH<<8)│RollL) 32 768180( )
俯仰角(y 軸)Pitch=((PitchH<<8)│PitchL) 32 768 180( )
偏航角(z 軸)Yaw=((YawH<<8)│YawL) 32 768 180( )
2 軟件設(shè)計
軟件分為三個部分, 分別為開發(fā)板部分、服務(wù)器部分與Andriod 開發(fā),其中開發(fā)板程序開發(fā)包含對 GPS 數(shù)據(jù)的接收與解析,對 SIM900 模塊的網(wǎng)絡(luò)操作,以及六軸傳感器的姿態(tài)判斷。服務(wù)器部分主要使用MyEclipse下的Web 開發(fā)、MySQL 數(shù)據(jù)庫以及Tomcat 服務(wù)器布置。Andriod 開發(fā)使用了百度地圖的SDK,整個App 與百度地圖移動版類似。
2.1 開發(fā)板部分
開發(fā)板端主要包含接收地理位置、摔倒判斷以及信息上傳三大功能。軟件流程圖如圖 2 所示。
(1) 數(shù)據(jù)上傳:使用 51單片機(jī)控制SIM900模塊將采集的 GPS數(shù)據(jù)以及摔倒報警信號與服務(wù)器建立TCP連接,將數(shù)據(jù)上傳。
(2) 地理位置 :接收 GPS數(shù)據(jù),解析出有用數(shù)據(jù)。
(3) 摔倒判斷:使用 CC3200采集六軸傳感器數(shù)據(jù),依據(jù)手杖角度以及加速度來判斷是否摔倒,是否發(fā)出摔倒報警信號。
// 數(shù)據(jù)上傳
void creat_tcp()// 建立TCP 鏈接
void send_gprs_data (unsigned char *buf, unsigned int count)// 發(fā)送數(shù)據(jù)
void close_tcp();// 關(guān)閉TCP 鏈接
// 接收地理位置
GPS_RMC_Parse(buf_uart2.buf, &GPS)
// 解析GPRMC 數(shù)據(jù)
pt = GPS_DisplayOne();// 顯示GPS 信息
send_gprs_data(pt,1)// 發(fā)送GPS 數(shù)據(jù)
2.2 服務(wù)器部分
服務(wù)器端主要有兩個服務(wù)端程序,一個為 TCP 服務(wù)與SIM900 建立TCP 連接,接收上傳的GPS 數(shù)據(jù)以及摔倒報警信號,并將數(shù)據(jù)存放在數(shù)據(jù)庫中。另外一個為 HTTP 服務(wù),主要與Android 客戶端建立連接,判斷用戶登錄信息是否合法, 返回地理位置坐標(biāo)以及是否摔倒等信息。以下程序為數(shù)據(jù)上傳主要代碼:
ServerSocket serverSocket=new ServerSocket(8080);// 建立 Socket服務(wù),監(jiān)聽一個端口
Socketsocket = serverSocket.accept(); //通過accept方法獲取連接過來的客戶端對象
InputStream inputStream = socket.getInputStream();// 通過Socket接收數(shù)據(jù)流
// 向SQL 數(shù)據(jù)庫中更新最新的數(shù)據(jù)
new UserSQLConndemo08().ddlUpdateLatitude(Latitude); new UserSQLConndemo08().ddlUpdateLongitude(Longitude); newUserSQLConndemo08().ddlUpdatewarn(warn);//
socket.close(); //關(guān)閉Socket服務(wù)
2.3 Andriod手機(jī) App部分
安卓 App包含登錄界面、主體功能界面兩部分,手機(jī)端流程圖如圖 3所示。登錄界面用來驗證用戶權(quán)限。主體定位功能采用百度地圖官方API,通過HTTP協(xié)議不斷從服務(wù)器獲取坐標(biāo)信息,經(jīng)過數(shù)據(jù)處理,換算為百度地圖坐標(biāo)顯示出來,并且界面具有隨意放大縮小功能。Andriod 手機(jī)客戶端流程圖如圖 3 所示。
mMapView=(MapView)findViewById(R.id.bmapView); // 地圖初始化
mBaiduMap=mMapView.getMap();// 開啟定位圖層
mBaiduMap.setMyLocationEnabled(true); // 定位初始化
mLocClient=new LocationClient(this);
mLocClient.registerLocationListener(myListener);
LocationClientOption option=newLocationClientOption();
option.setOpenGps(true);// 打 開 GPS option.setCoorType("bd09ll");// 設(shè)置坐標(biāo)類型
option.setScanSpan(1000);
mLocClient.setLocOption(option);
mLocClient.start();
結(jié) 語
本文設(shè)計的智能手杖為行動不便的老人提供了極大的幫助,能夠?qū)崟r定位老年人的活動位置,讓家人不在為了老人丟失而煩惱;能夠在摔倒的第一時間通知家人,讓老人受到的傷害降低到最??;能夠?qū)崟r錄像,攙扶摔倒的老人再也不用怕因老人的糊涂而受到社會譴責(zé)。通過實際系統(tǒng)測試,本設(shè)計在待機(jī)時間、定位精度、系統(tǒng)穩(wěn)定性方面都表現(xiàn)良好。