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