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