超市自助購物系統(tǒng)設(shè)計(jì)原理與實(shí)現(xiàn),軟硬件協(xié)同
第1章引言
本文檔主要內(nèi)容在于介紹超市自助購物系統(tǒng)的開發(fā)背景,設(shè)計(jì)原理,和具體實(shí)現(xiàn),同時(shí)介紹系統(tǒng)使用方法,以期達(dá)到完善該系統(tǒng)并推廣應(yīng)用的目的。
本文檔的讀者對(duì)象是應(yīng)用此系統(tǒng)的超市方,普通購物者也可閱讀此文檔,但不用關(guān)注具體技術(shù)細(xì)節(jié),只需要了解用戶使用方法即可。
§1.2項(xiàng)目背景
每次去超市買東西時(shí),收銀臺(tái)前面長(zhǎng)長(zhǎng)的隊(duì)伍是一個(gè)讓所有人都發(fā)愁的問題。收銀員已經(jīng)用最快的速度去刷取物品上的條形碼,但結(jié)賬的整體時(shí)間依舊讓顧客等得不耐煩……
RFID射頻識(shí)別技術(shù)的高速發(fā)展,對(duì)于上面所述問題的解決提供了可能性。我們想利用RFID技術(shù)的優(yōu)勢(shì),開發(fā)一套嶄新的超市自助購物系統(tǒng),大大縮短顧客結(jié)款的時(shí)間。
第2章系統(tǒng)結(jié)構(gòu)
§2.1系統(tǒng)框架
§2.2購物車模塊操作流程
§2.3收銀臺(tái)模塊操作流程
§2.4系統(tǒng)特點(diǎn)
當(dāng)前的超市結(jié)算系統(tǒng)主要依靠收銀臺(tái)處掃描商品包裝表面的條形碼來統(tǒng)計(jì)價(jià)格。條形碼系統(tǒng)的結(jié)算速度受到很大的限制,這已經(jīng)成為當(dāng)前超市結(jié)算系統(tǒng)被消費(fèi)者詬病的主要原因。相比之下,基于單片機(jī)和RMU系列開發(fā)板的超市自助購物系統(tǒng)具有很多獨(dú)特的優(yōu)勢(shì)。
2.4.1 等待時(shí)間短
當(dāng)前的超市結(jié)算系統(tǒng)完全是在收銀臺(tái)處對(duì)商品信息進(jìn)行統(tǒng)計(jì)。超市自助購物系統(tǒng)把這段時(shí)間分成了兩部分,并且把最耗時(shí)間的部分——一件一件掃描購買的商品,轉(zhuǎn)移到購物車上進(jìn)行。在購物的同時(shí),完成當(dāng)前車內(nèi)商品總價(jià)的計(jì)算。收銀臺(tái)處只需進(jìn)行結(jié)賬環(huán)節(jié),不用經(jīng)歷掃描條形碼的漫長(zhǎng)過程。
2.4.2 支付形式多樣化
超市自助購物系統(tǒng)有兩種支付方式,現(xiàn)金支付和會(huì)員卡余額支付。現(xiàn)金支付就是當(dāng)前超市中普遍采用的方式,支付過程比較麻煩。除此之外,購物者還可以選擇會(huì)員卡余額支付。只要會(huì)員卡賬戶余額大于本次消費(fèi)金額,就可以利用余額支付。
2.4.3 完善的會(huì)員卡體系
會(huì)員卡在超市自助購物系統(tǒng)中發(fā)揮著不可替代的作用。會(huì)員卡中包括的信息有:會(huì)員卡號(hào),會(huì)員卡密碼,會(huì)員卡余額,會(huì)員卡積分。
選購好物品進(jìn)行結(jié)算時(shí)購物車模塊會(huì)把本次消費(fèi)金額寫到自己的會(huì)員卡中,這個(gè)過程中需要會(huì)員卡密碼。利用會(huì)員卡余額支付時(shí)也需要會(huì)員卡密碼。根據(jù)每次消費(fèi)金額計(jì)算出本次消費(fèi)的積分,累加到會(huì)員卡積分中。
2.4.4 系統(tǒng)功耗小
購物車模塊選取了低功耗的MSP430單片機(jī)和RMU900+開發(fā)板(配套小功率天線),完全可以利用5V的充電電池做電源。收銀臺(tái)模塊接有交流電源,供電比較容易。兩部分模塊在非工作狀態(tài)下都可以待機(jī),不向外發(fā)射電磁波,節(jié)省能源。
第3章技術(shù)細(xì)節(jié)(硬件部分)
§3.1描述各部分技術(shù)系統(tǒng)
系統(tǒng)硬件框圖如下:
圖3.1硬件部分框架
§3.2MSP430 MCU
MCU芯片選擇TI公司的MSP430 F169。MSP430 提供兩個(gè)UART通信模塊,LCD顯示接口, EEPROM擴(kuò)展接口,共有6組I/O接口,能夠最多支持16個(gè)中斷源,同時(shí)MSP 430 有獨(dú)特的低功耗模式,可以極大地減小能量消耗。采用官方IAR Embeded Workbench,界面友好,能夠極大簡(jiǎn)化軟件設(shè)計(jì)及調(diào)試驗(yàn)證,提高系統(tǒng)魯棒性。
MSP430 采用3.3V供電,與RMU 900+供電電壓相同,異步串行通信部分采用URAT1端口,采用外接晶振,頻率為8MHz,波特率設(shè)置為57600 bps。
系統(tǒng)采用3級(jí)中斷:初始上電復(fù)位中斷,初始上電時(shí),系統(tǒng)檢測(cè)各模塊性能;低功耗喚醒中斷,當(dāng)購物結(jié)束后系統(tǒng)進(jìn)入低功耗模式,新顧客通過按鍵產(chǎn)生中斷,從低功耗模式中喚醒;串口通信接收中斷,接收RMU900發(fā)送的握手信息及讀取到的標(biāo)簽信息。
LCD 顯示采用1602液晶顯示屏,可以顯示2行,每行16個(gè)字符(ASIIC碼字符)。由于開發(fā)時(shí)間倉促,LCD功能不夠完善。進(jìn)一步的設(shè)計(jì)中計(jì)劃采用12864液晶顯示屏或其他大屏幕顯示屏。但屏幕過大將會(huì)消耗更多電能,在基本設(shè)計(jì)中,1602液晶可以滿足需求。
鍵盤采用8個(gè)獨(dú)立按鍵,實(shí)際用到3個(gè)按鍵,分別是Wake_up(從低功耗中喚醒按鍵),Key_start(連接RMU900+,啟動(dòng)購物),Key_stop(結(jié)束購物,刷會(huì)員卡)。其中Wake_up產(chǎn)生中斷。
§3.3讀寫模塊及天線
RFID讀寫模塊分別采用恒睿公司的RMU900+和RMU920。RMU900+在購物車上使用,采用電池供電。RMU900+通過開發(fā)板上的UART通信口與MCU通信。RMU920在收銀臺(tái)終端處固定,采用220V交流供電,采用USB與終端PC通信。
購物車上天線采用T3640天線,該天線有效讀取距離約為1m,符合購物車要求。終端處天線采用9dbi圓極化天線,功率較大,讀取范圍可以達(dá)到5m。具體天線參數(shù)可以參考天線Datasheet。
§3.4存儲(chǔ)模塊
實(shí)際電子標(biāo)簽盡管可以讀入許多位,但依照讀寫模塊的使用說明,結(jié)果測(cè)試后我們發(fā)現(xiàn)標(biāo)簽只可以寫入數(shù)據(jù)2個(gè)字節(jié)。則根據(jù)每個(gè)標(biāo)簽對(duì)應(yīng)于不同的商品,目前只能做到216=65536件商品,這在商品如此豐富的今天顯然無法滿足需求。如果電子標(biāo)簽制造廠商可以將標(biāo)簽做到允許讀取8個(gè)字節(jié),則可以有216件商品,這個(gè)數(shù)量足以滿足所有需求。
現(xiàn)代物聯(lián)網(wǎng)不僅要求顧客了解商品名稱,價(jià)格等基本信息,顧客還希望了解商品的產(chǎn)地,生產(chǎn)日期,保質(zhì)期等相關(guān)信息。這些信息在商品出廠時(shí)由廠家連同標(biāo)簽號(hào)寫入數(shù)據(jù)庫,商品進(jìn)入超市后超市將這些信息寫入EEPROM當(dāng)中。EEPROM和MCU相連,可以在讀到每個(gè)ID號(hào)時(shí)從內(nèi)存中找出商品信息,通過LCD顯示給顧客。
開發(fā)中由于標(biāo)簽數(shù)量有限,相關(guān)信息存在MCU的程序存儲(chǔ)空間中即可。
§3.5終端PC模塊
收銀臺(tái)終端為一PC機(jī),上安裝有我們開發(fā)的軟件程序。終端和RMU920相連,也可以通過RFID讀取商品信息,但讀取速度較傳統(tǒng)條形碼有大幅度提高。PC后臺(tái)通過局域網(wǎng)LAN與服務(wù)器數(shù)據(jù)庫(Server Data Base)相連,可以實(shí)時(shí)將結(jié)算信息傳送至服務(wù)器。
§3.6服務(wù)器模塊
服務(wù)器模塊可以與MCU和終端PC進(jìn)行通信,將商品庫存信息存至MCU中,并實(shí)時(shí)更新商品數(shù)據(jù)庫和會(huì)員信息數(shù)據(jù)庫。
第4章技術(shù)細(xì)節(jié)(軟件部分)
§4.1描述各部分技術(shù)系統(tǒng)
本產(chǎn)品所使用所有軟件程序(PC機(jī)上)均是基于Microsoft Visual C++ 6.0 的MFC開發(fā)的。該軟件包含以下功能:1,利用天線讀取標(biāo)簽信息;2,利用所讀取信息進(jìn)行識(shí)別,修改,統(tǒng)計(jì)等過程;3,將處理過的信息記錄在PC機(jī)中。
圖4.1 軟件部分架
§4.2商品讀取函數(shù)
利用了所給頭文件RMU900_API.h中的函數(shù)進(jìn)行了對(duì)天線和標(biāo)簽的操作。首先用到了RmuOpenAndConnect函數(shù)連接天線,然后利用RmuReadDataSingle函數(shù)進(jìn)行對(duì)商品的讀取操作,在程序中進(jìn)行了去重操作,保證了同一件商品被且僅被讀取了一次。
§4.3商品(消費(fèi)者)識(shí)別函數(shù)
首先利用標(biāo)簽中的特殊信息位辨別此標(biāo)簽為商品還是消費(fèi)者,然后在相應(yīng)的庫中尋找是否存在相應(yīng)的商品(消費(fèi)者),如果存在這樣的商品(消費(fèi)者),那么就導(dǎo)入相應(yīng)商品(消費(fèi)者)的信息,如果不存在相應(yīng)的商品(消費(fèi)者),則再相應(yīng)的區(qū)域報(bào)相應(yīng)的錯(cuò)誤。
§4.4信息處理函數(shù)
4.4.1 信息顯示
因?yàn)槭褂昧薓FC庫,所以只需要將所需顯示的信息值賦予相應(yīng)的文字框的對(duì)象,然后刷新屏幕,即可實(shí)現(xiàn)信息的顯示
4.4.2 總金額統(tǒng)計(jì)與比較
每次讀入信息后,可以得到其相應(yīng)的價(jià)格信息,將所有的金額相加后,即可得到總金額,然后將計(jì)算得到的總金額與消費(fèi)者標(biāo)簽中的讀到的總金額相比較,如果一致則顯示此次消費(fèi)的金額,然后可以進(jìn)行消費(fèi)操作,如果不一致則進(jìn)行報(bào)錯(cuò)。
4.4.3 支付與積分函數(shù)
支付有兩種方式,現(xiàn)金支付與會(huì)員卡消費(fèi),對(duì)應(yīng)了兩個(gè)不同的按鍵,如果是現(xiàn)金支付,系統(tǒng)僅是將消費(fèi)金額對(duì)應(yīng)的積分存入會(huì)員卡信息中;如果是會(huì)員卡支付,則不僅是將消費(fèi)金額對(duì)應(yīng)的積分存入會(huì)員卡信息中,同時(shí)也將會(huì)員卡的余額減去對(duì)應(yīng)的消費(fèi)金額,如果余額不足,則報(bào)錯(cuò)。
§4.5其他函數(shù)
4.5.1 清零函數(shù)
為方便多次操作進(jìn)行統(tǒng)計(jì),系統(tǒng)提供了清零操作,本函數(shù)不僅將內(nèi)存中所有相應(yīng)的變量全部置零,同時(shí)也會(huì)清除顯示屏上所有上次遺留下來的信息,如商品信息,總金額信息與錯(cuò)誤提示等。
4.5.2 報(bào)錯(cuò)函數(shù)
本函數(shù)旨在處理一些意想不到的錯(cuò)誤,每一步遇到問題后都會(huì)轉(zhuǎn)向此函數(shù),程序?qū)⒔K止運(yùn)行,同時(shí)將相應(yīng)(唯一)的錯(cuò)誤顯示在報(bào)錯(cuò)區(qū)域。
4.5.3 商品庫,消費(fèi)者庫導(dǎo)入函數(shù)
本函數(shù)利用的是C++ 中的文件讀入讀出流的知識(shí),利用文件流,對(duì)商品庫,消費(fèi)者庫(.txt文件)中儲(chǔ)存的信息進(jìn)行讀入和修改。
4.5.4 總銷售數(shù)量與金額統(tǒng)計(jì)函數(shù)
為了方便商場(chǎng)管理者對(duì)商場(chǎng)進(jìn)行管理,該軟件特別設(shè)置了該函數(shù),用來統(tǒng)計(jì)一段時(shí)間內(nèi)商場(chǎng)銷售的所有商品的總數(shù)量和金額,并將其保存在‘sale.txt’中。
第5章應(yīng)用前景與發(fā)展方向
未來商品使用RFID電子標(biāo)簽代替條形碼已成為貨物流通發(fā)展的必然趨勢(shì)。利用RFID電子標(biāo)簽,本系統(tǒng)可實(shí)現(xiàn)“購物無停頓,支付由我選”的自由自主購物。
從購物者角度出發(fā),本系統(tǒng)可消除當(dāng)前超市收銀臺(tái)前排長(zhǎng)隊(duì)的現(xiàn)象,大大節(jié)約了購物者的購物時(shí)間,增加了消費(fèi)舒適度。同時(shí)由于RFID電子標(biāo)簽保存信息較多,購物者可以從商品識(shí)別系統(tǒng)中讀取到該商品的整個(gè)生產(chǎn)流通過程,能夠買到更放心的商品。
從超市角度出發(fā),超市可以大大減少收銀員的數(shù)量,降低了經(jīng)營(yíng)成本;結(jié)算速度的加快同時(shí)提高了超市的吞吐量;結(jié)算系統(tǒng)與數(shù)據(jù)中心相連可以使超市隨時(shí)了解熱門商品及短缺商品信息,利用物聯(lián)網(wǎng)可以實(shí)現(xiàn)商品的及時(shí)調(diào)運(yùn)和補(bǔ)充。
鑒于目前絕大多數(shù)超市依然使用傳統(tǒng)的人工結(jié)算方式,此系統(tǒng)的發(fā)展應(yīng)用前景極為廣闊。我們相信,如果此系統(tǒng)實(shí)現(xiàn)投入商用,必將帶來零售業(yè)和物流業(yè)的一場(chǎng)革命。
第6章改進(jìn)方案
超市自助購物系統(tǒng)滿足了最初的設(shè)計(jì)要求。但是,依舊有需要改進(jìn)的地方,主要有下面幾點(diǎn):
購物車模塊由MSP430單片機(jī)和RMU900+開發(fā)板組成,體積較大,并且單片機(jī)和開發(fā)板上的很多資源沒有使用。在以后的設(shè)計(jì)中可以把MSP430單片機(jī)的主芯片、RMU900+芯片、電源控制模塊和液晶顯示屏集成在一塊電路板上,節(jié)省系統(tǒng)成本,提高系統(tǒng)的穩(wěn)定性。
當(dāng)前的RMU系列開發(fā)板只能寫一個(gè)字大小的數(shù)據(jù)(16位),對(duì)標(biāo)簽的讀寫操作很局限。以后可以完善RMU開發(fā)板的功能,擴(kuò)大寫操作的數(shù)據(jù)位數(shù),提高對(duì)標(biāo)簽存儲(chǔ)區(qū)的利用,進(jìn)而可以提高標(biāo)簽數(shù)據(jù)存儲(chǔ)量,讓購物者看到商品的更多信息。
當(dāng)前的收銀臺(tái)模塊只能單機(jī)運(yùn)行,不支持聯(lián)網(wǎng)操作,不能進(jìn)行數(shù)據(jù)的動(dòng)態(tài)更新。在以后的設(shè)計(jì)中,可以在PC機(jī)程序部分實(shí)現(xiàn)聯(lián)網(wǎng)操作,真正滿足超市系統(tǒng)對(duì)聯(lián)機(jī)工作的需求。在一臺(tái)收銀臺(tái)PC機(jī)結(jié)賬之后馬上同步更新超市的物品數(shù)據(jù)庫和會(huì)員卡數(shù)據(jù)庫。
當(dāng)前的系統(tǒng)安全性很差,對(duì)數(shù)據(jù)篡改行為沒有防御性。以后的設(shè)計(jì)中可以在寫操作和結(jié)賬過程中更多地使用標(biāo)簽密碼,增強(qiáng)對(duì)數(shù)據(jù)安全的保護(hù),有效防御篡改數(shù)據(jù)的行為。
評(píng)論