《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于ARM Linux的3G無線車載視頻監(jiān)控系統
基于ARM Linux的3G無線車載視頻監(jiān)控系統
電子設計工程
谷勝,王建華
摘要: 為了加強客運服務中心對長途車輛在客運過程的監(jiān)管,提出了基于ARMLinux的3G無線車栽視頻監(jiān)控系統。該系統基于ARMLinux嵌入式系統與ARM處理器,通過USB攝像頭采集車內視頻數據,由GPS定位模塊獲取車輛的位置數據,然后將采集的數據經過H.264壓縮成適合網絡傳輸的形式。最終通過3G無線發(fā)射模塊經過具有寬帶傳輸能力的3G移動通信網絡傳輸給監(jiān)控服務中心,監(jiān)控服務中心可以看到車內清晰流暢的視頻畫面以及車輛所在位置。
Abstract:
Key words :

0 引言
隨著汽車客運事業(yè)發(fā)展,營運人員在營運過程中的安全以及管理也越來越被重視。由于存在乘客與營運人員經常因逃票、服務態(tài)度等問題而產生糾紛、客運過程中交通事故雙方的責任鑒定比較模糊、車內盜竊事件缺乏有力的證據以及車輛失竊和司機酒駕等問題,本文提出基于ARM Linux3G無線車載視頻監(jiān)控系統,可有效減少上述事件的發(fā)生,給予車乘人員以及車輛安全保障。此系統在Linux操作系統下,利用嵌入式開發(fā)板S3C2440搭建硬件環(huán)境,通過USB攝像頭以及GPS模塊采集車內實時的視頻和位置信息,視頻數據通過H.264的高效壓縮編碼,既可以得到高壓縮比又擁有高質量流暢的圖像,可以大大減少需要傳輸的數據量,并且將3G無線網絡作為傳輸媒介,既可以解決傳統有線網絡對運動中的監(jiān)控不能實現的問題,提供更加靈活的組網方式,滿足不能架設線路的監(jiān)控點的監(jiān)控需求,還可以提供比GPRS和CDMA更寬的數據傳輸帶寬,滿足移動視頻監(jiān)控的要求。最終監(jiān)控終端通過Web瀏覽器可以實時監(jiān)控車輛內部的視頻畫面以及車輛所在的位置速度等信息。

1 系統的總體設計
   3G無線視頻監(jiān)控系統主要由車載移動監(jiān)控終端、網絡傳輸、遠程客戶端3部分組成。系統的總體結構如圖1所示。整個視頻監(jiān)控系統采用B/S結構。車載移動監(jiān)控終端主要包括S3C2440平臺上運行的GPS數據采集以及視頻采集、視頻的編碼、嵌入式Web服務器、流媒體服務器。網絡傳輸以TCP/IP協議為基礎構建,實現RTP、RTCP、HTTP、TCP、UDP等傳輸協議。遠程客戶端實現車輛位置以及視頻數據的接收、視頻流的解碼播放、網絡狀況反饋等功能。系統工作原理為:通過USB攝像頭獲取實時車輛內情況和司機駕駛狀況,通過GPS定位模塊獲取GPS數據(經緯度、高度、時間、速度),并傳送給ARM處理器,處理器對接收數據進行H.264編碼并將編好碼的NAL單元傳送給流媒體服務器,流媒體服務器對壓縮好的數據進行RTP封裝并通過內部總線送到內置的boa服務器,并根據RTCP反饋回來的控制信息對H.264編碼器和視頻采集速率進行控制。Boa小型嵌入式服務器結合CGI技術來實現監(jiān)控端和客戶端的交互。遠程客戶端通過無線網絡與boa服務器連接,采用ActiveX技術實現視頻數據的接收、RTP報文的解封裝、發(fā)送RTCP反饋信息、H.264視頻解碼、Web瀏覽器的顯示。

系統總體設計框圖

2 系統的硬件組成及選型設計
2.1 車載移動終端
車載移動終端的組成如圖2所示,主要由4部分組成:ARM處理器、GPS模塊、3G無線數據發(fā)送模塊、圖像采集模塊。主控處理器芯片選用三星公司推出的16/32位RISC微處理器S3C2440A,S3C2440A采用ARM920t內核,0.13μm的CMOS標準宏單元和存儲器單元,最高運行頻率達到400MHz,它的低功耗、簡單、考究和全靜態(tài)是專門為需要考慮花費和功耗的應用設計的,特別適用本系統。S3C2440A提供了豐富的片內資源,支持Linux。集成在芯片上的功能有:16 KB的指令和數據Cache、LCD控制器、AC97音頻接口、攝像頭接口、DMA控制器、PWM定時器、MMC接口等。它能完成整個系統的調度工作,在系統上電時配置所有需工作芯片的功能寄存器,完成視頻流的編碼,并通過3G無線網絡向監(jiān)控終端發(fā)送視頻碼流。

系統硬件結構圖


GPS模塊使用u_blox公司的LEA-5H。LEA-5H具有50個通道的u-blox引擎,一百多萬個有效相關器,熱啟動和輔助啟動首次定位時間小于1 s,-160 dBm的SuperSense捕獲和跟蹤靈敏度,運行限制速度515 ms。系統通過該模塊實時接收定位信息,保證中心控制模塊可以實時處理定位數據。
圖像采集模塊的硬件資源選用了帶USB接口的中星微攝像頭。該款攝像頭造價低廉,成像效果好,體現出了較好的性價比。與此同時。主板還預留了多個外圍接口,以便擴展功能。
無線通信模塊采用SIMCOM公司的SIM5218模塊。無線SIM5218是一款WCDMA/HSDPA/GSM/GPRS/EDGE模塊解決方案,支持下行速率達7.2 Mb/s和上行速率為5.76 Mb/s的數據傳輸服務,這對視頻和圖像等數據量相對較大的信號傳輸而言是非常理想的選擇。同時,它還具有豐富的接口包括UART,USB 2.0,GPIO,I2C,GPIO,GPS,攝像頭傳感器和內嵌SIM卡等。在費用方面,3G因為是借助分包交換的技術,所以,網絡使用的費用是以消費者的數據傳輸量來定。

2.2 監(jiān)控中心
車輛監(jiān)控中心由顯示屏幕、監(jiān)控服務器、主控工作臺、路由器和存儲器等硬件組成。按功能區(qū)分,其基本功能模塊有數據接收模塊、解碼模塊、顯示模塊和存儲模塊等。由于監(jiān)控中心硬件可采用通用器件,故不需要進行專門的選型設計。

3 系統軟件實現
系統選擇Linux操作系統。Linux具有源代碼開放、成本低廉、內核可裁減性強等特點,且集成有TCP/IP協議,對網絡的支持是相對于其他操作系統的優(yōu)勢。基于ARM Linux的視頻監(jiān)控終端的軟件設計主要完成三方面的工作:第一在硬件上搭建一個軟件平臺,搭建嵌入式Linux軟件開發(fā)平臺需要完成UBOOT移植、嵌入式Linux操作系統內核移植以及嵌入式Linux操作系統的設備驅動程序的開發(fā)等工作;第二在軟件平臺的基礎上,借助交叉編譯工具,開發(fā)視頻監(jiān)控終端上運行的采集、壓縮、流媒體服務器程序;第三監(jiān)控中心運行的接收、解壓縮、顯示程序。
3.1 S3C2440A的Linux平臺的搭建
構建嵌入式Linux開發(fā)平臺需要先構建交叉編譯環(huán)境。一套完整的交叉編譯環(huán)境包括主機和目標機。在開發(fā)中主機是一臺裝有Centos 5.5操作系統的PC機,目標機是基于S3C2440A的視頻監(jiān)控終端。選用的嵌入式Linux內核源代碼包版本號為2.6.28,交叉編譯器是GCC 4.3.2。編譯內核之前首先要配置內核,裁減掉冗余的功能模塊。具體步驟如下:
(1)通過命令make menuconfig,對內核進行配置,選擇YAFFS文件系統,支持NFS啟動,啟用USB設備支持模塊,包括USB設備文件支持模塊、USB主控制器驅動模塊等。此外,USB攝像頭屬于視頻設備,還需要啟用Video4Linux模塊;
(2)用make dep命令生成內核程序間依賴關系;
(3)make zlmage命令生成內核映像文件;
(4)make modules和make modules_install命令生成系統可加載模塊。這樣就生成了zlmage內核映像文件,把它下載到目標平臺的FLASH中。
本設計采用USB外置攝像頭,在內核配置時要求以模塊形式動態(tài)加載。首先要完成驅動程序驅動中需要提供基本的I/O操作接口函數open、read、write、close的實現,對中斷的處理實現,內存映射功能以及對I/O通道的控制接口函數ioctl等,并把他們定義在struct file_operations中。接著把USB驅動程序編譯成可以動態(tài)加載的模塊。
3.2 車載移動終端軟件設計
3.2.1 GPS模塊程序設計
GPS接收機GPS15L輸出數據格式符合NMEA-0183標準。NMEA-0183協議是由美國國家海洋電子協會制定的一種串行通信的數據協議,所有輸入輸出信息均為一行ASCII字符。它的一條消息稱為語句(Sentence),每條語句都以“$”開始,以回車換行符()結束,中間是用逗號分隔的若干個域。一條NMEA-0183語句包含以下5個部分:起始符,固定字符“$”,表示語句開始;標識符域,表示一條語句的全部數據域的特定格式,長度可變;數據域,包含各種類型的數據,各數據之間用逗號分隔,數據域可以為空,但用來分隔數據的逗號不可省略;校驗和,以“{”開始,由2個字符的十六進制數組成;結束符,固定字符,表示語句結束。NMEA-0183語句中最常見的幾種格式有GPGG A(Global Positioning System Fix Data)、GPRMC、GPGSV、GPVTG等,它們包含的信息不盡相同。本設計中采用的是GPGGA輸出語句,它包含了主要的GPS定位數據。獲取GPS數據流程圖如圖3所示。

獲取GPS數據流程圖


由圖3可以看出,GPS模塊啟動后首先對串口的初始化也就是對GPS模塊的初始化,包括設置波特率、數據位、校驗位等;然后后開始接收GPS數據,即從串口讀數據,并將讀到的數據保存到BUF中,接著進入數據的解析和提取階段,判斷BUF[5]是否等于“c”以判斷是否為MYMGPR MC,若是,則開始提取經緯度、時間等信息并存入結構體GPS_DATA中。
3.2.2 視頻采集模塊設計與實現
視頻采集模塊是通過嵌入式Linux操作系統調度V4L(Video4Linux)及影像設備驅動程序來完成視頻采集。V4L是Linux影像系統與嵌入式影像的基礎,是Linux kernel里支持影像設備的一組API。在Linux操作系統中,外部設備被作為設備文件來管理,從而使得對外部設備的操作就轉變成對設備文件的操作。其采集流程如圖4所示。

視頻數據采集流程圖

主要過程如下:
(1)打開視頻設備。調用函數int open(constchar * pathname,int flags),若返回值為-1,表示打開失敗,否則,表示所打開設備的文件描述符。
(2)讀取設備信息。Ioctl(cam_fp,VIDIOC_QUERYCAP,&cap)函數來取得設備文件的屬性參數并存儲存于cap結構中,其中cam_fp指的是打開的視頻設備文件描述符。
(3)選擇視頻的輸入方式。通過ioetl(cam_fp,VIDIOC_S_INPUT,&chan)函數設置視頻設備的輸入方式,其中chan的數據結構類型是V4L2 _input,用來指定視頻的輸入方式。
(4)設置視頻幀的格式。通過ioctl(cam_fp,VIDIOC_S_FMT,&fmt)函數設置視頻的幀格式,其中fmt的數據結構類型是V4L2_format,用來指定視頻的寬度、高度、像素大小等。
(5)讀取視頻數據。通過read(cam_fp,g_yuv,YUV_SIZE)函數,把攝像頭一幀的數據存放到g_yuv中,其中YUV_SIZE指的是每幀數據的大小。
(6)關閉視頻設備。通過close(cam_fp)函數來實現視頻設備的關閉。根據流程圖可對其進行相應操作。當攝像頭通過USB接口連接后,程序中調用V4L API對設備文件的讀操作read(),即可完成視頻數據采集到內存中,視頻數據可用圖4形式保存,也可壓縮后封裝進數據包。本文是先將采集數據進行H.264壓縮后再封裝進數據包,并傳輸到監(jiān)控PC進行處理。
3.2.3 視頻壓縮模塊設計
因視頻采集模塊采集的視頻數據信息量非常大,為了提高數據傳輸速度、降低網絡數據流量、保證監(jiān)控的實時性,有必要對車載攝像頭采集的數據壓縮編碼。文中采用H.264硬編碼方式(硬編碼具有不占用CPU資源,運算速度快等優(yōu)點,從而滿足視頻數據實時性的要求)將攝像頭采集的圖像系列壓縮編碼成流媒體。具體編碼的過程如圖5所示。

視頻數據H.264編碼流程圖


(1)創(chuàng)建H.264編碼結構。調用SsbSipH264Encodehlit(width,height,frame_rate,bitrate,gop_num)函數實現,其中width表示圖像的寬度,height表示圖像的高度,frame_rate表示幀頻,bitrate表示比特率或碼率,gop_num表示兩個相離關鍵幀之間最多包含多少個幀(B或P幀)。
(2)初始化H.264編碼結構,調用SsbSipH264Encode Exe(handle)函數。
(3) 獲取視頻輸入地址,調用SsbSipH264EncodeGetInBuf(handle,0)函數來實現,該函數返回視頻輸入的首地址,存放在p_inbuf中。
(4)輸入視頻數據,調用memcpy(p_inbuf,yuv_bur,frame_size)函數實現,p_inbuf存放需要編碼的數據,yuv_buf存放原始視頻數據,frame_size表示數據的大小。
(5)編碼視頻數據,對p_inbuf內容進行H.264編碼,調用SsbSipH264EncodeExe(handle)函數實現。
(6) 輸出已編碼的數據,調用 SsbSipH264EncodeGetOutBuf(handle,size),該函數返回已編碼圖像的首地址,size表示已編碼圖像的大小。
(7)關閉硬編碼設備,調用SsbsipH264Encode DeInit(handle)函數實現的。
3.2.4 嵌入式服務器boa移植
Linux支持boa、HTTPD、THTTPD等幾種Web服務器,其中boa Web服務器更適合于嵌入式系統,因為它是一個單任務、支持CGI(Common Gateway Interface,通用網關接口)功能的Web服務器,只能依次完成用戶的請求,而不會fork出新的進程來處理并發(fā)出連接請求,可執(zhí)行代碼只有約60K。
首先進入boa源碼目錄的src子目錄,執(zhí)行命令./con-figure生成Maketile文件,然后修改Makefile文件找到CC=gcc,將其改成CC=arm-linux-gcc,再將CPP=gcc-E改成CPP=arm-linux-gcc-E,并保存退出。然后運行make進行編譯,得到的可執(zhí)行程序為boa,之后執(zhí)行命令arm-linux-strip boa,將調試信息去掉,得到的最終程序。第二步完成boa的配置,使其能夠支持CGI程序的執(zhí)行。Boa需要在/etc目錄下建立一個boa目錄,里面放入boa的主要配置文件boa.conf,主要文件的含義有:AccessLog/var/log/boa/access_log訪問日志文件。如果沒有以/開始,則表示從服務器的根路徑開始;VerboseCGILogs是否記錄CGI運行信息,如果沒有注釋掉,則記錄,注釋掉則不記錄;Document Root/var/wwwHTML文檔的主目錄,如果沒有以/開始,則表示從服務器的根路徑開始;DirectoryMaker/usr/lib/boa/boa_indexer當HTML目錄沒有索引文件時,用戶只指明訪問目錄時,boa會調用該程序生索引文件給用戶,因為該過程比較慢最好不執(zhí)行,可以注釋掉;Scri ptAlia/cgi-bin//var/www/cgi-bin/指明CGI腳本的虛擬路徑對應的實際路徑。一般所有的CGI腳本都要放在實際路徑里,用戶訪問執(zhí)行時輸入站點+虛擬路徑+CGI腳本名。對boa.conf進行修改的必須要保證是使其他的輔助文件和設置必須和boa.conf里的配置相符,不然boa就不能正常工作。另外還需要創(chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將mime.types文件拷貝到/etc目錄,創(chuàng)建CGI肢本所在目錄/var/www/cgi-bin/。
3.2.5 CGI程序的設計
CGI提供了一個Web服務器的外部程序通道,運行在服務器上,由瀏覽器輸入觸發(fā),是Web服務器和系統中其他程序的連接通道。CGI程序就是符合這種接口的程序。服務器接收到用戶的請求,并將數據送給CGI程序。CGI程序接收到數據后,啟動編寫好的應用程序,并按照用戶提供的數據執(zhí)行。應用程序執(zhí)行完成后,返回執(zhí)行結果,并通過Web服務器傳送給用戶瀏覽器顯不。
CGI模塊程序的設計主要包括如下幾部分:Web服務器的配置、HTML頁面的編寫、CGI腳本實現。
(1)Web服務器的配置
嵌入式Web服務器采用boa,其配置是以文本的形式提供,放在文件系統中的/etc/httpd/conf/目錄下面,其主要配置在以上的boa服務器移植中講述過了。
(2)HTML頁面的編寫
因為系統的設計的主要方向是能夠通過USB攝像頭進行實時監(jiān)控。所以為了實現簡單化,拋開一些不必要復雜的選擇項。主要的HTML頁面有登錄界面、注冊界面和監(jiān)控界面。這些HTML放在嵌入式文件系統的/var/www目錄下。
(3)CGI腳本實現
實現動態(tài)Web頁面的第二步是用C編寫CGI程序,CGI程序分為以下幾部分:根據POST方法或GET方法從提交的表單中接收數據;URL編碼的解碼;用printf()函數來產生HTML源代碼,并將經過解碼后的數據正確地返回給瀏覽器。
3.2.6 遠程視頻數據接收模塊設計
目前流行的瀏覽器有IE、FireFox、Chrome等,對于普通的文本及HTML文件支持的GIF、JPEG等格式的圖片都可以輕松的顯示,但對于實時視頻數據,這些普通瀏覽器無法正常的顯示。所以實時視頻數據接收模塊主要完成的工作是視頻數據的接收、RTP報文的解封裝、發(fā)送RTcP反饋信息、H.264視頻解碼和Web瀏覽器的顯示。
本系統采用ActiveX控件技術,嵌入在Web頁面中,來完成視頻數據的接收、RTP協議、解碼和最后的顯示工作。最重要的一點,系統采用雙緩沖技術,來滿足視頻的解碼速度的問題,實現實時播放。具體流程圖如圖6所示。

接收視頻數據流程圖

4 系統的測試與結論
本文設計了一種基于ARM S3C2440的嵌入式視頻監(jiān)控系統,首先通過USB采集中星微攝像頭作為服務器,實現利用V4L2技術對USB攝像頭進行數據采集,并將數據送入H.264編碼模塊進行數據的壓縮,壓縮后的數據經過視頻服務器RTP封裝打包,最后通過嵌入式Web服務器與遠程視頻監(jiān)控客戶端進行交互。本系統在實際的運營網絡中進行了測試,目標定位信息接收速率為1次/s,動態(tài)定位精度小于等于10 m;能實現動態(tài)視頻傳輸,且視頻傳輸流暢,圖像最大分辨率可達VGA(640×480像素),視頻傳輸的質量優(yōu)于基于2.5G網絡的車輛監(jiān)控系統(圖像最大的分辨率為320×240像素,且基本上只能傳輸靜態(tài)圖像)。

此內容為AET網站原創(chuàng),未經授權禁止轉載。
主站蜘蛛池模板: tom影院亚洲国产日本一区 | 中国japanesevideo乱| 国产日本精品 | 久久精品最新免费国产成人 | 亚洲精品aaa | 亚洲精品一区专区 | 国产男女猛烈无遮档免费视频网站 | 69性欧美| 波多野结衣在线中文 | 美女张开腿让男人桶爽免费网站 | 在线播放精品一区二区啪视频 | 免费特黄一级欧美大片在线看 | 初爱视频教程在线观看高清 | 久久毛片久久毛 | 欧美特黄三级成人 | 亚洲成人毛片 | 夜夜爱夜夜爽夜夜做夜夜欢 | 91精品一区二区三区在线播放 | 亚洲视频自拍 | 午夜dj视频完整社区 | 亚洲第一中文字幕 | 亚洲国产精品一区二区第四页 | 成人免费一级毛片在线播放视频 | 欧美色道 | 成年人黄色片 | 日本特黄特色大片免费看 | 国产成人精品天堂 | 欧美一级片免费观看 | 久草在线免费福利视频 | 欧美经典成人在观看线视频 | 国产一区二区在线视频 | 精品久久久久久国产免费了 | 亚洲第一区视频在线观看 | 亚洲黄色美女视频 | 亚洲欧美一区二区三区在线播放 | 亚洲性影院 | 国产伦精品一区二区三区无广告 | 国产成人精品亚洲 | 亚洲天堂二区 | 最新亚洲一区二区三区四区 | 色黄网站aaaaaa级毛片 |