摘 要: 隨著目前生活水平的日益提高,餐飲行業的傳統服務方式和管理模式已不能滿足人們的需求,針對這種現狀,設計了一種基于嵌入式操作系統和無線通信技術的雙觸摸屏無線自助點餐系統。系統以ARM Cortex-M3核的STM32F103VB微控制器結合?滋C/OS-Ⅲ操作系統,由STR-18無線數傳模塊構建組網,具有位于兩側的方便就餐者點餐的雙觸摸屏,上位機由Visual Studio工具開發,上下位機無線通信方便了顧客的菜單傳送到上位機和修改菜單,如此減少了服務人員、節約成本、提高了運作效率。
關鍵詞: ARM Cortex-M3;STM32F103;C/OSⅢ;雙觸摸屏;無線點餐;
人們生活水平的提高推動著餐飲行業的發展,但是很多企業依舊依靠傳統的人工服務、核算和查詢,對服務員的要求高;單據多、信息量大、出錯率高,服務員等候客人點菜耗時多[1],降低了效率。而已有的點餐器采用的是ARM9或ZigBee,成本都太高,而WiFi可靠性不強[2-3]。對此本文提出了雙觸摸屏、無人服務的無線智能點餐系統,通過降低硬件加強軟件來減少成本。系統以STM32為硬件基礎結合?滋C/OS-Ⅲ嵌入式實時操作系統[4-5],利用STR-18模塊構成組網[6]與PC(以Visual Studio作為開發工具[7]開發的前臺軟件)進行無線數據交換[8],實現無線點餐。該無線點餐系統融合了無線通信技術、計算機網絡和數據庫技術,數據無線實時傳輸、實時處理等。系統硬件配置價格低,減少了人員需求,從而降低了成本,并且提高了工作效率和服務質量,優化了業務流程。
1 系統總體架構
系統主要由一臺PC主機和多個從機(點餐終端系統)組成,以一個從機為例,其系統框圖如圖1所示。從機上連接2個顯示菜單信息的TFTLCD觸摸屏,當在一個屏上點菜時,另一個屏上會實時顯示點菜的信息。屏上有呼叫人工服務按鈕,便于文明呼叫人工服務。當點菜完畢,選擇“完成”即可將菜單發送到主機上。主機上有由Visual C#編寫的上位機軟件,主機和從機通過無線數傳模塊進行數據傳輸,主機連接打印機將菜單信息打印出來,用于廚師做菜和結賬。當餐廳需要修改菜單時,通過主機將新菜單通過串口發送給從機進行修改。
2 下位機設計
2.1 硬件設計
下位機主控芯片選用STM32f103VBT6,它是意法半導體公司增強型的32位微控制器,采用先進的ARM Cortex-M3內核,擁有72 MHz的時鐘頻率、128 KB的Flash、20 KB的SRAM;有2個SPI總線接口、2個IIC接口、3個USART、1個USB、1個CAN總線以及2個12 bit的ADC轉換,80個通用的I/O端口。本設計主芯片上主要連接2個TFTLCD、EEPROM24C02(用于存儲觸摸屏的校準值)、LED指示燈和JTAG下載口、串口1(PA9、PA10)用于連接到STR-18無線模塊與上位機通信。
TFTLCD采用自帶XPT2046控制芯片的四線電阻式觸摸屏。XPT2046是一款四導線制觸摸屏控制器,內含12位分辨率125 kHz轉換速率逐步逼近型A/D轉換器;支持從1.5 V~5.25 V的低電壓I/O接口,能通過執行2次A/D轉換查出被按的屏幕位置。觸摸屏共有34個管腳,引腳分布如圖2所示,BD1~DB16為數據位,RST、CS、RS、WR、RD實現復位、片選、指令數據切換、讀寫等控制功能,MISO、MOSI、CLK、T_PEN、T_CS用于觸摸屏控制。
兩個LCD觸摸屏分別與STM32f103VBT6連接。兩屏16位的數據位分別與STM32f103VBT6的PD口、PE口相連,其中一個TFT屏的連線如圖2所示,另一屏的MISO、MOSI、CLK、T_PEN、T_CS依次對應PB0、PB1、PC4、PC5、PB11,BL、CS、RS、WR、RD依次與STM32F103VBT6的PB10、PB6、PB7、PB8和PB9相連。
2.2 無線數傳模塊在本系統中的實現
主機和從機通信采用STR-18微功率無線數傳模塊,它具有功率小、ISM頻段工作頻率無需申請頻點、抗干擾能力強、誤碼率低、通信協議完善、數據實時同步和傳輸距離遠等優點,支持1 200 b/s、2 400 b/s、4 800 b/s、9 600 b/s等接口波特率。
在本系統中,使用了2塊STR-18無線數傳模塊,一塊通過USB轉串口模塊與上位機連接(TXD、TXD、GND和VCC 4個引腳一一對應即可);另一塊與下位機相連時,除VCC和GND是直接連接以外,TXD和TXD交叉相連。并把設置波特率的焊盤跳線J4~J2接成011態(即9 600 b/s),J1的E=1(即插上斷路器)傳輸不帶奇偶校驗的8位數據位。
STR-18無線串口通信有點對點、點對多點和多點對多點三種方式,本設計采用點對多點無線串口通信,如圖3所示。
2.3 μC/OS-Ⅲ操作系統在本系統中的應用
μC/OS-Ⅲ是一個結構簡單、功能完備和實時性很強的嵌入式操作系統內核[5],適合于如STM32F103VBT6這種沒有MMU的CPU。下位機的點菜界面如圖4所示[9],左邊是菜單,分頁顯示,顧客選擇一道菜時,通過μC/OS-Ⅲ發送信號量,此時等待該信號量的任務首先完成在本屏上使該道菜變為藍底白字且顯示在右邊,并使另一觸摸屏完成相同的任務[10],使之顯示相同的信息。當選擇“上一頁”之類非菜單的選項時不會發送該信號量。當“完成點餐”時會彈出“點餐完成”窗口,并等待PC掃描信號后將顧客菜單發送到PC,打印給廚師。
3 系統軟件設計
主機的上位機軟件由Visual C#編寫,系統軟件流程圖如圖5所示。首先從機上電完成初始化,如果要更改菜單,則由上位機通過無線數傳模塊發送給所有從機,從機遇到串口接收中斷,則更新菜單顯示;如從機在完成初始化后直接點菜,有顧客在一個觸摸屏菜單上點菜,則兩觸摸屏間進行通信,更新兩屏上已點菜品的顯示。點菜完成后,將菜品通過無線數傳模塊發送給主機顯示并打印菜單。本設計由于從機較多且用到的是串口通信方式,為防止多個從機有可能在同一時刻發送菜單給主機,采用先給從機編碼,主機循環發送從機地址,當從機已經準備好并接收到是本機的地址時,才發送菜單給主機。
上位機界面如圖6所示,有選擇端口和幫助等功能,鼠標點到某個桌號上,會顯示此桌最近時間的點餐信息。本文主要采用serialPort控件來接收下位機的數據,其配置應與下位機串口配置保持一致,即BaudRate=9 600;Databits=8;Stopbits=1;Parity為NONE,并選擇對應的COM口,先定義全局變量public string indata="";主要代碼如下:
private void serialPort1_DataReceived_1 (object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{indata="";indata=this.serialPort1.ReadExisting(); }
本文設計的雙觸摸屏的無線自助點餐系統,相比于之前的點餐器,既方便快捷智能,又減少了服務員,節約了成本。
參考文獻
[1] 陳曉峰,林正浩.基于Android的無線點餐系統設計[J].上海師范大學學報(自然科學版),2012,41(4):369-373.
[2] 李泉溪,吳碩.ZigBee無線點餐系統研究[J].河南科技大學學報(自然科學版),2011,32(5):28-32.
[3] 楊保亮,王慶閣.觸摸式無線點餐終端系統的設計[J].重慶文理學院學報(自然科學版),2012,31(1):76-79.
[4] 李正民,姬曉陽,陳京育.嵌入式實時操作系統在測控系統中的應用研究[J].計算機與現代化,2010(6):153-155.
[5] 黨宏社,姚勇,張新院.一種用于觸摸屏的多級菜單界面實現方法[J].計算機應用與軟件,2013,301(10):159-161.
[6] 邱紅兵,邱曉燕.基于WinCE的點餐系統設計[J].數字技術與應用,2011(8):127-130.
[7] 孫凱明,石磊,甄海濤,等.基于Cortex-M3處理器和CC2430的無線網關設計[J].自動化技術與應用,2011,30(8):34-35.
[8] 丁順鶯.RFlD觸控屏幕點餐系統[J].計算機時代,2013(3):21-22,25.
[9] 宋亮,苗瓊.嵌入式實時操作系統μC/OS-II串口通信的設計與實現[J].電子設計工程,2011,19(1):42-45.
[10] LABROSSE J.嵌入式實時操作系統μC/OS-Ⅲ[M].宮輝,曾鳴,龔光華,等,譯.北京:北京航空航天大學出版社,2012.