1、实验524G有源RFID低功耗实验五 2.4G有源RFID低功耗实验一、 实验目的1.1 了解有源RFID的相关标准1.2 了解有源RFID的应用领域1.3 熟悉有源标签内部结构及其工作状态1.4 实习有源RFID识别系统的各组成部分结构及工作原理1.5 分析2.4G固件程序,了解低功耗工作模式原理二、 实验设备硬件:RFDI实验箱套件,电脑等。软件:Keil。三、 实验原理 3.1 有源RFID系统图5.1 有源系统组成 典型的有源 RFID 识别系统结构组成如上图所示,主要包括主机、阅读器、有源标签三大部分。其中主机就是普通电脑,是 RFID 识别系统与特定应用系统的联结点,安装应用软件,
2、通过阅读器提供的访问接口查询阅读器上已识别的标签 ID。本节仅对阅读器和有源标签的基本结构及其工作原理进行说明。3.1.1 阅读器:阅读器在系统中的作用是探测监听附近区域的标签,解析并存储其ID,等待主机查询取用。有源RFID系统中的阅读器与无源系统的阅读器在原理和结构上没有本质区别。阅读器的一般结构示意图5.2所示图5.2 有源阅读器结构图 处理器:处理器主要是指阅读器内的核心单片机,通过其上固化存储的程序完成对阅读器各功能模块的控制和相关数据处理功能。 数据存储器:数据存储器用于暂存已收到的标签ID。一般单片机芯片都集成了数据存储器。 射频发送模块:阅读器与有源标签的通信接口,通过编码调制
3、的无线电波与标签进行数据交换。模块的发送和接收工作流程如下图5.3所示:模块内部一般有载波生成电路、调制解调电路、 载波收发电路。如果模块采用硬件实现编解码,还会包含符合特定编码规则的编解码模块,否则将由嵌入式软件驱动实现数据编解码。在阅读器的实际设计中,本模块可以由散件搭建,也可以选用成品集成电路。图5.3 射频模块工作流程图 通信接口: 本模块完成与主机的信息交换。如果阅读器与主机采用有线连接,则通信接口有很多标准设备可供选择,如RS232,RS485,CAN,Ethernet等。如果阅读器与主机间采用无线连接,则通信接口就是一个射频收发模块。 天线:天线的主要作用是向外辐射电磁波。一般天
4、线都具有特征频率和方向特性,只有根据实际情况选用合适的天线才能保证阅读器的能力得到最大的发挥。3.1.2 有源标签有源标签的结构组成如图5.4所示,与阅读器相比减少了通信接口部分,各部分的功能及工作原理基本一致。差别在于标签与阅读器功能不同而导致的器件选型差异。标签存储器容量一般比阅读器存储器小,仅存储标签ID及少量数据;一般有源标签都以自带电池为电源,所以必须选择功耗尽量低的设计,如果标签通过外部电源供电,则在设计上无需过多考虑功耗问题。目前简单的有源标签大多为主动式ID标签,仅存储一个只读ID码,并按一定周期间隙向外广播ID;更高级的标签能够存储更多信息,响应阅读器的命令,甚至被设计为各种
5、无线传感器或检测设备。有源标签的最主要特点就在于标签不依靠阅读器发送的载波提供能量,而是具有独立的能量供应系统。所以有源标签与无源标签相比,具有识别距离更远,配套阅读器发射功率更低的优点,但也有标签成本高,体积大,寿命短等缺点。图5.4 有源标签结构图 3.2 有源RFID协议标准有源RFID协议目前尚无统一的事实标准,不同厂商的协议实现差异性较大,所以阅读器和标签一般都不能互换通用。工作在2.45GHz的有源RFID系统,其协议实现多参考 ISO 18000-4 标准中的内容;工作在433MHz的有源RFID系统主要参考 ISO 18000-7 标准。本实验平台上的有源RFID工作在2.45
6、GHz,所以本节仅对与其相关的ISO 18000-4标准作简单介绍。3.2.1 标签存储结构ISO 18000-4标准(以下简称18000-4)规定标签数据以字节为单元进行存储,最大256个存储单元,每个单元可实现写锁定。实际存储结构实现为四字节只读ID,ID由生产商在出厂时设置。3.2.2 标签状态转换18000-4规定的标签在与阅读器的交互过程中会随命令不断改变自身状态,状态转换如下图5.5所示:图 5.5 有源标签状态转换图 3.2.3 编码方式18000-4规定编码方式分为上行链路(阅读器-标签)和下行链路两种,上行为曼彻斯特编码,下行为FM0编码。 3.2.4 调制方式18000-4
7、规定信号调制方式为上行链路和下行链路两种,上行为GMSK调制,下行为OOK调制。 3.2.5 信息帧结构18000-4 规定的信息帧为比特流,结构可分命令帧和响应帧两种。其中命令帧的结构为:起始符+定界符+命令码+数据+CRC16;响应帧结构为:起始符+数据+CRC16。所有信息帧的发送顺序为高位优先。3.3 标签识别过程本实验平台所用 2.4G 有源 RFID 标签为主动式只读 ID 标签,阅读器模块为被动接收模块,系统实现为纯标签 ID 识别系统,不对标签作数据读写操作,具有多标签冲突处理机制。标签识别机制:本实验平台所用标签在独立 3V 电源驱动下间歇性工作,周期性对外广播 ID,周期约
8、为 550ms。标签对外广播 ID 的过程完全独立于阅读器的控制之外,阅读器只是监听标签广播,检测到信号后解调解码获得 ID 数据。标签实际的工作状态转换如图5.6所示图5.6 有源标签实际工作状态转换图四、 实验步骤手册地址:光盘附件2.4G资料实验相关的工程代码文件地址:光盘源代码2.4G有源2.4G有源RFID实验-低功耗标签代码光盘源代码2.4G有源2.4G标签与读卡器固件RFID_Tag,不支持二次开发。标签配置指令请参考光盘附件2.4G资料标签配置命令注意事项:首先需要将纽扣电池与标签进行焊接。 4.1 安装标签。标签结构如图所示: 图 5.7 标签 图5.8 纽扣电池标签底部标有
9、VCC与GND,请将黑线焊接到GND上,红线焊接到VCC上即可,标签初始化为主动模式。图 5.94.2 打开光盘源代码上位机开发用RFID-UARTRVMDK工程目录,编译并烧写到实验箱,将实验箱上的UART-STM串口与PC机相连,打开电源,打开串口助手(光盘应用程序串口助手),并正确配置串口参数。可以发现此步与实验2中的4.1节相同,它们用的是同一个STM固件程序。在串口助手上以十六进制发送02 04,选择并使能2.4GHz RFID模块。和低频RFID模块相同,2.4GHz RFID模块一旦使能,将处于主动监听阶段,无需上位机发送任何命令也可以查询周边的2.4G标签,并将标签数据返回给上
10、位机。注意:当有多组同学一同做该实验室,因为读卡器的读卡范围很广,会接收到别组学生的标签号,建议学生一组一组有顺序的完成这一步骤。4.3 打开光盘源代码2.4G有源2.4G有源RFID实验-低功耗 工程,编译并烧写入实验箱。上电后,进入例程主界面。也可以进行相同的测试。界面核心代码: void Window(void) uint8_t i = 0; unsigned char edit_cur; GUI_CURSOR_Show(); /* 建立窗体,包含了资源列表,资源数目, 并指定回调函数 */ hWin = GUI_CreateDialogBox(aDialogCreate, GUI_CO
11、UNTOF(aDialogCreate), _cbCallback, 0, 0, 0); /* 设置窗体字体 */ FRAMEWIN_SetFont(hWin, &GUI_FontComic18B_1); FRAMEWIN_SetBarColor(hWin, 0, GUI_LIGHTCYAN); FRAMEWIN_SetClientColor(hWin, GUI_BLACK); /FRAMEWIN_SetDefaulteBorSize(0); /*BUTTON 部件句柄及设置控件参数*/ hButton_bussys0 = WM_GetDialogItem(hWin, GUI_ID_BUTTO
12、N0); hButton_bussys1 = WM_GetDialogItem(hWin, GUI_ID_BUTTON1); hButton_bussys2 = WM_GetDialogItem(hWin, GUI_ID_BUTTON2); BUTTON_SetFont(hButton_bussys0, &GUI_FontComic18B_1); BUTTON_SetFont(hButton_bussys1, &GUI_FontComic18B_1); BUTTON_SetFont(hButton_bussys2, &GUI_FontComic18B_1); BUTTON_SetTextCol
13、or(hButton_bussys0, 0, GUI_BLUE); BUTTON_SetTextColor(hButton_bussys1, 0, GUI_BLUE); BUTTON_SetTextColor(hButton_bussys2, 0, GUI_BLUE); BUTTON_SetBkColor(hButton_bussys0,0,GUI_LIGHTCYAN); BUTTON_SetBkColor(hButton_bussys1,0,GUI_LIGHTCYAN); BUTTON_SetBkColor(hButton_bussys2,0,GUI_LIGHTCYAN); BUTTON_S
14、etBkColor(hButton_bussys0,1,GUI_GRAY); BUTTON_SetBkColor(hButton_bussys1,1,GUI_GRAY); BUTTON_SetBkColor(hButton_bussys2,1,GUI_GRAY); /* 获得edit 部件的句柄及设置控件参数*/ edit0 = WM_GetDialogItem(hWin, GUI_ID_EDIT0); edit1 = WM_GetDialogItem(hWin, GUI_ID_EDIT1); /* 设置EDIT部件采用10进制范围50-20000*/ EDIT_SetDecMode(edit
15、1,0,0,2000,0,0); EDIT_SetMaxLen(edit0, 40); while(1) flag = 0; if (1 = rec_f2) rec_f2 = 0; atoh(RxBuffer2, hex, 8); EDIT_SetText(edit0, hex); EDIT_SetValue(edit1, i+); Beep(); WM_Exec(); 4.5 点击start按钮,读写器开始接受标签信息。按键响应函数: static void _cbCallback(WM_MESSAGE * pMsg) int NCode, Id; switch (pMsg-MsgId) c
16、ase WM_NOTIFY_PARENT: /通知父窗口有事件在窗口部件上发生 Id = WM_GetId(pMsg-hWinSrc); /获得对话框窗口里发生事件的部件的ID NCode = pMsg-Data.v; /通知代码 switch (NCode) case WM_NOTIFICATION_RELEASED: /窗体部件动作被释放 if (Id = GUI_ID_BUTTON1) /停止按钮动作 GPIO_SetBits(GPIOD, GPIO_Pin_3 ); else if (Id = GUI_ID_BUTTON0) /开始按钮动作 GPIO_ResetBits(GPIOD,
17、GPIO_Pin_3 ); USART2_OUT(start, 2); /BeepInit(); else if (Id = GUI_ID_BUTTON2) /低功耗按钮动作 USART2_OUT(lowpower, 2); /发送低功耗指令 break; default: break; default: WM_DefaultProc(pMsg); /默认程序来处理消息 break; 4.6 点击stop按钮,停止接受标签信息。4.7 点Low power按钮,进入低功耗模式,标签被动接受指令。可用万用表检测主动模式与被动模式下耗电情况。标签低功耗核心代码:if(rx_buf0=0x22) / 数据已收到 sta=0;delay(15);PD_Mode(); / 关RFrtc2_on(); / 开RTC2PWRDWN = 0x04; / 进入低功耗模式,等待RTC2发送TICK信号唤醒RX_Mode(); memrx=0x22;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1