摘" 要:為解決傳統(tǒng)超市購(gòu)物模式中出現(xiàn)的購(gòu)物效率低等問(wèn)題,提出一種能改善當(dāng)今消費(fèi)者購(gòu)物體驗(yàn)的超市智能購(gòu)物車設(shè)計(jì)。該設(shè)計(jì)采用STM32F103C8T6單片機(jī)作為中央處理器,實(shí)現(xiàn)對(duì)外圍信號(hào)的接收和處理及對(duì)外圍設(shè)備的控制。通過(guò)多種模塊的應(yīng)用與相互配合,并利用超聲波定位和無(wú)線射頻(RFID)等技術(shù),使智能購(gòu)物車具有自動(dòng)跟隨、緊急避障和自助結(jié)賬等功能。最后分別對(duì)上述功能進(jìn)行調(diào)試,分析在調(diào)試過(guò)程中存在的常見問(wèn)題并提出解決方案。該購(gòu)物車的設(shè)計(jì)既為消費(fèi)者節(jié)約購(gòu)物時(shí)間和改善購(gòu)物體驗(yàn),又為超市減少結(jié)賬成本、提升人氣和獲得更多收益。
關(guān)鍵詞:STM32F103C8T6單片機(jī);智能購(gòu)物車;自動(dòng)跟隨;超聲波定位;RFID
中圖分類號(hào):TP23" " " " 文獻(xiàn)標(biāo)志碼:A" " " " " 文章編號(hào):2095-2945(2023)17-0036-06
Abstract:" In order to solve the problem of low shopping efficiency in the traditional supermarket shopping mode, a supermarket smart shopping cart design is proposed, which can improve the shopping experience of today's consumers. This design uses STM32F103C8T6 single-chip microcomputer as the central processor to receive and process the peripheral signals and control the peripheral equipment. Through the application and cooperation of many kinds of modules, and the use of ultrasonic positioning and radio frequency(RFID) technology, the smart shopping cart has the functions of automatic following, emergency obstacle avoidance and self-checkout. Finally, the above functions are debugged, the common problems existing in the debugging process are analyzed and the solutions are put forward. The design of the shopping cart can not only save shopping time and improve shopping experience for consumers, but also reduce checkout costs, improve popularity and gain more benefits for supermarkets.
Keywords: STM32F103C8T6 single chip microcomputer; smart shopping cart; automatic following; ultrasonic positioning; RFID
隨著時(shí)代的不斷發(fā)展,人們對(duì)生活各個(gè)方面的體驗(yàn)有了更高要求。超市與生活息息相關(guān),是人們補(bǔ)充生活用品的主要場(chǎng)所,并且超市購(gòu)物也成為人們?cè)陂e暇時(shí)的放松方式之一??扇缃竦某匈?gòu)物模式有很多值得改善的地方,其中常見的便是人多結(jié)賬效率低導(dǎo)致排隊(duì)時(shí)間過(guò)長(zhǎng)[1],還有因?yàn)橥苿?dòng)購(gòu)物車而不方便騰出手照顧小孩的情況。這些都會(huì)讓消費(fèi)者感到困擾,使消費(fèi)者的購(gòu)物欲望下降,甚至導(dǎo)致放棄購(gòu)買,這無(wú)疑對(duì)超市的口碑與利益都帶來(lái)很大影響。為解決這些問(wèn)題,本設(shè)計(jì)提出對(duì)超市購(gòu)物車進(jìn)行智能化升級(jí),一方面使購(gòu)物車能夠通過(guò)超聲波定位技術(shù)進(jìn)行自動(dòng)跟隨,并能在障礙物闖入跟隨路徑的時(shí)候進(jìn)行緊急避障;另一方面使購(gòu)物車能夠通過(guò)無(wú)線射頻(RFID)技術(shù)對(duì)帶有標(biāo)簽的商品進(jìn)行識(shí)別,將信息如商品總價(jià)格整合后展示在顯示屏幕中,從而客戶可以通過(guò)相應(yīng)的支付方式在購(gòu)物車上自行結(jié)賬。此外,采用RFID的快速準(zhǔn)確識(shí)別還可以防止用戶未經(jīng)掃描將貨物放進(jìn)購(gòu)物車等偷盜行為。
1" 智能購(gòu)物車硬件設(shè)計(jì)
1.1" STM32F103C8T6單片機(jī)
本次設(shè)計(jì)所采用的控制單元為STM32F103C8T6型號(hào)的單片機(jī),是中低端的32位ARM微控制器,該系列芯片是由意法半導(dǎo)體公司出品,其內(nèi)核是Cortex-M3。其存儲(chǔ)器為16 K到512 K字節(jié)的閃存程序存儲(chǔ)器,本次設(shè)計(jì)所使用的是閃存存儲(chǔ)器容量64 K字節(jié)的型號(hào)。該單片機(jī)的電源管理方面,有2.0~3.6 V的供電與I/O引腳、上電/斷電復(fù)位。該單片機(jī)配備有專門的庫(kù)函數(shù),使開發(fā)難度大幅度降低,已經(jīng)大量應(yīng)用于各個(gè)方面設(shè)備的開發(fā)研制[2-3],因此本次設(shè)計(jì)就選定該型號(hào)的單片機(jī)作為控制單元。
1.2 超聲波模塊
本次智能購(gòu)物車的自動(dòng)跟隨功能是采用超聲波的方式進(jìn)行。超聲波模塊選用的是網(wǎng)上容易采購(gòu)的單收單發(fā)的超聲波模塊,其接收距離在4~500 cm,模塊工作電壓為5 V,模塊的工作方式為串口通信,模塊發(fā)送頻率為50 Hz,模塊通信波特率為115 200。超聲波單發(fā)送模塊和獨(dú)立的一個(gè)供電5 V模塊一起組合,該供電模塊由廠家自己設(shè)計(jì),能處理超聲波發(fā)送模塊,上電就可用[4]。超聲波單接收模塊的接口與單發(fā)送模塊相同,相應(yīng)的接口要和單片機(jī)的接口相連。據(jù)功能要求,本次超聲波模塊選擇用1個(gè)發(fā)送模塊和2個(gè)接收模塊。發(fā)送模塊有配備好的控制板,2個(gè)接收模塊連接單片機(jī)的USART2與USART3串口通信接口。通過(guò)超聲波模塊得知距離后,將使用多個(gè)超聲波模塊,將其布置為一個(gè)三角形,其角度和邊長(zhǎng)長(zhǎng)度都有規(guī)定值,當(dāng)用戶移動(dòng)的時(shí)候,該三角形的形狀便會(huì)發(fā)生改變,根據(jù)此改變,購(gòu)物車就會(huì)進(jìn)行調(diào)整,使其繼續(xù)維持規(guī)定的三角形形狀,以此達(dá)到自動(dòng)跟隨的功能[5-7]。
1.3 避障傳感器模塊
為了應(yīng)對(duì)購(gòu)物車在自動(dòng)跟隨的過(guò)程中有小孩或貨物闖入跟隨路徑,因此采用避障傳感器模塊就能使購(gòu)物車立刻停止,防止碰撞的發(fā)生。避障傳感器是采用市面上常見的直式避障傳感器模塊,通過(guò)電位器可調(diào)節(jié)檢測(cè)距離,其有效距離為2~32 cm。該模塊工作電壓為3.3~5 V,故可以采用3~5 V的直流電源進(jìn)行供電。其接口說(shuō)明為:①VCC接3.3~5 V的電壓;②GND接GND;③OUT接數(shù)字量輸出接口,即單片機(jī)IO口。
1.4" RFID模塊
為了實(shí)現(xiàn)購(gòu)物車的自動(dòng)識(shí)別功能,考慮到一般的條形碼識(shí)別可能會(huì)帶來(lái)的偷盜行為,本次設(shè)計(jì)所采用的識(shí)別模式是RFID無(wú)線射頻識(shí)別的技術(shù)。RFID模塊選型確定為M3650-HA,該模塊的通信接口為UART TTL,該模式可以與單片機(jī)進(jìn)行直接相連,模塊的TXD引腳接單片機(jī)RXD引腳,模塊的RXD引腳接單片機(jī)TXD引腳,GND與單片機(jī)的GND相連形成共地。其工作電壓為5 V,波特率設(shè)置為115 200。本次設(shè)計(jì)是將RFID用于商品的識(shí)別上,將無(wú)源標(biāo)簽設(shè)置在商品上,閱讀器安裝在購(gòu)物車上,由于掃描識(shí)別過(guò)程是用戶將商品放入購(gòu)物車中,其距離小,可以使識(shí)別效率有所保障,采用無(wú)源標(biāo)簽也節(jié)省了一定的成本[8]。
1.5" 顯示屏模塊
顯示屏模塊采用1.3寸的OLED顯示屏模塊,通過(guò)按鍵觸發(fā)單片機(jī),從而控制屏幕,達(dá)到人機(jī)交互的功能,該模塊編程和接線較簡(jiǎn)單,價(jià)格便宜,其自備自發(fā)光能力,具有對(duì)比度高,功耗低等優(yōu)點(diǎn),該模塊使用的通信模式為IIC的模式,驅(qū)動(dòng)芯片是SSD1306。由于采用的是IIC通信模式,所以其引腳為4針,分別是VCC接口、GND接口、SCL接口和SDA接口,這樣的少量引腳可以為其他的模塊節(jié)省接口,這里通過(guò)設(shè)置將SCL接PB8,SDA接PB9。
1.6" 電機(jī)驅(qū)動(dòng)模塊
本設(shè)計(jì)電機(jī)采用的是市面上常見的直流電機(jī),其工作電壓有3種模式,分別是DC3V、DC5V、DC6V。為了電壓的選擇統(tǒng)一,本次采用的是直流5 V的電機(jī),減速箱減速比為48∶1,空載(加輪子)為190 r/min。直流電機(jī)驅(qū)動(dòng)模塊采用市面上的L298N直流電機(jī)驅(qū)動(dòng)模塊,該模塊采用的是L298N芯片來(lái)直接驅(qū)動(dòng)2路3~30 V的直流電機(jī),并且提供5 V輸出接口,可以方便控制直流電機(jī)的速度與方向,其驅(qū)動(dòng)電路采用H橋式。其IN1至IN4的接口分別依次接單片機(jī)的PB12至PB15接口,ENA與ENB接單片機(jī)的PA6與PA7接口。本次購(gòu)物車的設(shè)計(jì)將用到2個(gè)直流電機(jī)和1個(gè)L298N電機(jī)驅(qū)動(dòng)模塊。
2" 智能購(gòu)物車軟件設(shè)計(jì)
2.1" 主函數(shù)設(shè)計(jì)
本次購(gòu)物車設(shè)計(jì)的主函數(shù)流程圖如圖1所示。首先對(duì)各個(gè)硬件系統(tǒng)進(jìn)行初始化,之后對(duì)各個(gè)傳感器進(jìn)行數(shù)據(jù)獲取,其中包括超聲波所測(cè)的距離和RFID所識(shí)別的商品信息等。在中斷方面,本次設(shè)計(jì)為RFID識(shí)別程序和緊急避障程序設(shè)置了中斷,主函數(shù)會(huì)一直處理超聲波跟隨的程序和讀取相應(yīng)按鍵值進(jìn)行相關(guān)的支付步驟。
2.2" 自動(dòng)跟隨模塊子程序設(shè)計(jì)
本次自動(dòng)跟隨模塊設(shè)計(jì)主要是依賴于所用的超聲波模塊測(cè)得的距離數(shù)據(jù),通過(guò)該距離數(shù)據(jù)進(jìn)行計(jì)算從而達(dá)到自動(dòng)跟隨的目的。首先由超聲波模塊獲得左右兩邊的距離數(shù)據(jù),以這2個(gè)數(shù)據(jù)為基礎(chǔ),可以得出左右兩邊距離相互之間的差值和各自與規(guī)定距離的差值,然后運(yùn)用相應(yīng)的PID算法進(jìn)行計(jì)算處理,最后再分別傳輸給對(duì)應(yīng)的電機(jī)。自動(dòng)跟隨流程圖如圖2所示。
2.3" 緊急避障模塊子程序設(shè)計(jì)
如果購(gòu)物車在自動(dòng)跟隨路徑中出現(xiàn)障礙物,則還需考慮緊急避障模塊程序設(shè)計(jì)。該模塊設(shè)計(jì)比較簡(jiǎn)單,使用常見的紅外避障模塊,程序上將其設(shè)置為中斷,當(dāng)有物品出現(xiàn)在紅外避障模塊的危險(xiǎn)范圍內(nèi)時(shí),就會(huì)觸發(fā)中斷,而中斷程序設(shè)置為電機(jī)停止;當(dāng)物品離開了紅外避障的危險(xiǎn)范圍,就能回到正常的自動(dòng)跟隨功能。緊急避障流程圖如圖3所示。
2.4" 自動(dòng)識(shí)別模塊子程序設(shè)計(jì)
該模塊程序只需要將識(shí)別到的數(shù)據(jù)放置在一個(gè)列表中,之后將特定置位中的數(shù)據(jù)提取出來(lái)交給單片機(jī)主程序進(jìn)行處理。應(yīng)注意,本次的識(shí)別過(guò)程是在接收到數(shù)據(jù)時(shí),程序上將其設(shè)置為中斷,目的是能及時(shí)接收并傳出RFID接收到的數(shù)據(jù)。由于只進(jìn)行基本功能的實(shí)現(xiàn),所以商品信息的設(shè)置數(shù)量只有2個(gè)并且用卡片代替,在連接電腦時(shí)通過(guò)RFID模塊將信息寫入卡片中,當(dāng)RFID識(shí)別到指定的卡時(shí),就將數(shù)據(jù)上傳給單片機(jī),單片機(jī)根據(jù)數(shù)據(jù)在顯示屏中顯示相應(yīng)的信息,這里只包括商品名和單價(jià)。若后續(xù)有新的想法,可以繼續(xù)完善使其更加豐富。自動(dòng)識(shí)別流程圖如圖4所示。
3" 智能購(gòu)物車功能調(diào)試
本次的功能調(diào)試主要分為2個(gè)部分,第一個(gè)部分是自動(dòng)跟隨功能的調(diào)試,該部分工作量較大,難度主要分布在算法的設(shè)計(jì)與選擇,關(guān)鍵參數(shù)的設(shè)定等;第二個(gè)部分是自動(dòng)識(shí)別功能的調(diào)試,該部分的工作在于將RFID所識(shí)別的信息進(jìn)行接收儲(chǔ)存。
本次的調(diào)試方法,將實(shí)物按照硬件設(shè)計(jì)部分進(jìn)行接線,之后通過(guò)指定的數(shù)據(jù)將相關(guān)信息展示在OLED顯示屏中,例如距離誤差、左右輪速度等。將所有功能模塊接線后,通過(guò)STLink將單片機(jī)和電腦直接連接,方便依據(jù)問(wèn)題直接修改程序并燒錄。其中模塊主要包括超聲波模塊、RFID識(shí)別模塊、OLED顯示屏和按鍵等。接線組合后稱之為實(shí)驗(yàn)臺(tái),如圖5所示。
3.1" 自動(dòng)跟隨功能調(diào)試
自動(dòng)跟隨功能和其他功能最大的區(qū)別便是需要觀察實(shí)際的運(yùn)動(dòng)情況,因?yàn)橛行┣闆r是在編程中體現(xiàn)不了的。本次調(diào)試中出現(xiàn)的問(wèn)題除了最基本的算法選擇,就是一些錯(cuò)誤運(yùn)動(dòng)情況,接下來(lái)分別進(jìn)行闡述。
第一種錯(cuò)誤情況是數(shù)據(jù)的格式問(wèn)題,這是調(diào)試中最簡(jiǎn)單但又是最容易忽視的問(wèn)題。在之前的程序編寫中為了讀取方便,將大部分?jǐn)?shù)據(jù)設(shè)置成了無(wú)符號(hào)數(shù),倘若在之前區(qū)分前后,將其全部設(shè)置為正數(shù)時(shí)是沒問(wèn)題的,但這必定會(huì)增加代碼的長(zhǎng)度,這并不提倡。但在修改后,一些數(shù)據(jù)就必須變成有符號(hào)數(shù)來(lái)應(yīng)對(duì)自身變?yōu)樨?fù)數(shù)的情況,否則在出現(xiàn)負(fù)值時(shí),由于無(wú)符號(hào)數(shù)的規(guī)定,導(dǎo)致數(shù)值突然變大,產(chǎn)生錯(cuò)誤。除了符號(hào)規(guī)定之外,數(shù)據(jù)大小的規(guī)定也是如此。所以針對(duì)以上問(wèn)題,要根據(jù)自己選擇的算法進(jìn)行相應(yīng)數(shù)據(jù)類型的修改,這是最基礎(chǔ)也是必須關(guān)注的地方。
第二種錯(cuò)誤情況是邏輯錯(cuò)誤,這其實(shí)是屬于代碼編程方面,但是在調(diào)試時(shí)這種錯(cuò)誤就會(huì)放大的很明顯,在之前的代碼中,嘗試的是先判斷左右方向再判斷前后方向,邏輯上沒有出現(xiàn)明顯問(wèn)題,但在實(shí)際中并不如此,例如若不設(shè)定停止程序,小車由于慣性會(huì)一直處于左右判斷的環(huán)節(jié),無(wú)法進(jìn)入前進(jìn)后退的環(huán)節(jié),這些問(wèn)題都在測(cè)試中出現(xiàn)過(guò)。若將該程序編寫完善,這種程序邏輯也不適用于超市的布局,因?yàn)橄茸笥以偾昂蟮倪\(yùn)動(dòng)邏輯在遇到拐角的情況時(shí),就可能會(huì)發(fā)生碰撞,這也是后來(lái)更改為差速轉(zhuǎn)向的原因。
第三種錯(cuò)誤情況是小車運(yùn)動(dòng)狀況與程序不符。首先我們知道,小車是具有慣性的,盡管程序編寫完成后,將假想數(shù)據(jù)填入,其數(shù)值的顯示符合運(yùn)動(dòng)邏輯,但是將程序燒錄在單片機(jī)后,實(shí)際運(yùn)動(dòng)便出現(xiàn)了差錯(cuò),其中的現(xiàn)象有小車在誤差存在時(shí)不產(chǎn)生運(yùn)動(dòng)、小車速度突然增加、小車轉(zhuǎn)彎幅度過(guò)大、轉(zhuǎn)彎和前進(jìn)方向錯(cuò)誤及小車原地旋轉(zhuǎn)等。導(dǎo)致其中一些問(wèn)題出現(xiàn)的原因,是由于如同上述2種錯(cuò)誤中編程邏輯錯(cuò)誤和數(shù)據(jù)格式與表示范圍錯(cuò)誤的情況,可以進(jìn)行相應(yīng)地修改解決。但有的錯(cuò)誤會(huì)與電機(jī)相關(guān),當(dāng)計(jì)算得出PWM的占空比很小時(shí),也就相當(dāng)于PWM所產(chǎn)生的模擬電壓很小,這就導(dǎo)致了電機(jī)無(wú)法正常工作,表現(xiàn)為電機(jī)停止并且電機(jī)驅(qū)動(dòng)模塊報(bào)警,這在調(diào)試階段經(jīng)常發(fā)生,在占空比為25%以下時(shí),尤其在電機(jī)受載的情況下,電機(jī)就無(wú)法工作。這便導(dǎo)致了錯(cuò)誤的發(fā)生。因?yàn)楫?dāng)計(jì)算得出的小車左右輪的速度小于這個(gè)占空比時(shí),就會(huì)讓小車發(fā)生和預(yù)期不一樣的運(yùn)動(dòng)狀態(tài),例如停止、急轉(zhuǎn)彎等。只有當(dāng)速度高于這個(gè)占空比時(shí),才能按照程序所期望的形式運(yùn)動(dòng)。另一種運(yùn)動(dòng)狀況是轉(zhuǎn)彎過(guò)度,這是由于程序中的延時(shí)時(shí)間設(shè)置不合理,其用較大且不變的速度進(jìn)行轉(zhuǎn)彎,導(dǎo)致了轉(zhuǎn)彎過(guò)度,應(yīng)合理設(shè)置延時(shí)時(shí)間。
第四種錯(cuò)誤情況是數(shù)值增加速率過(guò)快,在調(diào)試過(guò)程中更改了延時(shí)函數(shù)后,會(huì)發(fā)現(xiàn)當(dāng)小車固定在一個(gè)位置時(shí),其速度會(huì)逐一增加?;蛘咴谝粋€(gè)范圍內(nèi)來(lái)回運(yùn)動(dòng)時(shí),小車的速度值就會(huì)跟原本計(jì)算的數(shù)值不同。這是由于所用的算法使速度在誤差仍然存在時(shí)一直增加,這是積分環(huán)節(jié)的效果,最終導(dǎo)致在停止或來(lái)回運(yùn)動(dòng)時(shí)可能會(huì)使數(shù)值不匹配,這里簡(jiǎn)單理解為減少誤差的速度小于因誤差存在速度值增加的速度。
關(guān)于這幾種錯(cuò)誤的解決,第一種錯(cuò)誤情況只需重新更改變量的表示范圍即可。第二種錯(cuò)誤主要針對(duì)算法代碼的修改。對(duì)于第三種錯(cuò)誤情況,第一種猜想是PWM產(chǎn)生的較小模擬電壓很多電機(jī)都無(wú)法做出反應(yīng),便只能修改程序。左右輪的速度是由距離偏差和左右偏差共同決定,并且大多情況速度大小與距離偏差關(guān)系很大,則可以考慮使小車在占空比為25%以下的情況時(shí),用最低的速度完成原地轉(zhuǎn)向即可。但是必須要考慮到停止程序的編寫和加入,因?yàn)楫?dāng)左右偏差很小時(shí),25%的占空比顯得過(guò)大,就會(huì)產(chǎn)生新的錯(cuò)誤,例如小車一直處于原地轉(zhuǎn)向狀態(tài),表現(xiàn)為原地打轉(zhuǎn)和左右擺頭,并且代碼編寫的難度也會(huì)加大。第二種猜想是認(rèn)為目前所用電機(jī)不能達(dá)到設(shè)計(jì)要求,所以很簡(jiǎn)單,嘗試更換轉(zhuǎn)矩更大的電機(jī)進(jìn)行實(shí)驗(yàn),但硬件的更換勢(shì)必會(huì)帶來(lái)成本的增加。第四種錯(cuò)誤情況可以添加新的程序,例如在達(dá)到規(guī)定距離后,強(qiáng)行將一些參數(shù)清零,并適當(dāng)調(diào)整積分環(huán)節(jié)的參數(shù)。
3.2" 自動(dòng)識(shí)別功能調(diào)試
RFID識(shí)別功能函數(shù)的編寫邏輯,先初始化相關(guān)的串口功能,再通過(guò)USART串口通信,使用相應(yīng)的中斷函數(shù)將RFID閱讀器讀到的數(shù)據(jù)存放到相應(yīng)列表之中,因?yàn)椴捎玫氖亲x卡號(hào)的模式,閱讀器發(fā)送過(guò)來(lái)的數(shù)據(jù),有12個(gè)十六進(jìn)制的數(shù)據(jù),前4個(gè)數(shù)據(jù)是閱讀器一些狀態(tài)數(shù)據(jù),最后一位是校驗(yàn)位,這幾位數(shù)據(jù)可以用來(lái)檢測(cè)是否成功傳入數(shù)據(jù)。其中中間的7位數(shù)據(jù),便是卡號(hào),也是要利用的數(shù)據(jù)。在具體的程序編寫方面,其實(shí)與市面上的一些例程大同小異,過(guò)程中也參考了本次RFID廠家提供的程序。在程序編寫完成后,進(jìn)行相應(yīng)接線并開始調(diào)試,調(diào)試的思路是把RFID所讀到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)通過(guò)OLED顯示屏模塊進(jìn)行展示。
首次嘗試時(shí),發(fā)現(xiàn)將卡片放置在閱讀器上后沒有任何反應(yīng),在確定接線無(wú)誤后,認(rèn)為是單片機(jī)的串口失靈,便重新編寫了一個(gè)串口收發(fā)程序,其功能是通過(guò)上位機(jī)將數(shù)據(jù)發(fā)給單片機(jī),單片機(jī)又重新將數(shù)據(jù)發(fā)回至上位機(jī)。通過(guò)測(cè)試,串口無(wú)誤。后面考慮是否是設(shè)置錯(cuò)誤,通過(guò)設(shè)置軟件進(jìn)行查詢,發(fā)現(xiàn)設(shè)置中忽略了波特率的設(shè)置,程序中為保持所用通信設(shè)備的一致,均采取了115 200的波特率,但是閱讀器的默認(rèn)設(shè)置是9 600,通過(guò)設(shè)置軟件更改設(shè)置即可。
第二次嘗試時(shí),發(fā)現(xiàn)的狀況是程序中所用于儲(chǔ)存待用數(shù)據(jù)列表為空,OLED顯示屏顯示列表第一個(gè)數(shù)據(jù)為D8,但是理論上是91。開始考慮應(yīng)該是程序問(wèn)題,便開始使用keil的調(diào)試功能進(jìn)行一步一步運(yùn)行,發(fā)現(xiàn)是在一個(gè)讀取卡號(hào)程序的編寫中出現(xiàn)了錯(cuò)誤。因?yàn)殚喿x器將讀到的12個(gè)數(shù)據(jù)分別發(fā)送給單片機(jī),就會(huì)產(chǎn)生12個(gè)中斷。剛開始編寫程序時(shí)沒有注意到這一點(diǎn),認(rèn)為是一次中斷將數(shù)據(jù)全部給出,現(xiàn)在回想這也是不可能的,因?yàn)橥ㄟ^(guò)參考手冊(cè)和程序的復(fù)查,一般的USART通信中的數(shù)據(jù)都在8位,個(gè)別情況會(huì)有所不同。原本的編寫邏輯會(huì)在第一次中斷產(chǎn)生后,就將所有的中間數(shù)據(jù)清除,例如存放數(shù)據(jù)的列表和用于記錄中斷次數(shù)的變量,該錯(cuò)誤導(dǎo)致無(wú)法進(jìn)入讀取卡號(hào)程序的后續(xù)判斷語(yǔ)句。通過(guò)借鑒與更改后,設(shè)計(jì)為只要記錄中斷次數(shù)的變量大于0,便讓其等待一段時(shí)間,將中斷全部執(zhí)行完成,再進(jìn)入程序的后續(xù)部分,燒錄后,現(xiàn)象與預(yù)期相同。
3.3" 調(diào)試其他說(shuō)明
在完成以上兩大主要功能的調(diào)試后,便是一些其他功能的調(diào)試,其中包括簡(jiǎn)單地緊急停車避障、按鍵互動(dòng),出現(xiàn)的問(wèn)題也就是程序的編寫錯(cuò)誤,進(jìn)行相應(yīng)地修改即可。緊急停車避障通過(guò)對(duì)模塊的調(diào)整來(lái)改變探測(cè)距離,保證其能停止即可。按鍵互動(dòng)方面只需要簡(jiǎn)單模擬支付環(huán)節(jié)即可,不涉及過(guò)于復(fù)雜的程序,也沒有加入通信,調(diào)試過(guò)程便不再贅述。
因?yàn)楸敬蔚恼{(diào)試階段直接用實(shí)物進(jìn)行調(diào)試修改,沒有進(jìn)行軟件仿真,雖然加大了工作量和成本增加的風(fēng)險(xiǎn),但是在實(shí)物調(diào)試完成后,本設(shè)計(jì)的實(shí)物也就相應(yīng)完成。采用模塊式的調(diào)試,即將各個(gè)功能分別調(diào)試后再整合,自動(dòng)跟隨功能調(diào)試使用到的實(shí)物設(shè)備為電機(jī)、驅(qū)動(dòng)模塊、超聲波模塊和OLED顯示屏模塊;自動(dòng)識(shí)別功能調(diào)試使用到的實(shí)物設(shè)備為RFID識(shí)別模塊和OLED顯示屏模塊,其他功能也是用已有硬件進(jìn)行調(diào)試,各個(gè)功能完成后就可以整合在一起成為最終的實(shí)物。再次強(qiáng)調(diào),實(shí)物的連接要確保接線沒有錯(cuò)誤,尤其是電源和接地的線路,如有不慎就會(huì)燒毀硬件,造成損失。雖然本次設(shè)計(jì)沒有采用仿真,但是仿真的優(yōu)勢(shì)與便利不可忽視,其可以有效安全的檢測(cè)電路設(shè)計(jì)和程序設(shè)計(jì)的合理性與可行性。圖6是設(shè)計(jì)的實(shí)物展示,是實(shí)驗(yàn)臺(tái)調(diào)試完畢后與驅(qū)動(dòng)部分的相連,其中驅(qū)動(dòng)部分是由直流減速電機(jī)、電源與電源轉(zhuǎn)換模塊、電機(jī)驅(qū)動(dòng)模塊組成,并由亞克力板進(jìn)行組裝。
4" 結(jié)束語(yǔ)
本設(shè)計(jì)采用STM32F103C8T6單片機(jī)作為系統(tǒng)的控制單元,并結(jié)合多種模塊使購(gòu)物車具有自動(dòng)跟隨和自動(dòng)識(shí)別等主要功能。自動(dòng)跟隨功能模塊采用單收單發(fā)超聲波模塊,相比一般的超聲波模塊,其實(shí)現(xiàn)功能原理更簡(jiǎn)單,不會(huì)出現(xiàn)因?yàn)椴捎枚鄠€(gè)收發(fā)一體式的超聲波模塊而產(chǎn)生干擾的問(wèn)題。自動(dòng)識(shí)別功能模塊采用RFID技術(shù),可以做到自動(dòng)快速精準(zhǔn)掃描識(shí)別,并且防止有個(gè)別用戶不經(jīng)過(guò)掃描將物品添加進(jìn)購(gòu)物車的偷盜情況。本次設(shè)計(jì)給出了超市智能購(gòu)物車的硬件設(shè)計(jì)、模塊選擇方案和相應(yīng)的接線方式,給出了系統(tǒng)軟件設(shè)計(jì)的大致思路和各個(gè)子程序的相關(guān)流程。調(diào)試方面直接采用實(shí)物調(diào)試,并且提出了主要功能模塊在實(shí)物調(diào)試中出現(xiàn)的問(wèn)題與解決方案。本次購(gòu)物車的設(shè)計(jì)不僅能夠解放用戶的雙手,更方便地進(jìn)行自助結(jié)算,而且為超市增加人氣,節(jié)省收銀流程中的成本,從而提高口碑與收益。
參考文獻(xiàn):
[1] 趙銀銀,栗杰,孫海寧.超市智能結(jié)賬購(gòu)物車[J].計(jì)算機(jī)產(chǎn)品與流通,2017(8):245.
[2] 楊佳,王英志.基于STM32F103單片機(jī)的智能購(gòu)物車系統(tǒng)設(shè)計(jì)[J].科技視界,2013(24):26-27.
[3] 成雷,鄭云天,李月華,等.基于STM32的超市智能購(gòu)物車[J].電子世界,2017(23):110-112.
[4] 陳樂鵬,譚曉東,曹江浩,等.超聲波定位系統(tǒng)智能跟隨小車設(shè)計(jì)[J].科技創(chuàng)新與應(yīng)用,2019(35):24-26.
[5] 景建斌,張?jiān)讫?基于DW1000的自動(dòng)跟隨購(gòu)物車系統(tǒng)[J].中國(guó)科技信息,2019(7):90-91,93.
[6] 張豐,李順霖,陳仁,等.基于自動(dòng)跟隨系統(tǒng)的智能行李箱[J].智能計(jì)算機(jī)與應(yīng)用,2019,9(3):156-158.
[7] 陸藺.超聲波三維定位與跟蹤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州:蘇州大學(xué),2010.
[8] MOBEEN S, MUHAMMAD F M, MAQSOOD A, et al. IoT-Based Smart Shopping Cart Using Radio Frequency Identification[J].IEEE Access,2020(8):68426-68438.