7
今天的作品(來自Instructables)是一臺搭載了相機,并可由Wi-Fi控制的遙控車,你可以通過互聯(lián)網(wǎng)駕駛它。這臺遙控車比較特別,因為它的“遙控器”是無線路由器,而不是我們熟悉的手柄。好吧,言歸正轉(zhuǎn),跟著我一起熟悉下制作步驟吧。
這是一臺兩輪驅(qū)動的遙控車
前輪是該車的轉(zhuǎn)向輪
該車的兩個后輪和電機位于車體后部
兼容OpenWrt的路由器,如GL.iNet 6416
支持USB Video Class的攝像頭,我使用的是帶有自動對焦功能的微軟 LifeCam HD-5000
4塊3.7伏的鋰離子電池(一定要買有內(nèi)置保護電路的)
兼容Arduino系統(tǒng)的DIY智能小車Chassis Kit 2 WD
L298N電機驅(qū)動控制器開發(fā)板
多功能DIY直流對直流轉(zhuǎn)換器
FTF杜邦跨接電線
MTF杜邦跨接電線(20厘米)
阻抗為47歐姆的白光LED。
螺母和螺栓。
如上圖所示,無線路由器起到了中樞的作用,它可以控制所有部分。網(wǎng)絡(luò)攝像頭通過支持流媒體視頻的USB接口連接到無線路由器,電機控制板則直接通過通用輸入輸出接口(GPIO)與路由器相連,這樣,即使沒有了遙控器,我們也可控制小車。
在這個項目中我采用了GL.iNet 6416A無線路由器,因為它體積十分小巧(三維只有58*58*22毫米),其機身上的五個接口使用起來也十分方便。
如果存儲空間能過關(guān),其他支持OpenWrt的路由器也能勝任該項工作,你可以在OpenWrt的官網(wǎng)上找到支持該標準的路由器名單。
多數(shù)路由器的接口數(shù)量都稍顯不足,無法滿足控制電機的需求。你可以在路由器上使用類似LED pin的其他引腳,不過你要卸掉LED的接口模塊或者手動控制LED。
我手頭上就有一臺微軟HD-5000攝像頭,它可以錄制720p的視頻。不過攝像頭的自動對焦弄得我煩煩的,小車上這功能沒什么意義,所以干脆直接關(guān)掉這一功能了事。不過攝像頭還是要找個支持UVC的。
電機對電流的需求比路由器提供的要高的多,如果你操控電機時沒有使用H橋,就有可能會對路由器造成損害。我在該項目中使用L298N電機驅(qū)動控制開發(fā)板就是為了控制兩臺直流電機的速度和方向。
在實驗過程中我發(fā)現(xiàn),輸入電壓和L298的輸出電壓之間有一個約為1.5伏的電壓降。
這是一臺可自動降壓升壓的轉(zhuǎn)換器,它具有輸出電壓調(diào)幅功能,可以讓輸出電壓高于或低于輸入電壓。
與線性調(diào)節(jié)器相比,直流對直流轉(zhuǎn)換器的優(yōu)勢在于其轉(zhuǎn)化效率,該效率可達95%以上,因此它的能耗相對來說要低得多。為此我還做了一個簡單的實驗,我將該模塊的輸出電壓改為5伏,而輸入電壓則在2伏到24伏間調(diào)節(jié),但無論輸入電壓如何(除非輸入低于2.6伏),輸出電壓都穩(wěn)定的保持在5伏。
Chassis Kit由丙烯材料制作而成,其尺寸為19.8 x 14.0 x 6.5厘米,比我想象中要小巧許多。裝配過程可不簡單,我絞盡腦汁才把各個零件、模塊和設(shè)備的位置搞清楚。
套件包含兩臺減速電機,兩個塑料輪子,一個能容納4塊AA電池的電池夾,此外還有兩個高速編碼器,不過在這個項目中我們用不到它倆。
據(jù) Gearbest.com上的數(shù)據(jù)顯示,電機的輸入電壓為3伏到12伏,下面幾點是我在網(wǎng)上找到的其他相關(guān)信息。
建議工作電壓為6到8伏
電壓為3V時,其最大扭矩可達800gf cm(約為78牛米)
空載速度可達1:48
負載電流為70毫安(最大250毫安)
這玩意相當有趣,那兩個減速電機體積很小,但性能強勁,甚至可以推動一把塑料椅。
在整個項目中,我使用了4節(jié)3.7伏的18650鋰離子充電電池,其中兩塊串聯(lián),另外兩塊則采用并聯(lián)的方式,這樣電壓就提升到了7.4伏。若使用或充電方式不當,有可能會引發(fā)電池爆炸或火災(zāi),所以我推薦大家購買內(nèi)置保護電路的電池。
由于電機的輸入電壓可變,所以遙控車需要兩種不同的電壓,5伏來支持無線路由器,其它的則供給給電機。
在組裝遙控車前,我訂購了雙USB降壓調(diào)壓器模塊和直流對直流轉(zhuǎn)換器(可自動升壓降壓)。前者通過USB線為無線路由器和網(wǎng)絡(luò)攝像頭提供穩(wěn)定的5伏電壓,后者則會在輸出之前將電壓調(diào)整到電機所需的大小。
在測試過程中,我發(fā)現(xiàn)電機的輸入電壓不能超過5伏,要不然遙控車會速度過快,或者由于電路保護而直接停掉。
基于這一測試結(jié)果,雙USB降壓調(diào)壓器模塊就被我棄用了,而直流對直流轉(zhuǎn)換器則被我留了下來,它可以將輸出電壓穩(wěn)定在4.5伏左右。這樣一來,路由器和攝像頭電壓就變?yōu)?.5伏,兩臺電機則只有3伏的輸入電壓了。
GL.iNet無線路由器出廠就自帶OpenWrt Barrier Braker軟件,它擁有全新設(shè)計的易用網(wǎng)頁界面,你可以在這里對路由器進行設(shè)置。請?zhí)D(zhuǎn)到http://192.168.8.1并登錄你的網(wǎng)絡(luò)賬號。
此外你還可以點擊高級選項(或者打開http://192.168.8.1/cgi-bin/luci)來進入傳統(tǒng)的Luci網(wǎng)絡(luò)界面對路由器進行設(shè)置。
在測試中我發(fā)現(xiàn),如果不登陸到路由器,視頻流就無法正常工作,為此我不得不從OpenWrt的網(wǎng)站上下載相關(guān)文件并將其傳送至路由器。
如果你的路由器上還沒安裝OpenWrt的固件,請參閱相關(guān)教程并對你的固件進行升級。
安裝相關(guān)軟件時路由器需要網(wǎng)絡(luò)連接,所以你得先對路由器進行設(shè)置,具體步驟點這里,學(xué)習(xí)一番之后你就能為路由器設(shè)置好網(wǎng)絡(luò)了。此外,你還可以為路由器創(chuàng)建一個新的SSID,這樣你的各類設(shè)備都能連上互聯(lián)網(wǎng)了。
默認條件下,OpenWrt包括一些標準軟件,借助它們你可以建立無線網(wǎng)絡(luò)或者加入現(xiàn)有網(wǎng)絡(luò),不過你需要在路由器上安裝一些額外的軟件。下面的步驟詳細介紹了攝像頭所需軟件的安裝過程,如果你沒有攝像頭或不需要視頻流,盡可以略過這部分。
使用SSH將軟件傳輸至路由器,然后逐行執(zhí)行下列命令,推薦使用名為PuTTY的工具。
在安裝軟件前,你需要從本地軟件庫中下載當前列表中的軟件包。
opkg update #update list of available packages
對攝像頭進行設(shè)置時,請參閱相關(guān)教程。
opkg install kmod-video-uvc #UVC camera driver
opkg install mjpg-streamer #stream JPEG files over an IP-based network
若要開啟視頻,請對/etc/config/mjpg-streamer文件進行編輯,在這里我是用的編輯工具是WinSCP。
config mjpg-streamer core
option enabled "1"
option device "/dev/video0"
option resolution "640x480"
option fps "15"
option www "/www/webcam"
option port "8080"
如果你想打開或關(guān)掉攝像頭的自動對焦,請安裝uvcdynctrl。
opkg install uvcdynctrl
如果想隨時獲知攝像頭的狀態(tài),請安裝Isof。
opkg install lsof
要開啟視頻請重啟路由器。
/etc/init.d/mjpg-streamer enable
重啟路由器后你就可以使用視頻功能了。
下面一行命令可以暫時關(guān)掉自動對焦功能。
uvcdynctrl --set='Focus, Auto' 0
通過lsof命令來查看攝像頭狀態(tài)。
lsof /dev/video0
將下列代碼保存到/etc/init.d/disableAutoFocus。
#!/bin/sh /etc/rc.common
START=99
STOP=15
start() {
uvcdynctrl --set='Focus, Auto' 0
}
stop() {
uvcdynctrl --set='Focus, Auto'
}
將文件系統(tǒng)權(quán)限設(shè)定為0755,你也可以通過WinSCP修改權(quán)限。
chmod 0755 /etc/init.d/disableAutoFocus
需要時可關(guān)掉自動對焦
/etc/init.d/disableAutoFocus start
激活服務(wù)自啟動能
/etc/init.d/disableAutoFocus enable
該項目的核心代碼由Lua腳本語言撰寫而成,網(wǎng)頁界面則使用了html和javascript。作者已經(jīng)將所有文件整合進了一個壓縮包,請點擊此處下載。
Lua是一種解釋性語言,對腳本進行修改也并不需要重建整個項目,它的代碼在保存后就會立即執(zhí)行,所以Lua在升級和維護上十分方便。如果你對Lua感興趣,可以仔細閱讀下列Lua文檔。
/usr/lib/lua/gpio.lua
控制路由器上各類接口的讀寫工作。
/usr/lib/lua/2w_motor.lua
與gpio.lua協(xié)同工作,可控制小車上的兩臺直流電機。
/www/cgi-bin/control
該程序可作為瀏覽器和路由器之間的一個接口。
之前我們提到過,網(wǎng)頁界面的編寫使用了html和javascript。如果你想開發(fā)自己的界面,可以參考下列文檔。
/www/car/index.html
主程序,可加載外部js & css文件并實現(xiàn)圖像的onClick事件。
/www/car/pantilt.html
主程序,可帶來更大的視頻分辨率。
/www/car/car.css
控制選項布局,如圖片位置,顏色和字體等。
/www/car/car.js
該文檔包含有一部分javascript函數(shù)。
/www/images
網(wǎng)頁上一個裝滿圖片的文件夾。
/www/codebase
該文檔中包含了一部分javascript的元素,開發(fā)者可以用它來制作滑塊。
實際上你并不需要費勁安裝軟件,只要把它們放在路由器的相關(guān)文件夾中就行,在項目中我是用WinSCP來管理文件和文件夾。
WinSCP是Windows下的SFTP/FTP/WebDAV/SCP客戶端,你可以利用它在電腦和路由器間傳輸文檔和管理文件夾。
若你的電腦上已經(jīng)安裝了WinSCP并建立了與路由器的連接,就可以解壓縮下載的文檔(2W_WiFi_car.zip) 到你的電腦并將其傳送至路由器上相應(yīng)的文件夾(如上圖所示)。
名為 /www/cgi-bin/control的文件需要執(zhí)行權(quán)限,請將其權(quán)限修改為0755 (rwxr-xr-x)(如上圖所示)。至于修改權(quán)限的相關(guān)步驟,你可以參考WinSCP的相關(guān)提示。
第十九步:脈寬調(diào)變(PWM)-速度控制
GL.iNet無線路由使用了一塊Atheros AR9331 CPU,不過它在硬件上卻不支持脈寬調(diào)變,想要實現(xiàn)該功能,只能通過安裝相關(guān)軟件來支持。
在內(nèi)核升級到3.14之后,許多OpenWrt的軟件如Barrier Breaker和Chaos Calmer都不再支持輸入輸出接口端的脈寬調(diào)變了。所以你得自行對OpenWrt的固件進行修改,以便使用脈寬調(diào)變功能。
我跟著教程試著對固件進行修改,但當我將修改好的固件上傳至路由器后,它卻直接變磚了,還好路由器恢復(fù)起來比較簡單,真是驚出我一身冷汗。
我上手gpio-pwm-ar9331時間不短了,之前下載了先行編譯版的程序并上傳至我的路由器,不過安裝缺總是出錯,顯示的錯誤信息如下:
Installing kmod-gpio-pwm-ar9331 (3.10.49-1) to root...Collected errors:
* satisfy_dependencies_for: Cannot satisfy the following dependencies for kmod-gpio-pwm-ar9331:* kernel (= 3.10.49-1-69f3c9d824d79ff97e8c05f8219a41f3) *
* opkg_install_cmd: Cannot install package kmod-gpio-pwm-ar9331.
此后,我從源碼對gpio-pwm-ar9331進行了重新編譯,這次安裝成功了,但它卻完全無法工作。
于是我從網(wǎng)上找了一些軟件端脈寬調(diào)頻教程,經(jīng)過不斷地測試,我終于取得了成功,希望在使用過程中不要出現(xiàn)bug。
不過我的擔心還是發(fā)生了,路由器上的脈寬調(diào)頻還是廢了,希望未來幾周我能搞定這個問題。如果各位有什么高見,我洗耳恭聽。
你可以通過網(wǎng)絡(luò)瀏覽器(別用萬惡的IE,我推薦你們使用Chrome)或者安卓應(yīng)用來控制小車。
打開瀏覽器并跳轉(zhuǎn)到http://routerIP/car/(一般是http://192.168.8.1/car/)或者http://routerIP/car/pantilt.html(如:http://192.168.8.1/car/pantilt.html)。
在界面中點擊相關(guān)按鈕或使用鍵盤對校車進行操控。
狂點鍵盤上的一個鍵就可以讓小車跑起來,松開按鍵小車就會停下來。
我的名字叫Wi-Fi遙控車,我于05年十月誕生于馬來西亞。我能跑能看,身強力壯長得又帥,熟悉我之后保證你會愛上我。
你愛上它了嗎?更多有趣的項目,請關(guān)注硬創(chuàng)邦微信(leiphone_bang),還有創(chuàng)客馬拉松的比賽在等著你哦,華南農(nóng)大站的比賽正在火熱報名中,在微信回復(fù)“華農(nóng)”即可參與。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。