陳楨 陳蕾



摘? ?要:基于利用4G網絡傳輸嵌入式視頻監控數據、環境監控數據的目的,文章采用了STM32F767芯片搭載了FreeRTOS操作系統,結合USB2.0協議、LWIP通信協議,利用4G芯片EC20傳輸OV5640模塊采集到的視頻數據和其他環境數據,并添加了配套的CGI功能、SSI功能。實驗結果顯示,視頻傳輸幀率達到7~8幀/s(720 P),傳輸平均速率達到240 K(bit/s),配套的CGI功能、SSI功能得以實現。進而得出結論,基于4G網絡與FreeRTOS的遠程嵌入式監控具有實現的可行性與實際應用價值,可以應用于當下嵌入式監控視頻傳輸手段不便使用的場景。
關鍵詞:4G;STM32;嵌入式;視頻監控;CGI;SSI
我國物聯網行業近年來發展迅速,物聯網已經成為公眾普遍接受的概念。家用的物聯網視頻監控設備一般利用光纖、WiFi接入網絡[1],而商用或公共場所使用的視頻監控設備一般采取有線VGA[2]、無線網橋中繼傳輸或光纖實現聯網。盡管如此,還有很多場合不具備鋪設有線網絡、設置WiFi源的條件,或者出于成本、施工量的限制,不適合采用上述的技術手段。
截至目前,隨著4G的普及和5G的發展,4G流量的使用資費進一步降低,為在物聯網中使用4G傳輸提供了成本上的可能性。4G這種穩定、覆蓋范圍廣、傳輸速率快、時延低的成熟無線傳輸技術,在對網絡實時性要求高、數據傳輸量大的物聯網領域勢必能發揮作用。本論文主要解決嵌入式設備利用4G網絡向互聯網傳輸大流量數據的問題,同時實現配套的服務器端嵌入(Server Side Include,SSI)與公共網關接口(Common Gateway Interface,CGI)功能,以便于從移動端反向控制設備。這一技術途徑,不僅可以在現有視頻監控傳輸途徑無法發揮作用的場合使用,也可以作為現有技術途徑的緊急備用方案。
1? ? 嵌入式遠程監控系統
嵌入式系統(Embedded System,ES)被定義為:以應用為中心,以計算機技術為基礎,軟件可裁剪,滿足對系統功能、可靠性、成本、體積、功耗等有嚴格要求的專用計算機系統[3]。
嵌入式系統現如今廣泛應用于智能家居、工業控制、通信等領域。而網絡技術的快速發展,為嵌入式設備的智能化提供了良好的技術基礎。在嵌入式與網絡結合的這些功能中,視頻監控功能的實現是極其重要卻往往比較困難的一個環節,究其原因,是因為大流量數據傳輸、多任務處理、低時延要求在嵌入式系統上比較難以實現。針對這一問題,現在常見的應對措施是在嵌入式系統上搭載Linux系統以處理數據,然而也正因搭載了Linux系統,對片上資源的要求也隨之提高。
STM32作為一款市場占有率極高,使用極其廣泛的嵌入式芯片,片上資源有限,對于Linux這樣的系統來說,尤其顯得不足。而免費實時操作系統(Free Real Time Operating System,Free RTOS)作為一個輕量級的操作系統,包括了任務管理、時間管理、信號量、消息隊列、內存管理、記錄功能、軟件定時器、協程等功能,體量小巧、使用免費、在EEtimes統計的2015年RTOS系統占有量中是第一位。故而本文選用FreeRTOS來進行STM32片上資源的分配,實際的實驗結果也證明,功能與效果都是比較理想的。
2? ? 軟件設計
此軟件系統實現的任務主要有3個:(1)借由4G網絡上傳實時監控視頻到服務器并進行查看。(2)借由4G網絡以HTML網頁為載體上傳實時環境數據到服務器并進行查看(SSI的實現)。(3)借由4G網絡以HTML網頁為載體反向控制開發板(CGI的實現)。軟件系統的架構如圖1所示。
下面簡單介紹這3種功能的核心技術內容。
2.1? 視頻監測
首先,由4G芯片通過AT指令集連入服務器,4G芯片選用的是移遠公司EC20芯片,服務器則為阿里云服務器。其次,由攝像頭模塊OV5640采集視頻數據,該視頻模塊使用了STM32F767的DMA雙緩沖功能。在實際的測試中,發現了由于網絡速度與攝像頭數據采集速度不匹配,出現了圖片損壞的情況,所以得到視頻采集數據后,使用了FIFO的寫法,來對視頻數據進行緩存。最后,通過USB2.0協議,使用STM32F767自帶的USB OTG FS功能模塊,將視頻數據進行上傳。STM32F767的運行內存雖然已經遠優于常用嵌入式芯片,但由于需要同步處理的數據與協議眾多,所以必須要對內存空間進行合理的管理。傳輸使用LWIP下的TCP協議以保證傳輸的可靠性,此外,為了配合FreeRTOS多任務系統和大數據量場合,這里必須使用NETCONN編程接口。
阿里云服務器端使用網絡攝像頭軟件進行接收后,便可以在移動端進行查看,常見的查看方式有Microsoft公司提供的遠程桌面功能或RD Client APP,阿里云本身也支持瀏覽器登錄。
2.2? 環境監測
首先,先連入服務器,連接的協議與方式基本與視頻監控功能一致,如果最終的需求不需要實現視頻監控,STM32F767與EC20的通信則可以借由RS232串口實現,當然這樣也就失去了使用4G網絡的意義,故這里不做展開討論。其次,采集STM32F767板載外圍數據,由于在實際的應用中,需求的數據各有不同,這里取溫度、濕度以及ADC值作為示例。最后,通過SSI的句柄數組來調用內部數據并添加到網頁中,借由STM32F767的RTC時間,便可以看到數據的對應采集時間。查看的功能,借助阿里云服務器端的瀏覽器便可以實現。
需要補充的是,網頁源文件并不能直接添加進工程,而是需要借助相關軟件轉換成.c格式的網頁數組,才能進行使用。
2.3? 反向控制
首先,連入服務器,連接協議與方式參考環境數據功能。其次,分析瀏覽器返回的URL[4],進而調用對應的子程序實現功能。這里以驅動一個蜂鳴器為示例,返回的URL為:http://47.101.193.130/beep.cgi?BEEP=BEEPON&button=SEND。在這一串字符中,“beep.cgi”指出此為驅動蜂鳴器的CGI,我們根據此調用開關蜂鳴器的子程序,而“BEEPON”則為變量“BEEP”的值,我們根據此來決定蜂鳴器的開關。
3? ? 硬件設計
系統的硬件結構如圖2所示。系統以STM32F767為核心處理部件,驅動攝像頭模塊、4G模塊、各類數據采集模塊,收集并處理監測數據后,統一發出。在這里,為了便于調試,搭載了MCU顯示屏和串口,并非系統運行的必要部件。
硬件實物如圖3所示,大小為30 cm×20 cm。實際上,如果僅保留系統運行的必要部件,STM32F767以最小系統的形式運行,可以僅在單層10 cm×10 cm的PCB板上布線。
4? ? 實驗驗證
4.1? 視頻監測功能
實驗在兩個小時內不間斷地實行視頻傳輸,用以查看視頻在傳輸過程中的質量和流暢程度。流出帶寬如圖4所示。
可以看到在整個傳輸期間,大的網絡遲滯一共有3次,這3次網絡波動在功能中的體現為監測視頻的卡慢,圖片本身沒有出現損壞的情況。在這里截取一張正常情況下的監測視頻軟件進行分析。
如圖5所示,在傳輸720 P視頻碼流的情況下,幀率可以達到7幀/s以上,完全可以滿足常規視頻監控的需要。
4.2? 環境監測功能
實驗采集了實時ADC電壓值、溫度傳感器值、濕度傳感器值,從STM32開發板發送至服務器端,并借助服務器端瀏覽器進行查看,環境監測示意如圖6所示。其值在傳輸期間一直保持穩定、準確。這里僅僅是作為示例傳輸了如上的環境數據,實際上,完全可以根據實際需要,來采集數據。
4.3? 反向控制功能
實驗從服務器端,借助瀏覽器進行對開發板的反向控制。在如圖7所示的網頁界面設置好蜂鳴器與LED的狀態,在點擊發送后,開發板能立刻做出響應。同樣的,在實際的應用場景中,可以控制各式外設。
5? ? 結語
實驗結果顯示,在本文實現的視頻傳輸系統中,傳輸的720 P視頻碼流可以達到7~8幀/s,傳輸的平均速率達到240 Kbit/s,與之配套的CGI功能、SSI功能也得到了順利的實現。本文所論述的技術手段可以應用于當下嵌入式監控視頻傳輸手段不便使用的場景。
現如今,嵌入式系統以其使用場景廣泛、體積小、功耗低成了遠程監控的主流方向,而4G網絡在嵌入式監控中的應用,為嵌入式系統的數據交互提供了有效的技術手段。
基金項目:江蘇省大學生創新創業項目;項目編號:201710285031Z。
作者簡介:陳楨(1996— ),男,江蘇南通人,本科生;研究方向:通信工程(嵌入式培養)。