基于AVR单片机的超市智能购物系统设计
2012-08-10孙科伟李建海
孙科伟,李建海
(空军工程大学航空航天工程学院,陕西 西安 710038)
责任编辑:许 盈
随着人们消费水平的提高,大型超市购物越来越受到人们的青睐,可是每逢周末,超市收银台前长长的队伍对人们购物的心情和超市的效益产生了极大的影响,而且有时想买一样东西却苦于找不到地方。针对超市购物的上述不便,人们研究出一种超市智能购物车,它不仅能很快指出需要购买商品的位置和具体信息,引导人们很快找到商品,同时智能购物车还具有自动结账、查询等功能,大大节省了购物的时间,使人们的购物轻松而愉快。国外已经有几种智能购物车面市,但由于其技术复杂和成本较高等原因并没有在国内迅速普及。本文设计了一种基于AVR单片机的智能购物系统,利用ZigBee无线传输系统和红外定位技术。采用迪文HMI触摸屏作为人机界面,结合PC机的强大数据处理能力实现了低成本的超市智能购物系统。
1 系统总体方案设计
本系统采用ATmega128单片机为主控芯片,通过电子扫描枪将商品的条形码识别后传给ATmega128单片机,单片机把收到的条形码信息通过串口传输给ZigBee模块,ZigBee无线传输模块将条形码信息传给PC机,PC机连接着ZigBee通信模块负责商品信息的实时传输,在接收到条形码信息后迅速通过数据库查询商品信息,同时将查询的信息发送给ATmega128单片机,ATmega128单片机在接收到PC机发来的商品信息后通过其另一个串口控制触摸屏显示商品信息和消费总价。同时可以通过触摸屏查询商品打折信息和商品的具体位置。系统总体框图如图1所示。
图1 系统总体框图
2 硬件电路设计与应用
系统硬件电路设计与应用主要包括串口通信电路设计,ZigBee无线通信模块应用设计,迪文串口显示终端应用,条形码扫描电路设计和红外定位电路设计。
2.1 串口通信电路设计
ATmega128单片机是美国Atmel公司生产的高性能、低功耗8位单片机,具有先进的 RISC结构[1]。AT-mega128单片机具有两个可编程的串行USART,可以方便地在显示终端和无线传输模块之间传输数据。兼容IEEE 1149.1标准的JTAG接口,遵循JTAG标准的边界扫描功能,通过JTAG接口可以实现在线仿真调试和程序下载[2]。本文主要是通过ATmega128单片机的两个串口分别控制ZigBee无线模块和触摸屏。单片机和PC机通信时,由于单片机输入输出电平是TTL电平,PC机配置的是RS-232标准接口[3],两者的电器规则不同,要想进行通信必须要通过电平转换,通常采用MAX232电平转换芯片进行转换,电路连接原理图如图2所示。
图2 串口电平转换电路设计
2.2 ZigBee无线通信模块应用
本文采用DRF1601系列ZigBee模块,它是基于TI公司CC2530芯片,运行ZigBee2007/PRO协议的ZigBee模块,简单易用,不用考虑ZigBee协议,串口数据透明传输,能够自动组网,所有的模块上电即自动组网,Coordinator自动给所有的节点分配地址,不需要用户手动分配地址、网络加入、应答等专业ZigBee组网流程[4];传输的可视距离为400 m,满足此超市购物环境所需要求。此无线模块通过串口与单片机和PC机进行通信,测试模块时可借助串口调试助手在PC机上调试。具体方法为:1)PC机向串口调试助手发送FC 02 91 01 XX XX,其中XX XX为4位十六进制数(不包括0xFFFE),若串口接收到的返回值是后4位时则表示成功设定模块的PAN ID;2)同方法1)发送FC 01 91 06 XX指令设置模块的串口波特率,XX的具体取值参见表1。
表1 串口波特率设置
串口默认波特率是38 400 baud。DRF1601模块主要有两种数据传输方式,一种是数据透明传输,另一种是点对点数据传输[5],本系统只需要PC机和各个ZigBee模块之间通信,所以选择点对点数据传输,点对点传输适合于ZigBee网络内任何两点之间的数据传输;数据透明传输的接收方知道数据来源的地址(增加最后2 byte);数据包长度最大36 byte(数据区长度32 byte);如在一个网络中从301A节点发送数据到51 2B节点,应当发送FD 0A 51 2B 01 02 03 04 05 06 07 08 09 10,其中FD是点对点数据传输指令,0A是数据长度,512B是目标地址,地址512B收到的数据为发送数据和源地址。具体过程如图3所示。
图3 ZigBee网络节点数据传输示意图
ZigBee标准规定可以在一个单一网络中容纳65 535个节点,完全可以满足大型超市的购物需求,由于ZigBee网络采用了CSMA/CA机制(带有冲突避免的载波侦听多路访问技术),确保了多点发送,利用ACK信号尽量避免发生数据冲突,使系统更加稳定可靠[6]。
2.3 迪文串口智能显示终端应用
单片机通过串口和触摸屏进行通信,迪文智能显示终端采用的是四线电阻式触摸屏,触摸按键就是在屏幕上显示一个按钮的图标,当用户点击该图标时,该显示终端会通过串口向单片机发送一串十六进制数[7],其中包含触摸的位置(即其在触摸屏上的X,Y坐标),当单片机收到其坐标后按预设的功能做出相应的操作。迪文串口显示终端通过迪文开发演示助理对其通信参数和显示参数进行设置,触摸屏所需图片也是通过此软件进行下载和配发。具体设置和调试步骤如下:1)连接电源,将显示终端串口和计算机九针串口直接相连。2)通过串口调试助手设置初始波特率为115 200 baud,选择和计算机连接的COM口,可以先下发十六进制方式的AA 52清屏指令,观看屏幕的变化,调试通过时屏幕显示为蓝屏。3)串口调试成功后可通过迪文HMI开发指南,找到对应的指令执行相应的操作。4)图片下发,将设置好格式的图片依据所需的连接顺序下载到显示终端。例如点显示的指令为0x50,0x51,0x74,0x72,具体在某固定坐标显示某一点的指令为AA 51 00 00 00 00 00 03 00 06 00 05 00 20 CC 33 C3 3C,表示以前景色显示3个点,其坐标为(0,0),(3,6),(5,32)。
2.4 条形码扫描电路设计
条形码的信息是通过电子扫描枪扫描后通过PS2口将信息输入到单片机,单片机通过外部中断程序接收到通断码后将其转换成十进制数并将转换后的数通过ZigBee模块发送到PC机。PS2接口与单片机的电路连接原理图如图4所示。其中各个引脚和单片机的连接为:引脚1接PA0;引脚3接地;引脚4接VCC;引脚5为CLK,接在128单片机的外部中断0。
图4 PS2接口与单片机连接图
2.5 定位方案设计
本文所采用的ZigBee无线模块使用的是CC2530芯片,由于其强大的数据传输和冲突避免能力,其定位相对复杂。所以针对本系统应用的特点,采用的是红外线室内定位技术,其定位原理是:红外线发射器发射调制的红外射线,通过安装在室内的光学传感器接收进行定位,在本系统中,在超市货架上每隔3 m放置一个红外发射器,每个红外发射器有固定的标识ID,在智能购物车上和红外发射器同等高度安装有红外接收器,根据接收的红外编码不同可确定消费者的具体位置[8]。红外发射采用低功耗的通用编码芯片PT2262,最多可以有12位(A0~A11)三态地址端管脚,任意组合可以提供531 441个地址。PT2262发出一个完整的编码信号包括地址码、数据码、同步码3部分。解码部分有软件解码和硬件解码两种方法[9],软件解码可通过单片机识别红外接收管接收的高低脉冲实现解码,为了减少软件设计的复杂度,本系统采用的是与PT2262配套的PT2272芯片进行硬件解码。红外编解码的电路原理图如图5、图6所示。图5中编码地址由1~8脚控制,通过悬空、接正电源、接地3种状态来控制,地址编码的不重复度为6 561组,满足此系统的要求。解码芯片PT2272接收到信号后,当两次地址比较的结果相同时,VT脚输出高电平,同时输出数据引脚端也输出高电平,具体电路如图6所示。
3 软件设计
本文采用的开发软件是ICCAVR软件,编译运行后将生成的HEX文件通过AVRstudio软件下载到单片机中。本系统的软件设计主要包括单片机串口通信程序、外部中断接收扫描数据程序、迪文串口显示终端控制程序和PC机数据库程序设计。
3.1 主程序流程
主程序主要完成系统变量的初始化,通过电子扫描枪扫描条形码数据并通过ZigBee无线数传模块与PC机建立通信。返回的信息在液晶显示终端显示。主程序流程如图7所示。
3.2 触摸屏控制程序设计
触摸屏通过串口与单片机进行通信,实现对商品信息的显示、商品信息的模糊查询、消费详情的实时显示、购买商品的增加与删除、智能购物车的定位与导航等。触摸屏的显示程序框图如图8所示。
每一步操作都是通过串口向液晶屏发送一串十六进制数,例如,液晶屏接收起始指令为 0xCC,0x33,0xC3,0x3C。同理可参照相应的指令集实现相应的操作。
触摸屏的控制程序放置在串口中断服务程序中,当用手按压时,触摸屏向单片机发送一串十六进制数,单片机接收到数据后立即进入串口中断,在中断服务程序中,通过接收缓存器,将每次接收到的数据储存起来,当收到结束标志时表示一段信息接收完毕,将缓存器的数据通过另一个串口发送到PC机,等待PC机将相关信息返回后采取相应的操作。
3.3 单片机控制扫描条形码程序设计
扫描枪通过PS2口与单片机进行数据传输,扫描的条形码信息为13位的十进制数,单片机接收数据采用中断方式接收,中断服务程序的具体流程图如图9所示。
图9 外部中断程序流程图
3.4 PC机数据库程序设计
采用VB语言结合Excel电子表格编写程序,VB有较强的数据管理、控制和应用程序开发能力,Excel具有强大的数据存储和处理能力,Excel自身的对象库可以通过VB程序进行调用和管理。在VB中处理Excel主要是通过Application对象来处理,Application对象指代整个应用程序,通过Application对象实现数据库数据从VB到Excel的直接输出[10],本文主要是将超市的商品信息通过Excel电子表格存储,运用VB程序对其进行调用和管理,当扫描枪扫描条形码信息并传送给主机服务器后,服务器通过VB程序搜索数据信息并实时传送给智能购物车,智能购物车将收到的商品信息在触摸屏上显示,由用户对其进行相应的操作。当模糊查询时PC机上软件的运行界面如图10所示,PC机将查询到的数据传送给触摸屏显示。
4 结束语
图10 PC机数据库查询界面(截图)
系统经过综合调试后实现了智能购物的需求,数据能够无差错地在PC机端和智能购物车之间进行无线传输,智能显示终端也能准确无误地显示消费情况,经测试智能购物车的定位可达2 m,满足人们超市购物的需求,可实现无差错的扫描条形码信息。操作智能显示终端有误时系统自动报错,该系统操作简单,系统稳定性较强,随着人们消费水平的提高和对超市购物的需求,本系统将得到广泛的应用。
[1]胡汉才.高档AVR单片机原理及应用[M].北京:清华大学出版社,2007.
[2]丁易新.基于ATmega128单片机的机器人路径规划控制器的硬件设计[J]. 信息化研究,2009(1):48-50.
[3]赵阳,范多旺,王智渊.基于ATmega128的天然气供气无线监控系统[J]. 机械与电子,2010(1):147-49.
[4]李新.基于CC2530的ZigBee网络节点设计[J].可编程控制器与工厂自动化,2011(3):97-99.
[5] DRF1600 系列 ZigBee模块使用说明[EB/OL].[2011-12-12].http://wenku.baidu.com/view/ab802f2d647d27284b73510b.html.
[6]乔磊.基于ZigBee技术的无线点餐系统设计[J].现代电子技术,2011(3):68-71.
[7]纪松波,侯婷.智能液晶触摸显示终端与单片机接口的设计[J].现代电子技术,2010(12):16-18.
[8]安然然,冯露.基于AVR单片机的无线通道控制系统的设计[J].沈阳化工学院学报,2009(1):76-79.
[9]郭昕刚,宋宇.基于PT2262/2272的防盗器[J].长春大学学报,2010(6):79-80.
[10]刘丹丹,胡彩虹,张成才.基于Excel和数据库在VB中制作报表[J]. 气象与环境科学,2007(3):90-93.