周旭華,伍懿美,周志強(qiáng),張凌峰
(河源職業(yè)技術(shù)學(xué)院,廣東河源, 517000)
隨著科技的發(fā)展,在車(chē)間、倉(cāng)庫(kù)、碼頭等場(chǎng)所出現(xiàn)了很多的物流小車(chē)代替人工工作,它們極大地節(jié)約了人力成本,而且還有工作效率高、準(zhǔn)確度高等特點(diǎn)。目前物流小車(chē)的導(dǎo)航方式主要有巡線的和雷達(dá),巡線導(dǎo)航的方式需要在它行走的路線上鋪上一條線(磁感線,有顏色的線等)給它導(dǎo)航,該工作需要較大的人力,且它轉(zhuǎn)向時(shí)會(huì)存在不穩(wěn)定的情況,而用OpenCV識(shí)別彩色線的導(dǎo)航方式,對(duì)光線的要求會(huì)比較苛刻;雷達(dá)導(dǎo)航不存在上述的問(wèn)題,但是雷達(dá)價(jià)格較貴。相比巡線導(dǎo)航和雷達(dá)導(dǎo)航方式,二維碼識(shí)別導(dǎo)航既可以降低成本又能大大提高導(dǎo)航的精度[1~2]。
二維碼識(shí)別物流小車(chē)主要由識(shí)別解碼層和運(yùn)動(dòng)控制層兩個(gè)部分組成,識(shí)別解碼層由攝像頭、OpenCV、樹(shù)莓派和降壓模塊組成,運(yùn)動(dòng)控制層由MEGA2560板、電機(jī)驅(qū)動(dòng)板和編碼電機(jī)組成。識(shí)別解碼層通過(guò)攝像頭采集二維碼數(shù)據(jù),然后把數(shù)據(jù)傳送到樹(shù)莓派上,經(jīng)過(guò)OpenCV分析處理,并信息發(fā)送到運(yùn)動(dòng)控制層;運(yùn)動(dòng)控制層的MEGA2560板接收到樹(shù)莓派發(fā)送來(lái)的信息,并把信號(hào)傳輸給電機(jī)驅(qū)動(dòng)板來(lái)控制物流小車(chē),若攝像頭沒(méi)有采集到預(yù)設(shè)的二維碼信息,那么電機(jī)就保持不動(dòng)[2~3]。
二維碼識(shí)別物流小車(chē)設(shè)計(jì)主要分為硬件設(shè)計(jì)和軟件設(shè)計(jì),硬件設(shè)計(jì)主要包括樹(shù)莓派3b+與USB攝像頭和MEGA2560板的連接設(shè)計(jì)、MEGA2560板與電機(jī)驅(qū)動(dòng)板和編碼器的連接設(shè)計(jì)、電機(jī)驅(qū)動(dòng)板和電機(jī)的連接設(shè)計(jì)等;軟件設(shè)計(jì)包括樹(shù)莓派鏡像的下載、OpenCV視覺(jué)庫(kù)的安裝和使用、Arduino控制程序等。其系統(tǒng)結(jié)構(gòu)框圖如圖1所示。

圖1 系統(tǒng)結(jié)構(gòu)框圖
物流小車(chē)的硬件主要包括樹(shù)莓派3b+、免驅(qū)USB攝像頭、MEGA2560控制板、降壓模塊、12V鋰電池、直流電機(jī)驅(qū)動(dòng)板和編碼器電機(jī)等[4~6]。硬件模擬結(jié)構(gòu)設(shè)計(jì)圖如圖2所示。

圖2 小車(chē)硬件模型結(jié)構(gòu)設(shè)計(jì)圖
2.2.1 電機(jī)驅(qū)動(dòng)模塊的設(shè)計(jì)
電機(jī)驅(qū)動(dòng)采用兩塊L298N電機(jī)驅(qū)動(dòng)板,可同時(shí)驅(qū)動(dòng)四個(gè)直流電機(jī),單路有7A大功率,光耦隔離輸入信號(hào),帶有欠壓保護(hù),穩(wěn)定可靠。驅(qū)動(dòng)板上的+5V引腳可以接5V或者3.3V,為信號(hào)端提供電源,ENA1和ENA2為電機(jī)使能端,可接MEGA2560驅(qū)動(dòng)板上的PWM來(lái)調(diào)節(jié)電機(jī)的轉(zhuǎn)速。連接電路圖如圖3和圖4所示。

圖3 電機(jī)驅(qū)動(dòng)板與MEGA2560板和左側(cè)電機(jī)的連接電路圖

圖4 電機(jī)驅(qū)動(dòng)板與MEGA2560板和右側(cè)電機(jī)的連接電路圖
其工作的原理:L298N電機(jī)驅(qū)動(dòng)板接收到樹(shù)莓派傳輸來(lái)的指令后向電機(jī)驅(qū)動(dòng)板發(fā)送信號(hào),電機(jī)驅(qū)動(dòng)板可通過(guò)MEGA2560板上的PWM端口單獨(dú)控制左右電機(jī)的速度。電機(jī)驅(qū)動(dòng)板的IN1、IN2和ENA1控制左電機(jī)的正反轉(zhuǎn)和速度,IN3、IN4和ENA2控制右電機(jī)的正反轉(zhuǎn)和速度。
2.2.2 電源模塊的設(shè)計(jì)
要想物流小車(chē)正常穩(wěn)定地行駛,電源模塊是整個(gè)硬件系統(tǒng)中必不可缺的一部分。由于每個(gè)硬件系統(tǒng)的電壓需求不一樣,為了滿足各個(gè)硬件系統(tǒng)的用電要求,本文采用兩個(gè)規(guī)格為12.6V、1500mAh的大容量可充電電池。在使用時(shí),給電池充滿電時(shí)電壓能達(dá)到12.6V。連接電路圖圖如圖5所示。

圖5 Arduino UNO與各模塊連接圖
2.2.3 底盤(pán)控制模塊的設(shè)計(jì)
底盤(pán)的控制平臺(tái)采用Arduino驅(qū)動(dòng)板為核心,Ardunio是一種開(kāi)源的電子工具,ArduinoIDE里開(kāi)源的庫(kù)文件能直接被調(diào)用,容易上手且靈活性較好。MEGA2560兼容arduino開(kāi)發(fā)核心處理器是Atmega2560,同時(shí)具有54路數(shù)字輸入/輸出口(其中15路可作為PWM輸出),16路模擬輸入,一個(gè)16MHz晶體振蕩器,一個(gè)USB口,一個(gè)電源插座,一個(gè)ICSP接口和一個(gè)復(fù)位按鍵。它板通過(guò)USB線與樹(shù)莓派連接,接收樹(shù)莓派傳來(lái)的指令,以此給予電機(jī)驅(qū)動(dòng)板相連接的端口信號(hào),帶動(dòng)電機(jī)驅(qū)動(dòng)。
軟件系統(tǒng)是官方的melodic18.04鏡像,需要按照OpenCV 3.4[7~8]。按照系統(tǒng)的功能要求,軟件整體設(shè)計(jì)流程圖如圖6所示。

圖6 軟件設(shè)計(jì)流程圖
二維碼采集由連接在樹(shù)莓派上的USB攝像頭和讀取攝像頭畫(huà)面的驅(qū)動(dòng)程序兩部分組成,主要用來(lái)采集路線的二維碼并傳送到樹(shù)莓派上,再由計(jì)算機(jī)視覺(jué)庫(kù)OpenCV里的圖像處理算法分析處理。部分源程序如下所示:


運(yùn)動(dòng)控制層由小車(chē)底盤(pán)、MEGA2560板、L298N電機(jī)驅(qū)動(dòng)板和運(yùn)動(dòng)層控制程序組成,主要負(fù)責(zé)接收樹(shù)莓傳送來(lái)的指令控制小車(chē)的行駛,利用左右輪的正反轉(zhuǎn)來(lái)實(shí)現(xiàn)轉(zhuǎn)彎。底盤(pán)控制程序是用Arduino寫(xiě)的,通過(guò)MEGA2560和樹(shù)莓派的通訊來(lái)實(shí)現(xiàn)信息的傳遞,在編寫(xiě)程序時(shí)需要先定義管腳,改變高低電平來(lái)改變電機(jī)的正反轉(zhuǎn)和停止,再通過(guò)讀取樹(shù)莓派發(fā)送的串口信息來(lái)判斷是否對(duì)電機(jī)的運(yùn)動(dòng)狀態(tài)進(jìn)行改變部分源程序如下所示:


測(cè)試前先通過(guò)官網(wǎng)下載的鏡像燒錄到8GB以上的內(nèi)存卡上,再插入樹(shù)莓派上,進(jìn)行OpenCV,Arduino及所需的功能包下載和安裝(官方的鏡像一般只有Python),并進(jìn)行編程和通信。測(cè)試時(shí),先將小車(chē)放在盒子架空,插上電源,然后通過(guò)電腦遠(yuǎn)程登錄樹(shù)莓派,在電腦上控制樹(shù)莓派運(yùn)行Python程序,觀察攝像頭是否正常,再把打印出來(lái)的二維碼放到攝像頭前進(jìn)行識(shí)別,識(shí)別成功后并發(fā)送時(shí)再給電機(jī)插上電源,觀察電機(jī)是否能夠根據(jù)二維碼內(nèi)容實(shí)現(xiàn)運(yùn)動(dòng),等它達(dá)到想要的效果之后,再把它放到一個(gè)較大的空間上實(shí)現(xiàn)最終的效果。測(cè)試圖如圖7所示。

圖7 測(cè)試環(huán)境圖
通過(guò)調(diào)試,小車(chē)能根據(jù)二維碼信息行駛,攝像頭能夠把采集的二維碼進(jìn)行識(shí)別解析并發(fā)送到MEGA2560板,再通過(guò)MEGA2560板和L298N驅(qū)動(dòng)板控制小車(chē)運(yùn)動(dòng),把二維碼內(nèi)容解析打印如圖8所示。

圖8 攝像頭采集視圖
本文設(shè)計(jì)的物流小車(chē)以樹(shù)莓派為核心,利用MEGA2560板、USB攝像頭、L298N電機(jī)驅(qū)動(dòng)模塊,可以實(shí)現(xiàn)小車(chē)通過(guò)攝像頭采集二維碼信息并利用樹(shù)莓派控制小車(chē)行走。