魯冬梅 陳睿
摘要 本文介紹了一種移動(dòng)機(jī)器人遙控控制系統(tǒng)。該系統(tǒng)能夠?qū)崿F(xiàn)用手持Android移動(dòng)終端遙控機(jī)器人的功能。介紹了系統(tǒng)整體硬件設(shè)計(jì)方案。系統(tǒng)采用了兩套Arduino控制板分別控制機(jī)械臂和移動(dòng)平臺(tái),采用Android系統(tǒng)作為接收端系統(tǒng)。通訊方案采用藍(lán)牙轉(zhuǎn)串口方案。經(jīng)測(cè)試表明,本方案能夠?qū)崿F(xiàn)無(wú)遙控功能。
【關(guān)鍵詞】Arduino Android 藍(lán)牙 控制系統(tǒng)
信息技術(shù)的發(fā)展促使機(jī)器人更加智能化。我們生產(chǎn)、生活中機(jī)器人替代人工的應(yīng)用也越來(lái)越多。因此對(duì)機(jī)器人的研究具有重要的應(yīng)用價(jià)值。機(jī)器人對(duì)發(fā)展我國(guó)工業(yè)的發(fā)展起著至關(guān)重要作用,移動(dòng)機(jī)器人將成為未來(lái)數(shù)字化信息化社會(huì)的關(guān)鍵角色隨著移動(dòng)機(jī)器人的發(fā)展,其中大部分具有移動(dòng)功能的機(jī)器人都要使用無(wú)線控制。
Arduino是開(kāi)源的電子硬件開(kāi)發(fā)平臺(tái),提供了豐富的硬件模塊和軟件庫(kù),本文中傳感器驅(qū)動(dòng)程序就是直接調(diào)用函數(shù)庫(kù)來(lái)實(shí)現(xiàn)的。Android系統(tǒng)是Google公司開(kāi)發(fā)的一個(gè)開(kāi)源的移動(dòng)終端操作系統(tǒng)。它同時(shí)也具有開(kāi)放、豐富的軟件庫(kù)等特點(diǎn),利用這些優(yōu)點(diǎn)可以實(shí)現(xiàn)移動(dòng)平臺(tái)端點(diǎn)快速開(kāi)發(fā),本文中的遙控端的程序就是在此平臺(tái)完成對(duì)。同時(shí)利用這兩個(gè)開(kāi)放的軟件、硬件開(kāi)發(fā)平臺(tái),可以快速開(kāi)發(fā)出所需的軟硬件系統(tǒng),驗(yàn)證設(shè)計(jì)思路的正確與否。在國(guó)內(nèi),同時(shí)利用這兩個(gè)系統(tǒng)開(kāi)發(fā)的案例并不多。本文介紹了一種藍(lán)牙控制機(jī)器人的控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
1 系統(tǒng)硬件設(shè)計(jì)
如圖1所示,控制系統(tǒng)采用Arduino UNO作為主控板,利用L298N作為電機(jī)驅(qū)動(dòng)電路板,產(chǎn)生驅(qū)動(dòng)電流帶動(dòng)兩個(gè)電機(jī)正/反轉(zhuǎn)動(dòng),電機(jī)通過(guò)帶動(dòng)齒輪減速器,減速器直接帶動(dòng)驅(qū)動(dòng)輪轉(zhuǎn)動(dòng)。驅(qū)動(dòng)輪帶動(dòng)從動(dòng)輪和履帶轉(zhuǎn)動(dòng)。通過(guò)控制兩個(gè)履帶正轉(zhuǎn)、反轉(zhuǎn),使機(jī)器人產(chǎn)生前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)四個(gè)動(dòng)作。另外配有一個(gè)機(jī)械手臂,總共5自由度。這個(gè)機(jī)械臂由另外一塊Arduino UNO板和拓展版提供驅(qū)動(dòng)。藍(lán)牙模塊由第一塊控制板控制,所有控制信號(hào)由藍(lán)牙模塊接收。
裝有Android系統(tǒng)具有藍(lán)牙功能的設(shè)備一套,編有相應(yīng)軟件用于產(chǎn)生控制信號(hào)和收集傳感器信息。
1.1 Arduino主控板
控制板核心是AVR單片機(jī)。該單片機(jī)有豐富的功能,可以實(shí)現(xiàn)數(shù)字模擬信號(hào)的處理。Arduino是一個(gè)完整開(kāi)源硬件開(kāi)發(fā)環(huán)境,所以其自身就具有一套完整的程序開(kāi)發(fā)環(huán)境軟件和配套資源。
考慮到ArduinoUNO的輸入輸出口有限,而所需控制的舵機(jī)、傳感器很多。因此本文中的機(jī)器人采用兩塊Arduino UNO主控板分別控制機(jī)械臂和底盤(pán)。其中A板主要用于機(jī)械臂的舵機(jī)控制及機(jī)械臂上傳感器信號(hào)處理。B板主要用于底盤(pán)控制、遠(yuǎn)程通信及相應(yīng)傳感器信號(hào)的處理,轉(zhuǎn)發(fā)A上的信息及收到的指令。這樣設(shè)計(jì)可以降低每個(gè)控制板供電負(fù)擔(dān)、及信號(hào)處理的負(fù)擔(dān)。
1.2 供電電路設(shè)計(jì)
機(jī)器人驅(qū)動(dòng)使用了12V電源,主要考慮到帶動(dòng)履帶所需要的扭矩比較大,相對(duì)5V而言,12V能提供充沛的動(dòng)力。但是由于其他控制電路電路所使用的電源為5V,采用7805電源電路降壓提供了5V電源。機(jī)器人上面的傳感器使用5V電源。
1.3 控制板之間通信
因?yàn)楸疚脑O(shè)計(jì)方案采用了兩塊Arduino,那么控制板之間必須有信息交換。但是所采用的Arduino UNO控制板只提供有1個(gè)串口,但是要實(shí)現(xiàn)對(duì)信號(hào)的轉(zhuǎn)發(fā)則需要兩個(gè)串口。本文采用了軟件虛擬的方法,把普通的輸入輸出口模擬成串口,實(shí)現(xiàn)信號(hào)的轉(zhuǎn)發(fā)功能。這樣就實(shí)現(xiàn)了信號(hào)的交換。
1.4 藍(lán)牙串口模塊
本文采用的是HC-05嵌被入式藍(lán)牙串口通訊模塊來(lái)實(shí)現(xiàn)信號(hào)轉(zhuǎn)換。主控板的RX、TX接口與HC-05對(duì)應(yīng)的口連接。串口信號(hào)經(jīng)過(guò)藍(lán)牙模塊轉(zhuǎn)發(fā)后,到達(dá)手持設(shè)備。Android的系統(tǒng)編有藍(lán)牙轉(zhuǎn)串口程序,可以讀出接收到的以串口協(xié)議發(fā)送過(guò)來(lái)的傳感器數(shù)據(jù),同時(shí)手機(jī)端的按鍵動(dòng)作以特定符合編碼的形式發(fā)送給藍(lán)牙模塊。
2 軟件編程
分別為控制板A、B編寫(xiě)控制程序,同時(shí)B板編寫(xiě)串口轉(zhuǎn)發(fā)程序,轉(zhuǎn)發(fā)A板的信息。為Android系統(tǒng)編寫(xiě)遙控程序,不同的按鍵對(duì)應(yīng)特定的編碼,不同的編碼對(duì)應(yīng)不同的動(dòng)作,在Arduino控制板中再根據(jù)收到的編碼執(zhí)行相應(yīng)的程序。
3 系統(tǒng)測(cè)試
通過(guò)匹配藍(lán)牙模塊與移動(dòng)終端,打開(kāi)移動(dòng)端接收信號(hào)的程序,通過(guò)按下控制界面相應(yīng)功能,軟件向機(jī)器人發(fā)送相應(yīng)指令。機(jī)械臂和底盤(pán)接收到命令后,根據(jù)不同的命令實(shí)現(xiàn)不同的動(dòng)作。
經(jīng)實(shí)物測(cè)試,該設(shè)計(jì)能實(shí)現(xiàn)遠(yuǎn)程無(wú)線遙控機(jī)器人操作。
參考文獻(xiàn)
[1]曾健平,邵艷潔.Android系統(tǒng)架構(gòu)及應(yīng)用程序開(kāi)發(fā)研究[J].微計(jì)算機(jī)信,2011,27 (09):1-3.