吳波濤,孔金平,王 湘
(中國衛(wèi)星海上測控部 江蘇 江陰 214431)
基于Arduino和樹莓派的智能小車的設計與實現(xiàn)
吳波濤,孔金平,王 湘
(中國衛(wèi)星海上測控部 江蘇 江陰 214431)
為實現(xiàn)小車的遠程遙控、視頻傳輸和避障等功能,設計開發(fā)基于Arduino和樹莓派的智能小車。以Arduino板為核心控制器,通過H橋路芯片實現(xiàn)對直流電機的控制以控制小車行駛;利用紅外遙控器和接收器實現(xiàn)遠程遙控小車方法;利用超聲波測距模塊實時檢測小車前方障礙物距離,設計基于障礙物距離的避障算法實現(xiàn)避障功能;利用樹莓派板塊和RPi-Cam-Web-Interface實現(xiàn)車載攝像頭實時視頻網絡傳輸功能。實驗證明,該小車具備良好的遠控功能,實時視頻圖像傳輸穩(wěn)定,在偵察、消防等領域有廣泛的應用基礎。
智能車;網絡實時視頻;Arduino;樹莓派;無線遙控
智能車也可稱為輪式機器人,作為一種智能機器人的一個分支,在軍事偵察、排爆、救災搶險探測、工程勘探、工農業(yè)生產等領域有著廣泛的應用[1-3]。隨著電子技術的進步,智能車的研究得到迅速發(fā)展。當前,通過Arduino和樹莓派等開源硬件和傳感器,即可進行智能車的快速開發(fā)[4-7]。Arduino和樹莓派做為開源平臺,軟硬件均開源,硬件接口豐富,可以免費獲得平臺電路原理圖、開發(fā)接口等,非常適合二次開發(fā)。Arduino自帶Bootloader程序,可直接通過USB接口下載程序至開發(fā)板,開發(fā)和修改程序十分方便[8-9]。而樹莓派作為微型計算機則可以實現(xiàn)網絡通信等更復雜的功能。
文中提出一種基于Arduino和樹莓派的智能小車設計方案,以Arduino板做為核心控制器,實現(xiàn)對小車的驅動控制、遙控和避障等功能;以樹莓派板做為視頻流服務器,實現(xiàn)實時視頻圖像傳輸功能。
智能小車硬件構成包含底盤、3個車輪(兩個前輪、一個后輪)、直流電機、Arduino控制板、樹莓派板、舵機、藍牙模塊、紅外接收模塊,以及超聲波傳感器、攝像頭等傳感器,其中兩前輪為驅動輪,分別由兩個直流電機驅動,一個后輪為被動萬向輪??刂瓢灏惭b于底盤上,舵機和藍牙安裝于底盤前方。智能小車實物如圖1所示。
圖1 智能小車實物圖
智能車系統(tǒng)框圖如圖2所示。主要包括電源、車體驅動、主控、傳感器等部分,各部分設計如下:
圖2 系統(tǒng)結構框圖
電源部分:包括兩節(jié)可充電3.7V鋰電池、LM7805穩(wěn)壓芯片。兩節(jié)3.7V鋰電池提供7.4V的直流電壓,通過LM7805穩(wěn)壓電路為系統(tǒng)提供線性直流穩(wěn)壓電源。
驅動部分:包括車底盤、L293D芯片、兩個直流電機、兩個前輪和一個萬向輪。采用H橋L293D驅動電路驅動智能車的兩個前驅動輪,結合后輪萬向輪,實現(xiàn)智能車前后行駛、左右轉向、原地轉向的自由控制。
主控部分:包括Arduino UNO R3板、擴展板和樹莓派板。Arduino控制板通過H橋L293D驅動芯片控制電機的正反轉,從而達到控制智能車的全向行駛控制;接入超聲波模塊和舵機,實現(xiàn)對前方多個方向上障礙物的測距功能[10-14];接入紅外接收模塊和藍牙模塊,實現(xiàn)對遙控端信號(紅外遙控鍵盤或手機藍牙遙控信號)的接收功能,從而實現(xiàn)對智能車的遠程遙控。樹莓派板通過接入RPi攝像頭獲取實時視頻信息,再通過WiFi模塊連接網絡,從而實現(xiàn)車載實時圖像的傳輸[15]。
傳感器部分:包括舵機、HC-SRO4超聲波測距模塊、RPi攝像頭、紅外接收模塊和藍牙模塊。舵機安裝于智能車底盤正前端,超聲波測距模塊安裝于舵機上方,舵機轉動帶動超聲波傳感器轉動循環(huán)檢測前方各方向的障礙物距離。紅外接收模塊和藍牙模塊分別接收紅外遙控器和手機藍牙端的指令,由Arduino控制板轉化為智能車行駛控制命令。
2.1 驅動控制
L293D芯片可直接驅動兩路直流電機??刂齐姍C需使用L293D的3個端口:使能端EN、方向端IN1、IN2。使能端為高電平時電機才可能轉動,IN1端口輸入高電平、IN2端口輸入低電平和IN1低、IN2高電平時,電機實現(xiàn)不同方向的轉動。Arduino采用數(shù)字針腳連接IN2、IN2端口,控制電機轉向;采用PWM針腳連接使能端,控制電機轉速。智能車向前行駛的部分代碼如下所示:
Void(){
digitalWrite(MotorRight1,LOW);//IN1端口寫入低電平 控制右輪向前轉,電機正轉
digitalWrite(MotorRight2,HIGH);//IN2 端口寫入高電平
analogWrite(MotorRPWM,100);//PWM 調速功能,調速范圍0~1023
digitalWrite(MotorLeft1,HIGH);//IN3端口寫入高電平 控制左輪向前轉,電機反轉
digitalWrite(MotorLeft2,LOW);//IN4 端口寫入低電平
analogWrite(MotorLPWM,100);//PWM 調速功能,調速范圍0~1023
}
digitalWrite()函數(shù)為Arduino開發(fā)環(huán)境自帶的函數(shù),可在Arduino相應針腳寫入高(HIGH)電平或低(LOW)電平。調速通過在在PWM端輸入不同的模擬數(shù)值實現(xiàn),輸入范圍為0~1 023。
2.2 視頻直播功能
視頻圖像實時傳輸采用 “WiFi+樹莓派+RPi攝像頭+RPi-Cam-Web-Interface”方式,樹莓派通過RPi攝像頭獲取實時視頻圖像,在安裝RPi-Cam-Web-Interface后,客戶通過(計算機或手機)瀏覽器即可訪問樹莓派上的web服務器,獲取網頁、顯示實時視頻圖像,客戶端視頻網頁截圖如圖3所示。
圖3 實時視頻圖像網頁
樹莓派板上的RPi-Cam-Web-Interface安裝過程如下:
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
在樹莓派板Raspbian操作系統(tǒng)的命令中輸入上述命令,完成系統(tǒng)的軟件更新和安裝。
2.3 遙控功能
智能車可通過紅外和藍牙兩種方式進行遙控。紅外遙控方式為智能車的Arduino主控板連接紅外接收模塊接收紅外遙控器發(fā)出的控制信號,再將控制信號轉換為電機控制信號。紅外接收模塊包含數(shù)字信號線、VCC、GND三根引腳。紅外發(fā)射遙控器發(fā)射38K紅外載波信號,由遙控器內編碼芯片進行編碼,此處采用NEC協(xié)議進行編碼。在Arduino控制程序中導入紅外接收庫Irrecv,實現(xiàn)對紅外遙控器信號的解碼工作。紅外控制智能車行駛的部分代碼如下所示。
#include<IRremote.h>//導入紅外接收庫
int RECV_PIN=7;//紅外接收模塊連接的數(shù)字引腳
//******紅外控制部分********
long advence=0x00FF629D;//紅外遙控鍵盤數(shù)字編碼與控制方向對應
long back = 0x00FFA857;long stop =0x00FF02FD;
long left = 0x00FFA25D;long right =0x00FFE21D;
IRrecv irrecv(RECV_PIN);
車載Arduino控制板通過紅外接收模塊收到紅外遙控信號后,調用Irrecv完成解碼,根據(jù)解碼信息控制小車完成相應的動作。
紅外遙控方式遙控范圍限制在視距范圍內,藍牙遙控方式的距離則相對較遠。藍牙遙控在Arduino主控板安裝藍牙模塊,采用串口協(xié)議通信。手機藍牙與智能車載藍牙配對成功后即可通過手機發(fā)送行駛命令至車載Arduino控制板,實現(xiàn)智能車控制。
2.4 避障功能
智能車通過安裝于車底盤前的超聲波傳感器在舵機的轉動下,循環(huán)檢測左、前、右3個方向的障礙物距離,根據(jù)3個方向的距離對行駛控制做出判斷,使智能車能自動避開障礙行駛。設計基于前方障礙物距離的避障算法,算法流程圖如圖4所示。程序開始后,首先檢測正前方障礙物距離,如果距離大于25cm則繼續(xù)向前行駛,如果小于10cm里面則向后,如果距離在此之間則先后檢測小車左方和右方的障礙物距離。如果左右兩側的距離均小于10cm,則小車后退;若右側距離大于左側距離,則小車右轉;反之,則左轉。
圖4 避障算法流程圖
文中設計并開發(fā)了一種基于Arduino和樹莓派的智能車,可實現(xiàn)智能車的遠程控制、自主避障行駛和實時視頻傳輸功能。Arduino作為主控板,通過H橋路芯片實現(xiàn)對智能車驅動電機的控制,接入紅外接收模塊、藍牙模塊實現(xiàn)遠程遙控信號的接收功能,用戶通過紅外遙控鍵盤和手機藍牙即可實現(xiàn)對智能車的遠程控制。接入超聲波測距模塊和舵機實現(xiàn)對車前方障礙物測距功能。設計了基于前方障礙物距離的避障行駛算法,確保智能車自主行駛過程中避開障礙物。利用樹莓派、RPi攝像頭和RPi-Cam-Web-Interface實現(xiàn)智能車前方實時圖像采集和無線網絡傳輸功能,用戶在多種終端可通過瀏覽器獲取智能車傳回的視頻。實驗表明智能車具有較好的遙控和避障性能,傳輸?shù)囊曨l流暢穩(wěn)定,在監(jiān)控、偵察和消防等領域都有著較為廣闊的應用前景。
[1]屈寶鵬,張喜鳳,卜文銳.基于 ATMEGA328的視頻監(jiān)控智能車的設計與實現(xiàn) [J].現(xiàn)代電子技術, 2015,38(19):160-162.
[2]周寧.割草機器人割臺設計與運動控制研究[D].南京:江蘇大學,2005.
[3]劉南君,毛培宏.基于 ArduinoMega2560單片機的簡易智能割草機器人的設計與實現(xiàn)[J].農業(yè)科學與技術:英文版, 2013(1):162-165.
[4]楊繼志,郭敬.Arduino的互動產品平臺創(chuàng)新設計[J].單片機與嵌入式系統(tǒng)應用,2012,12(4):39-41.
[5]紀欣然.基于 Arduino開發(fā)環(huán)境的智能尋光小車設計[J].現(xiàn)代電子技術, 2012,35(15):161-163.
[6]趙津,朱三超.基于 Arduino單片機的智能避障小車設計[J].自動化與儀表, 2013,28(5):1-4.
[7]崔才豪,張玉華,楊樹財.利用 Arduino控制板的光引導運動小車設計 [J].自動化儀表,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]邱白晶,錢國宏,周寧,等.割草機器人避障控制[J].江蘇大學學報:自然科學版,2005,26(4):285-288.
[11]蔡睿妍.基于Arduino的舵機控制系統(tǒng)設計[J].電腦知識與技術, 2012,8(15):3719-3721.
[12]卞云松.基于 Arduino單片機的避障小車機器人[J].自動化技術與應用, 2014,33(1):16-19.
[13]張敏,寇為剛.基于超聲波的自動測距系統(tǒng)設計[J].自動化技術與應用, 2011(4):106-110.
[14]戈惠梅,徐曉慧,顧志華,等.基于Arduino的智能小車避障系統(tǒng)的設計 [J].現(xiàn)代電子技術,2014,37(11):118-120.
[15]高峰,陳雄,陳婉秋.基于樹莓派B+微處理器的視頻檢測跟蹤系統(tǒng)[J].電視技術, 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稿件編號:201607060
吳波濤(1987—),男,江西南城人,碩士,工程師。研究方向:自動控制、機器人。