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