基于Zigbee的无线定位系统_第1页
基于Zigbee的无线定位系统_第2页
基于Zigbee的无线定位系统_第3页
基于Zigbee的无线定位系统_第4页
基于Zigbee的无线定位系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、创新创业项目训练计划项目总结报告创新创业训练计划项目结题报告项 目 编 号:项 目 名 称:智能搜狗项 目 级 别:项目负责人:项目类型:R创新训练 ð创业训练 ð创业实践指 导 教 师:所在学部学院:教务处制大连理工大学大学生创新创业训练计划项目原创性声明本人郑重声明:所呈交的项目结题报告以及所完成的作品实物等相关成果,是本人和项目组其他成员独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写过的作品成果,不侵犯任何第三方的知识产权或其他权利。本人完全意识到本声明的法律结果由本人承担。项目负责人签名: 年 月 日 项目指导

2、教师审核签名: 年 月 日智能搜狗Intelligent Searching23摘要今年来,随着人们生活水平的提高,人们对日常生活中一些重要的物品或者是家里养的宠物等可移动事物的实时位置尤为关心,希望随时随地都能知道其具体方位,但是现有的GPS技术还未全面普及,价格依然很昂贵,所以,本项目着重研究利用低成本硬件设备实现实时定位的功能,将无线定位技术带入人们生活的方方面面。通过前期的调查研究,我们发现现在市场上的定位装置价格普遍昂贵,而且功耗较高,本项目利用ZIGBEE模块的低成本、低功耗的特点很好的解决了这些问题。关键词:无线定位;ZIGBEEAbstractIn recent years,w

3、ith the development of peoples living standard,people place more attention on the real-time position of something important or mobilizable at home like pets,they want it to be capable that they can attain the specific position of the object at anytime and anywhere.But the GPS has not been popularize

4、d,and the price is still very high.Therefore,our project is to do some research to find how to achieve real-time positioning with low-cost hardware,and bring wireless positioning technology into peoples daily life.According to the early investigation,we found that the positioning devices in the mark

5、et are generally very expensive and have high consumption of energy.Our project is to use the low-cost ZIGBEE module with low power consumption to solve these problems.Key Words:Wireless Positioning;ZIGBEE1 项目概述1.1项目成员及指导教师基本情况项目成员:学部:专业指导老师:专业领域:智能仪器控制1.2项目的选题背景、目的与意义如今人们的生活水平不断提高,生活节奏不断加快,每天进行这繁重的

6、工作和学习,无暇顾及生活中的一些细节问题,而生活中往往有些东西是我们非常关心的,比如一些重要的物品,甚至是自己养的宠物,我们代之关怀备至,总希望时时刻刻能够知道它们的具体位置,抑或在自己忘记或者找不到的情况下能够轻松地寻获它们的方位,一方面节省时间,另一方面也为自己分忧。在科技迅猛发展的今天,网络几乎成为人民生产、生活的必需品,尤其是无线网络的发展给人们的生活带来了无尽的便捷,无线定位技术更是迅猛地发展起来。如今比较成熟的GPS技术价格依然十分昂贵,对于生活中这样的一些小应用,成本太高不划算,而且功耗高,不切实际。本项目正是从这方面出发,利用低功耗、低成本的ZIGBEE模块来实现无线定位的功能

7、,将无线定位技术引入生活的方方面面。13项目实施过程的人员工作分配和完成情况2013.4-2013.5项目论证,最终采取zigbee技术实现功能2013.6-20137查阅zigbee技术基本知识2013.8-2013.9了解协议栈工作原理,掌握程序指令功能2013.10-2014.1在硬件电路基础上编程,逐步完成通信以及信号质量检测功能2014.2-2014.4建立距离-信号模型,实现测量功能本项目组由两名同学组成,项目负责人为xxx,组员为xxx。任务分配如下:xxx 主要负责实验程序的编写与调试等xxx 主要负责实验器材的购买、实验数据的测试与处理以及相关定位算法的设计等1.4 项目实施

8、过程收获和体会(1)在设计的过程中最关键的是查阅相关资料和组员之间的相互沟通;(2)相关理论知识的学习是必要的;(3)实验的数据总是和理论值有一定的差距的,实验中需要不断地调整和测试;(4)在经费允许的条件下,一定要购买开发板来节省开发的时间。2 项目预期成果完成情况和创新点本项目基本完成预期成果,具体功能如下:(1)单个ZIGBEE模块的收发功能、和计算机之间的串口通信;调用和调试协议栈程序,完成单个ZIGBEE模块的收发数据包的功能,为多个模块之间的组网通信做准备,利用数据线将ZIGBEE模块和计算机连接,实现两者之间的串口通信,为计算机接收ZIGBEE信息和显示数据做准备。(2)实现ZI

9、GBEE模块间的组网功能;将多个ZIGBEE模块组合在一起形成一个网络,便于数据的搜集和获取,为接收多个RSSI数据做准备。(3)RSSI信号的检测并显示;利用ZIGBEE模块实现RSSI信号的检测,并将其显示在计算机屏幕上,为后续的定位算法做准备。(4)基于RSSI的定位算法;利用接收到的RSSI信号计算出实际终端的位置。创新点:(1)利用串口通信的方式,解决了数据的显示问题,而且可以利用计算机连接互联网,解决了数据共享的问题。(2)利用三个节点实现了终端的定位功能,无论在成本上还是在功耗上都大大降低了。(3)基于RSSI信号实现了定位功能,避免了使用昂贵的专用定位芯片的成本。3 项目说明3

10、.1实验方法设计及方案基于ZIGBEE技术,利用无线通信模块实现各个模块之间的组网并检测终端节点的RSSI值,利用多个RSSI值设计算法从而实现定位的功能。图3-1 项目设计整体框图3.2 ZigBee技术协议ZigBee技术是一种可靠性高、功耗低的无线通信技术,在ZigBee技术中,其体系结构通常由层来量化它的各个简化标准。每一层负责完成所规定的任务,并且向上层提供服务。各层之间的接口通过所定义的逻辑链路来提供服务。ZigBee技术的体系结构主要由物理(PYH)层。媒体接入控制(MAC)层、网络/安全层以及应用构架层组成,其各层之间分布如图。应用构架层网络/安全层层MAC层物理(PHY)层Z

11、igBee协议IEEE 802.15.4图3-2 Zigbee技术结构不难看出,ZigBee技术的协议层结构简单,不像诸如蓝牙和其他网络结构,这些网络结构通常分为7层,而ZigBee技术仅为3层。在ZigBee技术中,PHY层和MAC层采用IEEE 802.15.4协议标准,其中,PHY提供了两种类型的服务:即通过物理层管理实体接口(PLME)对PHY层数据和PHY层管理提供服务。PHY层数据服务可以通过无线物理信道发送和接收物理层协议数据单元(PPDU)来实现。PHY层的特征是启动和关闭无线收发器,能量检测,链路质量,信道选择,清楚信道,评估(CCA),以及通过无线物理媒体对数据包进行发送和

12、接收。同样,MAC层也提供了两种类型的服务:通过MAC层管理实体服务接入点(MLME SAP)向MAC层数据和MAC层管理提供服务。MAC层数据服务可以通过PHY层数据服务发送和接收MAC层协议数据单元(MPDU)。MAC层的具体特征是:信标管理,信道接入,时隙管理,发送和确认帧,发送连接及断开连接请求。除此之外,MAC层为应用合适的安全机制提供一些方法。ZigBee技术的网络层、安全层主要用于为ZigBee的LR WPAN 网的组网连接、数据管理以及网络安全等;应用框架层主要为ZigBee技术的实际应用提供一些应用框架模型等,以便对ZigBee技术的开发应用。本项目的主要程序也都添加在应用层

13、。3.3 定位程序流程利用Zigbee技术中的Z-stack协议,在应用层内添加定位程序。整体流程如下图:1.协调器建立网络协调器是网络的发起者与管理者。首先,由协调器建立网络,同时,不断向周围抛出数据包,待其他节点检测,使网络被发现。2. 路由器加入网络并登记地址定位系统中除协调器外的其他参考点皆为路由器,路由器发现由协调器建立的网络后,向协调器发出申请,请求加入网络。符合要求后,协调器会为终端分配地址,就此,路由器成功加入网络。协调器同时会登记各个路由器的地址,用于对返回Rssi值的管理与处理。3.待测节点加入网络待测节点进入网络覆盖区域后,会同路由器一样,加入网络,由协调器负责管理。4.

14、 .终端节点发广播,各参考点测量Rssi值待测节点加入网络后,会周期性发送广播,各参考点接受数据包,并获得与待测节点的通信信号质量(Rssi值)。5.各参考点向协调器传送测量值 各参考点每得到三组Rssi值后,取平均值分别将数值传送到协调器,.传送方式采用点播。6.协调器通过算法实现定位 接受到各路由器点播的数值,协调器采用地址查表的方式管理数值,将数值利用f(x) = 10(x-a)/(10*n)求得通信双方距离关系,在利用三边定位算法获得待测点坐标。图3-3 项目设计流程图3.3 定位模型建立1.距离-Rssi关系公式 d= 10(|RSSI|-a)/(10*n) 参数获得实验中关于RSS

15、I值和实际距离关系的原始数据如下表所示:实际距离d(m)12345678910|RSSI|(组1)37486064697476778181|RSSI|(组2)4050606472680818181根据经验公式d= 10(|RSSI|-a)/(10*n),其中a,n为随环境变化的参数经过曲线拟合后,得到拟合图形如下所示:图3-4 拟合图像拟合结果如下:General model: f(x) = 10(x-a)/(10*n)Coefficients (with 95% confidence bounds): a = 38.28 (32.84, 43.72) n = 4.387 (3.772, 5.

16、002)Goodness of fit: SSE: 1.131 R-square: 0.9863 Adjusted R-square: 0.9846 RMSE: 0.3761General model: f(x) = 10(x-a)/(10*n)Coefficients (with 95% confidence bounds): a = 39.29 (27.26, 51.31) n = 4.484 (3.113, 5.855)Goodness of fit: SSE: 4.648 R-square: 0.9437 Adjusted R-square: 0.9366 RMSE: 0.7622可见

17、拟合效果较好,参数相差不大,从而可以得到测试环境下的公式参数,明确了RSSI值和实际距离的关系。但由于该参数受环境影响较大,因而需要实时测量。2.三边定位算法下图所示的三个节点所构成的三角形为等边三角形。图3-5 三边定位示意图为计算方便,预先将实验中需要设置的三个节点组成等边三角形,相关坐标如图所示,实验中通过RSSI值计算出终端离三个节点的距离,从而可以利用下述公式计算出终端的坐标位置。=> 从而实现定位的功能。3.3数据分析处理演示实验采用在小区域内进行测试,在边长为10米的正三角形区域中尝试准确定位。经比较得,位置误差在1米以内,初步到达设计预期结果。同时,各节点的直接通信距离在

18、100米左右,如果再在节点添加CC2591芯片,节点直接通信距离可达1公里以上,完全可以满足区域定位的要求。4 项目总结经过一年多的努力,我们终于完成了本项目的设计和制作,一路走来经历了很多坎坷,通过查阅资料,互相探讨,提高了自己发现问题和解决问题的能力,增强了自己的动手能力和解决实际问题的能力,并且通过对ZIGBEE模块的学习,使得对于无线通信方面有了更加深刻的认识和理解,对于自己以后从事相关项目和研究,打下了坚实的基础。5 参考文献1 蒋挺.赵成林 紫蜂技术及其应用.北京: 北京邮电大学出版社,2005.附录 程序节选1.主函数int main( void ) osal_int_disab

19、le( INTS_ALL );/ 关闭所有中断 / Initialization for board related stuff such as LEDs HAL_BOARD_INIT(); / Make sure supply voltage is high enough to run zmain_vdd_check(); / Initialize board I/O InitBoard( OB_COLD ); / Initialze HAL drivers HalDriverInit(); / Initialize NV System osal_nv_init( NULL ); / Ini

20、tialize the MAC ZMacInit(); / Determine the extended address zmain_ext_addr(); / Initialize basic NV items zgInit();#ifndef NONWK / Since the AF isn't a task, call it's initialization routine afInit();#endif / Initialize the operating system osal_init_system(); / Allow interrupts osal_int_en

21、able( INTS_ALL ); / Final board initialization InitBoard( OB_READY ); / Display information about this device zmain_dev_info(); /* Display the device info on the LCD */#ifdef LCD_SUPPORTED zmain_lcd_init();#endif#ifdef WDT_IN_PM1 /* If WDT is used, this is a good place to enable it. */ WatchDogEnabl

22、e( WDTIMX );#endif osal_start_system(); / No Return from here return 0; / Shouldn't get here. 2.系统函数void osal_start_system( void )#if !defined ( ZBIT ) && !defined ( UBIT ) for(;) / Forever Loop#endif uint8 idx = 0; osalTimeUpdate(); Hal_ProcessPoll(); / This replaces MT_SerialPoll() and

23、 osal_check_timer(). do if (tasksEventsidx) / Task is highest priority that is ready. break; while (+idx < tasksCnt); if (idx < tasksCnt) uint16 events; halIntState_t intState; HAL_ENTER_CRITICAL_SECTION(intState); events = tasksEventsidx; tasksEventsidx = 0; / Clear the Events for this task.

24、HAL_EXIT_CRITICAL_SECTION(intState); events = (tasksArridx)( idx, events ); HAL_ENTER_CRITICAL_SECTION(intState); tasksEventsidx |= events; / Add back unprocessed events to the current task. HAL_EXIT_CRITICAL_SECTION(intState); #if defined( POWER_SAVING ) else / Complete pass through all task events

25、 with no activity? osal_pwrmgr_powerconserve(); / Put the processor/system into sleep #endif 3.任务事件处理函数uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events ) afIncomingMSGPacket_t *MSGpkt; (void)task_id; / Intentionally unreferenced paramete if ( events & SYS_EVENT_MSG ) MSGpkt = (afIncom

26、ingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); while ( MSGpkt ) switch ( MSGpkt->hdr.event ) case CMD_SERIAL_MSG: /串口收到数据后由MT_UART层传递过来的数据,编译时不定义MT_TASK,则由MT_UART层直接传递到此应用层 SampleApp_SerialCMD(mtOSALSerialData_t *)MSGpkt); break; case KEY_CHANGE: SampleApp_HandleKeys( (keyChange_t *)MSGpk

27、t)->state, (keyChange_t *)MSGpkt)->keys ); break; / Received when a messages is received (OTA) for this endpoint case AF_INCOMING_MSG_CMD: SampleApp_MessageMSGCB( MSGpkt ); break; / Received whenever the device changes state in the network case ZDO_STATE_CHANGE: SampleApp_NwkState = (devStates

28、_t)(MSGpkt->hdr.status); if ( (SampleApp_NwkState = DEV_ZB_COORD) | (SampleApp_NwkState = DEV_ROUTER) SampleApp_NwkState = DEV_END_DEVICE ) / Start sending the periodic message in a regular interval. osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, SAMPLEAPP_SEND_PERIODIC_MS

29、G_TIMEOUT ); if(SampleApp_NwkState = DEV_END_DEVICE) SampleApp_SendPointToPointMessage(); if(SampleApp_NwkState = DEV_ROUTER) SampleApp_SendPointToPointMessage1(); else / Device is no longer in the network break; default: break; / Release the memory osal_msg_deallocate( (uint8 *)MSGpkt ); / Next - i

30、f one is available MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID ); / return unprocessed events return (events SYS_EVENT_MSG); / Send a message out - This event is generated by a timer if ( events & SAMPLEAPP_SEND_PERIODIC_MSG_EVT ) / 周期性广播函数 SampleApp_SendPeriodicMessage(

31、); osal_start_timerEx( SampleApp_TaskID, SAMPLEAPP_SEND_PERIODIC_MSG_EVT, (SAMPLEAPP_SEND_PERIODIC_MSG_TIMEOUT + (osal_rand() & 0x00FF) ); return (events SAMPLEAPP_SEND_PERIODIC_MSG_EVT); return 0;4.数据接收函数void SampleApp_MessageMSGCB( afIncomingMSGPacket_t *pkt ) /*16进制转ASCII码表*/ uint8 asc_1616=&

32、#39;0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' uint16 flashTime,temp,temp2; uint8 Rssi,templqi; uint8 hehe15; uint8 i,j,m,n; switch ( pkt->clusterId ) ca

33、se SAMPLEAPP_PERIODIC_CLUSTERID: HalUARTWrite(0,"I get datan",11); k=k+1; templqi=pkt->LinkQuality; lqisum+=templqi/3; /提示接收到数据HalUARTWrite(0,&asc_16hehe0,1);、HalUARTWrite(0,&asc_16hehe1,1);HalUARTWrite(0,&asc_16hehe2,1);HalUARTWrite(0,&asc_16hehe3,1);HalUARTWrite(0,&

34、;asc_16hehe4,1);HalUARTWrite(0,&asc_16hehe5,1); if(k=3) Rssisum=81-lqisum*99/255; / SampleApp_SendPointToPointMessage2(); / 路由器 KEY0=Rssisum; hehe6=Rssisum/100; /协调器 hehe7=Rssisum/10%10; hehe8=Rssisum%100%10; HalUARTWrite(0,"KEY0:",5); HalUARTWrite(0,"-",1); HalUARTWrite(0,&a

35、mp;asc_16hehe6,1)HalUARTWrite(0,&asc_16hehe7,1);HalUARTWrite(0,&asc_16hehe8,1); HalUARTWrite(0,"n",1); hehe0=d1/100; /协调器 hehe1=d1/10%10; hehe2=d1%100%10; HalUARTWrite(0,"D1:",3); HalUARTWrite(0,"-",1); HalUARTWrite(0,&asc_16hehe0,1);HalUARTWrite(0,&asc_

36、16hehe1,1);HalUARTWrite(0,&asc_16hehe2,1); HalUARTWrite(0,"n",1); k=0; Rssisum=0;lqisum=0; break; case SAMPLEAPP_POINT_TO_POINT_CLUSTERID:/终端加入网络 j=pkt->cmd.Data0; for(i=1;i<j+1;i+) HalUARTWrite(0,&pkt->cmd.Datai,1); HalUARTWrite(0,"n",1); break; case SAMPLEAPP_POINT_TO_POINT_CLUSTERID1: /路由器注册 n=pkt->cmd.Data0; if(n='B') LIST0=pkt->srcAddr.addr.shortAddr; else LIST1=pkt->srcAddr.addr.shortAddr; break; case SAMPLEAPP_POINT_TO_POINT_CLUSTERID2:/路由器返回RSSI值 temp2=pkt->srcAddr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论