王 茜
(山西金融職業學院 信息技術系,山西 太原 030008)
?
便攜式移動監控系統的軟硬件設計
王 茜
(山西金融職業學院 信息技術系,山西 太原 030008)
文章設計并成功實現了一個便攜式移動監控系統,通過監控小車自建WIFI熱點,實時將視頻流傳輸到安卓手機客戶端觀看,同時接收來自手機端的控制信號進而執行攝像頭云臺轉動、行駛移動、速度調整等動作.文章從小車端硬件、小車端軟件、手機端軟件三個方面對系統進行了介紹,并著重說明了硬件電路設計及器件選型、視頻采集壓縮傳送算法、小車與手機通信協議.實驗證明,系統各項功能滿足設計預期,能夠較好地完成遙控小車移動、云臺轉動、視頻處理等工作,并且相關設備體積較小便于攜帶安裝.
便攜式;移動監控;視頻處理;WIFI
近年來,智能設備的研究得到了長足發展[1],其智能化程度也得到了很大提高,搭載了移動視頻監控平臺的智能機器人的應用領域越來越廣泛[2],不僅在工業、農業、醫療、服務等基礎性產業中應用廣泛,而且也在反恐排爆、軍事偵察和空間探測領域等特殊場合得到很好的應用并且表現突出[3].本文介紹了一個低成本的、便于組裝的可移動便攜式監控系統的軟硬件設計.系統通過監控小車自建WIFI熱點,實時將視頻流傳輸到安卓手機客戶端觀看,同時接收來自手機端的控制信號執行攝像頭云臺轉動、行駛移動、速度調整等動作.
設備組成上,系統由可移動監控小車、Android控制端軟件兩部分組成(見圖1).小車是整個移動視頻監控系統的核心,負責實現小車移動、視頻采集、編碼、傳輸、WIFI無線通訊等功能.它使用安卓手機作為主控端,通過WIFI無線網絡對小車進行移動方向、速度的控制,小車上的攝像頭可利用云臺轉動,可以實時采集視頻圖像信號,并通過無線網絡將視頻信號傳輸到手機端供人觀看.
文章將分為小車端硬件、小車端軟件、手機端軟件三部分進行介紹.

圖1 系統總體設計結構圖
監控小車控制電路的上層以ARM處理器S3C2440A為核心,運行Linux系統,搭載無線網卡進行WIFI通訊,同時使用串口與下層單片機通訊.下層51單片機接收、解析ARM處理器的通訊信號并控制電機和云臺舵機的運動.硬件上兩層架構的設計充分發揮了不同控制芯片的優勢,而且系統各組件的模塊化具有系統耦合性低、可拓展性強、系統穩定性高的優點.
2.1 CPU選型
由于在功能設計上需要實現WIFI通訊和實時的視頻監控,所以硬件上對處理器的要求比較高,上層平臺需要一個速度較快、滿足需求的處理器,這里采用了三星公司的基于ARM9架構一款處理器.
2.2 無線網卡選型
無線網卡選擇應該基于OpenWrt對無線網卡的支持列表而定.本設計中選擇基于Atheros AR9271芯片的TP-Link wn722n USB無線網卡.
2.3 攝像頭選型
系統采用了基于USB接口的視頻采集.Linux在USB攝像頭的支持方面良好,只要設計制作符合UVC規范的攝像頭,一般都能被Linux兼容.在Linux UVC官方網站上有一個支持Linux UVC的設備列表.本設計選用的攝像頭即為支持UVC規范的設備.
2.4 小車硬件設計
小車車體采用三輪式結構,前面兩輪負責提供動力和方向控制,后面萬向輪負責保持車體平衡及支撐車體.小車車體材料采用堅固、質輕的亞克力板,其上打孔安裝控制電路.
小車運動的實現依賴于車輪上的直流電機,直流電機的控制采用L298N雙H橋電機控制芯片,攝像頭角度的轉動使用舵機來實現.在電機和舵機控制方面,如果使用ARM處理器來控制,就需要編寫Linux系統中相應的字符設備驅動程序,增加了項目復雜度和不穩定性,所以為了實現電機和舵機的準確穩定的控制,需要將硬件分為兩層架構,底層采用編程簡便、成熟、可行性高的STC89C52RC單片機作為電機和舵機云臺的控制器.
2.5 直流電機控制
直流電機用來驅動小車移動,其轉向和速度的控制使用L298N控制芯片實現(見圖2).直流電機驅動板在L298N芯片的基礎上設計了外圍電路,它具有帶載能力強的特點.

圖2 控制板驅動原理圖
2.6 舵機控制
舵機用來控制云臺的轉動.舵機的控制一般需要一個20ms左右的時基脈沖,其中高電平部分用來控制轉動角度.以180度角度伺服為例,對應的控制關系如下.
0.5ms-----------0 度
1.0ms-----------45度
1.5ms-----------90度
2.0ms-----------135度
2.5ms-----------180度
設計中云臺使用的舵機為輝盛SG90 9G舵機,控制脈沖的產生使用單片機編程實現.
軟件部分涉及到單片機的串口通信及電機、舵機控制、Linux系統下的WIFI通訊、視頻采集、編碼等功能.根據視頻監控小車的功能需求及技術需求,軟件部分包括無線WIFI通訊、視頻處理和小車控制三個部分.
3.1 無線WIFI通訊
WIFI通訊移植嵌入式Linux發行版利用OpenWrt實現[4],OpenWrt是一個開源的專用于無線路由器等網絡設備的Linux發行版,對于無線WIFI通訊有著完善的軟件支持.OpenWrt的設計初衷是為無線路由等設備提供一個開源、免費、可配置性高、自由定制的網絡專用系統[5].所以,OpenWrt系統對市面上各種WIFI無線網卡芯片有著廣泛的支持.本設計所采用的TP-Link wn722n的無線SoC芯片為基于Atheros方案的AR9271芯片,OpenWrt系統對該芯片的驅動支持良好.具體使用make menuconfig,在OpenWrt固件編譯過程中啟用對該型號芯片支持及無線通訊相關軟件包配置的過程這里不再贅述.
3.2 視頻處理
視頻采集壓縮傳輸采用開源的MJPG-streamer來實現.MJPG-streamer是一個開源的視頻服務器軟件[6],該軟件內建一個輕量級的HTTP服務器,可應用在基于IP協議的網絡中,從攝像頭中獲取JPEG圖像并傳輸MJPG格式的視頻瀏覽器或者專用客戶端觀看.具體可分為視頻采集、視頻壓縮和視頻傳輸三個部分.

圖3 視頻采集流程圖
(1)視頻采集.視頻采集基本流程如圖3所示.
(2)視頻壓縮.大多數攝像頭都是以MJPG/YUV格式輸出視頻.本設計最終給瀏覽器發送的是JPEG格式的圖像,故需要把MJPEG轉換成JPEG.工程中采用的方法是,在MJPEG的幀起始標志0xffc0之前插入Huffman表.
(3)視頻傳輸.視頻傳輸采用了并發服務器來提高性能,具體流程如圖4所示.

圖4 多線程服務器程序流程圖
3.3 小車控制
小車的電機和舵機的控制信號是通過手機先發送給ARM上的Linux系統,然后ARM平臺再將控制信號通過串口通訊轉發給51單片機.本功能采用開源的網絡串口轉換軟件set2net來實現.
舵機和電機都是利用單片機產生PWM(脈沖寬度調制)信號分別進行轉速、角度的控制.通過對51單片機的中斷、定時器等資源進行編程來產生PWM控制信號.
(1)通信協議.為了實現對WIFI小車的控制,就必須在Android控制端與移動監控小車之間預先定義好一系列指令.每一條控制指令由5個8位二進制數構成.表1是系統中定義的控制指令.
(2)云臺控制.云臺有上下和左右兩個轉動方向,需要兩路PWM控制.但STC89C52RC單片機內部總共只有三個定時器.其中定時器1用來做串口通訊的波特率發生器,定時器2用來做兩路電機的PWM調速,只剩下一個定時器0可以用來產生舵機PWM信號.為了只利用一個定時器實現多路舵機的控制功能,這里通過計算設計了一種算法,可以只利用一個定時器0實現8路舵機的控制.
表1 小車控制協議定義

舵機控制中負責控制舵機角度的高電平脈沖的時間一般為0.5ms至2.5ms范圍內.所以,由于一個脈沖周期高電平的持續時間最長也只有2.5ms,所以可以把一個周期分成8部分,每個部分2.5ms.定時器0在一個20ms周期內輪流為8路舵機服務,控制每路舵機的高電平時間.
(3)電機控制.STC89C52RC中的定時器2用來控制兩個電機的轉速.這里用到了與舵機控制類似的算法,使用一個定時器2來產生.
手機端軟件基于Android sdk進行開發,是一款可以安裝使用在主流安卓手機上的APP,主要負責小車控制、視頻接收顯示,以及監控信息記錄,各子系統的模塊結構如圖5所示.

圖5 手機端軟件模塊圖
手機端軟件功能介紹如下,具體實現過程不是文章重點,這里不再贅述.
(1)視頻接收子系統
視頻網絡傳輸模塊
為了使得視頻監控系統的安卓客戶端和小車端可以進行實時通信,傳輸模塊通過SOCKET網絡通信和HTTP傳輸實現;
視頻解碼模塊
把MJPEG解碼成一幀一幀的JPEG圖像;
視頻顯示模塊
為保證視頻較為流暢,采用SurfaceView技術實現視頻的顯示.
(2)小車控制子系統
控制信號通信模塊;
用戶控制界面;
小車狀態顯示;
(3)監控信息記錄子系統
負責截屏,錄像等視頻保存功能.
針對系統核心功能WIFI通訊和視頻采集進行了如下實驗內容.具體如表2、表3所示.
表2 無線WIFI通訊部分實驗

表3 視頻采集功能實驗

文章介紹的便攜式移動視頻監控系統包括了無線WIFI通訊,視頻采集、壓縮、編碼和傳輸,并實現了監控平臺的移動功能.從實驗結果可知,系統各項功能滿足設計預期,能夠較好地采集、傳送、展示和存儲視頻信息,并且相關設備體積較小便于攜帶安裝.當然,系統在視頻壓縮效果、信號穩定性方面還有一定不足,還需進一步完善提高.
[1]朱兆坦.論公共安全視頻監控系統的現狀及建設方向[J]. 信息網絡,2010(06):45-48.
[2]薛子伯.基于WIFI的觸發式無線圖像采集系統的研究與設計[D].長春:吉林大學,2011:3-10.
[3]張科.嵌入式運動物體自動跟蹤視頻監控器的設計實現[D].成都:西南交通大學,2010:40-46.
[4]Christopher Hallinan.Embedded Linux Primer[M].3th Edition.Boston: Pearson Education,2011.
[5]Neil Matthew,Richard Stones. Beginning Linux Programming [M].4th Edition.Indianapolis:Wiley Publishing,2007.
[6]Vide04Linux Kernel API Reference.[EB/OL].http:// linux. bytesex.org/v412/API.html
(責任編輯:王前)
10.13877/j.cnki.cn22-1284.2016.08.005
2016-07-08
王茜,女,山西太原人,講師.
TP27
A
1008-7974(2016)04-0016-04