辛光紅
(三亞學(xué)院理工學(xué)院,海南 三亞 572022)
基于Android系統(tǒng)的Arduino智能車設(shè)計
辛光紅
(三亞學(xué)院理工學(xué)院,海南 三亞 572022)
Arduino是一款便捷靈活、方便上手的開源電子原型平臺,包含硬件(各種型號的arduino板)和軟件(Arduino IDE),是歐美國家應(yīng)用非常廣泛的電子設(shè)計實訓(xùn)平臺。GOOGLE公司在2011年I/O年會上發(fā)布了基于Arduino開發(fā)板的Android平臺下的SDK,使得Arduino應(yīng)用更加廣泛,發(fā)展空間更加廣闊。本文基于Android平臺,設(shè)計了一款通過wifi通信控制的Arduino智能車,可以完成測距、運動控制、無線圖像傳輸?shù)裙δ堋?/p>
Andriod;Arduino;WIFI;路由器;ECLIPS
通過智能車的研究,鍛煉學(xué)生動手實踐能力已是國內(nèi)外非常普遍的手段,著名的飛思卡爾公司便是其中之一,并在中國內(nèi)地舉辦了多屆智能小車大賽??梢哉f智能小車無論是在國內(nèi)還是國外都是一個非常熱門的項目,歷屆的國際機器人大賽中都少不了智能小車平臺的項目。Arduino平臺中使用的AVR中ATMEGA168或是328的芯片,雖然還只是8位芯片,但是卻是采用了RISC指令,并且采用了各種先進(jìn)技術(shù),使得芯片的技術(shù)大幅提升,其作為智能小車控制平臺有非常大的開發(fā)空間。Arduino作為軟硬件開源平臺,在智能車的研究中更具活力。隨著智能手機的普及應(yīng)用,GOOGLE公司在2011年I/O年會上發(fā)布了基于Arduino開發(fā)板的Android系統(tǒng)下的SDK,本文就是在此背景下通過wifi通信控制進(jìn)行Arduino驅(qū)動智能車的設(shè)計。
智能小車作為執(zhí)行機構(gòu)主要由以下幾部分組成:Arduino開發(fā)板、傳感器擴展板、L298電機驅(qū)動模塊、電源、LED指示燈、超聲波模塊、路由器、攝像頭、降壓模塊。小車?yán)肁ndroid手機與加載到Arduino串口上的wifi路由器進(jìn)行通信,并通過手機軟件控制小車運動,小車上的攝像頭采集視頻信號,再通過wifi路由器傳輸圖像到Andriod手機。[1]
2.1 Arduino控制器
Arduino UNO是Arduino USB接口系列的最新版本,作為Arduino平臺的參考標(biāo)準(zhǔn)模板。UNO的處理器核心是AT-mega328,同時具有14路數(shù)字輸入/輸出口(其中6路可作為PWM輸出),6路模擬輸入,一個16MHz晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復(fù)位按鈕。UNO已經(jīng)發(fā)布到第三版,與前兩版相比有以下新的特點:在AREF處增加了兩個管腳SDA和SCL,支持I2C接口;增加IOREF和一個預(yù)留管腳,將來擴展板將能兼容5V和3.3V核心板。這樣改進(jìn)了復(fù)位電路設(shè)計,USB接口芯片由AT-mega16U2替代了ATmega8U2[2]。
2.2 wifi路由器選型與刷機
路由器可以選擇體積小巧的的GL-iNet路由器,150M無線速率,迷你外觀(尺寸:58x58x22單位:mm),方便安裝、攜帶。雙網(wǎng)口,有線無線連接都完美支持。支持連接USB攝像頭,實現(xiàn)高清(HD)無線網(wǎng)絡(luò)監(jiān)控,通過手機APP可以隨時隨地輕松訪問。加強安全策略,硬件身份認(rèn)證,對網(wǎng)絡(luò)監(jiān)控及個人數(shù)據(jù)給予充分的安全保護(hù)。操作界面簡潔友好,不像其它路由器要進(jìn)行繁雜的設(shè)置,支持一鍵更新固件。內(nèi)置DNS,為每位用戶免費提供獨立訪問域名,不需要再另外申請。64M內(nèi)存,8M Flash,支持OPENWRT系統(tǒng)刷機,自帶Uboot,Uart調(diào)試接口已焊好,另預(yù)留5個GPIO接口,充分滿足而二次開發(fā)的需要。接口:1WAN、1Lan、1USB2.0、1MicroUSB(電源接口),無線開關(guān)/復(fù)位按鍵。
為了實現(xiàn)視頻圖像通過wifi連接傳輸?shù)紸ndroid手機端,需要對路由器刷新系統(tǒng),系統(tǒng)采用Openwrt。刷機步驟如下:
(1)先按住Reset鍵,然后加電,等到綠燈閃三次的時候,紅燈會亮,這個時候放開Reset鍵,會發(fā)現(xiàn)燈變?yōu)殚偌t色;
(2)用網(wǎng)線連接路由器的LAN口與自己的電腦,電腦IP設(shè)置為192.168.1.2/255.255.255.0/192.168.1.1;
(3)通過瀏覽器打開192.168.1.1,點擊Choose File,選擇你的刷機包中的factory.bin,然后點擊Upload,等待大約3分鐘左右,搜索無線網(wǎng),會發(fā)現(xiàn)本機多了個無線網(wǎng),點擊連接,一般第一次可能連接不成功,可以斷開連接,然后再次連接;
(4)連接好無線網(wǎng)之后通過瀏覽器打開192.168.1.1默認(rèn)用戶名密碼:root/admin,進(jìn)入系統(tǒng)目錄下的備份升級。點擊選擇文件,選中刷機包中的sysupgrade.bin文件,然后刷寫固件,等待大約三分鐘然后搜索看看能否搜到無線信號;
(5)連接路由器的無線網(wǎng),打開192.168.1.1,修改密碼。默認(rèn)密碼是admin,我們進(jìn)入密碼修改界面,也要修改為admin,就是說一定要確保密碼是admin;
(6)下載xshell或CRT或winscp或putty等軟件,打開軟件選擇ssh協(xié)議,點擊連接,輸入密碼admin,進(jìn)入linux界面,執(zhí)行cd/etc,然后回車。
(7)執(zhí)行vi rc.local,出現(xiàn)如下界面:
使用電腦的下鍵,將光標(biāo)移動到motion這一行,然后按下兩次d,也就是刪除這一行,按一下ESC鍵,然后輸入:wq,然后回車,重啟路由器,刷機結(jié)束[1]。
2.3 PWM調(diào)制電機驅(qū)動
驅(qū)動電路采用L298N芯片設(shè)計,電路見整體方案電路(如圖5)。脈沖寬度調(diào)制(PWM)是一種對模擬信號電平進(jìn)行數(shù)字編碼的方法。通過高分辨率計數(shù)器的使用,方波的占空比被調(diào)制用來對一個具體模擬信號的電平進(jìn)行編碼。PWM信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么完全有(ON),要么完全無(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時候即是直流供電被加到負(fù)載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM進(jìn)行編碼。在Arduino的UNO開發(fā)板上正好有6組PWM輸出,所以我們可以非常方便地進(jìn)行使用。而在Arduino中使用PWM是用的analogWrite(pin,value)這個函數(shù),pin是指的引腳,必須在支持PWM的引腳上使用這個函數(shù),value則是控制電壓,即控制電機轉(zhuǎn)速,調(diào)節(jié)范圍是0-255,其次還有一個函數(shù)digitalWrite(pin,state)pin一樣是指引腳,state則是指的電機狀態(tài)是正轉(zhuǎn)還是反轉(zhuǎn),當(dāng)state是1時正轉(zhuǎn),是0時則反轉(zhuǎn)。
2.4 超聲測距與攝像頭選型
超聲波測距模塊能提供2cm-450cm非接觸式感測距離,測距的精度可高達(dá)3mm,能很好地滿足我們正常的要求。該模塊包括超聲波發(fā)送器、接收器和相應(yīng)的控制電路。
圖4 工作時序
工作原理:
(1)先拉低TRIG,然后至少給10us的高電平信號去觸發(fā);(2)觸發(fā)后,模塊會自動發(fā)射8個40KHZ的方波,并自動檢測是否有信號返回。(3)如果有信號返回,通過ECHO輸出一個高電平,高電平持續(xù)的時間便是超聲波從發(fā)射到接收的時間。那么測試距離=高電平持續(xù)時間*340m/s*0.5。在Arduino下使用只要控制Trig和Echo兩端口接到兩個數(shù)字端口[3],攝像頭只要符合openwrt MJPG格式即可。本方案選擇東芝HD攝像頭。
2.5 整體方案電路仿真
小車終端控制器Ardunio開發(fā)板采用Ardunio IDE進(jìn)行程序設(shè)計,版本號為:V1.101。Ardunio IDE為綠色開源軟件,無需安裝,可在Ardunio官網(wǎng)下載使用。Ardunio IDE內(nèi)置庫程序極大地提高了軟件的開發(fā)效率。手機端上位機軟件采用Esclipse For Android開發(fā)。Eclipse是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE)。最初主要用Java語言開發(fā),通過安裝不同的插件,Eclipse可以支持不同的計算機語言,比如C++和Python等開發(fā)工具。Eclipse的本身只是一個框架平臺,但是眾多插件的支持使得Eclipse擁有其它功能相對固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。在Eclipse中解壓android sdk,并進(jìn)行相關(guān)配置后,即可在Eclipse下進(jìn)行Android的應(yīng)用程序開發(fā)。
小車超聲測距和避障的程序演示:
int inputPin=4;//define ultrasonic signal receiver pin ECHO to D4
int outputPin=5;//define ultrasonic signal transmitter pin TRIG to D5
void setup()
{
Serial.begin(9600);
pinMode(inputPin,INPUT);
pinMode(outputPin,OUTPUT);
}
void loop()
{
digitalWrite(outputPin,LOW);
delayMicroseconds(2);
digitalWrite(outputPin,HIGH);//Pulse for 10μs to trigger ultrasonic
detection
delayMicroseconds(10);
digitalWrite(outputPin,LOW);
int distance=pulseIn(inputPin,HIGH);//Read receiver pulse time
distance=distance/58;//Transform pulse time to distance
Serial.println(distance);//Output distance
delay(50);
}
軟件的調(diào)試與運行是非常重要的一個環(huán)節(jié)。經(jīng)過對小車的每個功能進(jìn)行調(diào)試,還有如下幾項需要改進(jìn):超聲波避障中,返回新數(shù)值的刷新時間不宜太快,否則會導(dǎo)致定時器中斷不斷響應(yīng),使串口無法正常接受指令。超聲波測距的距離和精度有限,選擇2cm作為小車檢測障礙距離,小車運動控制較為理想。圖像采集傳輸模塊功耗較高,需做散熱處理。
[1]張傳真,android無線視頻監(jiān)控小車設(shè)計[J].電子測量技術(shù),2013,36(10):19-22.
[2]程晨,Arduino開發(fā)實戰(zhàn)指南[M].北京:機械工業(yè)出版社,2012.
[3]劉君華,傳感器技術(shù)及應(yīng)用實例[M].北京:電子工業(yè)出版社,2008.
[4]班茲,愛上Arduino[M].北京:人民郵電出版社,2012.
Arduino Intelligent Vehicle Design Based onAndriod
Xin Guanghong
(Sanya University,Sanya 572022,Hainan)
tract】Arduino is a flexible open source electronic prototype,including hardware(Arduino plates of various types)and software(ArduinoIDE).It is an electronic design training platform widely used in Europe and US.In 2011 GOOGLE I/O annual meeting,SDK under Android platform based on Arduino development board is published,making Arduino is used more widely.Based on Android platform,this paper designes a Arduino intelligent vehicle communicated with wifi.It has functions of ranging,motion control,wireless image transmission and so on.
words】 Andriod;Arduino;WIFI;router;ECLIPS
辛光紅,男,甘肅金昌人,本科,助理實驗師,研究方向:單片機系統(tǒng)開發(fā)。