花 勇,岳 春
(江蘇食品藥品職業(yè)技術(shù)學(xué)院,江蘇 淮安 223003)
基于Arduino的智能遙控小車設(shè)計(jì)
花 勇,岳 春
(江蘇食品藥品職業(yè)技術(shù)學(xué)院,江蘇 淮安 223003)
智能遙控小車作為運(yùn)輸機(jī)器人研究的一個(gè)重要組成部分,在貨物的搬運(yùn)分揀中被廣泛的使用。本次設(shè)計(jì)以Arduino為控制單元,通過藍(lán)牙模塊發(fā)出控制指令,結(jié)合L298N電機(jī)驅(qū)動芯片、紅外光電傳感器模塊、超聲波發(fā)射與接收模塊等構(gòu)成外圍擴(kuò)展電路,實(shí)現(xiàn)了智能小車的自動避障、自動循跡等功能。對智能小車的控制與開發(fā)進(jìn)行了有效的嘗試,具有一定的參考價(jià)值。
Arduino; 智能遙控;避障;循跡
Αrduino作為一款全球知名的開源硬件,全球有數(shù)以萬計(jì)的開發(fā)者使用Αrduino開發(fā)項(xiàng)目和電子產(chǎn)品[1]。利用Αrduino開發(fā)的遙控智能小車具有體積小、成本低、可在多種設(shè)備上遠(yuǎn)程控制等特點(diǎn)。其在飼料生產(chǎn)企業(yè)的袋包碼垛倉儲、化肥廠顆粒粉體袋包碼垛,印刷制品運(yùn)輸以及物流企業(yè)中的貨物的搬運(yùn)分揀中被廣泛使用。本文以Αrduino UNO開發(fā)板作為控制單元,手機(jī)端傳遞控制指令給藍(lán)牙穿透模塊,通過超聲波模塊,紅外線循跡模塊采集的信息配合控制程序?qū)崿F(xiàn)一種具有無線遙控、避障、自動循跡等多功能智能小車。
1.1 系統(tǒng)組成
智能遙控小車控制系統(tǒng)硬件由Αrduino UNO開發(fā)板、HC05藍(lán)牙穿透模塊,超聲波傳感器、紅外循跡傳感器和直流電機(jī)及驅(qū)動電路組成[2]。
1.2 智能小車設(shè)計(jì)方案
基于Αrduino的智能小車通過無線串口實(shí)現(xiàn)對小車的無線遙控,通過相應(yīng)的傳感器和控制程序能夠?qū)崿F(xiàn)以下功能:
(1)利用藍(lán)牙使小車可以遠(yuǎn)程控制小車運(yùn)行方向和速度。(2)利用超聲波傳感器探測前方的障礙物,從而實(shí)現(xiàn)自動避障的功能。(3)利用紅外循跡傳感器探測下方的軌跡線,從而實(shí)現(xiàn)自動循跡的功能。(4)安裝蜂鳴器和三色LED燈,實(shí)現(xiàn)報(bào)警和功能指示的作用。
智能遙控小車程序編寫采用了模塊化的結(jié)構(gòu)設(shè)計(jì)方法。小車Αrduino程序的基本結(jié)構(gòu)由setup()、loop()、LEDBlin()、bizhang()和Line()五個(gè)函數(shù)構(gòu)成。Αrduino通電后Setup()函數(shù)中的程序只執(zhí)行一次,用于Αrduino的初始化設(shè)置,如I/O口的初始化操作和速度狀態(tài)的定義。Loop()函數(shù)完成程序的主要功能和子程序的調(diào)用,如小車的藍(lán)牙遙控、自動避障和循跡等函數(shù)的調(diào)用。LEDBlin()函數(shù)用來定義WS2812B RGB三色LED閃爍和蜂鳴器發(fā)聲,bizhang()函數(shù)實(shí)現(xiàn)小車的自動避障功能,Line()函數(shù)實(shí)現(xiàn)小車的循跡功能,而yaokong()函數(shù)實(shí)現(xiàn)小車的手動遙控功能,通過手機(jī)客戶端的SPP藍(lán)牙串口軟件,在名稱文本框內(nèi)輸入要傳送的字符,如字符Α、B、C用來設(shè)置小車運(yùn)動的工作模式(手動遙控、自動避障、循跡運(yùn)行)。字符R1、R2、R3用來設(shè)置小車的移動速度,、、、分別用來控制小車的前進(jìn)、后退、左轉(zhuǎn)、和右轉(zhuǎn)。
2.1 手動遙控
避障程序主要由主函數(shù)Loop()和電機(jī)L298N驅(qū)動函數(shù)來實(shí)現(xiàn)。首先在函數(shù)Loop()中通過函數(shù)BT_COM()讀取藍(lán)牙串口的數(shù)據(jù)[3],通過switch()多選擇分支函數(shù)比對接收字符對應(yīng)的電機(jī)驅(qū)動函數(shù),如符號“↑”則調(diào)用Forward()函數(shù)小車前進(jìn),符號“↓”調(diào)用Backup()函數(shù)小車后退,“→”調(diào)用Turnright()函數(shù)小車右轉(zhuǎn),“←”調(diào)用Turnleft()函數(shù)小車左轉(zhuǎn),實(shí)現(xiàn)小車通過無線藍(lán)牙的遙控控制。
2.2 避障代碼
避障程序主要由超聲波測距函數(shù)Distance(),電機(jī)L298N驅(qū)動函數(shù)和避障模式函數(shù)BiZhang()等構(gòu)成[4]。首先在主程序中選擇自動避障模式B,則調(diào)用測距模塊函數(shù)Distance()通過Triq引腳輸送一個(gè)大于10us的高電平,然后檢測Echo引腳反饋回來的高電平持續(xù)時(shí)間,通過公式:距離=344m/s*高電/2將時(shí)間轉(zhuǎn)換成距離。然后再調(diào)用BiZhang()函數(shù)來判斷檢測的距離:如果在20mm<us<40mm范圍內(nèi)小車左轉(zhuǎn),us>40mm小車直行,us<20mm小車后退。
2.3 循跡代碼
循跡程序主要由循跡函數(shù)Line()和電機(jī)L298N驅(qū)動函數(shù)等構(gòu)成。首先在主程序中選擇自動避障模式C,當(dāng)Line()函數(shù)返回值為0時(shí)表示小車沒有在軌跡上,小車調(diào)用電機(jī)控制函數(shù)Forward()控制電機(jī)繼續(xù)前進(jìn),當(dāng)Line()函數(shù)返回值為1時(shí)表示小車在軌跡的右側(cè),小車調(diào)用電機(jī)控制函數(shù)Turnright()函數(shù)控制電機(jī)右轉(zhuǎn),同理當(dāng)Line()函數(shù)返回值為2時(shí),小車調(diào)用電機(jī)控制函數(shù)Turnleft()函數(shù)控制電機(jī)左轉(zhuǎn),當(dāng)Line()函數(shù)返回值為3時(shí)表示小車在軌跡中間,小車調(diào)用電機(jī)控制函數(shù)Forward()控制電機(jī)繼續(xù)前進(jìn)。
2.4 實(shí)驗(yàn)研究
經(jīng)實(shí)驗(yàn)測試小車成功地實(shí)現(xiàn)了無線藍(lán)牙遙控功能,能夠?qū)崿F(xiàn)三種控制模式的切換。在前方遇到障礙物時(shí)能夠自動的避障,輕松的避開障礙物,達(dá)到了預(yù)定的目標(biāo),效果如圖1所示。
借助Αrduino資源豐富的開源硬件平臺和高效率的Αrduino類庫函數(shù)實(shí)現(xiàn)了對智能遙控小車控制系統(tǒng)的設(shè)計(jì)。實(shí)驗(yàn)結(jié)果表明小車能夠很好地實(shí)現(xiàn)自動的避障和循跡的功能,通過HC-05藍(lán)牙模塊還可以方便地實(shí)現(xiàn)無線遙控和控制模式的切換。基于Αrduino智能小車的控制系統(tǒng)的研究將有助于把Αrduino引入到智能產(chǎn)品的設(shè)計(jì)當(dāng)中去,具有一定的實(shí)用價(jià)值,為后續(xù)開發(fā)工業(yè)智能貨物運(yùn)輸機(jī)器人進(jìn)行了一次有效的嘗試。
[1]陳呂洲.Arduino程序設(shè)計(jì)基礎(chǔ)[M].北京∶北京航空航天大學(xué)出版社,2015.
[2]宋楠,韓廣義.Arduino開發(fā)從零開始學(xué)∶學(xué)電子的都玩這個(gè)[M].北京∶清華大學(xué)出版社,2009.
[3]聶茹.基于藍(lán)牙遙控的多功能智能小車設(shè)計(jì)[J].自動化與儀器儀表,2016(04).
[4]戈惠梅.基于Arduino的智能小車避障系統(tǒng)的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2014(06).
10.16640/j.cnki.37-1222/t.2016.19.084
花勇(1979-),江蘇淮安人,碩士研究生,講師,主要從事機(jī)電一體化設(shè)計(jì)研究。