張曉華,張文魁,2
(1.中北大學儀器與電子學院,山西太原 030006; 2.上海大學微電子學院,上海 201899)
研發新型的智能購物車對于提升超市的服務水平有著非常重要的意義。隨著互聯網技術的發展,近年來國內外關于智能購物車的研究越來越多,在不同的研究方向上取得了成果。2006年澳大利亞研究人員研發了一款智能購物車,這款購物車上安裝了一塊觸摸屏幕,用戶可以操作商品定位系統輕易定位自己想要的商品[1-2]。2011年韓國SK Telecom推出了使用Wi-Fi無線連接技術的智能購物車,該購物車的獨特操作方式在于消費者需要通過自己的手機下載與賣場對應合作的App,通過App可以了解商場的基本信息及賣場的相關活動咨詢,系統也可以幫助顧客快速地定位自己想要購買商品的位置,節省了顧客的購物時間。2018年新世界集團旗下的E-mart委托中國上海硅步機器人聯合西班牙robotnik公司共同研發生產出了自主購物機器人“eli”,并在韓國的相關超市亮相,“eli”智能購物車可以跟隨顧客行走,幫助顧客挑選商品,購物結束后顧客可以通過信用卡或移動支付直接付款[3]。
中國對智能超市購物車的研究相對于國外起步較晚,2009年張喆[4]提出了一款基于單片機的智能購物車,能夠實現商品的快速定位、對所選商品自助結算、方便查詢超市賣場內的廣告咨詢和促銷打折等優惠信息。2018年永輝超市在其重慶總店推出自行研發的智能跟隨購物車,該購物車可以實現跟隨功能、避障功能,并且其可以通過人臉識別技術來辨別超市會員的性別、年齡,并能在顧客的語音指令下帶領顧客到達所需購買商品的位置。
目前,國內外研發的智能購物車主要在自助結賬、自動跟隨、自主導購等方面實現突破,各產品所側重實現的功能不同,存在較多局限,智能購物車在識別穩定性、目標準確性、自助便捷性等方面仍需完善。為此,本文擬設計一款集車載自助結賬、智能跟隨、云端大數據庫自主導航于一體的智能購物車。依托超寬帶室內定位技術開發的自動跟隨功能可以有效減少顧客的購物壓力;依托射頻識別技術(RFID)開展車載自助結賬系統設計,可以極大地提升貨物識別穩定性,并實現手機便捷支付功能;依托云端數據庫搭建的導航系統可以快速準確地找到商品位置。
在跟隨方案的設計中,購物車需要實時掌握顧客相對于購物車的位置,只有這樣才能對車子的狀態作出實時控制。本次設計通過建立參考坐標系后再確定被跟蹤目標方位的方式來進行方位解算。第一,先將2塊超寬帶(UWB)基站[5]安置于購物車的前方,并設定2個基站之間的距離為L;第二,以基站1和基站2所在直線為x軸,基站1和基站2的中點o為原點,建立直角坐標系;第三,令標簽到基站1之間的距離為d1,標簽到基站2之間的距離為d2,令顧客的坐標為(x,y)[6]。標簽位置坐標圖如圖1所示。

圖1 標簽位置坐標圖Fig.1 Coordinate orientation of label position
根據圖1可以得到以下方程組:
(1)
(2)
聯立可以求得:
(3)
(4)
根據上述推算可以得出以下結論:當d1>d2時,且x>L/2時,顧客在右前方;當d1
在確定了顧客的相對位置之后,便可以對車的狀態進行控制。當顧客在車子正前方時,且當y>100 cm時,單片機控制購物車左右兩電機同時轉動,購物車向前走動;當顧客在車子正前方時,且當y<100 cm時,單片機不會發出指令,購物車不會向前走動;當顧客位于購物車右前方時,單片機控制購物車左電機轉動,右電機不轉,購物車實現右轉;當顧客位于購物車左前方時,單片機控制購物車右電機轉動,左電機不轉,購物車實現左轉[7]。
整個過程中,單片機會保持極高的刷新率,這樣會保證車子流暢的跟隨顧客行走。除此之外,在購物車的多個方位上還安裝了光電模塊,用于檢測購物車周圍的障礙物,并且設定避障功能的優先級高于跟隨功能,可避免購物車出現撞擊事故。
在上述設計都完成后,需要將ESP32單片機與購物車主控制板STM32通過串口連接,以便實現手機端操控的目的。當顧客想要購物車以跟隨模式運行時,只需要在手機的網頁上點擊相關按鍵,服務器將接收到的指令使用Wi-Fi通過MQTT協議發送到ESP32單片機,再通過串口通信協議將指令傳遞給購物車跟隨系統的主控芯片STM32,通過設置信號的優先級,使手機控制信號的優先級調為最高,從而實現手機端對車狀態的控制。自動跟隨控制模塊如圖2所示。

圖2 自動跟隨控制模塊Fig.2 Automatic following control module
對于新的高頻RFID設備,首先需要使用讀寫器讀出每個標簽的信息,然后再進行寫操作,寫進預先設定的數值,并在數據庫當中做相應的記錄,最終將標簽貼附于相應的商品之上。標簽數據讀取及寫入的步驟如下[8-9]。
1)根據商家提供的信息安裝指定的驅動,安裝成功后使用USB數據線將讀寫設備與電腦相連接,當電腦設備管理器的端口窗下出現相應的名稱,代表驅動安裝成功,如圖3所示。


圖3 高頻RFID商品識別過程Fig.3 Goods identification process of ultra-high RFID
2)打開商家配備的軟件,根據要求設定相應的參數,比如波特率115 200等等,打開串口后,出現一切正常的識別圖。
3)在軟件操作界面上點擊識別按鈕,當RFID標簽出現在讀寫器附近時,界面上會實時出現標簽信息,白色代表正常識別,紅色代表不在天線識別的范圍內。
4)在軟件操作界面找到相對應的寫標簽按鈕,對數據進行寫入數據操作。設置好合適的長度,然后按要求寫入數據,一次性只可以有一張標簽出現在超高頻RFID讀寫器天線的附近。
5)當數據寫入成功之后,界面的下方會提示寫數據成功,這樣表示寫數據操作完成[10-11]。寫數據操作如圖3 d)所示。
系統工作流程如圖4所示。

圖4 系統工作流程圖Fig.4 Working flow chart of the system
主控ESP32需要不停地通過串口向RFID讀寫模塊發送讀寫指令。其中讀寫指令需要從商家配帶的說明書中獲取,根據這次所購買的RFID讀寫器說明書了解到關于高頻RFID的指令格式,首先向其發送模式指令: 0XBB,0X00,0X12,0X00,0X01,0X01,0X14,0X7E,使其處在特定工作模式下,接著發送讀取指令:0XBB,0X00,0X22,0X00,0X00,0X22,0X7E,讓RFID處于讀取的工作模式下。當RFID讀寫器讀到購物車內的標簽信息后,會通過串口將信息發送給主控ESP32,ESP32根據接收到的讀取結果實時解析,解析時,根據商家規定的數據長度為4×6=24 bit,需要對發送過來的數據每24 bit進行劃分,劃分之后的每一單元都代表一個標簽的信息。為了保證識別的準確性,每次寫代碼規定高頻RFID發送采集到的商品信息為5次時,ESP32通過MQTT協議使用Wi-Fi向Apache服務器發送1次[12-13]。根據說明書中記錄的24個字符所代表的不同含義可以了解到第18位為最后一位,第18個字符往后的字符都為驗證字符。在這里數組中只記錄每個字符串的第16,17,18位,在每識別的5次數組中,只記錄上次沒有的標簽信息,如果最新識別的數組已有記錄,則不會將其添加到數組中。通過以上的解析過程及上傳的方式,可以保證購物車內的商品信息會及時并且準確地發往云端服務器。
整個支付系統主要分為3部分,即發送設備、處理設備和顯示設備[14]。發送端由RFID讀寫器、RFID標簽組成;處理設備由ESP32組成;顯示設備由自主創建的網頁組成。整個設計以ESP32為主控,在商品上粘貼RFID貼紙標簽,通過超高頻RFID讀取器讀取購物車內所有商品的RFID信息,并使用MQTT[15]協議將讀取器讀到的RFID標簽信息發送到云端服務器,云端服務器將讀取到的RFID標簽信息與數據庫中的商品信息相匹配,獲得購物車內已有的商品信息后將其寫入該購物車的數據庫中,用戶可以通過手機查看購物車內的商品信息。
在開始使用購物車后,當張貼有超高頻RFID標簽的商品放入到購物車筐內時,安裝于購物車底部的超高頻RFID讀寫器將會對車筐中的所有商品進行統一識別,并且保持不斷更新的狀態,車筐中的商品一旦有變化,讀卡器便會感應出它的變化,超高頻RFID讀寫器讀取商品上的RFID標簽信息,并且通過串口將信息發送給ESP32,之后ESP32使用MQTT協議通過Wi-Fi上傳到云端服務器,服務器會將ESP32發送來的信息與存儲在數據庫里的商品名稱匹配,并將匹配的結果顯示在網頁上。購物結束后顧客通過手機調轉支付寶支付即可。
為了讓顧客能夠準確快速地找到目標商品的位置,針對每一個超市建立了相應的數據庫,數據庫里存儲超市內每一件商品的位置坐標,供顧客查找。顧客只需在手機上掃碼登錄超市平臺網站,進入搜索欄目輸入需要購買的商品名稱,網頁會將事先存儲在數據庫里的商品位置信息顯示出來,供顧客瀏覽使用。
云端系統通過搭建Apache網頁服務器、MQTT服務器、mysql數據庫來實現信息的展示、傳達以及存儲。購物車與云端系統的交互方面使用ESP32芯片,運行freertos系統,使用Wi-Fi接入互聯網,通過目前主流的物聯網協議MQTT與服務器后端進行通信(其可容納百萬臺設備的接入)。服務器后端將獲取的數據存入mysql數據庫,用戶可以通過網頁獲取相關的內容,圖5為商品的數據庫搜索結果。

圖5 商品的數據庫搜索結果Fig.5 Search results of goods database
硬件電路的測試主要通過串口完成,主要測試硬件電路部分是否可以正常的發送指令。先將編寫的程序燒錄進ESP32當中,保證ESP32可以正常工作;之后將排針焊接在超高頻RFID讀寫器上,這樣可以引出每個與之對應的引腳;再根據寫程序時所用到的串口引腳,將其通過導線與ESP32相連接,其中主控ESP32上對應的RXD引腳連接在超高頻RFID上的TXD引腳,ESP32上的TXD引腳連接在超高頻RFID上的RXD引腳上。除此之外,為了達到只使用1個電源的目的,應將超高頻RFID的電源接口與地接口分別連接在ESP32上的電源接口與地接口。連接好之后,給ESP32接入5 V電壓,此時ESP32與超高頻RFID的指示燈均亮了,代表2個模塊都能正常供電。正常供電后,使用串口調試助手檢測超高頻RFID是否能正常發送數據給ESP32,首先根據要求先在電腦上安裝CH340驅動,這樣才可以識別到插在電腦上的串口接口,接著使用1根USB數據線將ESP32連接在電腦上,打開串口調試助手,看串口調試助手能否接收到正常的標簽個數及標簽信息,其連接好之后的硬件部分功能測試如圖6所示。

圖6 硬件部分功能測試Fig.6 Part function testing of hardware system
串口調試助手所返回來的信息代表ESP32可以正常接收超高頻RFID讀寫器所發送過來的信息,并且可以對標簽的信息進行正確的解析。
驗證完硬件部分之后就需要對整個系統進行驗證,首先根據要求需要先設定指定的個人熱點網絡,供ESP32連接使用,當手機上顯示有設備連接時,表示ESP32已經接網成功,可以對整個系統進行測試。將1個粘貼有RFID貼紙標簽的商品置于超高頻RFID讀寫器的天線附近,然后查看手機網頁是否有相應的商品名稱及價格,其單個商品測試圖如圖7所示。

圖7 單個商品的功能測試Fig.7 Function testing of single goods
結果表示單個商品信息可以正常上傳,逐漸增加商品的個數,看網頁是否同時顯示多個,并且驗證網頁是否可以正常計算所有商品的價格總和,其測試結果如圖8所示,結果表示當商品個數為多個時,系統仍然可以上傳所有商品的信息,并且在網頁可以正常計價。測試完以上過程之后,將貼有貼紙標簽的商品從超高頻RFID天線旁拿走,看網頁上是否還會顯示該商品的名稱,以及總價中是否有減去所拿走商品的價格,通過以上過程可以檢測整個系統的更新速率,測試結果顯示更新速率較快,滿足實際需求。

圖8 多個商品的功能測試Fig.8 Function testing of multiple goods
針對現有超市中存在的排隊等待結賬難、手推購物車不方便、尋找目標商品難等問題展開了分析研究,提出了一種基于物聯網的智能購物車方案并完成了實物設計,所設計的實物可以有效地解決目前超市中存在的困難,為未來智能化超市的建設提供了良好的基礎。
本文在自助收銀系統的搭建上,主要依托物聯網技術展開設計,使用超高頻RFID為主要模塊,輔以手機網頁及云端數據庫完成車載自助結賬系統的設計,所完成的功能識別穩定性強、靈敏度高、支付方便,可滿足現有超市的實際性需求。在自動跟隨系統方面,主要使用UWB模塊為感應模塊,輔以手機網頁形成手機端可控的跟隨系統,對于顧客來說可以有更多的選擇性,實現的跟隨功能效果更加流暢、準確度更高。最后,在商品定位方面,主要依托云端數據庫搭建導航系統,可以幫助顧客快速、準確地尋找到目標商品,更加適合現有超市的需要,可以極大地節省顧客的購物時間。
集多套智能系統于一體的智能購物車為未來智能超市的建設提供了良好的基礎。然而,本研究也存在許多待解決的問題,例如,購物車的自動歸位等。未來團隊將會在購物車自動歸位方面開展研究。