查看完整版本: 超市自助购物系统设计原理与实现,软硬件协同

admin 发表于 2015-4-27 08:09:45

超市自助购物系统设计原理与实现,软硬件协同

第1章引言
        本文档主要内容在于介绍超市自助购物系统的开发背景,设计原理,和具体实现,同时介绍系统使用方法,以期达到完善该系统并推广应用的目的。
       
        本文档的读者对象是应用此系统的超市方,普通购物者也可阅读此文档,但不用关注具体技术细节,只需要了解用户使用方法即可。
       
        §1.2项目背景
        每次去超市买东西时,收银台前面长长的队伍是一个让所有人都发愁的问题。收银员已经用最快的速度去刷取物品上的条形码,但结账的整体时间依旧让顾客等得不耐烦……
       
        RFID射频识别技术的高速发展,对于上面所述问题的解决提供了可能性。我们想利用RFID技术的优势,开发一套崭新的超市自助购物系统,大大缩短顾客结款的时间。
       
        第2章系统结构
        §2.1系统框架
       
        §2.2购物车模块操作流程
       
       
       
       
        §2.3收银台模块操作流程
       
        §2.4系统特点
        当前的超市结算系统主要依靠收银台处扫描商品包装表面的条形码来统计价格。条形码系统的结算速度受到很大的限制,这已经成为当前超市结算系统被消费者诟病的主要原因。相比之下,基于单片机和RMU系列开发板的超市自助购物系统具有很多独特的优势。
       
        2.4.1 等待时间短
        当前的超市结算系统完全是在收银台处对商品信息进行统计。超市自助购物系统把这段时间分成了两部分,并且把最耗时间的部分——一件一件扫描购买的商品,转移到购物车上进行。在购物的同时,完成当前车内商品总价的计算。收银台处只需进行结账环节,不用经历扫描条形码的漫长过程。
       
        2.4.2 支付形式多样化
        超市自助购物系统有两种支付方式,现金支付和会员卡余额支付。现金支付就是当前超市中普遍采用的方式,支付过程比较麻烦。除此之外,购物者还可以选择会员卡余额支付。只要会员卡账户余额大于本次消费金额,就可以利用余额支付。
       
        2.4.3 完善的会员卡体系
        会员卡在超市自助购物系统中发挥着不可替代的作用。会员卡中包括的信息有:会员卡号,会员卡密码,会员卡余额,会员卡积分。
       
        选购好物品进行结算时购物车模块会把本次消费金额写到自己的会员卡中,这个过程中需要会员卡密码。利用会员卡余额支付时也需要会员卡密码。根据每次消费金额计算出本次消费的积分,累加到会员卡积分中。
       
        2.4.4 系统功耗小
        购物车模块选取了低功耗的MSP430单片机和RMU900+开发板(配套小功率天线),完全可以利用5V的充电电池做电源。收银台模块接有交流电源,供电比较容易。两部分模块在非工作状态下都可以待机,不向外发射电磁波,节省能源。
        第3章技术细节(硬件部分)
        §3.1描述各部分技术系统
        系统硬件框图如下:
       
       
        图3.1硬件部分框架
       
        §3.2MSP430 MCU
        MCU芯片选择TI公司的MSP430 F169。MSP430 提供两个UART通信模块,LCD显示接口, EEPROM扩展接口,共有6组I/O接口,能够最多支持16个中断源,同时MSP 430 有独特的低功耗模式,可以极大地减小能量消耗。采用官方IAR Embeded Workbench,界面友好,能够极大简化软件设计及调试验证,提高系统鲁棒性。
       
        MSP430 采用3.3V供电,与RMU 900+供电电压相同,异步串行通信部分采用URAT1端口,采用外接晶振,频率为8MHz,波特率设置为57600 bps。
       
        系统采用3级中断:初始上电复位中断,初始上电时,系统检测各模块性能;低功耗唤醒中断,当购物结束后系统进入低功耗模式,新顾客通过按键产生中断,从低功耗模式中唤醒;串口通信接收中断,接收RMU900发送的握手信息及读取到的标签信息。
       
        LCD 显示采用1602液晶显示屏,可以显示2行,每行16个字符(ASIIC码字符)。由于开发时间仓促,LCD功能不够完善。进一步的设计中计划采用12864液晶显示屏或其他大屏幕显示屏。但屏幕过大将会消耗更多电能,在基本设计中,1602液晶可以满足需求。
       
        键盘采用8个独立按键,实际用到3个按键,分别是Wake_up(从低功耗中唤醒按键),Key_start(连接RMU900+,启动购物),Key_stop(结束购物,刷会员卡)。其中Wake_up产生中断。
       
        §3.3读写模块及天线
        RFID读写模块分别采用恒睿公司的RMU900+和RMU920。RMU900+在购物车上使用,采用电池供电。RMU900+通过开发板上的UART通信口与MCU通信。RMU920在收银台终端处固定,采用220V交流供电,采用USB与终端PC通信。
       
        购物车上天线采用T3640天线,该天线有效读取距离约为1m,符合购物车要求。终端处天线采用9dbi圆极化天线,功率较大,读取范围可以达到5m。具体天线参数可以参考天线Datasheet。
       
        §3.4存储模块
        实际电子标签尽管可以读入许多位,但依照读写模块的使用说明,结果测试后我们发现标签只可以写入数据2个字节。则根据每个标签对应于不同的商品,目前只能做到216=65536件商品,这在商品如此丰富的今天显然无法满足需求。如果电子标签制造厂商可以将标签做到允许读取8个字节,则可以有216件商品,这个数量足以满足所有需求。
       
        现代物联网不仅要求顾客了解商品名称,价格等基本信息,顾客还希望了解商品的产地,生产日期,保质期等相关信息。这些信息在商品出厂时由厂家连同标签号写入数据库,商品进入超市后超市将这些信息写入EEPROM当中。EEPROM和MCU相连,可以在读到每个ID号时从内存中找出商品信息,通过LCD显示给顾客。
       
        开发中由于标签数量有限,相关信息存在MCU的程序存储空间中即可。
       
        §3.5终端PC模块
        收银台终端为一PC机,上安装有我们开发的软件程序。终端和RMU920相连,也可以通过RFID读取商品信息,但读取速度较传统条形码有大幅度提高。PC后台通过局域网LAN与服务器数据库(Server Data Base)相连,可以实时将结算信息传送至服务器。
       
        §3.6服务器模块
        服务器模块可以与MCU和终端PC进行通信,将商品库存信息存至MCU中,并实时更新商品数据库和会员信息数据库。
        第4章技术细节(软件部分)
        §4.1描述各部分技术系统
        本产品所使用所有软件程序(PC机上)均是基于Microsoft Visual C++ 6.0 的MFC开发的。该软件包含以下功能:1,利用天线读取标签信息;2,利用所读取信息进行识别,修改,统计等过程;3,将处理过的信息记录在PC机中。
       
       
        图4.1 软件部分架
       
        §4.2商品读取函数
        利用了所给头文件RMU900_API.h中的函数进行了对天线和标签的操作。首先用到了RmuOpenAndConnect函数连接天线,然后利用RmuReadDataSingle函数进行对商品的读取操作,在程序中进行了去重操作,保证了同一件商品被且仅被读取了一次。
       
        §4.3商品(消费者)识别函数
        首先利用标签中的特殊信息位辨别此标签为商品还是消费者,然后在相应的库中寻找是否存在相应的商品(消费者),如果存在这样的商品(消费者),那么就导入相应商品(消费者)的信息,如果不存在相应的商品(消费者),则再相应的区域报相应的错误。
       
        §4.4信息处理函数
        4.4.1 信息显示
        因为使用了MFC库,所以只需要将所需显示的信息值赋予相应的文字框的对象,然后刷新屏幕,即可实现信息的显示
       
        4.4.2 总金额统计与比较
        每次读入信息后,可以得到其相应的价格信息,将所有的金额相加后,即可得到总金额,然后将计算得到的总金额与消费者标签中的读到的总金额相比较,如果一致则显示此次消费的金额,然后可以进行消费操作,如果不一致则进行报错。
       
        4.4.3 支付与积分函数
        支付有两种方式,现金支付与会员卡消费,对应了两个不同的按键,如果是现金支付,系统仅是将消费金额对应的积分存入会员卡信息中;如果是会员卡支付,则不仅是将消费金额对应的积分存入会员卡信息中,同时也将会员卡的余额减去对应的消费金额,如果余额不足,则报错。
       
        §4.5其他函数
        4.5.1 清零函数
        为方便多次操作进行统计,系统提供了清零操作,本函数不仅将内存中所有相应的变量全部置零,同时也会清除显示屏上所有上次遗留下来的信息,如商品信息,总金额信息与错误提示等。
       
        4.5.2 报错函数
        本函数旨在处理一些意想不到的错误,每一步遇到问题后都会转向此函数,程序将终止运行,同时将相应(唯一)的错误显示在报错区域。
       
        4.5.3 商品库,消费者库导入函数
        本函数利用的是C++ 中的文件读入读出流的知识,利用文件流,对商品库,消费者库(.txt文件)中储存的信息进行读入和修改。
       
        4.5.4 总销售数量与金额统计函数
        为了方便商场管理者对商场进行管理,该软件特别设置了该函数,用来统计一段时间内商场销售的所有商品的总数量和金额,并将其保存在‘sale.txt’中。
        第5章应用前景与发展方向
        未来商品使用RFID电子标签代替条形码已成为货物流通发展的必然趋势。利用RFID电子标签,本系统可实现“购物无停顿,支付由我选”的自由自主购物。
       
        从购物者角度出发,本系统可消除当前超市收银台前排长队的现象,大大节约了购物者的购物时间,增加了消费舒适度。同时由于RFID电子标签保存信息较多,购物者可以从商品识别系统中读取到该商品的整个生产流通过程,能够买到更放心的商品。
       
        从超市角度出发,超市可以大大减少收银员的数量,降低了经营成本;结算速度的加快同时提高了超市的吞吐量;结算系统与数据中心相连可以使超市随时了解热门商品及短缺商品信息,利用物联网可以实现商品的及时调运和补充。
       
        鉴于目前绝大多数超市依然使用传统的人工结算方式,此系统的发展应用前景极为广阔。我们相信,如果此系统实现投入商用,必将带来零售业和物流业的一场革命。
       
        第6章改进方案
        超市自助购物系统满足了最初的设计要求。但是,依旧有需要改进的地方,主要有下面几点:
       
        购物车模块由MSP430单片机和RMU900+开发板组成,体积较大,并且单片机和开发板上的很多资源没有使用。在以后的设计中可以把MSP430单片机的主芯片、RMU900+芯片、电源控制模块和液晶显示屏集成在一块电路板上,节省系统成本,提高系统的稳定性。
       
        当前的RMU系列开发板只能写一个字大小的数据(16位),对标签的读写操作很局限。以后可以完善RMU开发板的功能,扩大写操作的数据位数,提高对标签存储区的利用,进而可以提高标签数据存储量,让购物者看到商品的更多信息。
       
        当前的收银台模块只能单机运行,不支持联网操作,不能进行数据的动态更新。在以后的设计中,可以在PC机程序部分实现联网操作,真正满足超市系统对联机工作的需求。在一台收银台PC机结账之后马上同步更新超市的物品数据库和会员卡数据库。
       
        当前的系统安全性很差,对数据篡改行为没有防御性。以后的设计中可以在写操作和结账过程中更多地使用标签密码,增强对数据安全的保护,有效防御篡改数据的行为。
页: [1]
查看完整版本: 超市自助购物系统设计原理与实现,软硬件协同