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