999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

DIY基于路由器控制的wifi視頻小車

2018-12-18 11:09:40航天員科研訓練中心
電子世界 2018年23期
關鍵詞:程序

航天員科研訓練中心 楊 勇

介紹了基于路由器直接遙控的wifi視頻小車的軟硬件制作過程。小車以玩具坦克為車身,以GL-iNnet路由器作為無線收發模塊,實現了路由器GPIO端口直接控制小車,并利用V4L2接口發送視頻圖像的功能。編制了Android程序,可實現Android手機接收視頻,并對小車進行遙控。

引言:視頻遙控車一直以來就是DIY的首選作品,因為制作視頻小車需要軟硬件多方面的技能,涉及電子學、網絡、圖形圖像、軟件編程等多方面知識,既有較強的娛樂性,又能鍛煉和提高自身技能。手邊恰好有一款GL-iNet路由器,這款路由器不但將串口引出,還將空余的5個GPIO留出,因此可玩性比較高。此外,正好手邊有一輛兒子玩壞的玩具坦克,就有了以這些為基礎做一輛視頻遙控車的想法。

1.硬件部分

本次DIY的視頻小車硬件部分包括:小車車身、路由器、電機驅動模塊、視頻轉換器、攝像頭、電源。硬件系統圖如圖1所示。

圖1 硬件系統圖

車身是利用壞玩具坦克車的帶有履帶的下半部,車身內是兩只電機,可驅動后輪通過履帶傳動前進。電源由于給路由器供電并驅動小車電機,為直流5V電源,本次DIY制作是將小米移動電源臨時作為小車的電源。電機驅動模塊是L9110電機驅動模塊,一只模塊上有兩只L9110芯片,可同時驅動2個直流電機正反轉。

Wifi小車制作的核心部件是GL-iNet路由器,它是一款專門為OpenWrt而設計路由器,其MCU為Atheros AR9331,主頻400MHz,板載64M內存和16M Flash。PCB板有一只USB接口,可連接U盤或USB攝像頭,板子上預留了5個GPIO,1個電源接口(5V和3.3V各一個),且串口已經焊好。對路由器的改造包括焊接GPIO端子和電源端子。路由器改造部分見圖2所示。本次DIY使用了5個預留GPIO中的四個,Pin21和Pin22控制左輪,Pin18和Pin19控制右輪。將5V電源接口從板子上引出,更方便后續接線。

攝像頭開始使用的是一款支持MJPG格式的USB攝像頭,但后來測試過程中發現在光線暗時,幀率較低,傳輸到手機上的視頻有較明顯的卡頓,因此最后更換成一只汽車倒車攝像頭,該攝像頭輸出信號是模擬視頻信號ITU-R BT.656標準的,為此又增加了一只UVC視頻轉換器,該轉換器的主控芯片為MS2106,可以將CVBS模擬信號轉換為USB2.0接口的數字信號,支持720×480、640×480和480×320三種分辨率,且支持M-JPEG圖像格式輸出。該芯片的視頻處理框圖如圖3所示。

圖2 路由器板子引線

圖3 MS2106芯片視頻處理框圖

2.軟件部分

軟件部分主要分為路由器服務器端編程和手機端Android編程。服務器端和手機端的控制信號和視頻信號均通過TCP進行傳輸。

2.1 編譯OpenWrt

GL-iNet路由器安裝的是chaos calmer(15.05)版本的OpenWrt操作系統,因為原廠路由器中的OpenWrt是原廠定制的,有許多額外的軟件工具。為了提高系統穩定性和增加使用內存效率,所以從github上下載了原版的chaos calmer版的OpenWrt,重新編譯后生成bin文件,通過網頁端刷新固件。編譯OpenWrt時注意的方面包括:

a.在編譯前make menuconfig時,將Target System和Target Profile分別選Atheros AR7xxx/AR9xxx和GL.iNet 6408。為了使用USB攝像頭需將Video Support內各選項選上;

b.第一次編譯通過后,需更改package/base-files/files/lib/functions/uci-default.sh和package/base-files/files/bin/config_generate這2個文件,修改ip地址,以免和家里的無線路由器ip相同。修改package/kernel/mac80211/files/lib/wifi/mac80211.sh文件,將ssid改成自定義的無線網絡名稱,并改為默認開啟wifi模式。修改后再次編譯。

2.2 路由器端口設置

在OpenWrt端首先到設置GPIO的功能,把用到的Pin21、Pin22、Pin18和Pin19設置為輸出模式,以Pin21為例,方法如下:

echo 21 > /sys/class/gpio/export

echo out > /sys/class/gpio/gpio21/direction

在程序中可用如下方法將GIPO設置為1或0(以Pin21為例):

system(“echo 1 > /sys/devices/virtual/gpio/gpio21/value”);

system(“echo 0 > /sys/devices/virtual/gpio/gpio21/value”);

2.3 服務器端程序設計

服務器端主程序為car_main.c,在主程序中fork兩個子進程,分別是gpioserver和v4l2server。gpioserver打開6666端口號,監聽手機客戶端的連接,并根據接收的TCP消息字,向相關GPIO端口發送1或0,控制小車前進、后退和左右轉向。v4l2server打開6688端口號,打開USB攝像頭設備,當手機客戶端的連接后,通過6688端口向手機端發送視頻流。子進程間通過共享內存映射的方式實現進程間通信。程序流程圖如圖4所示。

圖4 軟件流程圖

傳統的攝像頭信號采集和傳輸部分一般采用安裝mjpg-streamer工具,利用web協議進行傳輸。本次DIY沒有采用該方式,而是使用了V4L2(Video4Linux)的API接口,利用TCP協議傳輸。V4L2是Linux下關于視頻采集相關的設備驅動框架,為驅動和應用程序提供了一套統一的接口規范。利用V4L2提供的API函數進行視頻采集和傳輸,主要包括打開攝像頭設備、設置攝像頭視頻輸出模式、設置視頻緩沖區隊列、讀取緩沖區隊列并處理數據等。本程序視頻輸出的分辨率選取480×320,視頻格式選取MJPEG,采集圖像采用內存映射(mmap)方式。

因為程序需要反復調試,所以沒有將程序制作成ipk的安裝程序,而是利用OpenWrt提供的gcc4.8交叉編譯鏈工具,直接將程序編譯成可執行程序,然后服務器端通過wget將可執行程序下載到路由器。

將前文介紹的GPIO的設置語句編寫為shell文件(名稱setled),連同編譯好的主程序可執行文件加入到OpenWrt的/etc/rc.local文件中,以確保路由器開機即執行該程序。

2.4 手機端Android編程

采用eclipse編寫Android程序,程序共2個Activity界面:設置界面和主程序界面。設置界面中設置服務器端IP、控制端口號和視頻傳輸端口號。主程序界面中有前進/后退的按鈕,按鈕事件用于向路由器端發送TCP數據。程序利用SurfaceView類和SurfaceHolder等接口在窗口繪制圖像,在DataInputStream的自定義子類中進行Socket連接,并通過解析jpeg文件的SOI(Start of Image)標記0xFF和0xD8來獲取一副圖像的起始和大小,將數據流包裝為一副圖像并繪制到Canvas上顯示。通過計算1秒鐘內顯示的圖像數得出幀率,將幀率數據顯示在手機屏幕右下角。

3.DIY小車測試

DIY小車外形如圖5所示,手機Andriod運行程序界面如圖6所示。

圖5 小車外觀

圖6 Android程序界面

打開路由器,先手機連接路由器wifi熱點,然后啟動手機客戶端Android程序。程序界面中左右兩邊的上下箭頭分別控制左右兩個輪子的前進和倒退,通過這4個按鈕的不同的組合,可以實現前進、倒退、左轉、右轉等6種控制模式。實測圖像傳輸幀率為30fps左右,視頻流暢,無卡頓。

4.結論

DIY制作wifi小車利用路由器為控制和視頻傳輸部件,沒有制作復雜的電路板,倒車攝像頭、視頻轉換器、電機驅動模塊等可從淘寶購買,總價不超過80元。編寫了路由器服務器端軟件,實現了V4L2的API接口函數進行視頻圖像傳輸,利用視頻轉換器將模擬信號轉換成數字信號,大大提高了圖像傳輸幀率,使得wifi小車娛樂性更強。按照本文所描述的GPIO控制方法,可以制作其他的DIY制作,如遠程控制家里電器等。Gl-iNet只有5個空余的GPIO,如果將路由器串口連接C51等單片機,將擴展GPIO接口,控制能力也會大大提高。

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
基于VMM的程序行為異常檢測
偵查實驗批準程序初探
我國刑事速裁程序的構建
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 中日无码在线观看| 欧美a级在线| 91精品网站| 少妇精品久久久一区二区三区| 欧美一级爱操视频| 四虎综合网| 国产成+人+综合+亚洲欧美| 婷婷色婷婷| 亚洲乱强伦| 国产一区亚洲一区| 国产三区二区| 久久亚洲综合伊人| 先锋资源久久| 亚洲人成网址| 免费高清自慰一区二区三区| 国产乱子伦一区二区=| 亚洲男人的天堂在线| 国产美女叼嘿视频免费看| 亚洲人成网7777777国产| 欧美亚洲欧美| 无码人中文字幕| 免费jjzz在在线播放国产| 欧美日韩国产成人高清视频| av手机版在线播放| 青草视频在线观看国产| 久久这里只精品热免费99| 波多野结衣AV无码久久一区| 欧美亚洲欧美区| 国产精品毛片一区| 日日拍夜夜嗷嗷叫国产| 久久国产精品波多野结衣| 在线观看视频99| 亚洲男人在线| 久久精品中文字幕免费| 国产精品永久久久久| 欧美自慰一级看片免费| 国产精品爽爽va在线无码观看| 欧美爱爱网| 亚洲成肉网| 午夜限制老子影院888| 成人在线综合| 亚洲成A人V欧美综合天堂| 国产亚洲精品无码专| 久草视频福利在线观看| 97久久免费视频| 亚洲乱强伦| 国产对白刺激真实精品91| 亚洲天堂啪啪| 国产成人凹凸视频在线| 亚洲 日韩 激情 无码 中出| 中文字幕在线看| 亚洲精品天堂在线观看| 狠狠做深爱婷婷久久一区| 免费国产一级 片内射老| 亚洲品质国产精品无码| 亚洲第一视频免费在线| 日韩资源站| 国产成人综合久久| 国产美女免费| 青青草原国产| 一级毛片在线免费看| 久久国产拍爱| 欧美在线伊人| 无码av免费不卡在线观看| 欧美日韩导航| 亚洲va欧美ⅴa国产va影院| 特级毛片免费视频| 国产真实乱人视频| 国产日本欧美亚洲精品视| 午夜福利在线观看入口| 91福利国产成人精品导航| 亚洲中文无码h在线观看| 97亚洲色综久久精品| 91美女在线| 亚洲国产在一区二区三区| 亚洲AⅤ波多系列中文字幕| 91视频区| 日韩二区三区无| 亚洲无码高清免费视频亚洲 | 中文字幕在线一区二区在线| 亚洲男人的天堂视频| 亚洲三级片在线看|