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