李喜鵬+陳嘉威+趙長(zhǎng)安
摘 要:本設(shè)計(jì)基于樹莓派3代b型開發(fā)板,搭配L298N系統(tǒng)小車,構(gòu)成主體硬件架構(gòu)。先在樹莓派上安裝樹莓派官方攝像頭,通過(guò)樹莓派創(chuàng)建無(wú)線AP。在C/S模式下使用TCP Socket編程技術(shù)實(shí)現(xiàn)樹莓派與PC上位機(jī)的無(wú)線數(shù)據(jù)通信,PC上位機(jī)可時(shí)實(shí)顯示視頻信息,并可以通過(guò)控制樹莓派GPIO來(lái)控制小車的行進(jìn)方向。實(shí)驗(yàn)證明該系統(tǒng)能夠穩(wěn)定正常運(yùn)行,可靠性較高。
關(guān)鍵詞:樹莓派;TCP Socket;車載無(wú)線視頻傳輸
21世紀(jì),攝像頭已經(jīng)成為了人們必不可少的工具之一。隨著攝像頭各項(xiàng)技術(shù)的提升和Linux軟件的創(chuàng)新,攝像頭的應(yīng)用變得越來(lái)越廣,視頻信息的傳輸也從初始的有線傳輸變?yōu)闊o(wú)線傳輸。本系統(tǒng)的設(shè)計(jì)可以作為智能家居機(jī)器人的初始模型,小車系統(tǒng)可視為機(jī)器人機(jī)身,攝像頭則是機(jī)器人的眼睛,通過(guò)PC上位機(jī)可實(shí)時(shí)接收到機(jī)器人所傳輸過(guò)來(lái)的視頻信息并控制機(jī)器人前進(jìn),基于我們所設(shè)計(jì)的系統(tǒng)模型,讀者可以自行添加拓展模塊,如傳感器模塊,對(duì)室內(nèi)溫濕度各種指標(biāo)進(jìn)行采集。
1 硬件及開發(fā)技術(shù)簡(jiǎn)介
1.1 樹莓派
樹莓派由注冊(cè)于英國(guó)的慈善組織Raspberry PI開發(fā),本設(shè)計(jì)使用樹莓派3代B型,其采用ARM7架構(gòu),是一臺(tái)只有信用卡大小的微型電腦,其系統(tǒng)基于Linux。Raspberry PI 3B版本搭載1.2GHz 的64位四核處理器(ARM Cortex-A53 1.2GHz 64-bit quad-core ARMv8 CPU),1GB 內(nèi)存,擁有4個(gè)USB2.0接口,支持HDMI及RCA輸出,帶有WiFi和藍(lán)牙4.1模塊。支持Java、Python,Java,C等編程語(yǔ)言。
本設(shè)計(jì)使用的樹莓派系統(tǒng)為RASPBIAN JESSIE LITE,使用讀卡器和鏡像燒寫軟件Win32DiskImager將系統(tǒng)燒寫到SD卡中。
1.2 樹莓派官方攝像頭
本設(shè)計(jì)采用Raspberry Pi Camera V2 視頻模塊,其使用Sony IMX219PQ CMOS 圖像傳感器,具有8 百萬(wàn)像素固定焦點(diǎn)(包括小焦點(diǎn)調(diào)整工具),最高支持1080p視頻傳輸。
1.3 小車系統(tǒng)
本設(shè)計(jì)使用常見的亞克力板作為小車底盤,搭載L298N電機(jī)驅(qū)動(dòng)模塊,驅(qū)動(dòng)模塊輸出端接直流電機(jī),控制端接樹莓派的GPIO,樹莓派的GPIO由wiringPi庫(kù)來(lái)控制。
WiringPi是應(yīng)用于樹莓派平臺(tái)的GPIO控制庫(kù)函數(shù),可以使用C語(yǔ)言或者C++開發(fā)。程序編寫中用到WiringPi庫(kù)中pinMode函數(shù)來(lái)配置指定引腳的IO模式,本設(shè)計(jì)中使用OUTPUT模式,使用digitalWrite函數(shù)來(lái)控制引腳輸出電平信號(hào)的高低。本設(shè)計(jì)中樹莓派的GPIO1,GPIO4,GPIO5,GPIO6接L298N的控制端IN1-IN4。
小車前進(jìn)代碼如下:
#definecar_godigitalWrite(1,HIGH);digitalWrite(4,LOW);
digitalWrite(5,HIGH);digitalWrite(6,LOW)
2 軟件部分簡(jiǎn)介
2.1 樹莓派創(chuàng)建無(wú)線AP
本設(shè)計(jì)使用樹莓派自帶的WiFi模塊,用create_ap項(xiàng)目將其變成無(wú)線熱點(diǎn),從而使樹莓派成為C/S模式下的服務(wù)器。安裝create_ap后,輸入如下命令
sudo create_ap- -no -virt wlan0 eth0 car123456789
創(chuàng)建一個(gè)名為car,密碼為123456789的無(wú)線AP。
在樹莓派中輸入ifconfig命令,可查看樹莓派的IP地址。
2.2 開源視頻服務(wù)器軟件MJPG-streamer的安裝
MJPG-streamer軟件使用V4L2接口,從webcam攝像頭采集圖像,把它們以流的形式通過(guò)基于IP的網(wǎng)絡(luò)傳輸?shù)綖g覽器如Firehox,Cambozola,VLC播放器,Windows的移動(dòng)設(shè)備或者其他擁有瀏覽器的移動(dòng)設(shè)備。
這款工具源代碼簡(jiǎn)潔,注釋清晰。組件功能明確,銜接清晰。使用Linux C語(yǔ)言進(jìn)行開發(fā),可以移植到不同的計(jì)算機(jī)平臺(tái)。在樹莓派上安裝MJPG-streamer軟件后,電腦連接到樹莓派AP,可在如下網(wǎng)址中看到傳輸過(guò)來(lái)的視頻。
http://<樹莓派IP>:8080/?action=stream
2.3 PC上位機(jī)編寫
客戶端軟件通過(guò)Microsoft Visual Studio 2010使用C#.NET語(yǔ)言開發(fā)實(shí)現(xiàn),可以完成連接樹莓派服務(wù)器,并接收、顯示、保存數(shù)據(jù)等功能。
樹莓派與PC上位機(jī)的無(wú)線數(shù)據(jù)通信使用TCP Socket編程實(shí)現(xiàn),涉及到客戶端和服務(wù)器三次握手和四次釋放的過(guò)程。Socket技術(shù)基于IP和端口就能傳送數(shù)據(jù)。在上位機(jī)中,一共需要確定服務(wù)器的兩個(gè)Socket,一個(gè)為視頻傳輸?shù)腟ocket,一個(gè)為控制小車行進(jìn)的Socket。上位機(jī)通過(guò)WiFi向下位機(jī)發(fā)出控制信號(hào),下位機(jī)接收到數(shù)據(jù)包以后,對(duì)數(shù)據(jù)進(jìn)行解析,當(dāng)解析出來(lái)的數(shù)據(jù)與樹莓派內(nèi)部編寫的控制數(shù)據(jù)一致時(shí),樹莓派執(zhí)行控制命令,改變GPIO口輸出的電平高低,從而控制L298N電機(jī)驅(qū)動(dòng)模塊。上位機(jī)與下位機(jī)的通信協(xié)議中前進(jìn)命令協(xié)議包為FF000000FF,其他命令仿照次協(xié)議包修改數(shù)據(jù)位數(shù)值即可。
3 系統(tǒng)總體工作流程
本設(shè)計(jì)首先通過(guò)樹莓派基于自身的WiFi模塊創(chuàng)建無(wú)線AP,并在樹莓派上安裝開源視頻服務(wù)器軟件MJPG-streamer,使用TCP socket編程技術(shù),實(shí)現(xiàn)上位機(jī)與下位機(jī)的通信,從而實(shí)現(xiàn)整個(gè)車載無(wú)線視頻傳輸系統(tǒng)的設(shè)計(jì),整體流程圖如下:
本系統(tǒng)在搭建完后,在50平米的實(shí)驗(yàn)室內(nèi)測(cè)試,在PC上位機(jī)的控制下,小車能夠穩(wěn)定快速的實(shí)現(xiàn)前進(jìn)轉(zhuǎn)彎的功能,攝像頭所采集到的視頻信息也能快速地傳回上位機(jī)并實(shí)時(shí)顯示,本設(shè)計(jì)測(cè)試時(shí)系統(tǒng)設(shè)置的視頻流為720p、24幀,因?yàn)槭褂玫氖菢漭勺詭У腤iFi模塊進(jìn)行視頻傳輸,WiFi模塊的數(shù)據(jù)吞吐量大,視頻顯示十分流暢。實(shí)驗(yàn)證明本系統(tǒng)能夠穩(wěn)定正常運(yùn)行,可靠性較高。
4 結(jié)束語(yǔ)
本設(shè)計(jì)基于樹莓派開發(fā)板,使用Linux開發(fā)環(huán)境,由于Linux系統(tǒng)的開源性,我們使用開源項(xiàng)目MJPG-streamer對(duì)視頻流進(jìn)行了采集和處理,并通過(guò)Linux的網(wǎng)絡(luò)套接字方式完成了圖像數(shù)據(jù)的傳輸,及控制命令的傳輸。實(shí)驗(yàn)結(jié)果證明,本設(shè)計(jì)穩(wěn)定可靠。作為一個(gè)基本的車載無(wú)線視頻傳輸?shù)哪P?,本設(shè)計(jì)還有許多模塊的功能值得開發(fā)拓展,如室內(nèi)智能家居,圖像識(shí)別,手勢(shì)識(shí)別,安防監(jiān)控。加上上述這些功能模塊后,本設(shè)計(jì)將具有更廣泛的用途,在人們的生活中,起到更大的幫助作用。
參考文獻(xiàn)
[1]曹秀霞.基于TCP_IP協(xié)議的無(wú)線視頻傳輸控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安:西安電子科技大學(xué),2013.
[2]陳書益.開源視頻服務(wù)器軟件MJPG_streamer的研究和應(yīng)用[D].廣州:廣東工業(yè)大學(xué),2012.
[3]李龍棋.樹莓派平臺(tái)下的實(shí)時(shí)監(jiān)控系統(tǒng)開發(fā)[D].福州:閩江學(xué)院物理學(xué)與電子信息工程系,2014.
[4]Schmidt M. Raspberry Pi 快速入門指南[M].王峰,王江偉,王汝波,譯.北京:科學(xué)出版社,2014.
[5]王偉江.玩轉(zhuǎn)樹莓派Raspberry Pi[D].北京:北京航空航天大學(xué)出版社,2013.
[6]鳥哥.鳥哥的Linux私房菜[M].北京:人民郵電出版社,2011.