餐厅顾客服务终端
扫描二维码
随时随地手机看文章
引言
在高档酒店客人坐在圆形的餐桌旁,通过触摸面前的电脑屏幕选择食物,不久选中的食物便通过轨道输送到客人面前。这一自动点餐系统避免了人工服务造成的等待、服务态度等问题,同时提供了强大的娱乐功能。同样,该系统也适合于娱乐及办公场所,大家可以在各自的包间或办公室很方便地点餐。
系统功能
处理器是专门为满足当今嵌入式音频、视频和通信应用计算要求和低功耗条件设计的嵌入式处理器[1]。系统包含有一片Blackfin系列双核处理器ADSP-BF561[2],视频采集解码芯片ADV7183B,音频编解码芯片ADV1836A,SDRAM数据存储器,FLASH程序存储器,以太网芯片LAN91C111,LCD触摸屏,SD卡、UART接口,按键,指示灯等。
系统通过扩展了SD卡,移植了FAT文件系统,作为照片、视频、电子书等数据的存储。通过ADSP-BF561内部的SPI总线,从SD卡内部将数据读到SDRAM里,同样,SDRAM的数据也可以通过SPI总线写回到SD卡内部。
从SD卡读到SDRAM内部的菜品的图片,通过一些处理,转化成适合320×240彩色LCD显示的RGB-24Bit格式的图像数据,之后,通过并行外设接口(PPI)送给LCD控制器,进行菜品图片的显示。
系统扩展了LAN91C111芯片作为网络主控芯片。ADSP-BF561通过外部接口扩展总线(EBIU),与LAN91C111进行读写通讯。LAN91C111的网络输出经过网络变换器后,接到RJ-45接口上,实现了网络的硬件连接。LAN91C111芯片通过DMA方式和中断引脚,与ADSP-BF561进行数据的传输。软件方面,通过VDK实时内核上移植的LWIP,进行TCP/IP协议的开发。
视频数据(PAL制)通过同轴电缆接入到视频解码器ADV7183内部,经过采样,视频解码,输出ITU-656格式的图像数据。图像数据通过PPI,以8bit的数据宽度,SCLK/2的速度,DMA方式传输到SDRAM中。利用PPI的同步数据口与ADV7183的帧同步、场同步、行同步等信号进行相连,完成视频数据的同步。对ADV7183的上电配置是通过ADSP-BF561的通用编程接口(PF)实现I2C协议,完成数据格式、增益控制、曝光控制等配置。
从视频解码器ADV7183读到SDRAM的视频数据是ITU-656格式的(UYVY4:2:2格式)经过YUV到RGB的算法变换,转变成适合彩屏LCD显示的RGB24bit数据,通过PPI传输给LCD控制器,实现视频的采集和播放。
顾客的语音留言通过麦克风输入到音频编解码器AD1836中,经过音频A/D的采样、量化、解码后,通过DSP的Sport口传输到SDRAM中进行暂时的存储[3],之后,通过MDMA传输到SD卡中,进行顾客意见的语音保存。AD1836通过ADSP-BF561的串行外设接口(SPI)配置成44kHz的采样率、16bit的采样宽度。
SD卡中的音频数据(歌曲)通过SPI读取到SDRAM中,由ADSP-BF561解码后,通过串口(SPORT)以DMA方式,传输给AD1836音频编码器,再通过扬声器或者耳机输出,实现了歌曲的播放。
此外,系统扩展了NAND Flash作为大容量的数据存储,扩展了4×4键盘和指示灯,扩展了Flash作为程序固化,扩展了消防信息报警的接口。
系统功能如下:
浏览菜单:菜品图片通过SD卡,以BMP格式进行存储。当用户浏览菜单的时候,ADSP-BF561通过菜品的文件名,读取SD卡中对应的菜品的图片,显示在彩屏LCD上。顾客可以根据菜单进行选择菜品进行浏览,菜品也可以滚动的播放。
顾客点餐:顾客通过浏览菜单菜品的图片,选择自己满意的菜品,之后选择点餐按钮,即可以实现点餐功能。此外,顾客还可以通过网络进行点餐和预定菜品,实现点餐的智能化和灵活化。
娱乐功能:终端提供了强大的娱乐功能,包括:听音乐、阅读电子书、观看菜品制作过程视频等等。顾客在等餐的过程中,可以通过触摸屏选择这些娱乐功能,缓解等餐过程中焦急的心情,也达到了放心愉快用餐的目的。
语音留言和播放:顾客在用餐结束后,对餐厅的反馈意见可以通过语音的形式,由麦克风输送给音频解码芯片AD1836,经过音频A/D采样、量化、解码后,存储在SDRAM中,之后通过存储在NAND Flash中,实现用户意见的保存。餐厅经营者可以通过菜单把用户的语音留言播放出来,根据用户的意见。
网络功能:系统扩展了LAN91C111作为网络主控芯片。在软件上,在VDK内核的基础上移植了LWIP作为网络主要结构,实现了TCP/IP在ADSP-BF561上的移植[4],完成了C-S(客户端-服务器)模型下的网络Socket的建立、连接、传输、断开等功能。并且,在标准的TCP/IP的基础上,开发了应用层协议,实现了点餐终端与上位机电脑直接的数据的传输。
软件设计
ADSP-BF561上实现的软件通过采用VDK创建线程,线程之间通过信号量(semaphore)和消息(message)来传递信息和完成线程的同步。利用硬件标志(device flag)来完成外设和DSP的同步。利用中断和中断嵌套来处理DMA以及突发事件。通过对每个应用程序创建一个线程,用线程的优先级和消息进行互相的调度和管理,并且,编写ADV7183,AD1836及LAN91C111等设备的驱动,用优先级管理中断服务程序,调用VDK的API函数。双核软件结构示于图2。
程序采用了菜单结构,上电初始化后显示主菜单,通过用户的对触摸屏的点击,开始显示二级子菜单,然后用户可以返回上级菜单和跳转到下级子菜单。程序最多有5级菜单,为用户提供了一个良好的人机交互的界面。主程序流程示于图3。
在网络传输点餐信息方面,DSP端程序主要是在VDK内核上通过LWIP移植了TCP/IP协议簇。VDK作为一个同Visual DSP++一起发售的内核,很好地集成到了 VisualDSP++中。在VDK的基础上,通过开发Socket服务器程序,实现了点餐信息的网络传输及网络点餐的功能。
程序的加载是指把程序固化在FLASH中,在上电后,程序能脱离开仿真器独立的加载和运行,这一步是任何一个产品开发过程中必须做到的工作。ADSP-BF561的加载过程非常的复杂,主要分为:1、简单程序的加载;2、单核程序的加载;3、双核程序的加载;4、复杂的程序(双核,程序运行在外存中)加载。VDK内核下的LWIP程序,以及音视频的采集、编解码等等,巨大的程序量使程序必须在外存中运行,而且必须采用双核处理器来增加处理性能,本设计的程序加载属于最复杂的第4类加载。在程序的加载过程中,我们从简单的程序开始反复的试验,逐步的了解ADSP-BF561的加载过程,通过阅读大量的资料,与ADI的国内和国外的技术支持进行了联系,最终解决了这个难题。