一种嵌入式智能送餐终端的设计
都文和,徐伟,杨婧翾,王婷
(齐齐哈尔大学 通信与电子工程学院,黑龙江 齐齐哈尔 161006)
摘要:针对目前第三方送餐公司常出现的送餐慢、送错餐等问题,设计了一款智能送餐终端。终端由送餐员携带,搭载Linux操作系统,使用自行设计的引导程序启动终端,并以QT技术为核心实现了地图显示、地理导航和3G网络数据传输等功能。研究结果表明:该终端能实时接收送餐命令,自动上报送餐员位置信息,协助公司制定合理的送餐路线,可提高送餐员的送餐效率约30%。
关键词:送餐;智能终端;通信;导航
基金项目:国家自然科学基金项目(10374027,60432047);黑龙江省教育厅基金项目(12521603)
作者简介:都文和(1970-),男,黑龙江齐齐哈尔人,副教授,博士,研究方向为嵌入式系统、卫星激光通信等.
收稿日期:2014-07-30
文章编号:1672-6871(2015)01-0058-04
中图分类号:TP368.1
文献标志码:A
0引言
随着人们生活质量的提高和生活节奏的加快,通过叫外卖方式解决用餐问题,已经越来越普遍。巨大的外卖市场吸引许多第三方送餐公司涌入,送餐公司的送餐服务符合现代社会生活的快节奏,极大方便了人们的生活和工作,但送餐慢、送错餐的情况时有发生。而在送餐公司的信息化建设上,对订餐系统的研究相对较多,提供给送餐员的移动终端的设计开发却极少[1]。
为推动送餐服务的信息化发展,解决送餐服务中送餐慢、送错餐等问题,本文设计开发了一种嵌入式智能送餐终端,终端包含全球定位系统(GPS)定位模块、3G无线传输模块,由送餐员携带,可充电重复使用,同时实现送餐员送餐状态和位置信息的上报,方便公司合理进行送餐调度。该终端成本低、方便携带,有效地提高了送餐员送餐效率,具备较高的实用价值。
1系统总体设计
系统由主控制模块、液晶显示模块、GPS定位模块和3G无线传输模块构成,系统总体结构如图1所示。主控制模块以ARM9处理器为核心,包含电源、接口电路、存储单元,用以实现供电、数据传输和存储等功能。液晶显示模块由液晶显示器(LCD)的液晶触摸屏实现,能够显示处理完的数据和当前操作界面,送餐员可直接通过触摸屏进行操作。GPS定位模块获取送餐员位置数据,通过串口发送给处理器进一步处理,3G传输模块利用3G网络实现送餐员与公司的双向数据通信。
图1 系统总体结构示意图
2系统硬件设计
系统处理器芯片采用三星公司的S3C2440芯片。由于送餐终端为送餐员配备,终端应有较长的待机时间,应能充电重复使用。所以采用体积小、能量密度高的5 V锂离子电池供电,同时利用凌特公司LTC3555芯片解决电源充电问题。LTC3555有通用串行总线(USB)电源控制器和电池充电模块,当USB电源有输入电压时,电源充电模块启动,USB总线对电池充电。LTC3555芯片三路输出电压分别为S3C2440存储单元、输入/输出端口(I/O)、内核供电。
存储单元设计中,系统内存使用两片16位数据带宽的SDRAM器件K4S561632N,将其扩展为32位数据带宽来提高访问速度。NANDFlash选用64 MB的K9F1208芯片,K9F1208擦除和写效率高,用来存储内核和文件系统。接口电路包含JTAG接口、串口和USB接口,串口实现主控制模块对GPS定位模块的数据获取。
LCD液晶触摸屏采用4.3英寸(10.922 cm)LCD液晶屏AT043TN24,其接口电路设计如图2所示。处理器芯片S3C2440控制时钟信号引脚VCLK,使LCD控制器的数据在VCLK的上升沿处送出,在VCLK的下降沿被LCD驱动器采样。
图2 LCD接口电路设计
系统GPS定位模块选用Gstar公司的GS-91卫星定位接收模块,该模块的卫星接收芯片灵敏度较高,可以同时追踪20个卫星信道[2]。GS-91模块输出TTL电平,通过MAX232芯片实现电平转换,与主控制模块串口连接。3G是支持高速数据传输的第三代移动通信技术,终端的3G无线传输模块选用支持联通WCDMA的EM770W无线模块,模块有1路高速USB接口与主控制模块连接[3]。
3系统软件设计
系统选用Linux操作系统,其软件整体设计包括:引导程序Bootloader的设计,Linux内核移植,应用程序的编写。Linux系统内核采用Linux2.6.22.6,该版本使用了新的调度器,进程切换更高效,GUI应用程序采用奇趣公司的QTE图形用户界面库开发设计,QTE是该公司针对嵌入式环境推出的产品[4-5]。
当前流行的嵌入式Linux系统引导程序有U-boot、VIVI等,这些引导程序移植简单方便,但由于面对大部分硬件,代码量较大,占用系统存储空间大。针对S3C2440芯片和Linux操作系统,本文自行设计Bootloader。Bootloader启动内核首先需把内核从NAND FLASH读到SDRAM,然后跳转执行函数启动内核,其设计步骤如下:
(1)关看门狗,初始化硬件。
(2)把内核从Nandflash拷贝至SDRAM。
(3)跳转执行内核初始化代码。
(4)测试Bootloader并进行改进。
使用Bootloader启动内核,启动时间约为8 s,效率较低。通过提高时钟频率和启动指令CACHE修改Bootloader,使启动内核时间减小为2 s。
应用程序开发分为两部分:GPS导航程序设计和信息交互程序设计。
3.2.1GPS导航程序设计
首先,获取送餐员位置数据。GPS模块接收送餐员位置数据,通过串口传送给主控制模块。程序不采用调用内核函数读取串口数据的方法,而是直接使用第三方QT串口类QextserialPort实现对串口的操作,简单方便。GPS数据中GPGGA存储经纬度信息,程序先定义QextserialPort类对象mygps,通过调用其成员函数readall函数,将GPGGA语句读入QByteArray字符数组,处理后获取经纬度数据[6]。
然后,绘制显示导航地图,实现导航功能。为避免地图版权问题,结合送餐终端的市场前景,本文选择Mapinfo自行绘制地图,地图显示齐齐哈尔劳动湖区域,绘图完成后导出MIF格式电子地图。程序使用开源的动态库Mitab读取地图要素,并自定义Map_Point、Map_Line、Map_Region这3个类,分别用来存储点、线、面地图要素[7];然后将串口读取的经纬度转换成场景坐标;最后将各地图要素加载到场景类QGraphicsScene,利用提供视图部件的QGraphicsView类可视化场景。地图显示程序流程图如图3所示[8]。
图3 地图显示程序流程图
终端导航相关功能有:地图放大、地图缩小、地理查询、最优路径搜索、定位模式、导航模式6大功能,程序为每一个功能设置一个槽函数。用户选择导航模式时,程序利用QT提供的QTime类每隔5 s更新当前位置。最优路径搜索采用A*算法,公式表示为:f(i)=g(i)+h(i),f(i)是从起点经由节点i到终点的估价函数;g(i)是从起点到i节点的移动成本;h(i)是从i节点到终点最佳路径的预估移动成本。A*算法设计模型如图4所示,以齐齐哈尔大学三致广场到女生宿舍楼为模型,程序执行步骤如下:(1)从人文楼开始给地点节点标记1到15,从10号节点三致广场开始,把它作为待处理点存入开启列表;(2)寻找10号节点周围所有节点,加入开启列表,计算f(i)、g(i)、h(i)(方格下的数字),为计算方便,方格斜线取边的1.4倍;(3)寻找f(i)最小的7号节点轮滑场跳转;(4)重复执行上述步骤直到当前节点就是终点停止寻找。
3.2.2信息交互程序设计
图4 A *算法设计模型
信息交互程序要通过3G网络实现送餐员位置信息的上报和送餐公司调度命令的接收等功能。首先进行PPP拨号上网,配置编译PPP拨号工具,将生成的可执行文件pppd等放入fs_xu/bin/目录,最后编写拨号脚本拨号上网,成功后会获得IP地址。
TCP/IP协议是最为广泛使用的网络通信协议之一,TCP、UDP都是其传输层协议[9]。程序采用TCP协议,使用客户机/服务器模型,送餐终端作为客户端,送餐公司作服务器端,两部分进行信息交互。Linux系统提供socket接口进行套接字编程,但是代码量大,接收的数据不能直接显示到界面,本文使用QT库提供的QTcpServer类和QTcpSocket类来实现终端和送餐公司之间数据传输。QTcpSocket类是QAbstractSocket类非常方便的一个子类,通过创建一个TCP连接,来连接服务器,读取公司发送的送餐命令。QTcpServer类继承自QObject类,用来接收到来的TCP连接[10]。
图5 信息交互程序设计流程图
信息交互程序流程图如图5所示。图5中connectServer函数连接服务器之后,readRead函数检测送餐命令数据是否到达,数据到达后判断有效性,并触发槽函数readMessage读取数据,最后显示屏显示读取的数据。
4系统功能测试
选择齐齐哈尔劳动湖区域进行终端GPS导航功能测试。测试地图界面有地理查询、路径搜索、定位模式等功能选项,送餐员可根据需要选择或退出界面。
为测试该终端对送餐员实际送餐效率的影响,本文通过齐齐哈尔第三方送餐公司点(易达送餐平台)进行测试。综合考虑交通、天气等因素,测试分两个小组,参与测试的送餐员固定为送餐员A,第1组送餐员在第1周正常送餐,第2组送餐员在第2周送餐时携带智能送餐终端。测试地点选取订单量较大的仕林小区、附属二院、浏园小区3个地点。测试数据见表1。表1中的测试结果表明:3个地点的送餐效率都得到较大提高,分别提高27%、32%、30%。而且,送餐员对终端的路径导航和人员报到等功能较为认可,终端的应用前景得到肯定。
表1 送餐时间统计 min
5结束语
本文设计的智能送餐终端以ARM9处理器为核心,使用LTC3555芯片实现电源管理,利用GPS定位模块为送餐员提供GPS导航,通过3G无线传输模块实现了送餐公司和送餐员信息实时交互。本文设计和改进了操作系统的引导程序,自行绘制了导航地图,提高了终端的市场前景。该智能送餐终端在送餐服务中提高了送餐效率和送餐的准确性,有较好的发展前景,对送餐业的信息化发展有较大的推动作用。
参考文献:
[1]杨玲蕴.基于情境法的外卖送餐应用系统设计与研究[D].上海:上海交通大学,2013.
[2]张祥军,黄虎,田鑫,等.GPS无线定位终端硬件的实现[J].电子制作,2013(17):68.
[3]程振宇,张灿,和智涛,等.基于3G网络视频传输的一种QoS控制方法[J].中国科学院大学学报,2014,31(1):117-123.
[4]姚凯旋.基于ARM的智能家居系统的研究与设计[D].太原:太原理工大学,2012.
[5]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2008:294.
[6]郭玲娟.GPS/GPRS技术在武警作战指挥辅助决策系统中的应用研究[D].西安:西安电子科技大学,2010.
[7]夏玉杰,翟艳磊.基于Mitab库的嵌入式GIS地图导航设计与实现[J].计算机工程与设计,2011,32(4):1303-1306.
[8]霍亚飞.Qt Creator快速入门[M].北京:北京航空航天大学出版社,2012:244.
[9]焦双伟.基于TCP/IP网络的智能家居控制系统的研究与实现[D].南昌:南昌航空大学,2012.
[10]Blanchete J,Summerfield M.C++GUI Programming with Qt4[M].Englewood Cliffs:Prentice Hall,2006.