基于GPS和GPRS的智能手杖设计
扫描二维码
随时随地手机看文章
引 言
随着嵌入式技术的发展,智能设备已经普遍进入到人们的生活,很多人都拥有一到两件智能设备或更多,但针对老年人的设备却寥寥无几。目前通用的智能设备科技含量高,而老年人接受和适应新事物的能力较差,对于一些智能设备并不能熟练操作,因此本文针对以上问题,设计了一款针对行动不便的老年人使用的智能手杖,该手杖无需复杂操作,只需在电源没电时及时充电即可。同时在手杖上集成了GPRS 模块、GPS 模块、角度传感器以及摄像头,家人可以实时查看老人的位置, 在老人摔倒后及时通知,并针对社会上 扶不扶 的热门话题, 特别增加了摄像功能为老人摔倒提供录像证据支持。
1 硬件设计
本设计硬件由一根普通手杖、电源模块、摄像模块、GPS模块、GSM模块和角度传感器模块构成。电源为其他模块提供能量,摄像模块为 扶不扶 提供证据,GPS模块接收定位信息,GSM模块发送定位信息和报警信息,角度传感器通过检测手杖的倾斜角度来判断老人是否摔倒。系统结构如图 1所示。
系统通过 CC3200 OURS 开发板驱动角度传感器,数据经过处理判断,发出报警信号并传送给 51 主控芯片。GPS 信号经过NEO 数据处理模块,以串口方式传送至 51 主控芯片。51 主控芯片接收到数据后,通过AT 指令控制SIM 模块向服务器上传地理位置和报警信号。摄像模块长时间开机,不间断录取周围环境音视频,保存 8 小时以内的摄像资料,内存耗尽后具有自动删除旧视频并保存新视频,必要时刻取下内存卡读取录制资料的功能。
1.1 SIM900模块
SIM900A是紧凑型、高可靠性的无线模块,采用SMT 封装的双频GSM/GPRS 模块解决方案,采用功能强大的处理器ARM9216EJ-S内核,能满足低成本、紧凑尺寸的开发要求。使用工业标准界面,使得具备 GSM/GPRS900/1800MHz功能的SIM900A以小尺寸和低功耗实现语音、SMS、数据和传真信息的高速传输。SIM900A不仅结构小巧、紧凑,还能满足M2M几乎所有的应用要求。可取出SD卡查看手杖内录像, 为社会热点问题 扶不扶 提供视频证据。
1.2 GPS模块
GPS 导航系统的基本原理是测量出已知位置的卫星到用户接收机之间的距离,然后综合多颗卫星的数据就可知道接收机的具体位置。要达到这一目的,卫星的位置可以根据星载时钟所记录的时间在卫星星历中查出。而用户到卫星的距离则通过纪录卫星信号传播到用户所经历的时间,再将其乘以光速得到真实距离。
GPRMC 数据详解:
$GPRMC,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh
<1> UTC时间,hhmmss(时分秒)格式,与北京时间相差 8个小时,我们在使用时要在这个时间基础上加 8个小时。
<2> 定位状态,A 为有效定位,V 为无效定位。
<3> 纬度ddmm.mmmm(度分)格式。
<4> 纬度半球 N(北半球)或 S(南半球)。
<5> 经度dddmm.mmmm(度分)格式。
<6> 经度半球 E(东经)或 W(西经)。
1.3 六轴传感器
六轴模块采用高精度的陀螺加速度计MPU6050,通过处理器读取MPU6050 的测量数据然后通过串口输出,避免自己开发MPU6050 复杂的I2C 协议。模块保留了 MPU6050 的I2C 接口,以满足高级用户希望访问底层测量数据的需求。采用先进的数字滤波技术能有效降低测量噪声,提高测量精度。模块内部集成了姿态解算器,配合动态卡尔曼滤波算法,能够在动态环境下准确输出模块的当前姿态,姿态测量精度为0.01 度,稳定性高。
加速度计算公式:
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) 角度计算公式:
滚转角(x 轴)Roll=((RollH<<8)│RollL) 32 768180( )
俯仰角(y 轴)Pitch=((PitchH<<8)│PitchL) 32 768 180( )
偏航角(z 轴)Yaw=((YawH<<8)│YawL) 32 768 180( )
2 软件设计
软件分为三个部分, 分别为开发板部分、服务器部分与Andriod 开发,其中开发板程序开发包含对 GPS 数据的接收与解析,对 SIM900 模块的网络操作,以及六轴传感器的姿态判断。服务器部分主要使用MyEclipse下的Web 开发、MySQL 数据库以及Tomcat 服务器布置。Andriod 开发使用了百度地图的SDK,整个App 与百度地图移动版类似。
2.1 开发板部分
开发板端主要包含接收地理位置、摔倒判断以及信息上传三大功能。软件流程图如图 2 所示。
(1) 数据上传:使用 51单片机控制SIM900模块将采集的 GPS数据以及摔倒报警信号与服务器建立TCP连接,将数据上传。
(2) 地理位置 :接收 GPS数据,解析出有用数据。
(3) 摔倒判断:使用 CC3200采集六轴传感器数据,依据手杖角度以及加速度来判断是否摔倒,是否发出摔倒报警信号。
// 数据上传
void creat_tcp()// 建立TCP 链接
void send_gprs_data (unsigned char *buf, unsigned int count)// 发送数据
void close_tcp();// 关闭TCP 链接
// 接收地理位置
GPS_RMC_Parse(buf_uart2.buf, &GPS)
// 解析GPRMC 数据
pt = GPS_DisplayOne();// 显示GPS 信息
send_gprs_data(pt,1)// 发送GPS 数据
2.2 服务器部分
服务器端主要有两个服务端程序,一个为 TCP 服务与SIM900 建立TCP 连接,接收上传的GPS 数据以及摔倒报警信号,并将数据存放在数据库中。另外一个为 HTTP 服务,主要与Android 客户端建立连接,判断用户登录信息是否合法, 返回地理位置坐标以及是否摔倒等信息。以下程序为数据上传主要代码:
ServerSocket serverSocket=new ServerSocket(8080);// 建立 Socket服务,监听一个端口
Socketsocket = serverSocket.accept(); //通过accept方法获取连接过来的客户端对象
InputStream inputStream = socket.getInputStream();// 通过Socket接收数据流
// 向SQL 数据库中更新最新的数据
new UserSQLConndemo08().ddlUpdateLatitude(Latitude); new UserSQLConndemo08().ddlUpdateLongitude(Longitude); newUserSQLConndemo08().ddlUpdatewarn(warn);//
socket.close(); //关闭Socket服务
2.3 Andriod手机 App部分
安卓 App包含登录界面、主体功能界面两部分,手机端流程图如图 3所示。登录界面用来验证用户权限。主体定位功能采用百度地图官方API,通过HTTP协议不断从服务器获取坐标信息,经过数据处理,换算为百度地图坐标显示出来,并且界面具有随意放大缩小功能。Andriod 手机客户端流程图如图 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");// 设置坐标类型
option.setScanSpan(1000);
mLocClient.setLocOption(option);
mLocClient.start();
结 语
本文设计的智能手杖为行动不便的老人提供了极大的帮助,能够实时定位老年人的活动位置,让家人不在为了老人丢失而烦恼;能够在摔倒的第一时间通知家人,让老人受到的伤害降低到最小;能够实时录像,搀扶摔倒的老人再也不用怕因老人的糊涂而受到社会谴责。通过实际系统测试,本设计在待机时间、定位精度、系统稳定性方面都表现良好。