基于ZigBee技术的无线点餐系统设计
引言
当今世界无线通信技术发展迅速,如蓝牙,Wi-Fi,红外,ZigBee等无线技术,已经在很多领域得到了应用。无线点餐系统将先进的Zig-Bee技术运用于传统的餐饮业,进而提高餐厅的服务水平和工作效率。目前,应用于餐饮行业的无线通信技术主要包括红外技术,蓝牙技术和ZigBee技术等。红外技术属于短距离,点对点的半双工通信方式,不适用于网络的组网;蓝牙技术成本高,不适合较多节点的网络。本研究采用了低速率,低成本,低功耗的ZigBee技术,设计无线点餐系统。
1 无线点餐系统整体结构
无线点餐系统主要由点餐终端与服务台终端组成,两部分通过ZigBee无线模块实现数据通信。点餐终端选用了友善之臂带有7寸触摸屏的ARM9开发板,通过上位机用户界面程序可以实现点餐功能。服务台终端选用一台带有串口/并口的台式电脑,连接无线模块和POS58系列微型打印机,对点餐终端发送过来的数据进行处理,实现打印小票的功能。
点餐系统的整体结构如图1所示。
2.1 无线通信模块
CC2430是TI公司推出的用来实现ZigBee应用的系统级芯片。CC2430内部已集成2.4 GHz的射频核心和8051控制器,外接简单的电路便可实现信号的收发功能。这种解决方案能够有效提高性能并满足以ZigBee为基础的2.4 GHz ISM波段应用,及对低成本,低功耗的要求。
图2为CC2430外围电路设计。
当芯片正常工作时,电容C1,C2连接32 MHz晶振组成高频晶振电路,用于发送数据。偏置电阻R1用于为32 MHz晶体振荡器设置精密偏置电流。芯片休眠时,电容C3,C4连接32.768kHz的晶振组成低频晶振电路,降低功耗。电容C5用于去除杂波干扰,防止单片机错误复位。C5,C7,C8是滤波电容,去除杂波干扰使电压更稳定。C10,C11,C12,C13,C14为去耦合电容,用来电源滤波,提高芯片工作的稳定性。电路中电容C9,电感L1,L2,L3以及一个PCB微波传输线组成非平衡变压器,整个结构满足RF输入/输出匹配电阻的要求。
2.2 服务台终端
服务台终端选用带有串口/并口的PC机。PC机与无线模块通过串口连接,和微型打印机通过并口连接。如图3所示,ZigBee无线模块和PC机通过串口(TXD和RXD)进行通信,直接向串口读写即可。PC机向微型打印机的8位数据信号线DATA0~7发送数据,数据选通输入信号STB低电平有效,DATA0~7的数据只有在有效的STB信号作用下才能被锁入打印机内部锁存器中。打印机状态信号BUSY高电平有效,表示打印机正在打印数据。
3 网络节点软件的设计
3.1 网络节点程序
ZigBee网络支持三种网络结构,即星状、树状和网状。节点设计基于通用性及便于开发的考虑,移植了TI公司的Z-Stack协议栈,其主要特点就是兼容性,支持IEEE 802.15.4标准的CC2430片上系统解决方案。ZigBee网络中有三种设备,分别是协调器、路由器及终端设备。协调器负责启动一个网络,在一个ZigBee网络中有且只有一个协调器设备。本系统选用了一个协调器和多个终端设备,对协议栈进行了相应的修改和增减以适应硬件电路的实际需求,组成简单的星形网络。
Z-Stack是基于操作系统的思想来构建的,采用事件轮循机制,整个协议栈用C语言编写。当各层初始化之后,系统进入低功耗模式,当事件发生时,唤醒系统,开始进入中断处理事件,结束后继续进入低功耗模式。如果同时有几个事件发生,判断优先级,逐次处理事件。这种软件构架可以极大地降级系统的功耗。整个Z-Stack的主要工作流程,大致分为系统启动、驱动初始化、OSAL初始化与启动和进入任务轮循几个阶段。
系统流程如图4所示。
当硬件初始化完成后,打开中断,执行osal_star_system()函数开始运行OSAL系统。该任务调度函数按照优先级检测各个任务是否就绪。如果存在就绪的任务则调用tasksArr()中相对应的任务处理函数去处理该事件,直到执行完所有就绪的任务。如果任务列表中没有就绪的任务,则可以使处理器进入睡眠状态实现低功耗。OSAL任务调度流程如图5所示。
ZigBee网络的形成是通过ZDApp_Init这个任务实现的。zDApp_Init任务中调用了函数ZDAPP_Net-workInit,如果是协调器就建立网络,确定PANID与频道选择,打开全局中断之后进入监听状态,监测网络中有无ZigBee信号,如果有节点申请加入网络,协调器给节点分配网络地址。对于终端设备,完成初始化之后,发送申请加入网络信号,等待协调器响应。成功加入网络后,进入休眠状态等待唤醒。网络启动程序流程如图6所示。
3.2 服务台终端程序
服务台程序主要是用来处理接收到的数据包,对数据进行解码、数据库存储及打印。如图7所示,每个节点的数据包含有以下内容:起始帧,和结束帧均属于标准8位字节,设置为0X00;餐桌号,每个节点对应不同的桌号,0X01表示1号桌,在点餐终端里设置;数据长度,表示这个数据包里所点菜的总数目;数据帧,真正的菜单信息,每一位表示一种菜的名称和数量,例如数据0X42,即“01000010”,低三位表示数量,高五位表示菜的代码,可以定义32种菜;结束帧,标志信息结束。
- 第四代移动通信系统中的多天线技术(08-05)
- 透析信道效应对MIMO系统运作效能的影响(01-18)
- 如何发展中国第二代导航卫星系统(02-02)
- 北斗卫星导航系统的特点(02-02)
- 基于无线传送的智能家居室内通信系统(01-03)
- 基于WiMAX技术的5.8G无线专网射频系统设计(10-06)