广东省电子设计大赛设计报告.docx
《广东省电子设计大赛设计报告.docx》由会员分享,可在线阅读,更多相关《广东省电子设计大赛设计报告.docx(86页珍藏版)》请在冰点文库上搜索。
![广东省电子设计大赛设计报告.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/ea80e303-c64c-4fa0-810e-461190ac7b4a/ea80e303-c64c-4fa0-810e-461190ac7b4a1.gif)
广东省电子设计大赛
设计报告
题目:
基于WifiRTLS的大型商场定位服务系统(WifiRTLS-basedshoppingmallspositioningservicesystem
队伍编号:
GD12-3410
队伍成员:
陈浩 陈舒乐 庄晓槟指导老师:
徐向民
原创性声明
本小组所有成员声明。
本次比赛作品均为本小组成员共同努力所得成果,属于原创。
本小组完全意识到本声明的法律后果。
作者签名:
日期:
年 月
日
85
摘要
随着移动互联网兴起,智慧城市的建设,各大运营商的WiFi热点在许多大型商场、机场等地方都可以寻到。
传统的GPS定位技术在建筑内部无法使用,因此利用广泛存在的WiFi网络,在大型商场内部进行定位,成为了首选的技术选择。
本系统基于WiFi信号的RSSI值强度定位技术,采用指纹识别算法定位,精确度可以达到2米,完全满足室内定位导航服务的需求。
关键词:
移动互联网 智慧城市 WiFi RSSi 指纹识别算法 室内定位
Abstract
WiththetremendousriseofthemobileInternetandtheconstructionofwisdomcities,theWiFihotspotsofsomemajoroperatorscanbefoundinmanylargeshoppingmalls,airportsandotherplaces.TraditionalGPStechnologycannotbeusedinsidebuildings,sotakingadvantageofwidespreadWiFinetworktopositioninsidethelargeshoppingmallshasbecomethepreferredchoice.BasedonpositioningtechnologyofWiFisignal'sRSSIvalue,thesystemusesfingerprintrecognitionalgorithmpositioningwhichcanreachtheaccuracyof2meters,soitcanfullymeettherequirementsoftheindoorpositioningandnavigationservices.
Keyword:
mobileInternet wisdomcity WiFi RSSIfingerprintverificationalgorithm indoorlocation
1、绪论
1.1课题背景
位置信息在各种场合中发挥着重要的作用,大型商场里面借助室内定位来导航快速找到出口、电梯、厕所,家长用来跟踪小孩的位置避免小孩在超市中走丢。
成熟的GPS定位技术被广泛用于各个行业,但GPS定位在室内无法定位。
而目前随着移动互联网的飞速发展、智能手机的普及以及智慧城市的建设,三大运营商在许多大型商场以及公共场所覆盖了WiFi。
虽然WiFi不是为定位而设计,但接入点(AP)或基站定期发送的信标信号中所含的接收信号强度(RSSI)信息为室内定位提供了可能性。
1.2大型商场导航系统的概述
本系统基于指纹识别算法定位技术,通过搜集每个位置的WiFi信号强度值,储存在服务器中。
用户进入商场,只需要使用Android系统手机安装客户端,即可使用导航软件。
用户使用导航软件时将 当前位置所搜集的WiFi信号RSSI值上传到服务器,服务器对接收到的数据与数据库数据进行匹配,得到用户位置信息,返还给用户提供定位一级级导航服务。
针对无Android手机的用户,我们开发了一个便携式客户端,可以实现简单的语音导航。
此外,我们针对携带小孩购物的父母开发了一个小巧的客户端,可以放在孩子身上,父母可以通过手机获得孩子位置,当孩子与父母位置超过安全范围,则会启动报警功能。
1.3课题研究的目的及意义
通过本商场导航系统,顾客可以获得快速精准的定位,够迅速找到自己需要的商品位置;在一些突发情况下,可以帮助顾客及时地找到安全出口;服务器端通过对各个顾客位置的监控,发现用户异常运动通过摄像头调用可以及时发现突发情况,并且对离开小孩太远的父母可以发送警报,防止小孩走失。
本系统改进了定位算法,并通过扫描QR码上传位置信息的方式校正不同终端的偏差。
二、系统方案设计
2.1系统总体框图
2.2各部分功能简介
2.2.1服务器功能
系统服务器存储采集到的热点RSSI,在收到来自终端发送的RSSI值时,通过指纹识别匹配算法,筛选出位置信息并返回终端;服务器作为连接监控终端,发现异常运动迹象调用摄像头查看实时状况;在亲子距离超过安全范围时,发送小孩位置信息到对应的大人终端,并发出送警报到家长终端。
2.2.2Android客户端功能
Android客户端收集当前位置WiFi信号的RSSI值,并上传到服务器;从服务器得到当前位置信息之后,在地图上显示自己所在位置;作为亲子绑定的家长终端时,还可以在地图上看到自己孩子的位置信息,并在孩子与自己距离超过安全距离时得到服务器的警报信息后发出警报。
2.2.3通用客户端
通用客户端是准备给没有安装Android客户端的用户使用的,客户端收集WiFi信号RSSI值上传到服务器,在需要导航时,通过语音识别模块发出指令,发送到服务器后得到结合当前位置信息,服务器返回指令,由语音合成模块响应导航需求并通过LED灯来显示前进方位。
若与通用客户端有亲子绑定,则在与小孩位置超过安全距离后会得到服务器的警报指令,通过扬声器发出警报并且由LED发出方位引导。
2.2.4儿童专用客户端
儿童专用客户端可以方便的放在小孩身上,随时发送当前位置的RSSI值以及身份识别信息到服务器,从而在服务器留下自己的位置信息。
2.3方案论证与比较
2.3.1定位算法方案论证与比较
方案一、通过三角形算法定位
三角形算法定位是待测点首先接收三个来自不同已知位置AP的RSSI,然后依照无线信号的传输损耗模型将其转换成待测目标到相应AP的距离。
这种算法的优点是不用遍历每一个位置点,只要知晓AP位置就可以通过算法来确定位置;缺点是实际RSSI值跟许多因素相关,信号传输损耗模型很多时候并不适用,定位精度很差。
方案二、通过指纹识别算法定位
指纹识别算法是选择合理的参考点分布,确保能为定位提供足够的信息,依次在各个参考点上测量来自不同AP的RSSI值,将相应的MAC地址与参考点的位置信息记录在数据库中,直至便利关注区域内的参考点;给定数据库后,依据一定的匹配算法将待定点上接收的APRSSI与数据库中的已有数据进行比较。
这种算法的优点是定位精度高,却不用知道AP位置即可定位;确定是数据库的建立需要花费较长时间。
出于对定位精度的要求,我们选择方案二。
2.3.2通用客户端与小孩客户端的主控芯片方案论证与比较
方案一、使用AT89C51
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
本方案优点是价格便宜;缺点是芯片没有内置更大的存储空间。
方案二、使用STC12LE5A60S2
STC12LE5A60S2是一种增强型51单片机,工作电压在3.6V-2.2V,片上集成1280字节的RAM空间。
本方案有点是运算速度快,存储空间大;缺点是价格比较昂贵。
由于客户端在搜集多个AP的RSSI信息时,需要一次处理较大的数据,故选用方案二。
三、 系统硬件设计
3.1通用客户端硬件设计
3.1.1通用客户端系统框图
通用客户端采用STC5A60S2单片机作为主控芯片,定位服务方面;通过HLK-WIFI-M03模块收集RSSI信息及同服务器收发数据,利用MAG3110电子罗盘进行方向定位;人机交互的实现,是通过M-LD3320语音识别模块,SYN6288语音合成模块,以及自制的LED灯导航模块实现。
为了方便携带,客户端的电源采用手机电池,经过ASM1117芯片输出3.3V供电。
3.1.2通用客户端电路原理图
3.1.3通用客户端电源设计
客户端电源的设计,由于主控芯片STC51LE5A60S2是3.3V供电,HLK-WIFI-M03模块、LD3320语音识别模块、SYN6288语音合成模块等也都是3.3V单电源供电,同时为了方便携带,我们采用了输出电压为3.7V容量为2600mAh的锂电池作为电源供电。
3.1.4定位服务模块设计
通用客户端的定位功能,是通过WiFi模块与电子罗盘模块共同工作提供。
本通用客户端的WiFi模块采用海凌科公司的HLK-WIFI-M03模块。
HLK-WIFI-M03模块是海凌科电子推出的全新第三代嵌入式Uart-Wifi模块产品。
Uart-Wifi是基于Uart接口的符合WiFi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够轻松实现串口数据到无线网络间的转换。
模块由单3.3V供电,支持AT指令集与透明传输模式。
WiFi模块上电后默认处于透明传输模式。
使用时通过串口输入逃逸字符退出透明传输模式,输入AT指令获取RSSI值通过串口传给单片机,再次进入透明传输模式后将串口收到的数据转发到服务器,再接收服务器返回的位置数据,通过串口传输到单片机。
当需要重新定位时,则退出透明传输模式,接收AT指令。
下图是WiFi模块的接口示意图
模块插针接口说明
插针1至4均为可选功能引脚,本模块实际使用中只需将1号引脚接在单片机的IO
口上即可。
。
插针5为VDD,实际使用中接3.3V电源;引脚6为RXD,串口数据接收端,实际使用中连接单片机的TXD引脚;引脚7为TXD,串口数据发送端,实际使用中连接单片机的RXD引脚。
引脚8为GND模块地线引脚,接地线。
以下是WiFi模块的电路原理图
MAG3110是Freescale公司生产的三轴数字地磁传感器,采用I2C接口进行通信。
MAG3110采集地磁场强度并转化为数字量输出,输出速率最大为80HZ。
MAG3110采用DFN封装,适合工作温度为-40°C到80°C。
供电电压1.96-3.6V。
传感器板引脚及尺寸说明
电子罗盘模块写时序:
I2C起始位->MAG3110写地址(0X1C)->目标寄存器地址->写入数据->停止位
读时序:
I2C起始位->MAG3110写地址(0X1C)->目标寄存器地址->重复起始位-
>MAG3110读地址(0X1D)->接收数据->停止位
读取数据时读DR_STATUS(0x00)状态寄存器,如果DR_STATUS&0x08=1,一次转换已经完成,此时可以读取数据;读OUT_X_MSB(0x01)、OUT_X_LSB(0x02)、OUT_Y_MSB(0x03)、OUT_Y_LSB(0x04)、OUT_Z_MSB(0x05)、OUT_Z_LSB(0x06)寄存
器,分别得到X、Y、Z三轴十六位的数据;此时转动MAG3110,三轴数据会发生变化。
电子罗盘模块的电路原理图如下
3.1.5人机交互模块设计
通用客户端的人机交互模块由语音识别模块,语音合成模块以及LED灯方向导航模块组成。
语音识别模块采用LD3320模块。
以下是模块示意图
实际使用中,只需将模块的电源引脚,地线引脚分别接好电源线,IO1端口接单片机
RX2端口,M+与M-分别接MIC输入,便可工作。
电路原理图如下
语音合成模块采用SYN6288模块,模块示意图如下
实际工作中,将VCC、GND接上3.3V电源,芯片RX脚接单片机TXD脚,两个SPK
引脚直接驱动扬声器,其他引脚悬空,便可工作。
模块电路原理图如下
LED灯导航模块,采用普通的LED灯来指示,由于单片机的IO口输出电流有限,无法直接驱动LED灯,故采用推挽输出。
单片机的IO口连LED灯负极,LED灯正极串联一个限流电阻接正极。
单片机通过控制IO口电平的高低态,从而控制LED的明灭,当IO
口输出高电平,响应的LED灯熄灭,当输出低电平,灯亮。
最终实现简单的方向导航功能。
模块电路原理图如下
3.2儿童专用客户端设计
3.2.1客户端总体设计方案
儿童专用客户端的功能,是为了防止小孩与家长走失,方便家长掌控自己孩子位置。
因此,客户端应该尽量简洁小巧,方便儿童携带。
客户端由STC51单片机作为主控芯片,采用手机电池作为电源供电,经由ASM1117芯片转3.3V,通过WiFiM03模块收集RSSI值发送到数据库定位。
3.2.2儿童专用客户端原理图
模块电路原理图如下:
电源模块设计如下:
客户端电源部分,为了达到方便携带的目的,采用手机电池作为电源,手机电池输出约
3.7V,通过ASM1117芯片,稳定输出3.3V供电,电路原理图如下
AMS1117是一个低漏失电压调整器,它的稳压调整管是由一个PNP驱动的NPN管组成的,漏失电压定义为:
VDROP=VBE+VSAT。
在输入跟输出并上电容,可以加强稳压效果并防止瞬间电压烧坏芯片。
WiFI模块设计如下:
WiFi模块设计请参照3.1.4定位服务模块设计中的WiFi模块设计。
四、 系统软件设计
4.1定位算法设计
每个指纹采集点需要采对集的每个AP,采集一定数量(大于20次)的RSSI强度值,求出平均值avg以及标准差dev,存放至数据库。
匹配时,根据MAC对应的AP,有多个点的平均值和标准差,把样本数据作为我们的期望值,有m=avg,s=dev,再将待定位点的对应AP的信号强度带入正态分布公式中的x。
便可得到概率Pmn,其中m为所有已知点数,n为AP数。
则,待定位点与已知点m
的匹配概率为Pm=Pm1·Pm2...Pmn。
另,根据贝叶斯公式
P(A)为RSSI等于某值的概率,P(B)为在某点的概率
因为使用者出现在各点的概率是相同的,所以对一个确定的系统公式右边,除了
P(A|Bi)都为定值,所以若P(A|Bi)>P(A|Bj),我们有P(Bi|A)>P(Bj|A)。
因此
我们只要找出max{Pm}对应的点,就是待定位点最可能的位置 。
但是这样得到点都是离散,跟采集点的间距有直接关系,最小为2米左右。
为了让定位更为精确、平滑,可以将Pm进行排序,取前三个概率最大的点,将他们的坐标值平均。
进一步我们可以在坐标运算
时,将概率作为权值,进行加权平均。
例如:
(x,y)=P1*(x1,y1)+P2*(x2,y2)+...+Pm*(xm,ym)
P1+P2+...+Pm
但是正态分布即使概率最大处也比1小得多,加上概率多次相乘,Pm之间相差几个甚
至几十个数量级,所以因将概率的指数作为权值,同时注意指数为负值,对上式进行修正。
m
R= -1
log10Pm
(x,y)=R1*(x1,y1)+R2*(x2,y2)+...+Rm*(xm,ym)
R1+R2+...+Rm
这样得到的坐标较为精确、连续。
针对不同终端的接入问题,我们在预定点设置了QR码,用户在待测区域,只需扫描当前QR码,将QR码的位置信息以及本机当前所测RSSI值上传至服务器。
将所得到的RSSI值作为当前终端的基准定位数据,将这个RSSI值与数据库中当前位置的RSSI值进行比较,然后和该点采集的数据相减,去平均,得到偏移量Offset,每次定位的时候都减去这个偏移量。
由于不同终端在同一个位置得到的RSSI值呈线性差异(如下图),所以通过这种校正方法能够解决多终端的在同一位置得到RSSI值差异的问题。
4.2Android手机软件设计
4.2.1手机软件流程图
4.3通用客户端软件设计
4.3.1主程序流程图
4.3.2串口数据处理子程序
4.4儿童专用客户端软件设计
4.4.1主程序设计
4.4.2串口数据处理子程序
参见4.3.2
五、作品测试
5.1手机定位测试
本次测试先使用MotoloraME525型号手机作为数据库RSSI基准值采集工具,在4个学生宿舍内放置4个普通路由器,以一米为间距,实验测试范围为10X3的矩形范围,由于宿舍墙壁阻隔以及人员走动,可以在一定程度上模拟商场的环境。
进行定位测试时采用的也与数据采集相同的一款手机。
以下是测试整理结果。
根据以上测试数据,可以发现在实际导航定位使用中,除个极个别点(76个测试数据中只有2个)测量出的位置与实际位置差距超过2米,其他的均在2米内。
5.2不同终端的校正测量
现在,为了解决不同设备检测到的RSSI值差异问题,我们加入了校正机制,以下是魅族M030手机在校正前的定位数据
在测试的8个点每个测量10次的实验数据中,有两个点总共15个数据测得的位置与实际位置误差超过2米。
现在,我们在(-4,0)点进行了基准校正,重新对上述测试点进行测量,测得结果如下
经过校正,所有的测量点结果与实际距离均未超过2米。
6、附录
6.1创新说明
本次竞赛我们所做的基于WiFiRTLS的大型商场定位服务系统,在SooPAT专利搜索引擎中没有找到同类专利,相似的发明申请是“基于WIFI网络的定位系统与方法”(申请号201110267922.5)以及“一种基于惯性导航系统和WIFI的室内定位方法”(申请号201110258045.5),但这我们具体的定位方式与这二者完全不同。
我们的定位方法是基于指纹识别算法算法加上基于QR码的多终端校正。
基于RSSI值指纹识别算法的学术文章,在近两年数量较多,本成果是建立在这些论文(详见6.1参考文献)的基础上的,但是在具体的匹配算法以及校正方式上,我们并未直接采取现有的任何算法或者方法,具体的匹配算法以及校正办法均为自己独创。
其中采用二维码作为定位校正标识没有任何先例。
此外,本系统的亲子护航系统,是目前第一个采用WiFi定位来判断家长与小孩距离防止小孩走失的系统。
这对于广大爱购物的女性家长而言是很受欢迎的,妈妈们再也不用担心带小孩购物时孩子调皮走失了。
6.2参考文献
1、杨萍,李智 一种基于RSSI的权重值选择及加权定位算法 信息与电子工程
2012,4
2、卢恒惠,刘兴川,张超,林孝康基于三角形与位置指纹识别算法的WiFi定位移动通信 2012,10
3、BruceEckel JAVA编程思想 机械工业出版社
2007/6
6.3程序代码
6.31服务器程序代码
6.32Android客户端程序代码
程序文件
MainActivity.java;SecondActivity.java;MainService.java;(省略XML配置文件和自动生成的资源文件)
程序文件
MainActivity.java
packagecom.wght.wifiRTLS;
importcom.wght.wifiRTLS.R;
importandroid.app.Activity;
importandroid.content.Intent;import.wifi.WifiManager;importandroid.os.Bundle;
importandroid.view.Window;
importandroid.view.WindowManager;
publicclassMainActivityextendsActivity{@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);setContentView(R.layout.activity_logo);
WifiManagerwifiManager=(WifiManager)getSystemService(WIFI_SERVICE);wifiManager.setWifiEnabled(true);
ThreadwaitThread=newThread(){
publicvoidrun(){
try{
sleep(2000);
}catch(InterruptedExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
Intentintent=newIntent();intent.setClass(MainActivity.this,SecondActivity.class);startActivity(intent);
MainActivity.this.finish();//关闭当前Activity
}
};
waitThread.start();
}
}
SecondActivity.java
packagecom.wght.wifiRTLS;
importjava.util.List;
importcom.wght.wifiRTL