亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        航天員科研訓練中心 楊 勇

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

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

        1.硬件部分

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

        圖1 硬件系統(tǒng)圖

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

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

        攝像頭開始使用的是一款支持MJPG格式的USB攝像頭,但后來測試過程中發(fā)現(xiàn)在光線暗時,幀率較低,傳輸?shù)绞謾C上的視頻有較明顯的卡頓,因此最后更換成一只汽車倒車攝像頭,該攝像頭輸出信號是模擬視頻信號ITU-R BT.656標準的,為此又增加了一只UVC視頻轉(zhuǎn)換器,該轉(zhuǎn)換器的主控芯片為MS2106,可以將CVBS模擬信號轉(zhuǎn)換為USB2.0接口的數(shù)字信號,支持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操作系統(tǒng),因為原廠路由器中的OpenWrt是原廠定制的,有許多額外的軟件工具。為了提高系統(tǒng)穩(wěn)定性和增加使用內(nèi)存效率,所以從github上下載了原版的chaos calmer版的OpenWrt,重新編譯后生成bin文件,通過網(wǎng)頁端刷新固件。編譯OpenWrt時注意的方面包括:

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

        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改成自定義的無線網(wǎng)絡名稱,并改為默認開啟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端口號,監(jiān)聽手機客戶端的連接,并根據(jù)接收的TCP消息字,向相關GPIO端口發(fā)送1或0,控制小車前進、后退和左右轉(zhuǎn)向。v4l2server打開6688端口號,打開USB攝像頭設備,當手機客戶端的連接后,通過6688端口向手機端發(fā)送視頻流。子進程間通過共享內(nèi)存映射的方式實現(xiàn)進程間通信。程序流程圖如圖4所示。

        圖4 軟件流程圖

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

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

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

        2.4 手機端Android編程

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

        3.DIY小車測試

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

        圖5 小車外觀

        圖6 Android程序界面

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

        4.結論

        DIY制作wifi小車利用路由器為控制和視頻傳輸部件,沒有制作復雜的電路板,倒車攝像頭、視頻轉(zhuǎn)換器、電機驅(qū)動模塊等可從淘寶購買,總價不超過80元。編寫了路由器服務器端軟件,實現(xiàn)了V4L2的API接口函數(shù)進行視頻圖像傳輸,利用視頻轉(zhuǎn)換器將模擬信號轉(zhuǎn)換成數(shù)字信號,大大提高了圖像傳輸幀率,使得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
        失能的信仰——走向衰亡的民事訴訟程序
        “程序猿”的生活什么樣
        英國與歐盟正式啟動“離婚”程序程序
        基于VMM的程序行為異常檢測
        偵查實驗批準程序初探
        我國刑事速裁程序的構建
        創(chuàng)衛(wèi)暗訪程序有待改進
        恐怖犯罪刑事訴訟程序的完善
        青青草成人原视频在线播放视频| 藏春阁福利视频| 欧美午夜a级精美理论片| 资源在线观看视频一区二区| 国产精品自拍视频在线| 午夜熟女插插xx免费视频| 亚洲精品92内射| 久久久久久中文字幕有精品| 国产少妇一区二区三区| 亚洲精品1区2区在线观看| 色橹橹欧美在线观看视频高清| 欧美日韩性视频| 久久婷婷色香五月综合激激情| 91精品国产92久久久| 激情综合色综合啪啪五月丁香| 日韩欧美第一页| 日本大片在线一区二区三区| 亚洲av高清一区二区三| 国产天美传媒性色av| 国产成人精品日本亚洲专区6| 精品人妻av区二区三区| 日本污ww视频网站| 免费a级毛片无码a| 69堂在线无码视频2020| 中国黄色一区二区三区四区| 亚洲av永久无码精品三区在线| 538在线啪在线观看| 亚洲av一区二区三区网站| 国产网站一区二区三区| 亚洲av永久无码国产精品久久| 成人无码区免费AⅤ片WWW| av毛片亚洲高清一区二区| 久久久久夜夜夜精品国产| 国内揄拍国内精品| 午夜日本精品一区二区| 青青草成人在线免费视频| 男女啪啪永久免费观看网站| 亚洲精品国产老熟女久久| 日本视频在线播放一区二区| 亚洲成在人线av品善网好看| 精品免费福利视频|