孫銘澤 李勝琴 康家豪 王 杰
(東北林業(yè)大學(xué)交通學(xué)院,黑龍江 哈爾濱 150040)
隨著交通發(fā)展,人們的出行頻率變得更加頻繁,行李箱的使用需求量也隨之增加,人們對于行李箱的使用性能有了更高層次的要求,在智能控制技術(shù)的支撐下,行李箱的功能不斷更新,出現(xiàn)了形式多樣的智能行李箱。智能行李箱利用UWB定位模塊實時檢測行李箱的位置[1]、利用STM32單片機(jī)做控制單元且擁有藍(lán)牙通信[2]和GPS高精度定位系統(tǒng),它還利用NB-IoT[3]通信模塊為用戶提供全透明的數(shù)據(jù)傳輸模式,用戶能夠依托微信小程序平臺實時了解行李箱內(nèi)部的環(huán)境參數(shù)并通過手機(jī)客戶端頁面上的相關(guān)操作對行李箱進(jìn)行控制;除此之外,還通過結(jié)合PID、PWM算法控制行李箱驅(qū)動輪的轉(zhuǎn)動方向和速度等方式實現(xiàn)行李箱的智能跟隨及避障功能,但是智能行李箱都不具有穩(wěn)速上下坡的功能,這容易導(dǎo)致行李箱在上下坡時因速度突變而發(fā)生傾倒,不能準(zhǔn)確地跟隨避障,該文所述的基于Arduino設(shè)計的一種能夠穩(wěn)速上下坡的自動避障跟隨行李箱能夠利用超聲波模塊、轉(zhuǎn)速傳感器和控制模塊檢形成閉環(huán)控制系統(tǒng),檢測箱體運動狀態(tài)的變化并控制驅(qū)動電機(jī)的轉(zhuǎn)速,使行李箱運行更加平穩(wěn),跟隨避障功能更加精準(zhǔn)。
該文設(shè)計的能夠穩(wěn)速上下坡的自動避障行李箱由箱體[4]、電源模塊、超聲波模塊、控制模塊和驅(qū)動模塊組成,總體結(jié)構(gòu)圖如圖1所示。電源模塊安裝在箱體內(nèi)部,且與驅(qū)動電機(jī)相連,可以給箱體內(nèi)各個模塊以及部件供電;超聲波模塊包括超聲波發(fā)生器和超聲波接收器,超聲波接受器安裝在箱體外的側(cè)壁上,超聲波發(fā)送器持于行人手中[5];控制模塊包括主控板和轉(zhuǎn)速傳感器,轉(zhuǎn)速傳感器與驅(qū)動電機(jī)相連,可以檢測驅(qū)動電機(jī)的轉(zhuǎn)速[6],主控板利用差速驅(qū)動原理來控制驅(qū)動電機(jī)的轉(zhuǎn)速,從而帶動驅(qū)動輪移動和轉(zhuǎn)向;驅(qū)動模塊包括驅(qū)動輪、驅(qū)動板和驅(qū)動電機(jī),驅(qū)動輪安裝在箱體外底部,且與驅(qū)動電機(jī)相連,可以驅(qū)動箱體移動,驅(qū)動電機(jī)與驅(qū)動板的輸出端相連,可以為行李箱移動提供動力。
圖1 穩(wěn)速上下坡自動避障行李箱的結(jié)構(gòu)示意圖
該文采用雙超聲波傳感器實現(xiàn)自動跟隨及避障功能,由于單一超聲波傳感器存在跟蹤準(zhǔn)確度不高、靈活性不好、跟蹤距離短以及跟蹤效果差等問題,因此該文選用雙超聲波跟隨模塊有效地避免了上述問題,實現(xiàn)了智能行李箱的自動避障跟隨功能,該文選用的超聲波模塊參數(shù)見表1。超聲波發(fā)送模塊通電后,超聲波發(fā)送模塊上的 LED 燈會有頻率的閃爍,這就證明發(fā)送超聲波模塊已經(jīng)在正常工作了。當(dāng)超聲波發(fā)送模塊通上電之后,就會與超聲波接收模塊對準(zhǔn),超聲波接收模塊的 LED燈也會有頻率的閃爍。證明此時超聲波接收模塊已經(jīng)可以與超聲波發(fā)送模塊進(jìn)行通信,并接收超聲波發(fā)送模塊發(fā)射的超聲波,超聲波接收模塊上接收到的數(shù)據(jù)就是超聲波發(fā)送模塊與超聲波接收模塊之間的距離數(shù)據(jù)。假設(shè)超聲波發(fā)送模塊與左右接收模塊之間的距離分別為L1和L2。行李箱在行駛時不斷判斷L1和L2值的大小,并設(shè)定1個“距離死區(qū)”,其目的在于當(dāng)2個距離值在一個小的可接受值范圍時,行李箱可以停止行駛,在一定程度上避免行李箱出現(xiàn)抖動,并根據(jù)計算出的左、右兩側(cè)傳感器的距離差△L來控制電機(jī)的轉(zhuǎn)動。
表1 超聲波收發(fā)模塊
2.1.1 設(shè)計原理
為了實現(xiàn)自動跟隨及避障功能,在行李箱左前側(cè)和右前側(cè)的位置分別放置1個超聲波接收模塊,并設(shè)計一款超聲波發(fā)送裝置,跟隨過程中超聲波收發(fā)模塊的實物如圖2所示,通信過程如圖3所示。發(fā)送裝置為跟蹤目標(biāo),行李箱上2個超聲波接收模塊接收來自超聲波發(fā)送模塊發(fā)射的超聲波,從而判斷跟隨距離;再通過串口將超聲波發(fā)送與接收模塊之間的距離發(fā)給 Arduino[7]單片機(jī)主控板,單片機(jī)就可以根據(jù)與目標(biāo)的距離來判斷智能行李箱的姿態(tài),并通過驅(qū)動直流電機(jī)達(dá)到自動跟蹤的目的。
圖2 超聲波收發(fā)模塊
圖3 超聲波收發(fā)模塊通信過程
2.1.2 運行過程
在行李箱運行的整個過程中,利用遙控裝置切換自動跟隨以及避障行走模式,通過超聲波接收器和發(fā)射器的相互配合以及差速驅(qū)動來控制驅(qū)動電機(jī)的轉(zhuǎn)速,根據(jù)2個驅(qū)動輪轉(zhuǎn)速的快慢調(diào)整行李箱的運動方向。當(dāng)單片機(jī)檢測紅外接收裝置接收的遙控器發(fā)送的指令時,會做出自動跟隨或避障行走模式的判斷,如果指令為“避障行走”那么遙控器會控制行李箱的運動;當(dāng)遙控器的指令為“前進(jìn)”,那么左、右兩側(cè)電機(jī)都向前轉(zhuǎn)動;當(dāng)遙控器的指令為“后退”,那么左、右兩側(cè)電機(jī)都向后轉(zhuǎn)動;當(dāng)遙控器的指令為“左轉(zhuǎn)”,那么左側(cè)電機(jī)向前轉(zhuǎn)動,右側(cè)電機(jī)向后轉(zhuǎn)動;當(dāng)遙控器的指令為“右轉(zhuǎn)”,那么左側(cè)電機(jī)向后轉(zhuǎn)動,右側(cè)電機(jī)向前轉(zhuǎn)動。
如果指令為“自動跟隨”,那么單片機(jī)檢測2個超聲波接收模塊回傳數(shù)據(jù)的幀頭,當(dāng)出現(xiàn)距離數(shù)據(jù)的幀頭時,讀取高八位數(shù)據(jù)存儲字節(jié)和低八位數(shù)據(jù)存儲字節(jié),并按照串口通信協(xié)議解析2個接收模塊的距離值,判斷2個接收模塊的距離值是否在4 cm~400 cm,如果在該數(shù)據(jù)之外都為無效數(shù)據(jù),那么左、右兩側(cè)電機(jī)都停止轉(zhuǎn)動;如果距離值不在4 cm~400 cm,那么該數(shù)據(jù)為有效數(shù)據(jù)。
距離值L1、L2都為有效值時,計算左、右兩側(cè)傳感器的距離差△L,并判斷△L是否在“距離死區(qū)”,當(dāng)△L在“距離死區(qū)”時,行李箱停止前進(jìn);當(dāng)△L不在“距離死區(qū)”時, 判斷△L的值,如果△L>0,那么控制左側(cè)電機(jī)后退,右側(cè)電機(jī)前進(jìn),最終行李箱向右轉(zhuǎn),如果△L<0,那么控制左側(cè)電機(jī)前進(jìn),右側(cè)電機(jī)后退,最終行李箱向左轉(zhuǎn)。
為了實現(xiàn)穩(wěn)速功能,要根據(jù)行李箱配重、路面坡度以及附著系數(shù)計算行李箱的最佳運行速度,在程序中提前為電機(jī)設(shè)置好轉(zhuǎn)速變化區(qū)間,驅(qū)動電機(jī)開始工作后,轉(zhuǎn)速傳感器開始對驅(qū)動電機(jī)的轉(zhuǎn)速進(jìn)行檢測,并將檢測到的轉(zhuǎn)速信息反饋給主控板;當(dāng)行李箱在平坦路面上行駛時,驅(qū)動電機(jī)按照預(yù)先設(shè)定好的轉(zhuǎn)速進(jìn)行運轉(zhuǎn),當(dāng)行李箱處于下坡狀態(tài)時,行李箱會在重力的作用下加速運動,此時轉(zhuǎn)速傳感器檢測到加速信號,主控板根據(jù)轉(zhuǎn)速傳感器反饋的信號對驅(qū)動電機(jī)的轉(zhuǎn)速做出減速調(diào)整;當(dāng)行李箱上坡時,行李箱由于克服重力作用,驅(qū)動電機(jī)轉(zhuǎn)速變慢,主控板發(fā)出指令,使驅(qū)動電機(jī)轉(zhuǎn)速加快,整個行李箱始終以設(shè)定好的初始移動速度前進(jìn),進(jìn)而達(dá)到行李箱穩(wěn)速上下坡的目的。
根據(jù)行李箱所能夠?qū)崿F(xiàn)的自動跟隨、避障以及穩(wěn)速上下坡的功能,采用Arduino 單片機(jī)作為主控板,利用C語言編寫程序,并利用PID[8]進(jìn)行控制,程序流程圖如圖4、圖5所示。
圖4 穩(wěn)速控制程序流程圖
圖5 自動跟隨避障原理程序流程圖
行李箱穩(wěn)速行駛功能的流程如下:轉(zhuǎn)速傳感器實時監(jiān)測驅(qū)動電機(jī)的轉(zhuǎn)速,檢測驅(qū)動電機(jī)的轉(zhuǎn)速是否發(fā)生變化,當(dāng)行李箱上下坡時轉(zhuǎn)速會發(fā)生變化,此時單片機(jī)控制驅(qū)動電機(jī)的轉(zhuǎn)速做出加快或減慢的調(diào)整,保證行李箱的穩(wěn)速運行。
自動跟隨避障功能的原理程序流程如下:通過遙控裝置切換自動跟隨以及避障行走模式,如果是避障行走模式,那么通過遙控裝置的“前進(jìn)”、“后退”、“左轉(zhuǎn)”以及“右轉(zhuǎn)”命令控制行李箱的運動;如果是自動跟隨模式,那么需要超聲波收發(fā)模塊的配合作用,先判斷判2個接收模塊的距離值是否在4 cm~400 cm,如果是,就繼續(xù)運行,并判斷不在距離死區(qū)的情況下左、右兩側(cè)傳感器的距離差△L是否大于0,根據(jù)差速轉(zhuǎn)向原理,當(dāng)△L>0時,行李箱右轉(zhuǎn),當(dāng)△L<0時,行李箱左轉(zhuǎn)。
基于Arduino設(shè)計的一種穩(wěn)速上下坡的自動跟隨避障行李箱以Arduino 單片機(jī)主控板為控制核心,通過雙超聲波跟隨模塊來實現(xiàn)智能行李箱的自動避障跟隨功能,雙超聲波模塊的使用能夠讓行李箱的避障跟隨路線更加精準(zhǔn)合理,且操作操作較簡單,技術(shù)容易掌握,可行性高。除此之外,結(jié)合轉(zhuǎn)速傳感器檢測驅(qū)動電機(jī)的轉(zhuǎn)速,并有控制中心控制電機(jī)轉(zhuǎn)速,使行李箱平穩(wěn)運行,有效避免行李箱在上下坡時因突然加速或減速而造成箱體傾倒,進(jìn)一步擴(kuò)展了行李箱的功能,滿足人們的出行需求,提升人們的出行質(zhì)量。