0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

电子设计 来源:郭婷 作者:电子设计 2018-12-20 09:06 次阅读

随着社会的发展,定位技术越来越受到关注。现有的定位技术如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局域定位系统设计方法,介绍了硬件模块系统的设计方法;利用基于序列号对时隙数运算的排序算法解决了多标签识别的防碰撞问题;利用圆周定位算法对待定位标签进行了局域定位。实验表明该设计方法及算法能够在多标签状态下完成一定精度的实时定位,验证了该局域定位方法的可行性。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6740

    浏览量

    147390
  • 收发器
    +关注

    关注

    10

    文章

    2951

    浏览量

    104577
  • RFID
    +关注

    关注

    383

    文章

    5756

    浏览量

    234226
收藏 人收藏

    评论

    相关推荐

    谁有pic16f877a中文资料?

    谁有pic16f877a中文资料? 
    发表于 07-15 13:22

    PIC16F877A

    菜鸟想问下各位,我想用PIC16F877A做个流水灯,所有端口输出高电平1S,然后输出低电平1s 。 单片机放在学习板上测试的时候是正常的,用prpteus仿真也正常,可是放到电路板上就不正常了,低电平时间很短,Led只是闪了一下。  哪位高手指点一下是什么原因,还是要怎样测试找出问题?
    发表于 07-28 14:32

    PIC16F877A在proteus中读写AT24C512

    此时把I2C DEBUGGER的SCL线连接到PIC16F877A和AT24C512的SCL线上,这样PIC16F877A可以正常的写AT24C512。当PIC16F877A发送启动信号且正常启动
    发表于 12-30 16:09

    PIC16F877A使用宏定义读写FlashROM

    MPLAB IDE v8.80PICC9.83读写PIC16F877A内部的EEPROM时可以使用头文件中的两个宏定义EEPROM_READ(unsigned char addr
    发表于 12-31 14:01

    PIC16F877A的中断优先级问题

    现在我需要通过串口来接收指令控制PIC16F877A的捕获脉冲行为,可以做到的是:接收到开捕获指令后,能正常开始捕获脉冲,但是再发送关闭指令却不能让它停下来,通过KIT3发现,在捕获的时候,串口不能
    发表于 06-06 21:18

    PIC16F877A复位问题

    嗨,我还是新手,但是我有一个使用PIC16F877a的倒计时计划,而不是运行一个4位数的7段显示,并有5个按钮来选择倒计时的时间。在倒计时结束时,它发出3次哔哔声。它运行得很完美,但是会产生随机
    发表于 04-01 09:39

    pic16f877A的C语言电机控制,基于PIC16F877A单片机软件环分的步进电机控制系统.pdf 精选资料分享

    基于PIC16F877A单片机软件环分的步进电机控制系统产品与应用基PICl6F877A单片机软件于环 分的步进电机控制系统田丰果 贺莹武淑娟(贵州大学机械工程与自动化学院,贵阳 55
    发表于 09-01 08:39

    PIC16F877A单片机相关资料下载

    PIC16F877A单片机(配置字)1 MPLAB X V5.0,编译器为XC8(V2.0)2MPLAB V5.0,编译器为PICC1 MPLAB X V5.0,编译器为XC8(V2.0)单击
    发表于 11-24 08:22

    PIC16F877A看门狗定时器实验的相关资料推荐

    //*******************PIC16F877A 看门狗定时器实验*******************// //PORTA,PORTB,PORTC,PORTD,PORTE复位时为输入
    发表于 11-25 07:52

    PIC16F877A和TB6612FNG电机驱动的微型电路

    描述格柏OK用PIC16F877A和TB6612FNG电机驱动的微型电路
    发表于 09-05 06:12

    pic16f877a中文资料pdf

    pic16f877a中文资料
    发表于 07-15 13:20 4540次下载
    <b class='flag-5'>pic16f877a</b>中文资料pdf

    有源RFID局域定位系统设计

    提出了一种基于PIC16F877A微控制器和CC2500射频收发器芯片的低功耗、低成本RFID(Radio Frequency Identification, 无线射频识别)局域
    发表于 04-05 15:04 54次下载
    有源<b class='flag-5'>RFID</b><b class='flag-5'>局域</b><b class='flag-5'>定位</b><b class='flag-5'>系统</b>设计

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图,有需要的可以瞧一瞧!
    发表于 08-22 15:16 86次下载

    PIC16F877A单片机代码生成系统

    PIC16F877A单片机代码生成系统V3.4_221214_1035
    发表于 12-20 17:00 6次下载

    PIC16F877A开发板原理图

    PIC16F877A开发板原理图免费下载。
    发表于 03-21 15:47 8次下载