方立軍,陳衛松,章良玉,王康景
(安徽師范大學 物理與電子信息學院,安徽 蕪湖 241000)
?
基于STM32的以太網網絡視頻監控系統
方立軍,陳衛松,章良玉,王康景
(安徽師范大學 物理與電子信息學院,安徽 蕪湖 241000)
基于STM32F407芯片、LAN8720A模塊以及OV2640攝像頭模塊,設計了一種以太網網絡視頻監控系統。該視頻監控系統使用UCOS-Ⅱ系統,以及LwIP協議棧,利用OV2640攝像頭模塊采集數據。在UCOS-Ⅱ系統的調度下,使用LwIP協議棧,利用TCP/IP協議,將采集到的數據上傳到PC客戶端,PC端能夠實時地監控。相比ZigBee傳輸技術而言,利用網絡傳輸可大幅度提高數據傳輸的帶寬,可以實現監控視頻的實時傳輸以及高清畫面的傳輸。
以太網;視頻監控;STM32
視頻監控在我國的發展已有20多年的歷史,經歷了3個時代。第一代:模擬時代,視頻以模擬信號方式使用同軸電纜進行傳輸,并進行模擬處理;第二代:半數字時代,視頻以模擬信號的方式進行傳輸,由數字存貯器進行存儲;第三代:全數字時代,視頻從前端圖像采集設備輸出時即轉換為數字信號,并以網絡為傳輸媒介,基于TCP/IP協議,采用流媒體技術實現視頻在網上的多路復用傳輸[1]。網絡視頻監控有很大的應用前景,在樓宇的視頻監控及道路交通的實時監控方面得到廣泛的應用[2]。
1.1 系統構成
本遠程監控系統利用OV2640攝像頭模塊采集模擬圖像信息后,將其轉化為數字圖像信息,得到數字圖像信息后,經過壓縮將圖像信息輸出。壓縮算法是采用OV2640內部硬件壓縮,通過配置寄存器使輸出的格式為JPEG格式,采用ST公司的嵌入式處理芯片STM32F407芯片,以UCOS-II操作系統為基礎對圖像進行傳輸。其中網絡協議是利用LwIP協議棧將圖像信息上傳,它是將TCP-IP協議寫成了完整的協議棧,提供給用戶使用。對于不同的處理器,只需將其裁剪配置成適合處理器的格式,然后通過路由器將數據轉發至電腦客戶端,電腦客戶端將數據解碼成圖像信息圖并顯示出來[3]。該系統可以在多個電腦終端同時運行,實現實時傳輸,系統的基本邏輯框圖如圖1所示。

圖1 系統的基本邏輯
1.2 硬件電路結構及工作原理
1.2.1 STM32F4最小系統
本文采用當前用途最廣泛,使用頻率最高的處理器——ST公司的STM32F4系列。區別于其他文章中的所用的處理器,也是這篇文章特色之一。STM32F4系列是基于高性能的ARM?CortexTM-M4F的32位RISC內核,工作頻率高達168 MHz。Cortex-M4F核心功能支持所有ARM單精度數據處理指令和數據類型的單精度浮點單元(FPU)。它還實現了一套完整的DSP指令和內存保護單元(MPU),從而提高應用程序的安全性。此外,STM32F4還具有DCMI數字攝像頭接口,此接口正是為了方便處理數字攝像頭數據而設置的,基于以上優點本文選擇STM32F4作為核心處理器[4]。
1.2.2 OV2640攝像頭模塊
OV2640模塊具有完善的圖像采集功能,具有200萬的像素圖像采集清晰,攝像頭通過SCCB總線可對內部的寄存器進行配置,通常情況下采用RGB格式的輸出,但RGB格式的輸出要達到上百KB,采用對攝像頭寄存器配置,使其輸出的圖像為JPEG格式。分辨率為1 600*1 200 bit,數據大小為2~3 KB,以15 fps的速率傳輸,數據量為30~45 KB, STM32F407系列具有高速嵌入式存儲器(多達1 MB閃存,高達192 KB的SRAM),完全能夠實現數據的存儲和處理,數據的壓縮量也相當大[5]。
為了保證攝像頭輸出數據的正確性,需要對攝像頭寄存器進行操作,利用SCCB總線,將數據寫入到攝像頭中,當SCL為高電平期間SDA拉低,SCCB總線開始工作傳輸數據,當SDA高電平期間SCL拉低,表示數據寫入完成結束數據傳輸,其時序圖如圖2所示[6]。

圖2 SCCB時序圖
攝像頭輸出時序如圖3所示,圖中VSYNC由低電平轉變到高電平時,標志著一幀數據的開始,在HREF為高電平時,便可以接收有效的數據[7]。一幀數據為1 600*1 200 bit,采用邊沿檢測以及同步計數的方法便可以接收完整的視頻圖像數據。

圖3 攝像頭輸出時序圖
1.2.3 LAN8720A模塊
LAN8720A具有高性能、小尺寸、低功耗的特點。10BASE-T / 100BASE-TX專門為當今消費電子產品、工業和企業應用而設計的收發器,模塊使用25 MHz晶振。LAN8720A通過可變電壓的RMII標準數字接口連接到MAC層和STM32F407進行數據交互,另一端通過變壓器和RJ45相連,連接到路由器上[8]。其結構如圖4所示。

圖4 LAN8720A模塊框圖
2.1 系統軟件總體結構
系統的總體架構路線,如圖5所示。 當硬件的初始化完成開啟了UCOS系統開始運行,系統有2個線程任務,一個是數據圖像采集,還有一個數據傳送的任務。
當攝像頭采集到一幀圖像信息并產生中斷時,在中斷服務函數中將DMA停止掉,防止數據過多產生堆積,將采集的數據傳輸到內存中,判斷所采集的數據壓縮方法是否正確,如果正確就通過TCP服務器發送到路由器,這樣一幀數據就發送完成,繼續采集下一幀數據。2個任務在系統的支持下來回調度[9]。主函數如下:
Intmain()
{
GPIO_Configuration();∥ I/O口初始化
NVIC_Configuration(); ∥中斷向量表初始化
Ethernet_Configuration(); ∥網卡初始化
if(OV2640_Init()) ∥攝像頭初始化是否成功
{ printf("OV2640 ERR! ");
OV2640_FLAG=0;
}
else
{ printf("OV2640 OK! ");
OV2640_FLAG=1;
}
Video_init(); ∥圖像傳輸初始化
OSInit(); ∥操作系統初始化
LWIP_Init(); ∥協議棧初始化
tcp_server_init();∥ TCP服務器初始化
OSStart(); ∥系統開始運行
}
2.2 UCOS-II系統設計
UCOS-II是一個實時操作系統內核,它僅僅包含了任務調度、任務管理、時間管理、內存管理以及任務間的通信和同步等基本功能。將UCOS-II移植進入STM32F407,進行裁剪配置,使之能夠正常運行[10]。系統的操作流程如圖6所示,首先對系統的所有變量初始化,然后便可創建任務,可以同時創建多個任務,交由任務管理器。再在此基礎上,創建OV2460處理線程、video線程、AT指令線程、AT指令處理線程和TCP服務器線程,由任務調度管理,這樣便可實現在不同的任務之間來回調度,實現多任務同時進行[11]。本系統設計中創建的5個任務分別為:
OSTaskCreate(tcp_ov2640_thread,(void*)0,(OS_STK*)&TCP_OV2640_TASK_STK[TCP_OV2640_STK_SIZE-1],TCP_OV2640_PRIO);∥創建OV2460處理線程
OSTaskCreate(tcp_video_thread,(void*)0,(OS_STK*)&TCP_VIDEO_TASK_STK[TCP_VIDEO_STK_SIZE-1],TCP_VIDEO_PRIO);∥創建video線程
OSTaskCreate(tcp_at_thread,(void*)0,(OS_STK*)&TCP_AT_TASK_STK[TCP_AT_STK_SIZE-1],TCP_AT_PRIO);∥創建AT指令線程
OSTaskCreate(at_deal_thread,(void*)0,(OS_STK*)&AT_DEAL_TASK_STK[AT_DEAL_STK_SIZE-1],AT_DEAL_PRIO); ∥創建AT指令處理線程
OSTaskCreate(tcp_server_thread,(void*)0,(OS_STK*)&TCPSERVER_TASK_STK[TCPSERVER_STK_SIZE-1],TCPSERVER_PRIO); ∥創建TCP服務器線程
其中創建OV2460處理線程是為了獲得攝像頭采集的圖像信號,創建video線程是為了將采集的圖像信號通過DMA傳輸到處理器內部進行處理,創建AT指令線程是為了檢測上位機發送過來的AT指令,AT指令處理線程將檢測到的AT指令轉換為系統的響應,最后TCP服務器線程是完成圖像信息的網絡傳輸[12]。

圖6 UCOS-II系統框圖
2.3 LwIP協議棧的使用
LwIP是Light Weight (輕型)IP協議,有無操作系統的支持都可以運行。LwIP 實現的重點是在保持TCP協議主要功能的基礎上減少對RAM 的占用,它只需十幾KB的RAM和40 KB左右的ROM就可以運行,這使LwIP協議棧適合在低端的嵌入式系統中使用。LwIP協議棧主要關注的是怎么樣減少內存的使用和代碼的大小,這樣就可以讓LwIP適用于資源有限的小型平臺例如嵌入式系統[13]。為了簡化處理過程和內存要求,LwIP對API進行直接裁減,可以不需要復制一些數據,丟棄一些無用的設置。完成對協議棧的配置就可以正常使用TCP服務器協議,將獲得的數據上傳[14]。
將系統連接完成,程序編譯完成燒錄到開發板中,進行系統仿真,確保系統運行成功,打開電腦的上位機界面[15],輸入服務器的IP地址,在路由器設置的界面查看出開發板的IP地址,本設計中的IP地址為192.168.2.101,端口號設置為5050,點擊連接,點擊獲取視頻,上位機就會顯示所采集的圖片信息,所獲取的像素為200萬像素,清晰度高,沒有延時。系統運行穩定,出現如圖7所示的界面。

圖7 實物演示
經過測試運行,所設計的系統具有如下的特點:第一,網絡視頻監控對比傳統的視頻監控具有靈活性和異地性,即可以隨時隨地監控任何一個地方;第二,視頻所占用的網絡帶寬較小,僅為30~45 KB/s,為單片機處理數據減輕的負荷;第三,比較于傳統的模擬攝像頭監控系統而言,數字攝像頭監控系統得到的圖像清晰,節省資源,可以構成復雜的傳輸網絡,都得到了大大的提高。
本文實現了基于STM32的以太網網絡視頻監控系統,對攝像頭驅動、圖像壓縮、LwIP協議棧以及UCOS操作系統進行了詳細的闡述及分析,并通過實驗結果很好地論證了系統的性能。網絡視頻監控系統的應用,不僅提高視頻圖像傳輸的可靠性,而且對視頻傳輸的效率也有很大的提高。該方法提高了產品的質量,同時降低了產品設計和維護成本,對多種視頻傳輸和監控系統等更多領域的應用與研究具有重要意義。
[1] 信師國,劉慶磊,劉全賓.網絡視頻監控系統現狀和發展趨勢[J].信息技術與信息化,2010(1):23-25.
[2] 李靈.基于STM32的家居環境監測和家電控制系統[D].杭州:杭州電子科技大學,2014.
[3] 姚高華.基于以太網的遠程監控系統設計[D].廣州:華南理工大學,2013.
[4] 陶杰,王欣. 基于STM32F407和OV7670的低端視頻監控系統[J]. 單片機與嵌入式系統應用,2014,14(3):60-63.
[5] 李向東.數字視頻監控系統的研究與實現[D].西安:長安大學,2008.
[6] 鐘久和.基于fpga視頻監控終端的設計與實現[D].成都:電子科技大學,2010.
[7] 王康景,陳衛松,方立軍.一種基于FPGA的多路視頻合成及傳輸方法[J]. 無線電通信技術,2017,43(1):44-46.
[8] 蕭力華.智能視頻監控系統分析與設計[J]. 企業技術開發月刊,2016,35(21):64-65.
[9] 寥義奎.ARM Cortex-M4嵌入式實戰開發精解——基于stm32F4[M].北京:北京航空航天大學出版社,2013.
[10]劉火良,楊森.STM32庫開發指南[M].北京:機械工業出版社,2013.
[11]李維,張衛強,閆光來.WiFi-Mesh網絡視頻監控系統的設計[J].無線電通信技術,2015,41(5):7-10.
[12]李可先.計算機智能視頻監控系統技術研究[J].信息與電腦(理論版),2016(18):64-65.
[13]朱升林.嵌入式網絡那些事:LwIP協議深度剖析與實戰演練[M].北京:中國水利水電出版社,2012.
[14]劉朝輝,熊建文,吳先球.視頻與數據聯動采集與分析系統[J]. 華南師范大學學報(自然科學版),2016,48(2):124-128.
[15]伍儉.基于ARM的網絡視頻監控系統的研究與設計[D].成都:電子科技大學,2010.
Video Monitoring System of Ethernet Network Based on STM32
FANG Li-jun,CHEN Wei-song,ZHANG Liang-yu,WANG Kang-jing
(School of Physicsand Electronic Information,Anhui Normal University,Wuhu Anhui 241000,China)
This paper designs an Ethernet network video monitoring system based on STM32F407 chip,LAN8720A module and OV2640 camera module. The system uses UCOS-II system and LwIP protocol stack. The OV2640 camera module is used to collect the video data. Under the scheduling of the UCOS-II system,the collected data is uploaded to the PC client by using LwIP protocol stack and TCP / IP protocol. The PC can monitor in real time. Compared with the ZigBee transmission technology,the network transmission method can greatly improve the bandwidth of data transmissions,and achieve real-time transmission of monitoring video and high-definition pictures.
Ethernet; video monitoring; STM32
2017-06-09
國家自然科學基金項目(61401004);安徽省高校自然科學研究重點項目(KJ2015A092)
方立軍(1995—),男,本科生,主要研究方向:電子信息工程。陳衛松(1973—),男,博士,副教授,主要研究方向:視頻及音頻信號處理。
10.3969/j.issn.1003-3114.2017.05.20
方立軍,陳衛松,章良玉,等. 基于STM32的以太網網絡視頻監控系統[J].無線電通信技術,2017,43(5):91-94.
[FANG Lijun,CHEN Weisong,ZHANG Liangyu,et al. Video Monitoring System of Ethernet Network Based on STM32 [J]. Radio Communications Technology,2017,43(5):91-94.]
TP393
A
1003-3114(2017)05-91-4