为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于NRF2401的RFID读卡系统的设计与实现毕业设计论文

2019-03-17 15页 doc 12MB 12阅读

用户头像 个人认证

沐优秀

暂无简介

举报
基于NRF2401的RFID读卡系统的设计与实现毕业设计论文基于NRF2401的RFID读卡系统的设计与实现摘要射频识别(RFID,RadioFrequencyIdentification)技术是一种利用无线射频通信实现的非接触式自动识别技术。与目前广泛采用的条形码技术相比,RFID具有容量大、识别距离远、识别速度快、穿透能力强、可多卡识别、抗污性强等特点,近年来越来越受到业界人士的广泛关注。本文首先介绍了射频识别技术的基本工作原理,并在此基础上设计了一个简单的RFID系统,包括读卡器和有源标签两部分,可以适用于停车场的车辆管理等场合。本系统采用无线收发一体芯片NRF2401(读卡器用...
基于NRF2401的RFID读卡系统的设计与实现毕业设计论文
基于NRF2401的RFID读卡系统的设计与实现摘要射频识别(RFID,RadioFrequencyIdentification)技术是一种利用无线射频通信实现的非接触式自动识别技术。与目前广泛采用的条形码技术相比,RFID具有容量大、识别距离远、识别速度快、穿透能力强、可多卡识别、抗污性强等特点,近年来越来越受到业界人士的广泛关注。本文首先介绍了射频识别技术的基本工作原理,并在此基础上设计了一个简单的RFID系统,包括读卡器和有源标签两部分,可以适用于停车场的车辆管理等场合。本系统采用无线收发一体芯片NRF2401(读卡器用)和NRF24e1(标签用),工作频率为2.4~2.5GHz。系统设计包括硬件和软件两部分,标签设计为有源式,可主动发送向读卡器发送标签内带有的信息;读卡器接收到相关信息后,由MCU芯片控制,通过串口将有效数据传输到后台PC机内,进行相关处理。关键词射频识别读卡器有源标签NRF2401/24e1RS-232AT89S52正文1、课背景1.1RFID技术概述在我们的现实生活中,各种各样的活动或事件都会产生这样或那样的数据,这些数据包括人、物质、财务的数据,也包括采购、生产和销售中的数据,这些数据的采集与分析对于我们的生产或者生活决策来说十分重要。如果没有这些实际的数据支持,生产和决策将成为一句空话,将缺乏现实基础。在信息系统早期,相当一部分数据的处理都是通过人工手工录入的,这样不仅数据量十分庞大,劳动强度大,而且数据误码率较高,也失去了实时的意义了。为了解决这些问题,人们需要研究和发展了各种各样的自动识别技术(automaticidentificationsystem,AIS),将人们从繁重且十分不精确的手工劳动中解放出来,提高了系统信息的实时性和准确性,从而为生产的实时调整、财务的及时总结以及决策的正确制定提供了正确的参考依据。在计算机信息处理系统中,数据的采集是信息系统的基础,这些数据通过数据系统的分析和过滤,最终成为影响我们决策的信息。自动识别技术就是应用一定的识别装置,通过被识别物品和识别装置之间的接近活动,自动地获取被识别物品的相关信息,并提供给后台的计算机系统做后续处理的一种技术。自动识别技术是以计算机技术和通信技术的发展为基础的综合性科学技术,它是信息数据自动识别、自动输入到计算机的重要方法和手段。可以这么说,自动识别技术是一种高度自动化的信息和数据采集技术。自动识别技术近几十年来在全球范围内得到了迅速发展,初步形成了一个包括条码技术、磁卡磁条技术、IC卡技术、光学字符识别技术、射频技术、声音识别及视频识别等集计算机、光、磁、物理、机电、通信技术为一体的高新技术学科。其中,射频识别(RadioFrequencyIdentification简称RFID)技术是90年代兴起的自动识别技术。它是一项利用射频信号通过空间耦合(交变磁场或电磁场)实现无接触信息传递并通过所传递的信息达到识别目的的技术。RFID标签与读写器之间进行无线通信的频段的国际达5种之多,分别是135KHz以下、13.56MHz、860MHz-911MHz(UHF)、2.45GHz以及5.8GHz。五者各具特色也都有缺陷,前两者使用最广,但通信速度较慢,传输距离也不够长,而后三者频段高,耗电量也大。目前RFID存在两个技术标准阵营,一个是欧美的EPC标准,其RFID采用的是UHF频段,如902MHz~928MHz,侧重于物流管理、库存管理等;另一个是日本的UID标准,采用的频段为2.45GHz和13.56MHz,可用于库存管理、信息发送与接收以及产品和零部件的跟踪管理等。本课题研究的内容为2.45GHz射频识别手持式读卡器,其读写距离较远,非常适合用于仓储物流与供应管理,以及车库车辆管理等等。由于射频标签的读取依靠辐射电磁场而不是依靠可见光,这就克服了条码技术由于恶劣天气环境、条码污损等限制带来的识别难,甚至不能识别的问题,从而实现自动读取数据的目的。又由于不用近距离接触,甚至阅读距离可以长达近百米,而且电子标签可以粘附在任何动态目标上,只要运动速度在读写器识别速度限制之内,就可以远距离读取运动物品标签上的信息。射频识别系统从狭义的角度说,由两个部分组成,即电子标签和读写器。广义的射频识别系统还应该包括实际应用中的后台软硬件,甚至包括所构建的数据传输网络。在实际的应用中,电子标签附着在待识别的物品上,当附着有电子标签的待识别物品通过读写器可识读范围时,读写器会以无接触的方式自动将电子标签中的约定识别信息取出,从而实现自动识别物品或者自动收集物品标识信息的功能。电子标签是射频识别系统真正的数据载体,读写器是射频识别系统实现的基础保证。1.2基本工作原理射频识别系统的基本模型如图1-1所示。其中,电子标签又称为射频标签、应答器、数据载体;阅读器又称为读卡器、扫描器、读头、读写器。电子标签与阅读器之间通过耦合元件实现射频信号的空间(无接触)耦合;在耦合通道内,根据时序关系,实现能量的传递和数据的交换。图1-1射频识别系统由图1-1可以看出,在射频识别系统的工作过程中,应答器与阅读器之间的数据传输是通过空气介质以无线电波的形式进行的。一般地,可以利用两个参数衡量数据在空气介质中传播,即数据传输的速度和数据传输的距离。由于应答器的体积、电能有限,从应答器发出的无线信号很弱,因而信号传输的速度与传输的距离就很有限。为了实现数据远距离、高速度传输,必须把要传输的数据信号叠加在一个规则变化、信号比较强的电波上,这个过程就是调制,规则变化的电波即载波。在RFID系统中,载波一般由阅读器发出并进行调制,而实现数据的调制也有许多方法,如用数据信息改变载波的波幅即调幅、改变载波的频率即调频、改变载波的相位即调相。射频识别系统一般采用调幅或调频方式。实际应用中,RFID标签除了具有数据存贮量、数据传输速率、工作频率、多标签识读特征等电学参数之外,还根据其内部是否需要加装电池及电池供电的作用而将电子标签分为无源标签(passive)、半无源标签(semi-passive)和有源标签(active)三种类型。无源标签没有内装电池,在阅读器的阅读范围之外时,标签处于无源状态,在阅读器的阅读范围之内时标签从阅读器发出的射频能量中提取其工作所需的电能。半无源标签内装有电池,但电池仅对标签内要求供电维持数据的电路或标签芯片工作所需的电压作辅助支持,标签电路本身耗电很少。标签未进入工作状态前,一直处于休眠状态,相当于无源标签。标签进入阅读器的阅读范围时,受到阅读器发出的射频能量的激励,进入工作状态时,用于传输通信的射频能量与无源标签一样源自阅读器。有源标签的工作电源完全由内部电池供给,同时标签电池的能量供应也部分地转换为标签与阅读器通信所需的射频能量。射频识别系统的另一主要性能指标是阅读距离,也称为作用距离,它表示在最远距离上,阅读器能够可靠地与电子标签交换信息,即阅读器能读取标签中的数据。实际系统这一指标相差很大,取决于标签及阅读器系统的设计、成本的要求、应用的需求等,范围从0~100m左右。典型的情况是,在低频125kHz、13.56MHz频点上一般均采用无源标签,作用距离在10~30cm左右,个别有到1.5m的系统。在高频UHF频段,无源标签的作用距离可达到3~10m。更高频段的系统一般均采用有源标签。采用有源标签的系统,其作用距离一般可以达到30~200m左右。1.3应用现状及发展RFID技术的应用范畴可分为四类:商品电子防盗系统EAS(ElectronicArticleSurveillance)、移动数据采集(Portabledatacapture)、网络系统(Networkedsystems)、定位系统(Positioningsystems)。1.3.1商品电子防盗系统商品电子防盗系统已经不是一个陌生的名词了,现在的各大超市和零售店中都可以看到。早期的EAS主要应用于防止贵重物品被盗,将射频电子标签附在贵重商品上,读卡器定时监测该物品是否在商店内,一旦监测到物品在射频电子标签未被使无效之前离开了商店,便会发出警钟。而现在,EAS已经广泛的应用在各种个样的商品中。1.3.2移动数据采集比如说,在一种移动设备上安装感应器,可感应周围环境的温度、湿度、亮度或某种移动速度,这些数据均会自动存储在附在装置上的射频电子标签上,数据可由读卡器读取。1.3.3网络系统此系统使用的是固定读卡器,可对移动的目标进行跟踪,通常直接跟企业系统连接,是一种典型的管理技术。1.3.4定位系统可对目标进行定位,可提供导航作用。目标可为各种各样的物体,如汽车、动物,还有人类等等。具体的应用有:动物身份标记、高速公路自动收费、动物的饲养、商品监控系统、有毒废弃药品的管理、门禁管理、邮件/包裹追踪、物品出入库记录、航空行李管理、生产过程监控、药物防伪标志、电子护照、车辆防盗系统等等。射频识别技术在国外发展非常迅速,射频识别产品种类繁多。在北美、欧洲、大洋洲、亚太地区及非洲南部,射频识别技术被广泛应用于工业自动化、商业自动化、交通运输控制管理等众多领域:汽车、火车等交通监控;高速公路自动收费系统;停车场管理系统;物品管理;流水线生产自动化;安全出入检查;仓储管理;动物管理;车辆防盗等。而在我国,由于射频识别技术起步较晚,应用的领域不是很广,除了在中国铁路应用的车号自动识别系统外,主要应用仅限于射频卡。总体而言,我国射频识别技术应用状况还处于初级阶段,市场前景非常广阔。不久的将来,我国射频识别技术应用将在生产线自动化、仓储管理、电子物品监视系统、货运集装箱的识别以及畜牧管理等方面有所突破。实现射频识别技术在我国逐渐成熟、全面应用将是一个长期的过程。2、RFID系统的设计2.1设计方案2.1.1射频识别系统的传输协议由于本文设计的电子标签为主动式标签,在工作中所需要的能量由标签内的电池提供,另外标签不需要阅读器的激活,阅读器和标签之间是单向通信,为了简化阅读系统的设计,通信方式只选择单工,即电子标签主动地每隔一定时间向外发射代表其自身编码的微波信号,阅读器不向电子标签发送指令和数据,只负责接收电子标签的信号。由于读写器与标签之间的通信可能会受到其他数据终端或外界环境的干扰而发生错误,因此,需要通信协议来保证数据传输的可靠性。nRF2401的协议格式见表所示,其中前导码是由nRF2401自动产生,地质包括标签地址和阅读器地址,用户数据可由用户自定义写入标签的信息,CRC校验码可选8位或16位,也由硬件自动产生。 前导码 地址位 标签ID CRC位表2-1RFID通讯协议2.1.2系统各模块的设计方案2.1.2.1电子标签图2-1电子标签组成从上图2-1可以看出,标签部分由以下各模块组成:射频收发、存储器、微控制器和电源。考虑到标签一般面积都不会太大,这里选用带有8051内核的nRF24e1芯片作为发送端,外部存储器选用25LC640存储24e1的驱动程序,每次上电后24e1通过SPI接口从存储器中注入驱动程序,进入工作。2.1.2.2读卡器图2-2读卡器组成如上图2-2,读卡器的设计包括有:射频收发、微控制器、存储器、通信接口和电源。读卡器通过射频收发模块接收到标签数据后,微控制器将数据通过串口传送到后方PC机中。考虑到与PC机有串口连接,同时又不像标签有大小限制,这里选用nRF2401作射频收发,AT89S52作微控制器,与PC机采用RS232的串口通讯协议,选用MAX232作电平转换。2.2主要元器件的选择2.2.1收发器——nRF24e1/nRF2401本设计使用了NORDIC公司所推出的nRF24e1/nRF2401来实现射频信号收发,它们都是功能强大的单片射频GFSK收发芯片,工作在2.4~2.5GHzISM频率,其通讯频道可多达125个,满足多点通信和跳频通信需要,工作速率为0~1Mbps,最大发射功率0dBm,外围元件极少,内置硬件CRC(循环冗余校验)和点对多点通信地址控制。简单来说,nRF24e1可以看作是带有8051内核的nRF2401的收发芯片,故这里以nRF2401简单作下介绍,具体细节可参考相关资料。图2-1为nRF2401的功能模块图,如图2-3所示,nRF2401的收发前端配置了功率放大器和低噪声放大器,还有频率合成器以及GFSK滤波器。另外,nRF2401还内置解调器、时钟恢复数据限幅器、地址解码器、CRC编码解码器,以及先入先出堆栈区。图2-3nRF2401的功能模块图nRF2401的使用非常方便,可以工作在四种不同工作模式下,其控制也只需使用PWR_UP、CE、CS三个引脚,如下表2-2所示。其工作模式为:收发模式、配置模式、空闲模式和关断模式,各工作模式的具体情况可参考相关资料。表2-22401工作模式控制2.2.1.1ShockBurstTM收发模式nRF2401芯片有个很突出的特点,即拥有两种通信模式:直接模式(DirectMode)和猝发模式(ShockBurstTMMode)。直接模式的工作方式与传统射频收发器的工作方式一样,在发送时,收发器自动在地址码和数据的后面添加校验码。猝发模式利用芯片内部的先入先出堆栈区,使数据从低速微控制器送入,再以高速发射出去(最高可达1Mbps),地址和校验码由硬件自动添加和去除,使用这种收发模式,不仅可使微控制器控制芯片更有效地工作;使射频信号以高速发射,抗干扰性强;还减小整个系统的平均电流。因此,本课题中选择ShockBurstTMMode进行数据传输,提高了系统整体的性能和效率。在ShockBurstTM收发模式下,nRF2401自动处理字头和CRC校验码。在接收数据时,自动把字头和CRC校验码移去。在发送数据时,自动加上字头和CRC校验码,当发送过程完成后,数据准备好引脚通知微处理器数据发射完毕。ShockBurstTM发射流程(接口引脚为CE,CLK1,DATA)A. 当微控制器有数据要发送时,其把CE置高,使nRF2401工作;B. 把接收机的地址和要发送的数据按时序送入nRF2401;C. 微控制器把CE置低,激发nRF2401进行ShockBurstTM发射;D. nRF2401的ShockBurstTM发射² 给射频前端供电;² 射频数据打包(加字头、CRC校验码);² 高速发射数据包;² 发射完成,nRF2401进入空闲状态。ShockBurstTM接收流程(接口引脚CE、DR1、CLK1和DATA)A. 配置本机地址和要接收的数据包大小;B. 进入接收状态,把CE置高;C. 200us后,nRF2401进入监视状态,等待数据包的到来;D. 当接收到正确的数据包(正确的地址和CRC校验码),nRF2401自动把字头、地址和CRC校验位移去;E. nRF2401通过把DR1(这个引脚一般引起微控制器中断)置高通知微控制器;F. 微控制器把数据从nRF2401移出;G. 所有数据移完,nRF2401把DR1置低,此时,如果CE为高,则等待下一个数据包,如果CE为低,开始其它。2.2.1.2器件配置工作nRF2401的所有配置工作都是通过CS、CLK1和DATA三个引脚完成,把其配置为ShockBurstTM收发模式需要15字节的配置字,而如把其配置为直接收发模式只需要2字节的配置字。由上文对nRF2401工作模式的介绍,我们ShockBurstTM收发模式,这样系统的程序编制会更加简单,并且稳定性也会更高,故这里着重介绍把nRF2401配置为ShockBurstTM收发模式的器件配置方法。ShockBurstTM的配置字使nRF2401能够处理射频协议,在配置完成后,在nRF2401工作的过程中,只需改变其最低一个字节中的内容,以实现接收模式和发送模式之间切换。ShockBurstTM的配置字可以分为以下四个部分:数据宽度:声明射频数据包中数据占用的位数,这使得nRF2401能够区分接收数据包中的数据和CRC校验码;地址宽度:声明射频数据包中地址占用的位数,这使得nRF2401能够区分地址和数据;地址:接收数据的地址,有通道1的地址和通道2的地址;CRC:使nRF2401能够生成CRC校验码和解码。当使用nRF2401片内的CRC技术时,要确保在配置字中CRC校验被使能,并且发送和接收使用相同的协议。nRF2401配置字的各个位的描述如下表2-3所示。表2-32401配置字在配置模式下,注意保证PWR_UP引脚为高电平,CE引脚为低电平。配置字从最高位开始,依次送入nRF2401。在CS引脚的下降沿,新送入的配置字开始工作。2.2.2主控制器——AT89S52图2-4AT89S52功能模块图AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。考虑到本设计中控制器要求不是很高,而且对于AT89系列也比较熟悉,所以这里我们选择AT89S52单片机作为控制器。AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。2.2.3串口电平转换器——MAX232由于设计的读卡器是要与计算机连接,所以必须考虑到单片机的电平和计算机电平的转换,这里我们选择MAX232作接口电路设计。MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的接口电路,使用+5v单电源供电。内部结构基本可分三个部分:  第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。  第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道;8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DP9插头;DP9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。  第三部分是供电。15脚DNG、16脚VCC(+5v)。图2-5MAX232引脚和功能模块图3、有源式电子标签的设计3.1硬件部分电路原理图图3-1电子标签电路图标签部分采用nrf24e1,外围电路可参考Nordic公司的nAN24-01nRF2401ARFLayoutApplicationNotes绘制。其中DIO0~DIO2和DIN0引脚作为SPI接口与外部存储器相接,上电后存储器中的程序通过SPI口进入nRF24e1,其引脚具体功能分配如下表3-1: 引脚 功能 作用 DIO0 串行时钟引脚 提供外部存储器时钟信号 DIO1 串行数据输出口 SPI数据输出,与外部存储器输入相接 DIO2 片选CS GPIO口,控制外部存储器是否工作 DIN0 串行数据输入口 SPI数据输入,与外部存储器输出相接表3-1SPI引脚功能表3.2软件部分3.2.1发送流程图·电子标签初始化·启动定时器,并进入配置模式·配置好进入发送模式,开始发送标签信息·检验发送是否超时,到规定时间继续下一发送周期3.2.2配置字设定根据之前的介绍,nRF2401/24e1的ShockBurstTM模式的配置字如下配置:int8uRFConfig[15]={0x80,//接收频道二有效数据长度0x80,//接收频道一有效数据长度0x00,0x00,0x00,0x00,0x00,//接收频道二地址0x00,0xaa,0xbb,0x12,0x34,//接收频道一地址0x82,//32位地址,16位CRC,不使能CRC//bit7~2:ADDR_W,最大40位//bit1:CRC_L,(0:8bitCRC;1:16bitCRC)//bit0:CRC_EN//Logic0:On-chipCRCgeneration/checkingdisabled//Logic1:On-chipCRCgeneration/checkingenabled0x4f,//ShockBurst模式,250kbps,16M晶振,0dBm最大功率//Bit15:RX2_EN//Logic0:Onechannelreceive//Logic1:Twochannelsreceive//Bit14:CommunicationMode//Logic0:nRF2401operatesindirectmode.//Logic1:nRF2401operatesinShockBurst.mode//Bit13:RFDataRate(0:250kbps;1:1Mbps)//Bit12-10:nRF2401crystalfrequency//D12D11D10CrystalFrequency[MHz]//0004//0018//01012//01116//10020//Bit9-8:SetsnRF2401RFoutputpowerintransmitmode//D9D8P[dBm]//00-20//01-10//10-5//1100x04//2400+2*1=2402MHZ=2.402G,发送模式//Bit7~1:SetsthefrequencychannelthenRF2401operateson//Channelrf=2400MHZ+RF_CH#*1.0MHz//Bit0:Setactivemode//Logic0:transmitmode;Logic1:receivemode};3.2.3具体实现本节将具体描述电子标签驱动程序的几个主要基本函数:nRF24e1初始化函数Init(),数据读写函数SpiReadWrite(b),发射模式设置函数SetTxMode(),标签数据包发送函数TransmitPacket(b),有了这几个函数,按照3.2.1流程图,电子标签驱动即可基本实现。Nrf24e1数据读写函数SpiReadWrite(b),nRF24e1初始化函数Init(),发射模式设置函数SetTxMode()虽然简单,但很关键,其代码如下:unsignedcharSpiReadWrite(unsignedcharb){EXIF&=~0x20;//清SPI中断SPI_DATA=b;//将字节数据送入SPI数据寄存器while((EXIF&0x20)==0x00);//等待SPI数据收发完成returnSPI_DATA;//返回收发的数据}当参数b为0时即为读取射频模块接收到的数据,否则为将字节数据送入SPI数据寄存器等待发送。voidInit(){int8ui;SPICLK=0;SPI_CTRL=0x02;//SPI设置CE=0;CS=1;//设为配置模式Delay100us(0);for(i=1;i<15;i++){SpiReadWrite(RFConfig[i]);//发送15字节配置字,设为ShockBurst发送模式}CS=0;//配置结束Delay100us(30);}nRF24e1的初始化,这里我们将地址配置为32位,标签ID为16位,即最多可有2^16个标签,改变配置字相应位的数值可以增加标签总量。voidSetTxMode(void){int8uch;CS=1;//设为配置模式Delay100us(10);ch=FRESELE<<1;//频道选择SpiReadWrite(ch);//配置为发送模式CS=0;}24e1初始化后,每次发送数据前都需要重新将24e1设置为发送模式才行。配置成发送模式后,标签数据包发送函数TransmitPacket(*pBuf,ID_Index)的代码如下:staticvoidTransmitPacket(unsignedchar*pBuf,unsignedcharID_Index){unsignedchari;SetTxMode();//设置为发射模式CE=1;//进入发送数据状态CS=0;Delay100us(1);//延时100usfor(i=0;i<ADDR_COUNT;i++){SpiReadWrite(rfAddress[i]);//首先写4个字节的地址}SpiReadWrite(pBuf[ID_Index]);//发送第几个应答器ID数据CE=0;//发送数据结束Delay100us(5);//发送结束后延时500us}由上述程序可见,发送数据前首先设置成发送模式,并同时置CE为1允许发送,接着先写地址,然后发送标签ID。4、读卡器的设计4.1硬件部分电路原理图图4-1读卡器电路图读卡器部分主要实现接收功能,待nRF2401接收到正确的数据包后,由单片机控制从串口传送至后方PC机进行处理。使用的主要芯片包括:nRF2401、AT89S52、MAX232。4.1.1nRF2401做射频接收模块使用,由MCU控制PWR_UP、CE和CS三个引脚的电平以确定其当前工作模式,而接收到的数据则通过DR1、CLK1和DATA这三个引脚传给MCU。图4-22401射频收发模块4.1.2AT89S52单片机AT89S52作为主控制器,一方面控制射频接收模块的工作情况,并接收相关数据包;同时又将接收到的数据包从TXD引脚往串口传送。这里只使用了单片机的P1端口,与nRF2401相关引脚对应连接。注意单片机引脚9(RST)为复位功能,可采用软启动,即每次上电直接重新启动。图4-3AT89S52控制器模块4.1.3MAX232本设计使用的RS232驱动/接收器为MAXIM公司的MAX232,左图为MAX232的功能实现电路图,如图所示,MAX232拥有16个引脚,其中有两套通信引脚,在此只使用其中的一套:T2in,T2out,R2in,R2out。其中,T2in用于读卡器向计算机输出数据,R2out用于读卡器接收来自计算机的数据,T2out用于计算机接收来自读卡器的数据,R2in则用于计算机向读卡器输出数据。这里只做接收机用,故只有从读卡器向计算机单向数据传输。图4-4MAX232串口模块4.1.4电平转换nRF2401工作电压3.3V,AT89S52和MAX232工作电压为5V,为统一供电,需要加稳压芯片做电平转换。本电路中采用LM1117系列的稳压芯片,外加电容即可达到效果。图4-5电平转换模块4.2软件部分4.2.1接收流程图·系统初始化后,进入接收模式,等待数据·对接收到的数据进行判断,若为新数据,进行校验后送给MCU;若为重复数据,则直接丢弃·MCU将正确的数据包通过串口232传送给PC机4.2.2具体实现由于nRF2401的ShockBurstTM模式的配置与nRF24e1一样,这里就不重复介绍。本节主要介绍读卡器接收程序的几个基本函数:串口初始化函数UartInit(void),串口发送函数SendCh(INT8Uch),2401初始化函数Init(),2401数据读字节函数SpiReadByte(INT8Udat),数据包接收函数ReceiveBytes(void),接收模式设置函数SetRxMode(void)。先介绍有关RS232串口部分,包括初始化和串口发送函数,这里采用中断服务程序保证串口有效地向PC机发送数据,其相关代码如下:voidUartInit(void){SCON=0x50;//串口方式1,允许接收TMOD=0x21;//定时器1工作方式2,定时器0工作方式1TH1=TIMER1;TL1=TIMER1;TR1=1;//启动定时器1}voidSendCh(INT8Uch){SBUF=ch;while(!TI);TI=0;}每当串口向外发送出一个字节,标识位TI自动置1。voidTimer0ISR(void)interrupt1//中断服务程序{EA=0;TH0+=TIMER0H;TL0+=TIMER0L;timer[0]++;timer[1]++;EA=1;}接着是有关nRF2401的部分,其初始化和24e1基本相同,不再重复说明,接收模式设置函数的代码如下:voidSetRxMode(void){unsignedcharch;CS=1;Delay100us(0);ch=FRESELE<<1;//频道选择SpiWriteByte(ch|0x01);//配置为接收模式CS=0;Delay100us(2);//延时200us}nRF2401和nRF24e1一样的方便之处在于,接收模式和发送模式直接可以快速转换,只需改变配置字的最后一位即可。但是要注意2401的数据读写字节函数和24e1有所区别,下面即是2401的数据读字节函数的代码:INT8USpiReadByte(void){INT8Ui,temp;temp=0;MISO=1;//SPI初始化,包括DR1,DATA和SCKMOSI=1;SCK=0;_nop_();_nop_();for(i=0;i<8;i++)//连续由SPI读出8位,即一个字节的数据{temp<<=1;SCK=1;_nop_();_nop_();if(MOSI)temp++;SCK=0;_nop_();_nop_();}returntemp;}当时钟SCK上升沿的时候,SPI根据DR1的值记录一bit,连续8位即一字节后读出。2401的数据包接收函数同样也十分重要,其代码如下:INT8UReceivePacket(void){INT8Ui;SetRxMode();CE=1;ResetTimer(1);while(DR1==0){if(ReadTimer(1)>1000)//2401处于接收模式,等待1s,确定是否有数据接收{CE=0;return0;}}i=0;while(DR1){RxBuf[i]=SpiReadByte();//如果接收到正确数据包,将其存入缓冲区i++;if(i==6)break;}while(DR1){SpiReadByte();}CE=0;return1;}2401进入接收模式等待,当接收到正确数据包后,DR1会自动置1,通知MCU接收有效数据,此时函数返回值为1;否则等待超时后返回0。有了这几个基本函数,再加上定时器的相关函数,就可以实现读卡器的接收功能了。5、调试结果及总结5.1系统调试及结果5.1.1发送部分图5-1数据发送测试由图5-1可以看出,发送信号的频率在2.402GHz左右,与我们设置的频点一致。5.1.2接收部分5.1.2.1串口通讯为测试串口正常,我们向串口发送了一系列0xaa和0x55交错的字节,在示波器上查看串口数据的波形如下图5-2所示。图5-2串口通讯测试分析上图,以最小跳变周期为一个单位,每二十个是一周期,由于串口每传送一个字节都会在前端和后端各加一bit,而传送的数据是0xaa和0x55,每2个字节为以周期,与得到的波形相符。,说明串口通讯正常。再在计算机的串口调试助手上有下图5-3所示:图5-3串口调试助手上的接收数据5.1.2.2接收标签ID测试完串口后,即可开始测试接收模块,我们选用2组标签ID进行测试,将得到的波形与之比较,和发送标签一致,说明接收无误。(注意这里负电平为1,正电平为0)第一组:标签ID为0x55,0x00图5-3标签测试数据1从发生跳变的开始的20位:00101010110000000001,每字节去头去尾各一bit后,得到的正好就是5500,和标签ID一致。第二组:标签ID为0x11,0x11图5-4标签测试数据2和上一组分析一样,接收无误。5.1.3性能测试读卡器系统一个比较重要的性能就是阅读距离,我们在主楼915室进行了测试,在实验室东西最长两端(约10几米)还是可以保持接收质量。5.2实验中的遇到的问题及注意事项5.2.1硬件设计·原理图设计时,明确各模块功能,主要器件的引脚要参考有关资料,不用的引脚根据资料悬空或接地。·电路设计时,电源滤波很重要,单片机在接入电源之前最好都要就近滤波,否则到实际调试阶段,开关电源产生的毛刺很有可能烧坏芯片。·画原理图中,最好留出芯片的一两个I/O接口,接上LED或发光二极管,用来测试芯片是否正常工作。这次设计中因为没有很好的考虑到这点,给后面的调试带来了一定的麻烦,值得注意。·将电路原理图导成PCB之前,记住将每个元器件加上正确的封装,对于一些库中没有的封装,需要自己画一个加进库中,画得时候必须严格参照元件资料尺寸,或买到实际元件的尺寸。·在画PCB时,元器件布局要合理,尽量使整块PCB板上的元器件分布均与,同时尽量保证线交错的少些,方便布线;布线时最好采用手动布线,比一般走线粗些电源和地线要,布线尽量工整规范,避免有90°拐弯;当某支点分出三条支线,最后敷成一块较大区域,避免小于90度角的出现。·这里我们采用微带天线,天线尺寸直接影响到发送接收的效果,设计时可参考有关资料计算;值得注意的是,PCB板上有微带天线的区域,另一面不能敷成地线。电路原理图和PCB板是整个设计最基本也是最重要的部分,绘制的时候不可马虎,每个细节都要注意到,因为最终画出来的PCB板是要做成实物的,后续的软件测试都是在这块板子上进行,一旦有一点小错误,就会导致整个调试不过,而且错误难以发现;即便发现之后更改起来也是十分麻烦,严重的时候可能要重新制作一块。顺带一说,PCB图拿去制版的时候可以多加工两块作备份。5.2.2软件部分·较汇编语言而言,用C语言编程会更容易上手,也更熟悉。可使用单片机编程软件KeiluVision2先调试通过后,再烧进单片机中。·编程当中要根据芯片要求,分模块编写相应函数,这和以前用C语言编程还是有所不同的,以前的编程都是在软件中仿真调试通过就可以了,但此次编写的程序最后是要烧到单片机中,所以编写的程序也会因为所使用的芯片有所区别,首先一点就是用到的端口一定要和硬件是匹配的,其次芯片各个寄存器的初始化一定要正确,必要时可参考芯片详细资料。·调试时切忌一上来就直接测试最后功能是否实现,基本那是不现实的,一般按当初设计的分模块测试,比如我们在测试读卡器功能的时候,我们就先测试了串口通讯是否正常,之后又测试定时器是否正常,最后才开始测试接收模块。·出现问题时,要想到一切可能的情况,然后一个一个测试排除,最终找到问题的根源。比如,我们在最后测试读卡器接收模块时,发现怎么也接收不到有效信号,在排除串口通讯有误、定时器非正常工作、端口初始化错误等问题后,猜测可能是24e1和2401通讯协议中CRC有差别,于是将CRC使能置0,问题终于得到解决。·由于第一次制版,所以没考虑到标签可以多做两块,所以对于RFID中的防碰撞算法的实现并没有多做考虑,只是简单的以手动开关标签,实现一定程度上的防碰撞,这是一开始方案设计上的不足。虽然说如果硬件设计没有错的话,调试大部分是软件上的工作,但实际调试时,却也常常会因为操作失误或其他各种意外造成芯片烧坏,或板子焊点脱落等问题。所以一方面必须保证编程正确无误,另外也得按要求正确操作,减少不必要的失误,导致硬件出现问题。当出现问题后,最怕急躁或是抱怨,我们在3个小组中可以算的上出现问题最到的了,电容爆过,芯片烧过,甚至板子莫名其妙不能用,但最后回想,很多都是人为因素造成的,也是可以解决的,关键在于自己有没有用心去思考出现问题的原因,当然也有很多是因为经验不足,有了这次的经历,相信对以后也是一个很好的经验。6、结束语随着大四上快过去,这门课程也即将结束,这算是第一次,从绘制电路板到最后调试通过,整个系统设计与实现都有自己参与的过程,虽然总感觉自己一路过来也是跌跌撞撞,不过也证明跤摔的多才会让人印象深刻。相较大四选的其他课程,这门课算是花掉不少时间,但也的确因为这样才学到了很多,无论在理论设计,还是实际动手方面,感觉自己都有一定程度的提高。学习的过程虽然辛苦,但也充满不少乐趣和思考。很感谢各位老师和师兄在整个过程中给予的指导和帮助!参考文献:1.“2.45GHz手持式RFID读卡器的研究与实现”,张妍,电子科技大学,硕士学位论文,2007年8月;2.“主动式RFID阅读器与车辆识别系统的设计与实现”,曹世华,北京邮电大学,硕士学位论文,2007年9月;3.“基于NRF24E1的RFID系统研究及应用”,程敏锋,苏州大学,硕士学位论文,2008年1月;4.“2_4GHz无线收发芯片nRF24E1的原理及应用”,吴钊炯严仍友,广东工业大学,2004年3月;5.“RFID的系统设计与碰撞算法研究”,王洪菊,西北工业大学,硕士学位论文,2007年5月;6.NRF24E1/2401,AT89S52,MAX232,LM1117,25LC640的详细资料,具体可上相关公司网站查询下载�EMBEDPBrush\*MERGEFORMAT����EMBEDPBrush\*MERGEFORMAT����EMBEDPBrush\*MERGEFORMAT����EMBEDPBrush\*MERGEFORMAT����EMBEDPBrush\*MERGEFORMAT���
/
本文档为【基于NRF2401的RFID读卡系统的设计与实现毕业设计论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索