基于无源RFID的智能外卖取餐系统
2022-09-07伍德鹏潘祺炜高钱豪
伍德鹏,潘祺炜,高钱豪,周 彪
(江南大学 江苏 无锡 214122)
0 引言
近年来,随着网络科技和数字经济的不断进步,平台经济发展的速度不断加快。其中,外卖行业的发展愈发迅猛,市场规模不断扩大,已经逐渐成为人类社会中不可或缺的一部分。据统计,2019年,外卖行业的总规模已经超过6 000亿元,比上一年增长将近40%;2020年则已达到6 646亿元,同比增长15%,经预测,2022年中国外卖餐饮行业市场规模将达到9 417.4亿元之多[1]。
据统计,大学生是外卖消费中的主力军,占消费总人数的74.6%。但是,传统的外卖配送行业仅仅追求外卖的送达效率,而忽视了大学校园环境的复杂性及外卖存取的问题,导致外卖存取不规范,甚至出现学生外卖丢失的情况[2]。因此,如何提高外卖配送服务质量,规范外卖存取管理已经成为校园外卖亟待探讨和解决的问题,这对提升用户外卖体验和促进社会经济的发展具有重大意义。
在全球疫情大背景下,无接触式配送已经逐渐成为高校校园外卖配送的常态。目前,许多人都提出了校园外卖柜的设计思想[3],并在外卖柜中加入保温、照明系统、备用电源、自动门锁等装置,使外卖柜能更好地服务于学生取餐。但是,考虑到外卖存取柜存取空间小,空间利用率低,在用餐高峰期并不能保证每个外卖都能放入存取柜。据调查,学生在收到取餐短信,会在短时间内取餐,并且学生宿舍园区均配备有微波炉,这就表明了外卖柜相关配置的不必要性。此外,外卖柜成本较高,不利于该装置在校园的普及。
无源射频识别技术(RFID)是一种非接触式的自动识别技术。近年来,RFID凭借着无需可视,能批量读取标签;高容纳力,能存储大量信息;读取距离远,可精确定位;保存周期长,防水防磁等优势,在物流、零售、医疗等领域实现了不同程度的商业化[4]。为了规范校园外卖管理、改善外卖存取环境、提高用餐高峰期的外卖容纳能力,本文基于无源RFID技术,设计了开放式外卖取餐房,搭建了智能的外卖取餐系统,实现了有监督的外卖取餐。该系统主要由置物架、固定式RFID阅读器、无源RFID标签、外卖定位显示模块等组成。经验证,该系统能在优化外卖取餐环境和规范管理外卖取餐流程的同时,还可以取得比外卖柜更好的社会与经济效益。
1 系统设计需求
本文设计的智能取餐系统采用模块化设计的思想,根据基本功能要求和相关技术标准,按照从高到低的设计思路,可以将整个应用系统细分为多个功能模块,模块化的设计使得各个部分相互独立而又密切联系。取餐系统按照功能主要可以划分为信息入库模块、定位查找模块以及监督取餐模块。
其中,信息入库模块是根据顾客的外卖订单信息,将消费者信息记录在具有唯一标识号的无源标签上,并记入数据库。然后将编辑好的无源标签粘贴在外卖包装盒上,等待外卖员配送。外卖员接受外卖配送任务,将外卖放至取餐房时,取餐房中的RFID阅读器通过读取外卖上的标签,从而识别外卖订单信息,更改外卖的配送状态为配送已完成。与传统的纸质订单信息相比,电子标签具有良好的防水性和可用性,成本低同时具有庞大的信息容量,具有较大实用价值[5]。
外卖定位查找模块是智能取餐系统的核心模块,该模块旨可简化外卖取餐方式,提升用户取餐效率。考虑到RFID良好的定位性能,我们设计了一种基于收包率的定位算法来确定外卖位置,该算法通过划分RFID阅读器的覆盖范围,估计出标签所在位置。相比于传统的室内定位算法,基于收包率的定位算法在满足一定的定位精度要求下,具有更强的稳定性。在得到外卖具体定位后,通过Java编程语言,将其显示在前端网页,方便消费者查找取餐。
学生取餐时,阅读器通过读取无源标签学生校园卡,获得取餐者相关信息,例如学号、姓名等,并将其记录到数据库,进而实现有监督的取外卖服务。在外卖丢失或被误取时,消费者可以根据数据库信息与取餐者取得联系,保障了消费者权益。通过更改数据库中相应字段,我们可以确定外卖状态——外卖已配送完成和外卖取餐完成。具体的工作流程见图1。
针对上述多址通信碰撞问题,本文基于曼彻斯特编码策略,采用一种改良的二进制搜索算法[7]来改善读取多个标签时的通信质量与效率。当阅读器发出查询命令时,所有标签都会响应阅读器的命令,而当有碰撞发生的时候,阅读器将准确知道碰撞的具体位置。根据碰撞发生的位置在原查询前缀的基础上,增加1位或多位比特,构成新的查询前缀。进行多番操作后可依次完成所有标签的识别。图2为该搜索算法的一个实例,可以识别6个标签0010、0100、0101、1001、1110、1111。与传统的二进制搜索算法相比,本文采用的改进的二进制搜索算法可以在保证搜索正确率的前提下,有效地减少搜索查询次数,从而达到提高查询效率的目的。
智能取餐系统采用无源RFID技术,无需与识别标签直接接触,在一定程度上保证了食品的安全与卫生,在疫情科学防控的当下显得尤为重要。该系统采用的无源电子标签具有读取方便快捷、安全性高、耐久性强、体积小等特点,在应用中能够快速、实时、准确地采集和处理信息。另外,无源RFID标签成本低,仅需要几毛钱,并且能够重复使用,具有较大应用价值及市场。考虑到RFID能够一次性读取大量标签,并且通过改进通信碰撞问题能够提高读取标签的效率,本文设计的智能取餐房相比于传统的取餐柜,具有极高的外卖容纳能力和外卖存放密度,能满足用餐高峰期的外卖存取需求。
2 系统设计
2.1 信息入库模块
信息入库的前提是,必须要改善标签到阅读器之间的通信质量,提升通信的有效性和可靠性,从而减少多个标签到阅读器之间产生的通信碰撞问题。在解决了通信碰撞问题,确保阅读器能够高效可靠地读取到标签之后,通过查询该标签独特的序列码,将顾客信息写入对应标签内。接着再利用串口将读取的标签信息录入到搭建好的数据库之内,为动态管理外卖配送奠定基础。
2.1.1 标签到阅读器之间的通信
本部分主要研究如何改善标签通信的碰撞问题。通信碰撞指的是,基于接收信号强度指示(received signal strength indicator)的LANDMARC算法的精度和稳定性不高,当多个标签紧贴在一起,会引起通信上的冲突,阅读器难以识别,造成读取紊乱的情况[6]。
经过实验验证,基于曼彻斯特的二进制搜索算法的确能改善标签通信碰撞,能够同时识别多个标签。实验结果表明,在改进之前,通信碰撞率为20.1%,阅读成功概率为92.7%;而在改进之后,通信碰撞率为1.5%,阅读成功率提升到97.3%。
2.1.2 信息录入数据库
在解决了通信碰撞问题后,需要搭建消费者信息数据库。考虑到本项目一般在局域网内使用,因此选择关系型数据库管理系统(SQL Server)为开发软件,采用C/S结构模式建立数据库。在阅读器读取标签相关数据后,利用一种计算机程序设计语言(Python)编程,将读取到的信息经串口传至搭建的数据库内。后期通过后台更改标签相关的信息字段,以代表不同的外卖状态,从而智能跟踪外卖配送及取餐过程。
2.2 定位查找模块
外卖员将贴有电子标签的外卖送至外卖取餐房后,为了方便学生取餐,我们需设计定位算法,精准显示外卖定位。室内常用的定位算法有:信号到达时间(TOA)、信号到达时间差(TDOA)、信号到达角度(AOA)、信号强度(RSSI),但是这些定位算法不仅精度有限[8],并且易受外界环境影响,本模块拟采用基于不同区域收包率并结合位置指纹算法的室内定位方法[9],以改善定位精度问题,减少室内约束条件。在得到标签具体定位后,本模块利用Java编程语言,设计了具体的定位显示网页,方便用户操作寻取外卖。
2.2.1 定位算法设计
本文设计使用的收包率算法为:某一时间段内,阅读器连续扫描标签M次,成功读取到标签的次数为N,则依此定义收包率(P)如下:
P是一段时间内对标签发送信息量的统计值,所以相对稳定。在无线信道中,根据收包概率大小可依次将单个阅读器的读取区域划分为稳定区、过渡区以及非稳定区。稳定区噪声干扰小,收包率较高;非稳定区噪声干扰严重,多径效应影响显著,收包率大幅降低。
2.2.2 定位模块设计
在智能取餐房的房顶和外卖货架均放置多个读写器,每一个读写器均能得到一个二维平面的收包率,并且具有自己读取区域的稳定区、过渡区以及非稳定区。在保证经济情况的前提下,多安置几个RFID标签阅读器,使得取餐房内每个区域均能被至少两个读取面的阅读器过渡区扫描到。由此,整个取餐房内的三维空间都会被阅读器扫描到,也就意味着每一个被送入到取餐房的外卖都会被阅读器感知,从而更新数据库中相应字段以显示外卖的不同状态。
为了确定外卖具体定位坐标,我们在取餐房4个角落分别安置一个固定式标签阅读器,分别记为A、B、C、D;其中每个阅读器均具有3种不同的识别区域,即稳定区、过渡区和非稳定区,分别记为1、2、3。在房间中每一点,这些阅读器的识别区域将相互重叠。
然后,进行数据训练,建立离散指纹数据库。在取餐房中每间隔1 m设置1个参考点,每个参考点处于4个阅读器的不同区域,因此每个位置指纹(a,b,c,d)唯一映射一块区域,例如某标签位置指纹为(1,2,1,3),即代表它正处于阅读器A的稳定区,阅读器B的过渡区,阅读器C的稳定区和阅读器D的非稳定区的相交区域。当外卖标签进入到取餐房时,4个阅读器分别进行标签的搜集读取。同样的,外卖在取餐房中不同的放置对应着不同的目标指纹,得到目标指纹,将其与已经建立的离散指纹数据库对比匹配,从而得到外卖在取餐房中的粗定位信息数据。
2.2.3 Java网页编程
我们搭建了智能寻餐管理系统,通过Java开发工具,搭建了一个连接数据库的可操作管理系统,采用面向对象的思想,统一录入数据库的外卖数据的属性及属性元素,实现将数据库中的信息有选择地批量显示在网页上。
为了智能显示外卖定位,我们在取餐房中设置了一个固定标签作为参考原点,通过上述定位算法得到了所有标签(包括固定标签)的定位后,以固定标签为坐标系的基准点建立对应的坐标系,以便定位可视化。利用Java语言编程,根据上述功能需求,我们搭建了友好的用户界面,该用户界面支持根据手机尾号查询外卖订单,查询到相应外卖后,显示其具体定位。经过多次的实验和数据分析,该系统能够精准显示RFID阅读器范围内所读外卖标签的位置信息和其相应的属性。
2.3 监督取餐模块
外卖送至取餐房后,阅读器阅读到外卖标签,更新数据库中相关字段为“配送已完成”。学生取餐时,在通过取餐机查找外卖标签定位后,刷卡进入取餐房取餐,阅读器读取到学生个人信息,当学生取走外卖,阅读器读取到被取走的外卖标签,更新数据库中相关字段为“取餐已完成”,并将取餐的相关信息录入数据库,在外卖丢失或误取时,方便查询。
3 结语
本文介绍了无源RFID的基本原理,分析了基于收包率和位置指纹识别的定位算法实现过程。再基于Python、MySQL和Java编程,搭建了智能外卖取餐房,提升了外卖取餐环境、配送质量和效率,并确保了外卖取餐的有序性。经实验验证,该系统稳定可靠,错误率低,在现实应用中具有一定的借鉴意义。
本文使用的定位算法属于粗定位,在区域面积较大时,只能确定标签的大概定位,读取精度不高。因此,后期可以改进定位算法,提高定位算法的定位精度,使其精确定位标签位置,从而提升用户服务质量。