手把手教你做Wifi機器人_畢業(yè)論文,畢業(yè)設計資料_第1頁
手把手教你做Wifi機器人_畢業(yè)論文,畢業(yè)設計資料_第2頁
手把手教你做Wifi機器人_畢業(yè)論文,畢業(yè)設計資料_第3頁
手把手教你做Wifi機器人_畢業(yè)論文,畢業(yè)設計資料_第4頁
手把手教你做Wifi機器人_畢業(yè)論文,畢業(yè)設計資料_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、手把手教你做Wifi機器人畢業(yè)論文、畢業(yè)設計資料目錄一、前言6二、硬件部分62.1 汽車62.2 路由器72.3 微控制器的選擇82.4 操控電路(steering circuit)102.5 電池102.6 電源導軌(Power Rails)112.7 微控制器電路(Microcontroller Circuit)122.8 攝像頭142.9 喇叭152.10 硬件安裝162.11 未來可能還會添加的部件18三、軟件部分183.1 如何讓串口工作起來193.2 運行Wifi機器人客戶端應用程序203.3 微控制器固件203.4 下載所有的文件213.5 免責聲明21四、衡量標準和實測數(shù)據(jù)22

2、4.1 最高時速224.2 距離224.3 數(shù)據(jù)傳輸速率224.4 功率測量234.5 溫度/過熱問題24五、工程造價25先來看看最后做出來的成品圖片:一、前言 Wifi機器人(Wifi Robot):其實是一輛能通過互聯(lián)網(wǎng),或500米以外的筆記本無線設施來遠程控制的遙控汽車。由于在車上配備了一個網(wǎng)絡攝像頭,因此在視野范圍之外都能夠遙控該車,此外,車上還裝了一個喇叭,您可以遠程朝人們按喇叭。 我發(fā)現(xiàn)Linksys WRT54GL路由器非常的hacker-friendly(黑客友好),它運行Linux和一些已經(jīng)被反向工程(reverse engineered)了的硬件。世面上有一大批針對這種路由

3、器的固件版本(firmware version)可供選擇,本項目用到的版本是可訂制化的 Linux firmware Open-WRT。有了路由器的相關軟件,對一大堆硬件進行改裝也變得可能。因此,既然有這樣一個廉價的、可改裝的、嵌入式Linux系統(tǒng)可以隨我所用我知道我能做件很酷的事情,于是,Wifi機器人的想法誕生了。 本文的目的是提供一個該項目的概覽,同時也列出了一些相關軟件和電子產(chǎn)品的實施細節(jié),但它并不是一個一步一步詳細介紹如何制作Wifi機器人的手冊,不過,那些具備一定電子和軟件知識的人根據(jù)本文提供的信息也能夠做出自己的Wifi機器人。我已經(jīng)遵循GNU GPL v2發(fā)布了所有的源代碼,因

4、此,希望大家都來用這個源碼,并盡量去完善它! 二、硬件部分 2.1 汽車 在汽車上增加網(wǎng)絡攝像頭、路由器、沉重的電池、額外的電路,以及一大堆的電線會大大超出汽車原本設計的載重量。因此,考慮到這些額外要加的重量,您需要找到一個超大型的遙控汽車。舊貨店常常有一些遙控車賣,價格3到5美元不等(不包括遙控器),我已經(jīng)買了許多這樣的汽車以供使用。您最好選擇那些體積大于或等于現(xiàn)實生活中真車體積1/10的玩具遙控汽車,體積太小的就不要考慮了。下圖這兩輛遙控汽車是我在Value Village花5美元買下的。 我一共拆了約20輛遙控汽車。我發(fā)現(xiàn)幾乎每一輛車都使用了Realtek RX2/TX2芯片或其他引腳兼

5、容(pin-compatible)的芯片,而且說明書里有各引腳的具體連接方式。這意味著真的很容易改裝這些汽車,而不必加上一大堆我們自己的電路。我們可以將一個微控制器直接與這些引腳連接起來,直接控制汽車。充分利用汽車的原有電路能節(jié)省很多的時間和精力。 2.2 路由器 我已經(jīng)改裝了我的WRT54GL,現(xiàn)在它有2個串口和一個1GB的SD卡(用來充當1GB的硬盤)。在本項目中其實沒有用到這個SD卡,但用到了一個串口。兩個串口中的一個作為控制臺端口,另一個作為我們將來會使用到的TTS/1(語音合成)端口。這個項目我使用的固件版本是Open-WRT White Russian v0.9,還有更多更新的固件

6、版本,但我們這個項目并不需要。 本文的后面提供了參考鏈接,可以幫助您使用自己的串口。 2.3 微控制器的選擇 在本項目中我評估了三種不同的微控制器,以下是一個簡要的評估結果。微控制器PIC16F628AArduino (ATmega168) Freeduino MaxSerialAVR Butterfly (ATmega169)優(yōu)點價格相對便宜;穩(wěn)定的軟件控制;很容易編程(用C語言,而且有許多內(nèi)置的函數(shù)庫);集成串行(integrated serial);預包裝的開發(fā)套件,很少或根本不需要焊接;比PIC (C)容易編程;集成串行; 較少需要焊接;弊端很難編程(基于匯編語言的);必須要手動連接電

7、路;需要配備額外的串行硬件(MAX232A);需要額外編碼器;價格相對較高Bootloader錯誤(詳見下文);集成外設導致奇怪的輸出電壓;價格相對較高最后,出于以下幾個原因我選擇了PIC16F628A: 1. 我手邊有一堆PIC16F628A。 2. 我對PIC16F628A最熟悉。 3. 我想要塊面積小的板子,PIC是三個微控制器中面積最小的。 4. 我想完全控制代碼實現(xiàn)的功能,PIC是基于匯編語言編程,因此很適合。 Arduino (Freeduino MaxSerial)是我的第二選擇,它很容易安裝和運行,我真的很喜歡。社區(qū)支持非常強,而且非常好用。 我原先使用的是AVR Butter

8、fly開發(fā)板,但我發(fā)現(xiàn)AVR butterfly的bootloader上有一個錯誤會破壞代碼,并且不允許你重新編寫它,除非載入一個新的bootloader。我花了相當長的一段時間來調(diào)試和解決這個問題,不過最終還是決定放棄它。此外,我還發(fā)現(xiàn)輸出電壓是難以預測的,因為輸出還要驅動液晶顯示屏之類的集成外設。 PIC和Arduino微控制器平臺的源代碼我都有。兩個都經(jīng)過了測試,所以你覺得哪個好用就用哪個。Arduino (Freeduino MaxSerial)用起來最方便,我買了這個。 2.4 操控電路(steering circuit)實際上,我在車上裝了兩個控制板。這樣做的理由是,我開始不小心燒

9、掉了車上附帶的原始驅動晶體管(drive transistor)。幸好我還能將燒掉的晶體管拆掉,同時也拆掉了一起被燒掉的RX2芯片,從而挽救了操控電路。 該驅動晶體管的額定電流為5A,當我努力將電路電壓加到16V時,晶體管在一陣壯觀的煙霧中“犧牲”了,因為正常情況下用電池驅動汽車只要9.6V。我只好又拿了另一輛遙控汽車的板子裝上了這么做當然是為了要用板子上的驅動晶體管。當我把電壓打到12V時,盡管上面的晶體管已經(jīng)變得非常熱,但一切正常。如果能夠利用遙控汽車已有的電路,而不必建立自己的H橋電機驅動(H-bridge)電路,那將會節(jié)省大量的時間和金錢。 2.5 電池我花了50多美元在易趣上買了一些

10、高級的遙控汽車電池,它們的電池容量都是3800毫安(mAh)的,另外還有一個1.8A的智能充電器。在完全沒電的情況下,每個電池大概需要花1.5小時充電。 我用標準ATX電源Molex連接器換下了所有的遙控電池連接器。這樣,我就可以用我已有的廉價連接器將它們連接起來,并且比較容易做一個分配連接器(splitter connector)來進行功率測量。這些完全充好電的電池串聯(lián)連接時總電壓約為16V。2.6 電源導軌(Power Rails)5V(7805 1A 穩(wěn)壓器)9.2V(來自12V-7812 導軌)12V(7812 1A 穩(wěn)壓器)12V(LT1083 7.5A 穩(wěn)壓器)微控制器攝像頭;操控

11、電路控制器;喇叭wifi 路由器有電動控制器的驅動板(drive board with motor controller)9.6V導軌(rail)是由7812 12V導軌供電,不過,我們首先需要將4個二極管與7812 12V導軌串聯(lián)在一起。這樣做的理由是,每個二極管需要0.7V(實際不超過0.7V)的電壓,把這4個二極管串聯(lián),就能把7812 12V導軌的總電壓降低約2.8V,變?yōu)?V左右,從而得到我們設備所需要的電壓。 7812穩(wěn)壓器的額定電流只有1A,但電動機的耗電量會大大超過它。所以,我在Digikey花了不到14美元買了一個7.5A 12V的穩(wěn)壓器,并且還在上面加了一個散熱器,因為我當時

12、估計它運行起來有可能變得很燙,但在多次的實際使用中,我發(fā)現(xiàn)它甚至沒有變暖,所以并不需要散熱器。 我不想冒燒掉操控控制電路的風險,所以我把它放在最接近遙控汽車電池的軌道上。攝像頭的工作電壓為9V,喇叭也差不多,因此,我把這些設備都放在9.2V軌道。所有的電力電子設備都裝在一個原型板(prototype board)上,然后被儲存在一個項目盒(project box)中。 2.7 微控制器電路(Microcontroller Circuit) PIC Arduino 接線指導信號Arduino引腳向前數(shù)字引腳 8向后數(shù)字引腳9向左數(shù)字引腳10向右數(shù)字引腳11綠色發(fā)光二極管數(shù)字引腳7紅色發(fā)光二極管數(shù)

13、字引腳6喇叭數(shù)字引腳5只要用標準的串行電纜,就可以將Freeduino MaxSerial串口與路由器的串口連接起來。該Freeduino MaxSerial使用串行引腳4即DTR(data terminal ready,數(shù)據(jù)終端就緒)引腳來重啟微控制器,并使其能夠下載新的代碼。在正常的電腦操作中,這個引腳的工作電壓為10 V或-10V具體取決于該串口連接與否。然而,這個引腳是接地連接在路由器的串口上,當路由器串口發(fā)送數(shù)據(jù)時,MaxSerial就會重啟,而這點對本項目不合適,我們要求把DTR引腳加壓到+9V。通過硬件改造,我們給它增加了一個程序鎖定模式,使之不能上傳新的代碼,也使得串口無法重啟

14、微控制器。 注意:如果您使用的是USB接口版本的Arduino,您應該只需要把RX和TX引腳連接到MAX232A,然后再連接到路由器的串口,并且可能不需要做硬件修改。不過我手中只有MaxSerial版本,所以無法驗證此點。 2.8 攝像頭本項目最酷的一個地方,是在視野范圍以外還能驅動汽車。這其實是靠一個網(wǎng)絡攝像頭完成的。我選擇的攝像頭是Panasonic BL-C1A,它基本上算是最便宜的有線網(wǎng)絡攝像頭,其驅動軟件也只能用在Windows系統(tǒng)上,不過已經(jīng)完全夠用了。而且,就像兩位評論家所指出的那樣,該攝像頭有一個非常實用的web使用界面。該攝像頭的視頻質量相當不錯。然而,即使在連接良好的情況下

15、,它也常常會暫停1秒左右的時間,然后又開始恢復正常。我猜這是因為它的控制器沒有足夠強大的自動對焦能力,但總的來說我還是很喜歡這款性價比不錯的攝像頭。2.9 喇叭我覺得用遙控汽車朝人摁喇叭很有趣,于是就加了個喇叭,而且這很容易實現(xiàn)。我買了一個3美元的蜂鳴器,然后用一個晶體管把它連接到微控制器上就可以了。2.10 硬件安裝PIC控制板被安全固定在車的一側。在車架上我打了很多孔,用來穿電線,所有的電線長度都弄得比實際需要的要長,目的是為了使電線連接的各零部件在最終固定之前可以自由地調(diào)整位置。當所有的零部件被最終固定好之后,用捆線器收緊電線的多余部分即可。本項目一共用到了大約30根電線,還不包括以太網(wǎng)

16、電纜。車的頂部裝了個項目盒,除了LT1083 7.5A穩(wěn)壓器被裝在遙控車的底部之外,所有其他的電源電路就放在這個項目盒里。而我之所以沒把LT1083 7.5A穩(wěn)壓器也放在盒子里,是因為它是在我燒掉第一塊控制板后新加的一個東西,裝在車子底部最省事。當路由器啟動時,裝在項目盒背面的一個發(fā)光二級管就開始發(fā)出紅光。當路由器向微控制器發(fā)送一個alive信息時,這個發(fā)光二級管就變?yōu)榘l(fā)綠光,于是我就知道我可以連接VB客戶端應用程序了。這個發(fā)光二極管在調(diào)試系統(tǒng)時非常有用。我用了些熱膠(hot-glue)和捆線器將電池固定好。另外,路由器相對遙控車的底座有點太寬,所以我做了點改動將兩片有機玻璃加在遙控車底座,使

17、之變寬。2.11 未來可能還會添加的部件下面幾個東西應該很有趣,是我想加的東西:1. 頭燈:其實就是超級亮的發(fā)光二極管,應該很容易將它們加到微電路上。2. 電流傳感器(Current Sensor):可以傳回汽車使用的電流量,并將其顯示在VB應用程序中。控制器可以讀取傳感器的數(shù)據(jù),然后發(fā)送回。三、軟件部分本項目要用到三種軟件:1 VB6 Wifi_Robot客戶端應用程序(運行在Windows系統(tǒng)中);2 用在路由器上的用C語言編寫的CarServer,該路由器運行OpenWRT WhiteRussian v0.9 (Linux版本);3 微控制器固件。我已經(jīng)提供了經(jīng)測試過的PIC16F628

18、A微控制器和Arduino (Freeduino MaxSerial)固件,相關的源碼都遵循GNU GPL v2發(fā)布了。假設您有一個安裝了OpenWRT WhiteRussian v0.9 的Linksys WRT54GL,并將它已連接到了互聯(lián)網(wǎng),可以參考下面的安裝指令。OpenWRT安裝指令參考這個指南。Installing CarServer(安裝CarServer)如果你只是想要使用該軟件,在你的路由器安裝配置SSH,然后運行以下代碼:# cd /tmp# wget # ipkg install ./carserver_1_mipsel.ipkCompiling and Installi

19、ng CarServer(編譯和安裝CarServer)如果你想看看它是如何工作的,或者想自己修改代碼,你需要先下載OpenWRT SDK(Linux 版本),然后遵循Eric Bishop的Writing and Compiling A Simple Program for OpenWRT去編譯軟件(只需參考第一部分)Makefile place in /OpenWrt-SDK-Linux-i686-1/package/carserver/Makefile place in /OpenWrt-SDK-Linux-i686-1/package/carserver/srccarserver.c

20、place in /OpenWrt-SDK-Linux-i686-1/package/carserver/src你編譯的ipkg 將出現(xiàn)在 /OpenWrt-SDK-Linux-i686-1/bin/packages. 然后將代碼# scp carserver_1_mipsel.ipk root:/tmp/. 復制到你的路由器,配置SSH,并安裝它。相關資源關于WRT54G系列路由器有一本很不錯的電子書:Linksys WRT54G Ultimate Hacking。這本書教人如何添加一個串口,如何設置軟件,還有一大堆的黑客技巧。我已經(jīng)聯(lián)系過該書的作者之一,這本書并非免費的,但是你在Googl

21、e Books上可以讀到它。3.1 如何讓串口工作起來我們需要利用TTS/1(語音合成),因此,如果您只添加了一個串行端口,那就保證這個端口用于語音合成。假定你已經(jīng)安裝了OpenWRT WhiteRussian v0.9,那么運行如下指令即可。# ipkg update# ipkg install setserial# cd /usr/sbin# wget # tar -zxvf stty.tgz# chmod 755 stty將下列語句添加在/etc/init.d/custom-user-startup后,使串口啟動后工作起來,并使CarServer自動啟動。/usr/sbin/setser

22、ial /dev/tts/1 irq 3/usr/sbin/stty -F /dev/tts/1 raw speed 9600/bin/carserver &3.2 運行Wifi機器人客戶端應用程序下載:wifi_robot_client.zip(Wifi機器人客戶端應用程序軟件包)該壓縮包(wifi_robot_client.zip)包含了VB6源碼和編譯過的EXE文件。如果您不想修改源程序的話,您只需用到wifi_robot_client.exe和config.txt文件,當然,如果您想修改源碼,也完全可以。此外,該應用程序只適用于Windows系統(tǒng),如果有人想開發(fā)用于其他操作系統(tǒng)的客戶端

23、軟件,我也很歡迎。3.3 微控制器固件PIC您首先需要一個PIC編碼器來燒錄固件。市場上有許多PIC編碼器可供選擇,我自己使用的編碼器P16PRO40是在易趣上買的。您可以使用Microchip公司的MPLAB自己編譯HEX文件,或直接下載本文提供的HEX文件。鏈接:car_pic.asm鏈接:car_pic.HEXArduino(Freeduino MaxSerial)指南:Arduino Tutorial相關源碼下載鏈接: car_arduino.c如果您使用的是Freeduino MaxSerial,請務必對其進行小的硬件改造,以防Freeduino每次從路由器串口接收數(shù)據(jù)時都要重啟。更

24、多細節(jié)請參考本文的“硬件”部分。3.4 下載所有的文件以下這個壓縮包包括上述所有的源碼和編譯過的二進制碼。下載:wifi_robot_software.zip3.5 免責聲明我已經(jīng)盡最大的努力確保所有上述信息是準確的。如果您發(fā)現(xiàn)任何錯誤,請發(fā)送電子郵件至 jon,我會立刻做出更正。四、衡量標準和實測數(shù)據(jù)4.1 最高時速為了得知該遙控車的最大速度,我在地上相隔3米放了兩條帶子,然后用攝像機拍攝。攝像機每秒記錄30幀,攝像機的誤差大約+ /-3 .3%,帶子的誤差大約是+ /- 1%。該車在0.7秒內(nèi)開出3米遠(即相機在一秒內(nèi)拍了21幀),所以最高時速為:4.3米/ s= 15.5km/h = 9.6miles/h4.2 距離在500米之處,遙控車上裝配的路由器還能連接到我的筆記本電腦(傳輸速度1MB/s),然而距離超出500米,就不行了。固件(OpenWRT)本可以提高輸出功率,我也試圖修改相關參數(shù)值,但無濟于事,可能是我的戴爾Inspiron 6000型筆記本有限制。4.3 數(shù)據(jù)傳輸速率控制信號:3.5KB /s攝像頭:50-190KB /s該攝像頭使用多少帶寬取決于所拍攝圖像的亮度,如果亮度很高,就會需要較大的帶寬。如果遙控車開出了很遠,路由器還能以較低的速度繼續(xù)連接筆記本電腦,直到傳輸速度降到1Mb/s,在這種速度下攝像頭無法傳回數(shù)據(jù),但控制信號仍然有效。4.4 功率

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論