吳波濤,孔金平,王 湘
(中國(guó)衛(wèi)星海上測(cè)控部 江蘇 江陰 214431)
基于Arduino和樹(shù)莓派的智能小車的設(shè)計(jì)與實(shí)現(xiàn)
吳波濤,孔金平,王 湘
(中國(guó)衛(wèi)星海上測(cè)控部 江蘇 江陰 214431)
為實(shí)現(xiàn)小車的遠(yuǎn)程遙控、視頻傳輸和避障等功能,設(shè)計(jì)開(kāi)發(fā)基于Arduino和樹(shù)莓派的智能小車。以Arduino板為核心控制器,通過(guò)H橋路芯片實(shí)現(xiàn)對(duì)直流電機(jī)的控制以控制小車行駛;利用紅外遙控器和接收器實(shí)現(xiàn)遠(yuǎn)程遙控小車方法;利用超聲波測(cè)距模塊實(shí)時(shí)檢測(cè)小車前方障礙物距離,設(shè)計(jì)基于障礙物距離的避障算法實(shí)現(xiàn)避障功能;利用樹(shù)莓派板塊和RPi-Cam-Web-Interface實(shí)現(xiàn)車載攝像頭實(shí)時(shí)視頻網(wǎng)絡(luò)傳輸功能。實(shí)驗(yàn)證明,該小車具備良好的遠(yuǎn)控功能,實(shí)時(shí)視頻圖像傳輸穩(wěn)定,在偵察、消防等領(lǐng)域有廣泛的應(yīng)用基礎(chǔ)。
智能車;網(wǎng)絡(luò)實(shí)時(shí)視頻;Arduino;樹(shù)莓派;無(wú)線遙控
智能車也可稱為輪式機(jī)器人,作為一種智能機(jī)器人的一個(gè)分支,在軍事偵察、排爆、救災(zāi)搶險(xiǎn)探測(cè)、工程勘探、工農(nóng)業(yè)生產(chǎn)等領(lǐng)域有著廣泛的應(yīng)用[1-3]。隨著電子技術(shù)的進(jìn)步,智能車的研究得到迅速發(fā)展。當(dāng)前,通過(guò)Arduino和樹(shù)莓派等開(kāi)源硬件和傳感器,即可進(jìn)行智能車的快速開(kāi)發(fā)[4-7]。Arduino和樹(shù)莓派做為開(kāi)源平臺(tái),軟硬件均開(kāi)源,硬件接口豐富,可以免費(fèi)獲得平臺(tái)電路原理圖、開(kāi)發(fā)接口等,非常適合二次開(kāi)發(fā)。Arduino自帶Bootloader程序,可直接通過(guò)USB接口下載程序至開(kāi)發(fā)板,開(kāi)發(fā)和修改程序十分方便[8-9]。而樹(shù)莓派作為微型計(jì)算機(jī)則可以實(shí)現(xiàn)網(wǎng)絡(luò)通信等更復(fù)雜的功能。
文中提出一種基于Arduino和樹(shù)莓派的智能小車設(shè)計(jì)方案,以Arduino板做為核心控制器,實(shí)現(xiàn)對(duì)小車的驅(qū)動(dòng)控制、遙控和避障等功能;以樹(shù)莓派板做為視頻流服務(wù)器,實(shí)現(xiàn)實(shí)時(shí)視頻圖像傳輸功能。
智能小車硬件構(gòu)成包含底盤、3個(gè)車輪(兩個(gè)前輪、一個(gè)后輪)、直流電機(jī)、Arduino控制板、樹(shù)莓派板、舵機(jī)、藍(lán)牙模塊、紅外接收模塊,以及超聲波傳感器、攝像頭等傳感器,其中兩前輪為驅(qū)動(dòng)輪,分別由兩個(gè)直流電機(jī)驅(qū)動(dòng),一個(gè)后輪為被動(dòng)萬(wàn)向輪??刂瓢灏惭b于底盤上,舵機(jī)和藍(lán)牙安裝于底盤前方。智能小車實(shí)物如圖1所示。
圖1 智能小車實(shí)物圖
智能車系統(tǒng)框圖如圖2所示。主要包括電源、車體驅(qū)動(dòng)、主控、傳感器等部分,各部分設(shè)計(jì)如下:
圖2 系統(tǒng)結(jié)構(gòu)框圖
電源部分:包括兩節(jié)可充電3.7V鋰電池、LM7805穩(wěn)壓芯片。兩節(jié)3.7V鋰電池提供7.4V的直流電壓,通過(guò)LM7805穩(wěn)壓電路為系統(tǒng)提供線性直流穩(wěn)壓電源。
驅(qū)動(dòng)部分:包括車底盤、L293D芯片、兩個(gè)直流電機(jī)、兩個(gè)前輪和一個(gè)萬(wàn)向輪。采用H橋L293D驅(qū)動(dòng)電路驅(qū)動(dòng)智能車的兩個(gè)前驅(qū)動(dòng)輪,結(jié)合后輪萬(wàn)向輪,實(shí)現(xiàn)智能車前后行駛、左右轉(zhuǎn)向、原地轉(zhuǎn)向的自由控制。
主控部分:包括Arduino UNO R3板、擴(kuò)展板和樹(shù)莓派板。Arduino控制板通過(guò)H橋L293D驅(qū)動(dòng)芯片控制電機(jī)的正反轉(zhuǎn),從而達(dá)到控制智能車的全向行駛控制;接入超聲波模塊和舵機(jī),實(shí)現(xiàn)對(duì)前方多個(gè)方向上障礙物的測(cè)距功能[10-14];接入紅外接收模塊和藍(lán)牙模塊,實(shí)現(xiàn)對(duì)遙控端信號(hào)(紅外遙控鍵盤或手機(jī)藍(lán)牙遙控信號(hào))的接收功能,從而實(shí)現(xiàn)對(duì)智能車的遠(yuǎn)程遙控。樹(shù)莓派板通過(guò)接入RPi攝像頭獲取實(shí)時(shí)視頻信息,再通過(guò)WiFi模塊連接網(wǎng)絡(luò),從而實(shí)現(xiàn)車載實(shí)時(shí)圖像的傳輸[15]。
傳感器部分:包括舵機(jī)、HC-SRO4超聲波測(cè)距模塊、RPi攝像頭、紅外接收模塊和藍(lán)牙模塊。舵機(jī)安裝于智能車底盤正前端,超聲波測(cè)距模塊安裝于舵機(jī)上方,舵機(jī)轉(zhuǎn)動(dòng)帶動(dòng)超聲波傳感器轉(zhuǎn)動(dòng)循環(huán)檢測(cè)前方各方向的障礙物距離。紅外接收模塊和藍(lán)牙模塊分別接收紅外遙控器和手機(jī)藍(lán)牙端的指令,由Arduino控制板轉(zhuǎn)化為智能車行駛控制命令。
2.1 驅(qū)動(dòng)控制
L293D芯片可直接驅(qū)動(dòng)兩路直流電機(jī)??刂齐姍C(jī)需使用L293D的3個(gè)端口:使能端EN、方向端IN1、IN2。使能端為高電平時(shí)電機(jī)才可能轉(zhuǎn)動(dòng),IN1端口輸入高電平、IN2端口輸入低電平和IN1低、IN2高電平時(shí),電機(jī)實(shí)現(xiàn)不同方向的轉(zhuǎn)動(dòng)。Arduino采用數(shù)字針腳連接IN2、IN2端口,控制電機(jī)轉(zhuǎn)向;采用PWM針腳連接使能端,控制電機(jī)轉(zhuǎn)速。智能車向前行駛的部分代碼如下所示:
Void(){
digitalWrite(MotorRight1,LOW);//IN1端口寫入低電平 控制右輪向前轉(zhuǎn),電機(jī)正轉(zhuǎn)
digitalWrite(MotorRight2,HIGH);//IN2 端口寫入高電平
analogWrite(MotorRPWM,100);//PWM 調(diào)速功能,調(diào)速范圍0~1023
digitalWrite(MotorLeft1,HIGH);//IN3端口寫入高電平 控制左輪向前轉(zhuǎn),電機(jī)反轉(zhuǎn)
digitalWrite(MotorLeft2,LOW);//IN4 端口寫入低電平
analogWrite(MotorLPWM,100);//PWM 調(diào)速功能,調(diào)速范圍0~1023
}
digitalWrite()函數(shù)為Arduino開(kāi)發(fā)環(huán)境自帶的函數(shù),可在Arduino相應(yīng)針腳寫入高(HIGH)電平或低(LOW)電平。調(diào)速通過(guò)在在PWM端輸入不同的模擬數(shù)值實(shí)現(xiàn),輸入范圍為0~1 023。
2.2 視頻直播功能
視頻圖像實(shí)時(shí)傳輸采用 “WiFi+樹(shù)莓派+RPi攝像頭+RPi-Cam-Web-Interface”方式,樹(shù)莓派通過(guò)RPi攝像頭獲取實(shí)時(shí)視頻圖像,在安裝RPi-Cam-Web-Interface后,客戶通過(guò)(計(jì)算機(jī)或手機(jī))瀏覽器即可訪問(wèn)樹(shù)莓派上的web服務(wù)器,獲取網(wǎng)頁(yè)、顯示實(shí)時(shí)視頻圖像,客戶端視頻網(wǎng)頁(yè)截圖如圖3所示。
圖3 實(shí)時(shí)視頻圖像網(wǎng)頁(yè)
樹(shù)莓派板上的RPi-Cam-Web-Interface安裝過(guò)程如下:
Sudo apt-get update
Sudo apt-get dist-upgrade
git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface
chmod u+x*.sh
./install.sh
在樹(shù)莓派板Raspbian操作系統(tǒng)的命令中輸入上述命令,完成系統(tǒng)的軟件更新和安裝。
2.3 遙控功能
智能車可通過(guò)紅外和藍(lán)牙兩種方式進(jìn)行遙控。紅外遙控方式為智能車的Arduino主控板連接紅外接收模塊接收紅外遙控器發(fā)出的控制信號(hào),再將控制信號(hào)轉(zhuǎn)換為電機(jī)控制信號(hào)。紅外接收模塊包含數(shù)字信號(hào)線、VCC、GND三根引腳。紅外發(fā)射遙控器發(fā)射38K紅外載波信號(hào),由遙控器內(nèi)編碼芯片進(jìn)行編碼,此處采用NEC協(xié)議進(jìn)行編碼。在Arduino控制程序中導(dǎo)入紅外接收庫(kù)Irrecv,實(shí)現(xiàn)對(duì)紅外遙控器信號(hào)的解碼工作。紅外控制智能車行駛的部分代碼如下所示。
#include<IRremote.h>//導(dǎo)入紅外接收庫(kù)
int RECV_PIN=7;//紅外接收模塊連接的數(shù)字引腳
//******紅外控制部分********
long advence=0x00FF629D;//紅外遙控鍵盤數(shù)字編碼與控制方向?qū)?yīng)
long back = 0x00FFA857;long stop =0x00FF02FD;
long left = 0x00FFA25D;long right =0x00FFE21D;
IRrecv irrecv(RECV_PIN);
車載Arduino控制板通過(guò)紅外接收模塊收到紅外遙控信號(hào)后,調(diào)用Irrecv完成解碼,根據(jù)解碼信息控制小車完成相應(yīng)的動(dòng)作。
紅外遙控方式遙控范圍限制在視距范圍內(nèi),藍(lán)牙遙控方式的距離則相對(duì)較遠(yuǎn)。藍(lán)牙遙控在Arduino主控板安裝藍(lán)牙模塊,采用串口協(xié)議通信。手機(jī)藍(lán)牙與智能車載藍(lán)牙配對(duì)成功后即可通過(guò)手機(jī)發(fā)送行駛命令至車載Arduino控制板,實(shí)現(xiàn)智能車控制。
2.4 避障功能
智能車通過(guò)安裝于車底盤前的超聲波傳感器在舵機(jī)的轉(zhuǎn)動(dòng)下,循環(huán)檢測(cè)左、前、右3個(gè)方向的障礙物距離,根據(jù)3個(gè)方向的距離對(duì)行駛控制做出判斷,使智能車能自動(dòng)避開(kāi)障礙行駛。設(shè)計(jì)基于前方障礙物距離的避障算法,算法流程圖如圖4所示。程序開(kāi)始后,首先檢測(cè)正前方障礙物距離,如果距離大于25cm則繼續(xù)向前行駛,如果小于10cm里面則向后,如果距離在此之間則先后檢測(cè)小車左方和右方的障礙物距離。如果左右兩側(cè)的距離均小于10cm,則小車后退;若右側(cè)距離大于左側(cè)距離,則小車右轉(zhuǎn);反之,則左轉(zhuǎn)。
圖4 避障算法流程圖
文中設(shè)計(jì)并開(kāi)發(fā)了一種基于Arduino和樹(shù)莓派的智能車,可實(shí)現(xiàn)智能車的遠(yuǎn)程控制、自主避障行駛和實(shí)時(shí)視頻傳輸功能。Arduino作為主控板,通過(guò)H橋路芯片實(shí)現(xiàn)對(duì)智能車驅(qū)動(dòng)電機(jī)的控制,接入紅外接收模塊、藍(lán)牙模塊實(shí)現(xiàn)遠(yuǎn)程遙控信號(hào)的接收功能,用戶通過(guò)紅外遙控鍵盤和手機(jī)藍(lán)牙即可實(shí)現(xiàn)對(duì)智能車的遠(yuǎn)程控制。接入超聲波測(cè)距模塊和舵機(jī)實(shí)現(xiàn)對(duì)車前方障礙物測(cè)距功能。設(shè)計(jì)了基于前方障礙物距離的避障行駛算法,確保智能車自主行駛過(guò)程中避開(kāi)障礙物。利用樹(shù)莓派、RPi攝像頭和RPi-Cam-Web-Interface實(shí)現(xiàn)智能車前方實(shí)時(shí)圖像采集和無(wú)線網(wǎng)絡(luò)傳輸功能,用戶在多種終端可通過(guò)瀏覽器獲取智能車傳回的視頻。實(shí)驗(yàn)表明智能車具有較好的遙控和避障性能,傳輸?shù)囊曨l流暢穩(wěn)定,在監(jiān)控、偵察和消防等領(lǐng)域都有著較為廣闊的應(yīng)用前景。
[1]屈寶鵬,張喜鳳,卜文銳.基于 ATMEGA328的視頻監(jiān)控智能車的設(shè)計(jì)與實(shí)現(xiàn) [J].現(xiàn)代電子技術(shù), 2015,38(19):160-162.
[2]周寧.割草機(jī)器人割臺(tái)設(shè)計(jì)與運(yùn)動(dòng)控制研究[D].南京:江蘇大學(xué),2005.
[3]劉南君,毛培宏.基于 ArduinoMega2560單片機(jī)的簡(jiǎn)易智能割草機(jī)器人的設(shè)計(jì)與實(shí)現(xiàn)[J].農(nóng)業(yè)科學(xué)與技術(shù):英文版, 2013(1):162-165.
[4]楊繼志,郭敬.Arduino的互動(dòng)產(chǎn)品平臺(tái)創(chuàng)新設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2012,12(4):39-41.
[5]紀(jì)欣然.基于 Arduino開(kāi)發(fā)環(huán)境的智能尋光小車設(shè)計(jì)[J].現(xiàn)代電子技術(shù), 2012,35(15):161-163.
[6]趙津,朱三超.基于 Arduino單片機(jī)的智能避障小車設(shè)計(jì)[J].自動(dòng)化與儀表, 2013,28(5):1-4.
[7]崔才豪,張玉華,楊樹(shù)財(cái).利用 Arduino控制板的光引導(dǎo)運(yùn)動(dòng)小車設(shè)計(jì) [J].自動(dòng)化儀表,2011,32(9):5-7.
[8]BANZI M.Getting started with Arduino [M].2nd ed.USA:Make Books,2011.
[9]AtmelCorporation.ATmega48PA/88PA/168PA/328PA datasheet[R].US:Atmel Corporation,2009.
[10]邱白晶,錢國(guó)宏,周寧,等.割草機(jī)器人避障控制[J].江蘇大學(xué)學(xué)報(bào):自然科學(xué)版,2005,26(4):285-288.
[11]蔡睿妍.基于Arduino的舵機(jī)控制系統(tǒng)設(shè)計(jì)[J].電腦知識(shí)與技術(shù), 2012,8(15):3719-3721.
[12]卞云松.基于 Arduino單片機(jī)的避障小車機(jī)器人[J].自動(dòng)化技術(shù)與應(yīng)用, 2014,33(1):16-19.
[13]張敏,寇為剛.基于超聲波的自動(dòng)測(cè)距系統(tǒng)設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用, 2011(4):106-110.
[14]戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車避障系統(tǒng)的設(shè)計(jì) [J].現(xiàn)代電子技術(shù),2014,37(11):118-120.
[15]高峰,陳雄,陳婉秋.基于樹(shù)莓派B+微處理器的視頻檢測(cè)跟蹤系統(tǒng)[J].電視技術(shù), 2015,39(19):105-108.
Design and implementation of intelligent car based on Arduino and Raspberry Pi
WU Bo-tao, KONG Jin-ping, WANG Xiang
(China Satellite Maritime Tracking and Control,Jiangyin 214431, China)
To realize remote control, live-video transmission and obstacle avoidance function, a small car based on Arduino and Raspberry Pi is designed.Arduino board is chosen as the main control unit,and controls the DC motor to drive the car by using H bridge chip.Remote infrared control unit and infrared receiver are used to realize remote control of the car.Ultrasonic range finder module is used to detect distance of obstacles in front of the car,and an obstacle distance based algorithm is designed to avoid obstacle during car advancing.And a Raspberry Pi board and RPi-Cam-Web-Interface is used to realize live-video transmission through networks.Experiment shows that the remote control function of the car works quit well,and the live video from the car through networks is fluent.This intelligent car can be widely used in surveillance,firefighting and many other fields.
intelligent car; internet live video; Arduino; Raspberry Pi; remote control
TN99
:A
:1674-6236(2017)15-0058-04
2016-07-07稿件編號(hào):201607060
吳波濤(1987—),男,江西南城人,碩士,工程師。研究方向:自動(dòng)控制、機(jī)器人。