楊 晨,黎 斌,葛立明
(蘭州交通大學 機電工程學院,甘肅 蘭州 730070)
隨著高等教育的快速推進,高校擴招已成必然,學生食堂所承擔的人流量與日俱增,就餐高峰成為了考驗一個食堂就餐效率的重要時期。另外,隨著社會的發展和科技的進步,師生對就餐環境也提出了更高的要求,希望就餐環境安靜整潔,取餐不必一擁而上,取錯餐的情況不會發生等[1]。然而據調研表明,學生對于學校的餐飲服務覺得滿意的不多,其原因主要來自“食堂服務員叫喊式取菜”導致就餐環境嘈雜,學生取餐秩序混亂,容易產生取錯菜,心情焦躁的狀況。也正是這些原因,影響了食堂的就餐效率。
近幾年隨著“智慧校園”概念的提出,越來越多的人意識到了建設“智慧食堂”的重要性。隨著技術的發展,將嵌入式技術運用到學校餐廳的設計和應用中[2],打造新型智慧取餐系統,有效解決學生就餐環境擁堵和嘈雜的問題,提高學生就餐效率和用餐質量?;趩纹瑱C取餐系統的設計和應用具有重要價值和實際意義。
本文設計了一款基于STM32的高校智能取餐系統。該系統以STM32單片機為核心,采集和處理點餐數據,搭建前臺、后廚和顧客之間的無線通信網絡,使這三部分有機統一,從而有效提高后廚工作效率、學生就餐效率,有力改善就餐環境。
系統整體設計方案如圖1所示。本設計主要由前臺設備、后廚設備和用戶端組成[3]。
結合圖1可知,當客人點餐后,收款機將錄入的點餐信息通過串行通信電路發送到STM32F103單片機,而后對數據進行相應的處理,如數據檢索、識別等,之后將處理的信息通過串口發送至后廚上位機軟件[4]。軟件接收到數據后,即可在上位機控制界面上顯示顧客的點餐信息,如所點餐譜、點餐順序等,廚師根據軟件提示完成飯菜的制作。燒制完成后,即可將菜名在軟件上有選擇地發送至無線通信模塊。無線模塊對接收到的數據進行處理后,把“顧客的取餐信息”以無線通信的方式發送至移動終端,供顧客參考。

圖1 系統整體設計方案
該系統硬件由微處理器和各種通信電路組成。
STM32處理器是由意法半導體(ST)公司設計生產,基于Cortex-M3內核開發的新型單片機[5]。該內核是ARM公司設計的新一代內核,具有高性能、低成本、低功耗、調試容易等特點。因此采用STM32處理器作為本設計的控制處理器方案可行。
STM32F103RCT6屬于中低端32位ARM微控制器,是一種增強型閃存微處理器,其豐富的片上資源可以大大簡化系統硬件,降低設計成本。本設計中的微處理器均采用基于Cortex-M3的 STM32F103RCT6。
顧客在前臺點餐后,數據被點餐機錄入,并通過RS 232串口傳出。由于STM32處理器的串口為全雙工工作方式,因此可以把發送與接收獨立分開,由PA10引腳負責接收RS 232通過串行通信電路[6]傳來的數據,PA9引腳負責發送STM32單片機處理后的數據,可以只使用單片機的串口1完成對數據的接收、處理和再發送,從而大大減小了系統復雜度,以及I/O口資源的利用。RS 232-STM32串行通信電路如圖2所示。

圖2 RS 232-STM32串行通信電路
由于STM32F103RCT6的接口為I/O口,上位機的接口為USB接口,所以為了解決兩者之間的信息傳輸問題,引入基于CH340設計的USB接口電路[7]。CH340是一款USB總線轉接芯片,串口為全雙工通信方式,內置收發緩沖區,支持波特率50 bps~2 Mbps,并且與計算機端Windows操作系統下的串口應用程序完全兼容。USB接口電路設計如圖3所示。

圖3 USB接口電路
2.4.1 ATK-ESP8266 WiFi模塊
ATK-ESP8266是ALIENTEK生產的一款高性能UARTWiFi(串口-無線)模塊。ATK-ESP8266模塊與MCU(或者其他串口設備)采用串口(LVTTL)通信,模塊內置TCP/IP協議棧,兼容3.3 V和5 V單片機系統,能夠輕松實現串口和WiFi之間的轉換。若只與傳統串口設備相連,則只需簡單配置即可通過網絡傳輸自身數據。另外,模塊支持串口轉WiFi STA、串口轉AP和WiFi STA+WiFi AP三種模式,可快速構建數據傳輸方案,方便設備使用網絡傳輸數據[8]。
2.4.2 電路設計
ATK-ESP8266無線WiFi模塊采用串口實現與MCU之間的通信。通過ATK-ESP8266模塊,傳統的串口設備只需簡單的串口配置即可通過網絡(WiFi)傳輸自身數據。即STM32單片機通過串口與ATK-ESP8266通信時,只需對串口進行必要的配置即可實現STM32與外接設備(手機)之間的WiFi數據傳輸[9]。STM32-WiFi電路設計原理如圖4所示。

圖4 STM32-WiFi串行通信電路
系統軟件設計可分為前臺設備微控制器的程序設計、上位機軟件設計、后廚設備微控制器程序設計以及用戶端APP設計。
前臺設備微控制器的程序設計主要包括數據接收、數據處理和數據發送三部分,其程序流程如圖5所示。STM32單片機的串口1接收點餐機發來的顧客點餐信息。數據處理和發送部分負責將接收的數據進行循環檢索,翻譯檢測到的相關信息,并從串口1輸出。
設備開始運行后,當串口1檢測到有數據傳來時,會進入中斷接收模式,當檢測到幀尾[10](數據0xfe 0x4a),USART_RX_STA置1,說明接收完成,幀尾前的數據全部存入USART_Rx_BUF[i]數組。之后在主函數中,程序自動提取相關信息并輸出。
上位機軟件位于后廚PC機,基于Visual Basic6.0開發[11],其界面布置如圖6所示??刂平缑娴挠覀扔糜陲@示時間和設置相關參數,如串口、波特率等;左側的文本框用于顯示由前臺設備傳來的顧客點餐內容以及點餐號。后廚師傅在接收到信息后,以此為根據準備相關菜肴,完成制作后在左側文本框中選中完成的菜名,點擊“請選擇已完成的菜單”按鈕,將其移送到右側區域,這些為待發送給顧客手機APP的信息,如圖7所示。點擊“發送至APP”按鈕,即可完成對顧客取餐的提示。軟件操作流程簡單,可以幫助廚師高效快速地完成相關信息管理,從而提高就餐效率。

圖5 前臺微控制器的程序流程圖

圖6 上位機軟件接收前臺數據界面

圖7 上位機軟件發送數據界面圖
基于STM32的后廚微處理器系統的程序設計主要解決兩大內容。
(1)對后廚上位機發送來的數據進行解析和存儲,即將串口1接收到的數據進行處理;
(2)將經過處理的數據通過串口3發送到WiFi模組,進而通過對WiFi模組的配置,將數據通過無線方式發送到手機APP上顯示輸出。
在此程序設計中,對于WiFi模塊的驅動通過相應的AT指令進行端口配置,使相應的終端設備配置于同一局域網下,從而實現WiFi模塊對于數據的收發和共享功能。用AT指令對WiFi模塊進行配置[12],部分配置方式如下:
設置WiFi模式為STA模式:AT+CWMODE=1;
建立Server,設置端口號:AT+CIPSERVER=1,8080;
模塊向指定通道發送數據:AT+CIPSEND=id,size。
后廚微控制器程序設計流程如圖8所示。

圖8 后廚微控制器程序流程圖
移動終端的設計主要取決于數據傳輸方式以及數據類型。在經過實際調研分析后,移動終端采用Android系統進行相關設計[13],既符合當下的時代潮流,也能方便快捷地實現有序取餐等目的。手機在接收到從WiFi模塊發來的數據后,由APP對數據進行解析并處理,然后在手機APP界面上顯示,即顧客的取餐信息[14]。接收信息界面如圖9(a)所示。主要工作流程:啟動應用程序后,在APP界面選擇TCP Client模式,接著點擊“連接后廚”按鈕,完成相關參數的配置,APP參數配置界面如圖9(b)所示。其目的是讓手機和WiFi模塊在同一個局域網下,將手機作為客戶端去訪問WiFi網絡(服務器),接收從WiFi模塊傳輸的數據,而這也是多個終端設備實現共享網絡實時數據的關鍵。
系統主要從以下幾個方面檢測[15]:
(1)前臺到后廚設備數據傳輸是否正常;
(2)后廚到手機APP數據傳輸是否正常;
(3)后廚到手機APP數據傳輸實時性測試。
通過前臺點餐機輸入點餐信息,處理后發送到上位機軟件,作為待處理菜單。后廚做好餐品后,通過上位機軟件,系統處理后經WiFi發送到手機APP。實驗過程參考圖6、圖7、圖9。系統實驗結果見表1所列。

表1 實驗結果

圖9 APP示意圖
本文設計了一種新的基于STM32微處理器的高校智能取餐系統。所設計系統硬件部分主要由微處理器和各種通信電路組成。軟件部分主要分為前臺微控制器的程序設計、上位機控制界面的設計、后廚微控制器的程序設計和用戶端APP的設計。該系統結合嵌入式技術,建立了從點餐到取餐的一體式高校餐飲服務架構。經過對系統的整體測試,證明本系統運行穩定性良好,數據傳輸無誤,無遺漏。APP數據接收延時均在1 s內,實時性能良好,基本達到了預期的設計目標,可有效解決高校食堂點取餐效率低,食堂秩序混亂的問題,打造了一個功能完備的“智慧食堂”服務系統。