物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

基于PIC16F877A和CC2500的RFID局域定位系统设计

作者:佚名
来源:RFID世界网
日期:2019-01-09 15:54:36
摘要:随着社会的发展,定位技术越来越受到关注。现有的定位技术如GPS定位,红外定位等,考虑到精度,成本,可行性等方面,都有一定的局限性,尤其是在一些屏蔽物遮挡的局域定位的场合。射频识别(RFID)定位技术以其非接触、高灵敏度和低成本等优点,在这种场合下成为一种重要技术选择,受到人们越来越多的关注。

  随着社会的发展,定位技术越来越受到关注。现有的定位技术如GPS定位,红外定位等,考虑到精度,成本,可行性等方面,都有一定的局限性,尤其是在一些屏蔽物遮挡的局域定位的场合。射频识别(RFID)定位技术以其非接触、高灵敏度和低成本等优点,在这种场合下成为一种重要技术选择,受到人们越来越多的关注。

  在多标签定位系统中必然会出现多个标签同时与读写器通信产生信号碰撞的情况。目前RFID多标签防碰撞算法有多种:多址技术、ALOHA防碰撞算法、二进制防碰撞算法等。多址防碰撞算法是以增加系统的复杂性和提高成本为代价,且有无法克服的缺陷;ALOHA防碰撞算法有时会导致读写器出现错误判断,对某个标签是否在读写范围内产生误判,同时还存在冲突概率较大的问题;简单的二进制防碰撞算法有时并不能够取得很好的避碰效果。文中采用基于序列号对时隙数运算的排序算法,该算法可以克服上述误判的问题,并且易于实现、效率高、软件编写简单,可以不受标签数量的限制,是一种稳定可靠、实用性强的防碰撞算法。RFID定位算法有:LANDMARC、基于信号达到角度的定位法(AOA)等,这里采用圆周定位算法,该方法简单可靠,易于在线实施,且具有一定定位精度。

  1 系统结构设计

  本系统主要由读写器和有源标签组成。读写器与标签之间的射频信号通过空间耦合实现无接触信息传递,读写器通过与标签的无线通信,获得接收信号强度指示(RSSI)值,这是对待定位标签进行位置计算的重要参数。微控制器PIC16F877A控制CC2500射频收发模块的数据发送与接收。读写器网关节点可通过RS232接口与上位机相连。系统结构框图如图1所示。

基于PIC16F877A和CC2500的RFID局域定位系统设计

  图1 系统结构框图

  读写器与标签的控制模块均采用Microchip公司的8位高性能、低功耗微控制器PIC16F877A作为主控芯片,它在架构上采用哈佛总线结构,数据总线和指令总线分离,便于实现全部指令的单字节化,单周期化,从而有利于提高CPU执行指令的速度。此外,片上数据存贮空间比较大,充足的存储空间,可以方便通信协议栈的设计与实现。内部看门狗定时器,提高了程序执行的稳定性;低功耗休眠模式,大大降低了系统的功耗。它具有驱动能力强、外接电路简洁、功耗低等特点。因此适合于作为RFID读写器的控制器来使用。

  射频收发器选用CC2500作为控制芯片,CC2500集成了一个数据传输可达500 kbps的高度可配置的调制解调器,大大加强了数据传输的性能,同时通过开启集成在调制解调器上的前向误差校正选项,使性能得到大幅度提升。MCU通过SPI接口向CC2500发送操作命令,配置其调制方式、工作频率等参数,通过指令将其配置为接收状态、发送状态、空闲状态或休眠状态。CC2500的引脚SO和SI分别为数据传输的输出和输入信号线,CSN为片选信号引脚,SCLK为时钟信号引脚。当其接收到一个数据或发送完一个数据,都会通过引脚GD00和GD02输出相应的状态脉冲,MCU据此来判断CC2500的状态,从而决定对CC2500的下一步操控。微控制器PIC16F877A和CC2500收发器模块的连接如图2所示。

基于PIC16F877A和CC2500的RFID局域定位系统设计

  2 多标签识别防碰撞算法设计

  定位系统涉及多个标签与读写器之间的实时通信,需要解决多标签识别信号碰撞问题。基于序列号对时隙数运算的排序算法具有算法易于实现、响应速度快、执行效率高等特点,是时分复用方法的一种。利用微控制器PIC16F877A通过SPI接口来控制CC2500数据的发送时隙,将标签作为应答器,基于序列号对时隙数运算的排序算法的实现流程如下:

  在争用周期内,首先利用标签序列号除以争用周期时隙数所得的余数来确定标签在争用数据帧内的发送时隙;然后利用标签序列号除以争用周期时隙数所得的商确定标签在争用帧内相应时隙的发送位,然后在争用周期内发送的争用数据帧的相应时隙发送位填充数据"1";最后利用填充过的争用数据帧确定标签在整个数据发送周期内的发送顺序(即标签的发送顺序=其发送位及其前面各发送位中"1"的总数),从而给不同序列号的标签分配不同的发送时序。本设计用了9个待定位标签,利用上述算法进行标签识别排序,具体流程如图3所示(这里的应答器指标签应答器)。

  图3倒数第二行为9个标签的发送时序,发送的时序是A0,A4,A8,A1,A5,A2,A6,A3,A7.这样这9个标签就可以保证无碰撞地被读写器识别,这种多标签防碰撞冲突是多标签定位系统能够正常工作的前提。

基于PIC16F877A和CC2500的RFID局域定位系统设计

  图3 基于序列号对时隙数运算的排序算法

  3 定位算法设计

  本系统采用的定位算法是圆周定位法,圆周定位法是利用读写器接收标签信号得到RSSI值,通过相关的定位计算公式来进行定位的一种方法。

  无线信号的接收信号强度和信号传输距离的关系可以用式(3)来表示,其中RSSI是接收信号强度,d是收发节点之间的距离,n是信号传播因子,EAF是环境因子。

基于PIC16F877A和CC2500的RFID局域定位系统设计

  由式(1)中可以看出,射频参数A和n的值决定了接收信号强度和信号传输距离的关系。A和n用于描述通信操作环境。射频参数A被定义为dbm,表示距发射机1 m时接收到信号平均能量的绝对值,如平均接收能量是-10 dbm,那么参数A就被定义为10.射频参数n指出了信号能量随着到收发器距离增加而衰减的速率,其数值的大小取决于无线信号传播的环境。通过大量的比较和验证,得到实际应用场合环境因子EAF的大概值为13.5,A取45,n取3.5.依据式(1)可得到待定位标签到读写器的直线距离,r表示读写器与待定位标签之间的距离,即r=d.3个读写器的位置已知,分别是p1(x1,y1),p2(x2,y2),p3(x3,y3)。则待定位标签的坐标计算如式(2)所示:

基于PIC16F877A和CC2500的RFID局域定位系统设计

  三边定位的示意图如图4和图5.

基于PIC16F877A和CC2500的RFID局域定位系统设计

  图4 三边定位的理想情况

基于PIC16F877A和CC2500的RFID局域定位系统设计

  图5 三边定位的实际情况

  实验中将3个读写器放在坐标为(2,2),(2,4),(4,4)的位置上,分别依次对9个待定位标签进行定位实验。9个待定位标签放在4 mx4 m的正方形区域内,相邻的待定位标签相互之间相隔2 m,具体布置如图6所示。

基于PIC16F877A和CC2500的RFID局域定位系统设计

  图6 定位实验中读写器与标签放置的位置

  分别对每个标签到读写器的RSSI值测试20次,并记录其数据,通过上述圆周定位算法对得到的RSSI值进行处理,得到各个待定位标签的坐标值,实验结果如图7所示。

基于PIC16F877A和CC2500的RFID局域定位系统设计

  图7 定位实验结果图

  图7中圆圈表示标签的理论位置,星点表示标签的定位位置,每一个标签定位实验20次。从图中可以看出每个区域的20个星点都围绕在圆圈附近,说明定位位置相比于理论位置存在定位误差。分别对9个标签点的20次定位测试结果进行均方差统计,均方差的范围在0.236~0.541之间。

  4 结束语

  文中介绍了一种基于低功耗微控制器PIC16F877A和收发器CC2500的RFID局域定位系统设计方法,介绍了硬件模块系统的设计方法;利用基于序列号对时隙数运算的排序算法解决了多标签识别的防碰撞问题;利用圆周定位算法对待定位标签进行了局域定位。实验表明该设计方法及算法能够在多标签状态下完成一定精度的实时定位,验证了该局域定位方法的可行性。