楊 京,焦 亭,楊雅婷,樊冰芬,平家樂,廉宇凱
(山西大學自動化系,山西 太原 030006)
隨著人民日益增長的美好生活需要的提高,社區服務業正處于蓬勃發展階段。為老百姓衣食住行提供服務的零售行業,現在正面臨著巨大的挑戰,一方面要為社區顧客提供滿意的服務,另一方面又要面對龐大的客流。無人超市作為一種新型的購物模式逐漸走進人們的生活,其目的正是為了解決零售行業目前所面臨的問題,而要真正實現無人化,就需要結算裝置能自動識別目標商品。
電子秤因其便捷、精準的特點,已經成功取代了傳統的機械秤,并且在零售行業得到了廣泛的使用。在原有電子秤的基礎上加上微控制器以及顯示器,就構成了目前常見的具有結算功能的電子秤,而這種電子秤的缺點就在于其需要人工輸入代碼,才能調用數據,并且花費顧客大量的時間去等待;同時因為裝置的專業性,員工需要事先培訓,才能正確使用。電子秤僅實現了結算的半自動化,并沒有解決無人超市的根本問題。
因此,亟待開發具有自動識別功能的超市蔬果稱重裝置。本科研項目在傳統電子秤的基礎上,加入自動識別模塊,利用攝像頭采集蔬果信息,通過算法,得出結果,實現蔬果自動識別的功能,并在此基礎上提高電子秤的可操作性。簡單的操作模塊,顧客只需按照提示進行操作,即可完成結算。這樣既節省了顧客的寶貴時間,也為商家減少了人力的投入,真正實現了超市無人化。
該系統由軟件和硬件兩部分組成。
硬件包括核心控制器STM32F103ZET6 單片機、OV5640 攝像頭、液晶顯示屏、壓力傳感器及其HX711AD 轉換模塊等。第76 頁圖1 為電路原理圖。攝像頭圖像采集模塊實時采集當前待稱重的蔬果圖像信息,并將該信息傳給STM32 單片機;運行于STM32 單片機上的AI 圖像識別程序通過分析蔬果圖像信息以識別當前待稱重蔬果的種類(該步驟為本項目實施的重點內容);然后稱重模塊將重量數據傳給STM32 單片機,STM32 單片機再根據蔬果的種類與重量,計算出當前待稱重蔬果的價格,在顯示模塊進行顯示,并通過打印模塊打印出相應的價格標簽。軟件部分依據上述自動識別系統編寫。
單片機作為本科研項目的核心部件,選用STM32F 系列產品,屬于中低端的32 位ARM 微控制器,為高性能、低成本、低功耗的嵌入式應用專門設計,十分適合智能系統的研發。其內核為ARM32 位Cortex-M3 CPU,最高72 MHz 工作頻率,具有高可靠計算速度,為實現自動識別算法提供了可靠的硬件基礎。STM32F103ZET6 單片機采用144引腳的設計,其中GPIO 口多達112 個,提供多輸入多輸出端口,方便數個模塊同時接入。除了模擬輸入,所有端口都可以被映射到16 個外部中斷向量, 并且允許5 V 以內的端口輸入電壓。STM32F103ZET6 單片機具有豐富的通信接口:USART 接口(攝像頭圖像采集模塊使用)、IIC 接口(稱重模塊使用)、SPI 接口(顯示模塊與網絡連接模塊使用) 以及其他接口等[1]。

圖1 電路原理圖
攝像頭圖像采集模塊是單片機的眼睛,必須保證其采集圖像的清晰度,同時也要滿足低功耗、體積小、便于連接等特點。OV5640 是一款CMOS 類型數字圖像傳感器,它具有體積小,工作電壓低等特點,最大像素也可達到30萬(640×480 分辨率),適合作為本項目的圖像采集模塊。輸出圖像數據采用VGA 時序,支持YUV(422/420)、YCbCr422 以及RGB565 數據格式,可以進行伽馬曲線、白平衡、飽和度、色度等基礎處理,補償所采集的圖像,為自動識別算法提供了辨識度高的圖像,提高了結果的準確度[2]。
圖2 為OV5640 圖像傳感器與單片機引腳連接示意圖,其中共有8 條并行數據線,分別接單片機的PB8~PB15;VDD 接3V3;GND 接地;其余為控制信號線,其中SIO_C 為SCCB 接口的控制時鐘線;SIO_D 為SCCB 接口的串行數據輸入端;VSYN為幀同步信號(輸出信號) 端;HREF 為行同步信號(輸出信號) 端;PCLK 為像素時鐘(輸出信號)端;XCLCK 為時鐘信號(輸入信號) 端;RRST 為讀指針復位信號端;WRST 為寫指針復位信號端;OE 為輸出數據使能端;WEN 與HREF 共同控制FIFO 的WE 引腳,當WEN 與HREF 同時為高電平時,WE 為低電平,OV5640 可向FIFO 寫入數據。

圖2 攝像頭圖像采集模塊接口圖
稱重模塊采用HX711 AD,該模塊將壓力傳感器檢測到的重量轉換成數字信號傳輸給單片機,保留了傳統電子秤的精確度。HX711 AD 模塊為24 位高精度模塊,帶有放大器功能,IO 口時序簡單,類似于I2C 接口,方便使用,故采用此模塊來替代放大器,并進行數模轉換[3]。
壓力傳感器與HX711AD 共有4 根信號線連接,用來采集傳感器應壓片的差壓信號,經模數轉化,傳遞至單片機。單片機與HX711AD 連接,其中VCC 用來供5 V 電壓,GND 接地,DT 為串口數據輸出線,SCK 為串口時鐘輸入。其連接見圖3。

圖3 稱重模塊接口圖
顯示模塊作為信息輸出的終端,將自動識別算法和最終要顯示的信息通過可觀的形式,顯示在屏幕上,方便用戶獲取結果。ILI9341 是一種薄膜晶體管(Thin Film Transistor,TFT) 液晶顯示器,具有26萬色的240RGB×320 像素顯示解決方案。ILI9341 支持并行8/9/16/18 位數據總線MCU 接口,6/16/18 位數據總線RGB 接口和3/4 線串行外圍接口(SPI)。窗口地址功能內部GRAM 可以制定移動圖像區域。選擇性更新指定的窗口區域,這樣可將所選的靜止區域和移動區域同時顯示。在設計重量顯示程序時,只需要將商品的重量信息設為移動區域,其余為靜止區域,減少屏幕的刷新頻率,大大降低系統消耗功率[4-6]。
ILI9341 與單片機連接見第77 頁圖4。其中DB0~DB15 為并行數據輸入/輸出端;有5 條GND地線;VCI 接3V3 電源;IOVCC 為數字電路電源(1.65 ~3.3 V);CS_MAIN 接LCD_CS,為 片 選 端(低有效);RS 接LCD_RS,為命令/數據輸入端(0:命令,1:數據);WR 接LCD_WR,可以向LCD 寫入數據控制端;RD 接LCD_RD,可以從LCD 讀出數據控制端;LCD_RESET 接LCDRESET為復位管腳(低有效);其中3 個NC 口懸空,不接線。同時該屏幕有觸摸控屏功能,因為本項目沒有用到,所以不在此贅述。

圖4 顯示模塊連接圖
網絡模塊是自動識別算法實現的核心,將采集的圖像信息上傳至百度云智能識別平臺,通過AI算法,得到一系列結果并下傳至單片機,單片機便可做后續處理。W5500 是一種簡單易用的硬件化以太網接入方案,可以使單片機實現與互聯網的連接。硬件協議棧的方式可以建立快速高效的連接,簡化產品開發方案,降低編程的工作量。它代替了以往的單片機來處理這些中斷請求,單片機只負責向用戶的應用層數據,其他層全部由外圍WIZnet芯片完成。這種工作方式做了幾乎所有的TCP/IP協議工作,大大減少了單片機的中斷次數,使單片機可專注于其他工作。而且硬件化的電路處理協議會更加快速、穩定。對于有限的內存來說,這套方案的代碼量僅有10 KB 左右,主要是完成對Socket的編程以及寄存器的調用,遠小于軟件協議方案。同時硬件化的邏輯門電路彌補了網絡協議安全性不足的短板,網絡攻擊和病毒對它無效,免受安全問題的困擾。
用戶將商品放置在壓力傳感器上,同時傳感器將商品重量通過HX711 數模轉換并發送至單片機;攝像頭采集模塊自主采集商品圖像并將商品圖片信息發送至單片機。單片機通過W5500 連接互聯網,并與百度AI 智能識別平臺實現互聯。用戶在按下“結算”按鍵后,單片機將圖像信息上傳到百度AI智能識別平臺,經過云計算,得到商品信息,由于得到結果是該圖像的一系列識別結果及其置信度,單片機自動選取置信度最高的結果作為所得商品信息,調用事先錄入的商品單價,通過函數計算得到最終的結果,即商品品名、單價和總價(見第78 頁圖5)。
如果用戶發現所識別商品信息與實際不符,可以選擇重新識別。用戶需要按下“重新識別”按鍵,液晶屏顯示“請調整商品角度并進行重新識別”,待重新調整結束,用戶繼續結算,系統便可重新識別產品。
若攝像頭、傳感器、網線未插好,液晶屏會顯示“設備未準備好,請先檢查設備”。待用戶重新接線后,系統自動重啟并初始化,重新檢測接線狀態,若接線信號無誤,便可正常運行。

圖5 程序流程圖
本項目最核心的技術是運用物聯網,將單片機與互聯網連接,實現自主識別功能。這是未來自動化技術發展的大趨勢,同時百度云智能識別平臺已具備成熟的技術,可以供開發者調用,又能大大降低編程的難度,是極好的實施方案。
在調試中,發現在沒有連接攝像頭和壓力傳感器時,LCD 液晶屏會出現白屏的情況,這是因為程序在沒有傳感器信號傳回時,程序不能自主跳到下一步。所以在原有程序的基礎上添加了檢測程序,當單片機檢測到沒有信號后,會提示用戶“設備未準備就緒”,提醒用戶檢查接線是否正確,待用戶重新接線后,便可繼續使用。
考慮到在特殊情況時沒有網絡,自動識別系統將無法使用,為了使電子秤繼續使用,可以選擇將其調至傳統工作模式,即需要人工輸入商品信息該稱重裝置才能正常使用。所以添加傳統超市電子秤子程序,顯示并打印商品的信息,保證了商戶的正常運作。
該稱重裝置結構合理,既實現了自動識別功能,同時也兼容了傳統電子秤的性能,方便用戶使用,以實現無人超市為目標,體現了較強的過渡性,充分考慮目前市場需求,具有良好的應用前景和市場推廣價值。
在接下來的研究中,考慮構建自己的圖像識別系統,以便在離線的情況下也可以具有自動識別功能,進一步改善系統性能。