×
嵌入式 > 嵌入式开发 > 详情

用ARM11和RFID技术打造的智能物流管理系统参考设计

发布时间:2020-06-30 发布时间:
|

物流在整个企业的供应链中占有非常重要的比重。通过RFID的批量识别,实现物流的出库,入库,和分拣流程。通过GPS定位系统,实时获取车辆在途信息。通过服务器和数据中心的实时数据分析和报表功能,可能掌握企业资源的动态变化。智能物流系统大幅提升整个供应链的效率。

1 系统方案

在本设计中采用固定式RFID的读卡器来采集信息,由串口发送至ARM11为核心的数据处理终端进行处理。因此该系统分为两个部分。

第一部分:RFID电子标签信息的采集,主要是选择固定式的读卡器来识别RFID标签信息并发向终端;

第二部分:数据采集,该部分以ARM11为核心处理器的数据处理终端,在终端上搭载Linux操作系统,并安装有数据库SQLite和QT/E来进行数据的采集和存储。

2 实现模块

本系统的实现依赖于以下4个功能模块:1)RFID信息的采集;2)串口数据的实时读取;3)SQLite数据的操作;4)Qt/E用户界面的设计。

2.1 RFID电子信息的采集

2.1.1 RFID电子标签

RFID电子标签分为被动标签(Passive tags)和主动标签(Aetlve tags)两种。主动标签自身带有电池供电,读/写距离较远,同时体积较大,与被动标签相比成本更高,也称为有源标签。被动标签由阅读器产生的磁场中获得工作所需的能量,成本很低并具有很长的使用寿命,比主动标签更小也更轻,读写距离则较近,也称为无源标签。一般来说,无源标签是取代条形码标签的主要发展方向,有源标签因为其长距离识别的优势,主要应用于大型的高速运动物体的标识识别之上。如机动车的跟踪和识别、动物或人类身份的跟踪和识别。

下面主要是以无源标签为例介绍其原理和性能的。

RFID电子标签由天线和专用芯片组成,天线是存塑料片基上镀上的铜膜线圈,在塑料基片上还嵌有体积非常小的集成电路芯片,在这个集成电路芯片中有高速的射频接口,控制单元,EEPROM 3个模块组成。如图1所示。


2.1.2 电子标签识别系统

一个真正的RFID电子标签识别系统至少应包含电子标签、阅读器、数据处理和存储的设备以及系统软件。通常阅读器与电脑相连,所读取的标签信息被传送到电脑上进行下一步处理。阅读器通过天线发送出一定频率的射频信号,当标签进入这一定频率的射频信号磁场时产生感应电流从而获得电能,产生电压供给电子标签内集成电路工作,并通过自身的RFID电子标签天线发送出自身编码等信息,由阅读器接收天线接收读取并解码后送至电脑主机进行相关处理。

2.1.3 射频读卡模块

本设计采用的读卡器是TX125系列射频读卡模块。TX125系列非接触IC卡射频读卡模块采用125K射频基站。当有卡靠近模块时,模块会以韦根或 UART方式输出ID卡卡号,用户仅需简单的读取即可。该读卡模块完全支持EM、TEMIC、TK及其兼容卡片的操作。

数据格式:6字节数据,高位在前,格式为5字节数据+1字节校验和(异或和)。例如:卡号数据为0B00D5FOC7,则输出为0x0B 0x00 0xD5 0xF0 0xC7 0xE9(校验和计算:0x0B^0x00^0xD5^0xF0^0xC7=0xE9)。第一个字节0x0B一般是厂家码。中间4个字节0x00 0xD5 0xF0 0xC7是卡片的序列号。一般卡片上印刷的都是10进制码。例如:001402807213 61639。上面的数据可以通过转换得到。转换方式如下:将中间4个字节卡号0x00D5F0C7转换为十进制,即得001402807;将卡号的第二字节0xD5转换为十进制,即得213,将卡号的最后两字节0xF0C7转换为十进制,即得61639。

在串口方式下,可工作存主动与被动模式。主动模式:当有卡进入该射频区域内时,主动发出以上格式的卡号数据。被动模式:CLK的下降沿触发卡号的输出,格式为以上数据格式。操作方法为:在准备读取卡号之前,打开串口中断并启动超时定时器(80 ms),将一直保持高电平的CLK置低电平,产生下降沿并一直保持低电平,等待卡号数据接收,若接收到卡号后存储待用,若在等待过程中无数据接收,且超时定时器已经溢出,则表示本次读取卡号失败;无论成功与失败最后都将CLK重新置高电平,进入待机以便下一次读取卡号。

串口通讯协议,就是读卡模块以何种格式把读取到的卡号发送出来。TX125支持韦根接口和串口两种协议。UART接口一帧的数据格式为:1个起始位、 8个数据位、无奇偶校验位、1个停止位。波特率可选择9 600 bps或者19 200 bps。在本设计中连接6 410网关设备的/dev/tty SAC1串口设备,选择设置波特率为9 600。

采用多线程的方式等待RFID刷写读卡器,主要函数:pthread_create (th_kb,NULL,KeyBoardPthread,0);pthread_creat (rf_ rev,NULL,RFIDRevPthread,0)。建立两个线程,第一个是以键盘输入的方式读写RFID信息,第二个线程的功能是监控串口/dev /ttySAC1中的信息,已实现实时的捕捉刷写RFID标签信息。

2.2 串口数据的实时读取

在linux操作系统中,对外设的访问往往都是使用open()函数,以打开文件的方式读取数据。在本设计中对串口数据的渎取也正是通过open()函数打开/dev/ttySAC1这一串口驱动文件,获取由读卡器发送给ARM11主核心板的数据,实现函数为open(/dev /ttySAC1,O_RDWR | O_NOCTTY),标志位为O_RDWR | O_NOCTTY,意义是系统以可读写的方式打开文件,如果欲打开的文件为终端设备时,则不会将该终端当成进程控制终端。

在打开串口文件之前,我们要对串口进行相应的设置,具体步骤有以下几步:串口属性的设置,保存原先串口配置,激活选项,设置波特率,设置字符大小,设置校验,设置停止位,设置最少字符与等待时间,清楚串口缓冲,激活配置。设置由以下结构体实现:


成功打开驱动文件后,需要做的就是使用read()函数来读出读卡器发送的信号,以判别货品的类型,将其信息准确的存入到数据库。 Read()函数的函数原型为read(int fd,void*huf,size_t count),read()实现的功能是从参数fd所指的文件传送count个字节到buf指针所指的内存中。读出的数据将存入buf中,作为识别 RFID标签的依据。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
scsi接口