Wi-Fi遙控小車(chē)的想法稱(chēng)不上新穎,國(guó)外電影頻頻出現(xiàn),國(guó)內(nèi)喜歡折騰的geeker也曬過(guò)相關(guān)教程。這里再推薦個(gè),作者將自己折騰出來(lái)的兩代Wi-Fi小車(chē)經(jīng)驗(yàn)都分享了出來(lái)(不過(guò)只說(shuō)了原理,沒(méi)說(shuō)代碼),一代是基于51單片機(jī),二代跟今天FixedGear分享的這個(gè)一樣,基于Arduino。做這種遙控小車(chē),Arduino平臺(tái)像是量身打造的,開(kāi)發(fā)起來(lái)要比單片機(jī)簡(jiǎn)單很多,關(guān)于Arduino,這里就不介紹了,感興趣的朋友閑來(lái)無(wú)事可以了解、學(xué)習(xí)一下。
改進(jìn)(基本原理):利用網(wǎng)絡(luò)攝像頭報(bào)警輸出端口的繼電器開(kāi)開(kāi)合合形成一個(gè)二進(jìn)制的編碼,然后用Arduino翻譯,擴(kuò)展攝像頭I/O。 準(zhǔn)備材料 1、網(wǎng)絡(luò)攝像頭(上海KaiCong) 2、Arduino控制板 3、電機(jī)驅(qū)動(dòng)擴(kuò)展板 4、Arduino穩(wěn)壓板(為了保證網(wǎng)絡(luò)攝像頭穩(wěn)定的電源) 5、10k電阻(端口上拉)及面包線(xiàn) 6、小車(chē)底盤(pán)、(2WD / 4WD)(含直流電機(jī)、電源) 這些東西TB上都能淘到,其中,網(wǎng)絡(luò)攝像頭和Arduino控制板比較核心,一個(gè)眼睛一個(gè)大腦,放到最后重點(diǎn)說(shuō)。 L298P電機(jī)驅(qū)動(dòng)擴(kuò)展板: 為了保證攝像頭使用電壓的穩(wěn)定,我沒(méi)有使用Arduino板上的5V電壓,而是單獨(dú)用了一塊穩(wěn)壓擴(kuò)展板。該擴(kuò)展板在小車(chē)調(diào)試前期可不用,直接用穩(wěn)壓器給網(wǎng)絡(luò)攝像頭提供電源。 穩(wěn)壓擴(kuò)展板: 小車(chē)底盤(pán)(2WD /4WD)是路虎5履帶底盤(pán)。最后找了一個(gè)直插的10k電阻,再準(zhǔn)備一些面包線(xiàn),這樣所有的材料都準(zhǔn)備好了。 組著完畢后的底盤(pán): 開(kāi)動(dòng)! 穩(wěn)壓擴(kuò)展板的使用很簡(jiǎn)單,我們先來(lái)簡(jiǎn)單介紹一下。如下圖的標(biāo)識(shí),將電池接到擴(kuò)展板的輸入端子,輸入端子旁邊的兩個(gè)跳線(xiàn)帽要跳到PWRIN位置。然后調(diào)節(jié)輸出電壓微調(diào)電位器,用萬(wàn)用表測(cè)量電源輸出端電壓使其穩(wěn)定在5V。最后將網(wǎng)路攝像頭電源接口與擴(kuò)展板電源輸出端連在一起。 至于電機(jī)驅(qū)動(dòng)板的使用相信大家都比較熟悉了,這里再簡(jiǎn)單提兩句。先要選擇控制方式,這個(gè)制作中使用的是PWM方式。再者就是連接直流電機(jī),如下圖所示的連接端子。M1+和M1—連接一個(gè)直流電機(jī),M2+和M2—連接另一個(gè)直流電機(jī),電機(jī)驅(qū)動(dòng)板占用Arduino的4、5、6、7腳。 連接眼睛和大腦 最后,重點(diǎn)來(lái)說(shuō)一下Arduino控制板與網(wǎng)絡(luò)攝像頭的連接。網(wǎng)上有朋友用攝像頭公司提供的插件做了一個(gè)運(yùn)行在PC端的app,以此來(lái)控制繼電器產(chǎn)生寬窄不一的脈沖。這里我沒(méi)有采用這種方式,做app也不是誰(shuí)都能完成的。本人采用的方式是直接用Arduino捕獲攝像頭內(nèi)控制步進(jìn)電機(jī)的信號(hào),拆掉了攝像頭中左右轉(zhuǎn)的步進(jìn)電機(jī),用攝像頭本身左右旋轉(zhuǎn)的信號(hào)來(lái)控制小車(chē)的左右轉(zhuǎn),而用繼電器的吸合來(lái)控制小車(chē)的前進(jìn)與停止。 具體方法如下: 導(dǎo)線(xiàn)引出后,我們合上攝像頭的底蓋,來(lái)看看它背面的接口。如下圖所示,在攝像頭后面最中間的是天線(xiàn)接口,天線(xiàn)右側(cè)的4個(gè)I/O口就是報(bào)警輸出端口,4個(gè)I/O用1、2、3、4標(biāo)識(shí),其中1、2是報(bào)警輸出端口,分別接到了繼電器兩端,3為報(bào)警輸入端口(此端口未用),4為攝像頭內(nèi)容電路的數(shù)字地。 這3個(gè)I/O(不包括3號(hào)I/O)加上之前的A+和B+總共5條線(xiàn),與Arduino的連接關(guān)系如下圖所示。連接攝像頭內(nèi)報(bào)警繼電器一端的2腳連到Arduino的GND,而連接繼電器另一端的1腳連到Arduino的9腳,同時(shí)在9腳加上10k的上拉電阻,這樣當(dāng)繼電器未吸合時(shí),9腳因?yàn)樯侠娮,所以狀態(tài)為高;而當(dāng)繼電器吸合時(shí),9腳接GND,所以狀態(tài)為低。網(wǎng)絡(luò)攝像頭報(bào)警接口的4腳也要連接到Arduino的GND,以使網(wǎng)絡(luò)攝像頭控制板與Arduino共地。A+與B+分別連接到Arduino的2、3腳,這兩個(gè)腳如果連反了可以在程序中調(diào)整。 步進(jìn)電機(jī)的控制方式是不斷的變化A、B兩相上的電壓大小和電流方向,這樣在A+和B+上就會(huì)產(chǎn)生一串脈沖。使用示波器觀察我們發(fā)現(xiàn),當(dāng)發(fā)送左轉(zhuǎn)的命令時(shí),首先在A+上產(chǎn)生脈沖,而當(dāng)發(fā)送右轉(zhuǎn)的命令時(shí),首先在B+上產(chǎn)生脈沖,效果如下圖所示。 我們就利用A+、B+上的信號(hào)差異,以及繼電器的吸合來(lái)實(shí)現(xiàn)對(duì)小車(chē)的控制。Arduino端用到了外部中斷功能,2腳對(duì)應(yīng)Arduino外部中斷0,3腳對(duì)應(yīng)Arduino外部中斷1。
詳細(xì)代碼 /********************************************** ps:可以在代碼中添加一些Serial.println()的語(yǔ)句來(lái)查看一下程序在我們控制攝像頭時(shí)能夠做出正確的相應(yīng)。代碼調(diào)試完成后,如圖下圖所示,將Arduino控制板、電機(jī)驅(qū)動(dòng)擴(kuò)展板、穩(wěn)壓擴(kuò)展板層疊的插在一起固定在小車(chē)的后面,前方安裝好攝像頭。 完成后的Wi-Fi小車(chē)上電工作正常后,如圖下圖所示。Wi-Fi小車(chē)的控制與攝像頭的控制方式類(lèi)似,打開(kāi)電腦瀏覽器,在地址欄中輸入網(wǎng)絡(luò)攝像頭的IP地址進(jìn)入監(jiān)控界面,就可以使用界面右側(cè)的按鈕來(lái)控制這部簡(jiǎn)易的Wi-Fi小車(chē)。另外,我選的這款攝像頭還有一個(gè)廠家分配的唯一域名,只要在我們的路由器端簡(jiǎn)單配置就能夠?qū)崿F(xiàn)廣域網(wǎng)條件下的小車(chē)控制了。 OK,大功告成!
|