楊 京,焦 亭,楊雅婷,樊冰芬,平家樂,廉宇凱
(山西大學(xué)自動化系,山西 太原 030006)
隨著人民日益增長的美好生活需要的提高,社區(qū)服務(wù)業(yè)正處于蓬勃發(fā)展階段。為老百姓衣食住行提供服務(wù)的零售行業(yè),現(xiàn)在正面臨著巨大的挑戰(zhàn),一方面要為社區(qū)顧客提供滿意的服務(wù),另一方面又要面對龐大的客流。無人超市作為一種新型的購物模式逐漸走進人們的生活,其目的正是為了解決零售行業(yè)目前所面臨的問題,而要真正實現(xiàn)無人化,就需要結(jié)算裝置能自動識別目標商品。
電子秤因其便捷、精準的特點,已經(jīng)成功取代了傳統(tǒng)的機械秤,并且在零售行業(yè)得到了廣泛的使用。在原有電子秤的基礎(chǔ)上加上微控制器以及顯示器,就構(gòu)成了目前常見的具有結(jié)算功能的電子秤,而這種電子秤的缺點就在于其需要人工輸入代碼,才能調(diào)用數(shù)據(jù),并且花費顧客大量的時間去等待;同時因為裝置的專業(yè)性,員工需要事先培訓(xùn),才能正確使用。電子秤僅實現(xiàn)了結(jié)算的半自動化,并沒有解決無人超市的根本問題。
因此,亟待開發(fā)具有自動識別功能的超市蔬果稱重裝置。本科研項目在傳統(tǒng)電子秤的基礎(chǔ)上,加入自動識別模塊,利用攝像頭采集蔬果信息,通過算法,得出結(jié)果,實現(xiàn)蔬果自動識別的功能,并在此基礎(chǔ)上提高電子秤的可操作性。簡單的操作模塊,顧客只需按照提示進行操作,即可完成結(jié)算。這樣既節(jié)省了顧客的寶貴時間,也為商家減少了人力的投入,真正實現(xiàn)了超市無人化。
該系統(tǒng)由軟件和硬件兩部分組成。
硬件包括核心控制器STM32F103ZET6 單片機、OV5640 攝像頭、液晶顯示屏、壓力傳感器及其HX711AD 轉(zhuǎn)換模塊等。第76 頁圖1 為電路原理圖。攝像頭圖像采集模塊實時采集當前待稱重的蔬果圖像信息,并將該信息傳給STM32 單片機;運行于STM32 單片機上的AI 圖像識別程序通過分析蔬果圖像信息以識別當前待稱重蔬果的種類(該步驟為本項目實施的重點內(nèi)容);然后稱重模塊將重量數(shù)據(jù)傳給STM32 單片機,STM32 單片機再根據(jù)蔬果的種類與重量,計算出當前待稱重蔬果的價格,在顯示模塊進行顯示,并通過打印模塊打印出相應(yīng)的價格標簽。軟件部分依據(jù)上述自動識別系統(tǒng)編寫。
單片機作為本科研項目的核心部件,選用STM32F 系列產(chǎn)品,屬于中低端的32 位ARM 微控制器,為高性能、低成本、低功耗的嵌入式應(yīng)用專門設(shè)計,十分適合智能系統(tǒng)的研發(fā)。其內(nèi)核為ARM32 位Cortex-M3 CPU,最高72 MHz 工作頻率,具有高可靠計算速度,為實現(xiàn)自動識別算法提供了可靠的硬件基礎(chǔ)。STM32F103ZET6 單片機采用144引腳的設(shè)計,其中GPIO 口多達112 個,提供多輸入多輸出端口,方便數(shù)個模塊同時接入。除了模擬輸入,所有端口都可以被映射到16 個外部中斷向量, 并且允許5 V 以內(nèi)的端口輸入電壓。STM32F103ZET6 單片機具有豐富的通信接口:USART 接口(攝像頭圖像采集模塊使用)、IIC 接口(稱重模塊使用)、SPI 接口(顯示模塊與網(wǎng)絡(luò)連接模塊使用) 以及其他接口等[1]。
圖1 電路原理圖
攝像頭圖像采集模塊是單片機的眼睛,必須保證其采集圖像的清晰度,同時也要滿足低功耗、體積小、便于連接等特點。OV5640 是一款CMOS 類型數(shù)字圖像傳感器,它具有體積小,工作電壓低等特點,最大像素也可達到30萬(640×480 分辨率),適合作為本項目的圖像采集模塊。輸出圖像數(shù)據(jù)采用VGA 時序,支持YUV(422/420)、YCbCr422 以及RGB565 數(shù)據(jù)格式,可以進行伽馬曲線、白平衡、飽和度、色度等基礎(chǔ)處理,補償所采集的圖像,為自動識別算法提供了辨識度高的圖像,提高了結(jié)果的準確度[2]。
圖2 為OV5640 圖像傳感器與單片機引腳連接示意圖,其中共有8 條并行數(shù)據(jù)線,分別接單片機的PB8~PB15;VDD 接3V3;GND 接地;其余為控制信號線,其中SIO_C 為SCCB 接口的控制時鐘線;SIO_D 為SCCB 接口的串行數(shù)據(jù)輸入端;VSYN為幀同步信號(輸出信號) 端;HREF 為行同步信號(輸出信號) 端;PCLK 為像素時鐘(輸出信號)端;XCLCK 為時鐘信號(輸入信號) 端;RRST 為讀指針復(fù)位信號端;WRST 為寫指針復(fù)位信號端;OE 為輸出數(shù)據(jù)使能端;WEN 與HREF 共同控制FIFO 的WE 引腳,當WEN 與HREF 同時為高電平時,WE 為低電平,OV5640 可向FIFO 寫入數(shù)據(jù)。
圖2 攝像頭圖像采集模塊接口圖
稱重模塊采用HX711 AD,該模塊將壓力傳感器檢測到的重量轉(zhuǎn)換成數(shù)字信號傳輸給單片機,保留了傳統(tǒng)電子秤的精確度。HX711 AD 模塊為24 位高精度模塊,帶有放大器功能,IO 口時序簡單,類似于I2C 接口,方便使用,故采用此模塊來替代放大器,并進行數(shù)模轉(zhuǎn)換[3]。
壓力傳感器與HX711AD 共有4 根信號線連接,用來采集傳感器應(yīng)壓片的差壓信號,經(jīng)模數(shù)轉(zhuǎn)化,傳遞至單片機。單片機與HX711AD 連接,其中VCC 用來供5 V 電壓,GND 接地,DT 為串口數(shù)據(jù)輸出線,SCK 為串口時鐘輸入。其連接見圖3。
圖3 稱重模塊接口圖
顯示模塊作為信息輸出的終端,將自動識別算法和最終要顯示的信息通過可觀的形式,顯示在屏幕上,方便用戶獲取結(jié)果。ILI9341 是一種薄膜晶體管(Thin Film Transistor,TFT) 液晶顯示器,具有26萬色的240RGB×320 像素顯示解決方案。ILI9341 支持并行8/9/16/18 位數(shù)據(jù)總線MCU 接口,6/16/18 位數(shù)據(jù)總線RGB 接口和3/4 線串行外圍接口(SPI)。窗口地址功能內(nèi)部GRAM 可以制定移動圖像區(qū)域。選擇性更新指定的窗口區(qū)域,這樣可將所選的靜止區(qū)域和移動區(qū)域同時顯示。在設(shè)計重量顯示程序時,只需要將商品的重量信息設(shè)為移動區(qū)域,其余為靜止區(qū)域,減少屏幕的刷新頻率,大大降低系統(tǒng)消耗功率[4-6]。
ILI9341 與單片機連接見第77 頁圖4。其中DB0~DB15 為并行數(shù)據(jù)輸入/輸出端;有5 條GND地線;VCI 接3V3 電源;IOVCC 為數(shù)字電路電源(1.65 ~3.3 V);CS_MAIN 接LCD_CS,為 片 選 端(低有效);RS 接LCD_RS,為命令/數(shù)據(jù)輸入端(0:命令,1:數(shù)據(jù));WR 接LCD_WR,可以向LCD 寫入數(shù)據(jù)控制端;RD 接LCD_RD,可以從LCD 讀出數(shù)據(jù)控制端;LCD_RESET 接LCDRESET為復(fù)位管腳(低有效);其中3 個NC 口懸空,不接線。同時該屏幕有觸摸控屏功能,因為本項目沒有用到,所以不在此贅述。
圖4 顯示模塊連接圖
網(wǎng)絡(luò)模塊是自動識別算法實現(xiàn)的核心,將采集的圖像信息上傳至百度云智能識別平臺,通過AI算法,得到一系列結(jié)果并下傳至單片機,單片機便可做后續(xù)處理。W5500 是一種簡單易用的硬件化以太網(wǎng)接入方案,可以使單片機實現(xiàn)與互聯(lián)網(wǎng)的連接。硬件協(xié)議棧的方式可以建立快速高效的連接,簡化產(chǎn)品開發(fā)方案,降低編程的工作量。它代替了以往的單片機來處理這些中斷請求,單片機只負責向用戶的應(yīng)用層數(shù)據(jù),其他層全部由外圍WIZnet芯片完成。這種工作方式做了幾乎所有的TCP/IP協(xié)議工作,大大減少了單片機的中斷次數(shù),使單片機可專注于其他工作。而且硬件化的電路處理協(xié)議會更加快速、穩(wěn)定。對于有限的內(nèi)存來說,這套方案的代碼量僅有10 KB 左右,主要是完成對Socket的編程以及寄存器的調(diào)用,遠小于軟件協(xié)議方案。同時硬件化的邏輯門電路彌補了網(wǎng)絡(luò)協(xié)議安全性不足的短板,網(wǎng)絡(luò)攻擊和病毒對它無效,免受安全問題的困擾。
用戶將商品放置在壓力傳感器上,同時傳感器將商品重量通過HX711 數(shù)模轉(zhuǎn)換并發(fā)送至單片機;攝像頭采集模塊自主采集商品圖像并將商品圖片信息發(fā)送至單片機。單片機通過W5500 連接互聯(lián)網(wǎng),并與百度AI 智能識別平臺實現(xiàn)互聯(lián)。用戶在按下“結(jié)算”按鍵后,單片機將圖像信息上傳到百度AI智能識別平臺,經(jīng)過云計算,得到商品信息,由于得到結(jié)果是該圖像的一系列識別結(jié)果及其置信度,單片機自動選取置信度最高的結(jié)果作為所得商品信息,調(diào)用事先錄入的商品單價,通過函數(shù)計算得到最終的結(jié)果,即商品品名、單價和總價(見第78 頁圖5)。
如果用戶發(fā)現(xiàn)所識別商品信息與實際不符,可以選擇重新識別。用戶需要按下“重新識別”按鍵,液晶屏顯示“請調(diào)整商品角度并進行重新識別”,待重新調(diào)整結(jié)束,用戶繼續(xù)結(jié)算,系統(tǒng)便可重新識別產(chǎn)品。
若攝像頭、傳感器、網(wǎng)線未插好,液晶屏?xí)@示“設(shè)備未準備好,請先檢查設(shè)備”。待用戶重新接線后,系統(tǒng)自動重啟并初始化,重新檢測接線狀態(tài),若接線信號無誤,便可正常運行。
圖5 程序流程圖
本項目最核心的技術(shù)是運用物聯(lián)網(wǎng),將單片機與互聯(lián)網(wǎng)連接,實現(xiàn)自主識別功能。這是未來自動化技術(shù)發(fā)展的大趨勢,同時百度云智能識別平臺已具備成熟的技術(shù),可以供開發(fā)者調(diào)用,又能大大降低編程的難度,是極好的實施方案。
在調(diào)試中,發(fā)現(xiàn)在沒有連接攝像頭和壓力傳感器時,LCD 液晶屏?xí)霈F(xiàn)白屏的情況,這是因為程序在沒有傳感器信號傳回時,程序不能自主跳到下一步。所以在原有程序的基礎(chǔ)上添加了檢測程序,當單片機檢測到?jīng)]有信號后,會提示用戶“設(shè)備未準備就緒”,提醒用戶檢查接線是否正確,待用戶重新接線后,便可繼續(xù)使用。
考慮到在特殊情況時沒有網(wǎng)絡(luò),自動識別系統(tǒng)將無法使用,為了使電子秤繼續(xù)使用,可以選擇將其調(diào)至傳統(tǒng)工作模式,即需要人工輸入商品信息該稱重裝置才能正常使用。所以添加傳統(tǒng)超市電子秤子程序,顯示并打印商品的信息,保證了商戶的正常運作。
該稱重裝置結(jié)構(gòu)合理,既實現(xiàn)了自動識別功能,同時也兼容了傳統(tǒng)電子秤的性能,方便用戶使用,以實現(xiàn)無人超市為目標,體現(xiàn)了較強的過渡性,充分考慮目前市場需求,具有良好的應(yīng)用前景和市場推廣價值。
在接下來的研究中,考慮構(gòu)建自己的圖像識別系統(tǒng),以便在離線的情況下也可以具有自動識別功能,進一步改善系統(tǒng)性能。