1 引言
信息化高度發展的今天,機房作為數據傳輸中心、處理中心和數據交換中心,在整個信息網絡工程中占據著重要的位置,對機房環境以及視頻信息的監測具有重要意義。
經過調查分析,機房環境遠程監測系統的主要應用需求包括: ①溫度是機房環境中最重要的參數,合理的溫度保證了機房設備的正常運行; ②數據傳輸質量高、實時性好,以保證對機房環境的實時和有效監測;③支持遠程訪問,便于對多個機房環境的集中監測。針對上述需求,設計了一種基于B /S 架構的遠程監測系統,以滿足遠程訪問、低成本、實時性好的機房環境遠程監測需求。
2 總體方案設計
2. 1 系統方案及總體結構
根據系統應用需求,設計的機房遠程監測系統總體結構如圖1 所示。系統由溫度和圖像傳感器、嵌入式服務器和遠程計算機構成。其中,溫度和圖像傳感器負責采集現場的溫度和圖像數據,基于ARM 處理器的嵌入式服務器是整個系統的控制中心,它控制、調度各系統資源,通過有線網絡將所獲取數據傳輸至遠程監控端瀏覽器動態顯示。遠程監控在實現方式上采用“B /S”模式,在客戶端的瀏覽器上輸入存儲嵌入式服務器的網頁地址即可對機房環境狀況進行監控。
圖1 遠程監測系統總體結構圖
2. 2 系統硬件平臺
系統的硬件平臺選擇主要考慮低功耗、處理能力強、擴展性好、穩定性高和兼容性好等因素。嵌入式硬件平臺的配置從根本上決定了整個系統運行性能的好壞。整個機房遠程監測系統由下位機嵌入式服務器和上位機遠程瀏覽器組成。其中下位機嵌入式服務器平臺包括眾多硬件模塊: 嵌入式微處理器S3C2440、存儲器、電源和時鐘模塊、外圍電路及接口、3. 5 寸液晶顯示屏、ZC0301 攝像頭和DS18B20 溫度傳感器等。下面將對各個硬件設備和模塊做具體闡述。
2. 2. 1 中心處理器
S3C2440 處理器是韓國電子公司三星推出的一款基于ARM920T 內核的16 / 32 位RISC 嵌入式處理器,ARM920T 核由ARM9TDM1、存儲管理單元( MMU) 和高速緩存三部分組成,主頻可達533MHz。本系統采用S3C2440 為核心,外圍硬件資源包括64M SDRAM, 256M NAND FLASH,2 M NOR FLASH。
2. 2. 2 攝像頭
攝像頭采用基于301PLUS 快速高性能圖像壓縮主控芯片的中芯微ZC0301 攝像頭。其能夠輸出高清晰MJPEG 視頻流數據,具有圖像信號處理( ISP) 、圖像數據壓縮及數據傳輸等功能,可達到6: 1 的壓縮率,同時支持同步和異步數據傳輸,兼容性好。其工作電壓為3. 3V,工作電流僅為200mA,耗電量小。
2. 2. 3 溫度傳感器
溫度傳感器采用美國Dallas 公司生產的單總線數字式溫度傳感器- DS18B20,它結構簡單,不需要外接電路,可用一根I /O 數據線既供電又傳輸數數據,將溫度信號直接轉換為數字信號送給微處理器,電路簡單,成本低,操作方便。DS18B20 與ARM 處理器接口電路如圖2 所示。
圖2 DS18B20 與ARM 處理器接口電路
2. 2. 4 遠程監控端系統配置
遠程網絡上的監控端為通用的PC 機和IE 瀏覽器,B /S 模式架構為人機交互提供了友好的交互平臺,用戶通過Internet 進行遠程監控。
2. 3 系統軟件平臺
系統采用源碼開放、安全性及可靠性好、具有廣泛硬件和網絡支持及完整開發工具的Linux系統作為嵌入式系統平臺。
嵌入式系統的開發通常采用宿主機- 目標機的交叉編譯調試方式。系統構建主要包括: 交叉編譯器的選擇和安裝; NFS 網絡文件系統的配置; 內核、Bootloader 和文件系統的編譯和移植等。內核采用Linux -2. 6. 30. 4 版本; 系統引導加載程序采用U - boot - 1. 1. 6; 文件系統采用可靠性和可移植性好的YAFFS 文件系統。
3 驅動程序設計開發
在搭建好嵌入式Linux 系統平臺基礎上,進行機房遠程監測系統數據采集相關開工作。主要包括溫度數據采集和圖像采集驅動程序的設計和采集程序的設計與實現。設備驅動程序是操作系統內核與機器硬件之間的接口,它為應用程序屏蔽了硬件的細節。
3. 1 DS18B20 驅動程序設計
DS18B20 通過溫度對振蕩器的頻率影響來測量溫度,而傳感器對溫度的采集則由ARM 控制DS18B20完成。由于DS18B20 采用單總線數據傳輸方式,所以ARM 芯片對DS18B20 的每步操作都要保證特定的讀寫時序,按照單總線的操作協議來進行。
首先初始化總線,跳過Rom( 總線上只有一個DS18B20) ,啟動DS18B20 進行溫度轉換,復位,繼續跳過Rom,發讀溫度指令,讀取溫度數據,最后進行溫度的進一步處理及轉換。溫度采集驅動中用到的主要函數:
( 1) 初始化函數unsigned char DS18B20 Init ( void) ,此函數復位DS18B20 數據線,檢測溫度傳感器DS18B20 的存在,主CPU 發送500 微秒的低電平信號后釋放,檢測到總線上脈沖的上升沿后,DS18B20 等待50 微秒,發出200 微秒低脈沖,CPU 收到此信號表示復位成功。
( 2) void DS18B20 WriteOneByte( unsigned char data) 或數據到溫度芯片DS18B20,即發送一個字節。
( 3) unsigned char DS18B20 ReadOneByte( void) ,從溫度芯片DS18B20 讀配置或數據,即讀一個字節。
( 4) unsigned int DS18B20 ReadTemperature( void) 讀溫度函數。如果電路中只有一個DS18B20,則不需要多個器件的ID 識別,直接進行溫度轉換,DS18B20 溫度轉換需要時問,所以此處需要延時一定時間。
其基本處理流程如圖2 所示。
驅動程序與硬件設備的接口由file_operation 結構定義,其結構如下:
statIC?struct file_operations s3c2440_18b20_fops = {
. owner = THIS_MODULE,
. open = s3c2440_18b20_open,
. read = s3c2440_18b20_read,
. write = s3c2440_18b20_write,
. release = s3c2440_18b20_release,
} ;
struct file_operations 這個結構的每一個成員都對應一個_系統調用,用戶進程利用系統調用對設備文件進行操作,系統調用通過設備文件的主設備號找到相應的設備驅動程序,讀取這個數據結構里面相應的函數指針,把控制權交給該函數。
3. 2 ZC0301 攝像頭視頻采集程序設計
Video4linux 是Linux 內核里支持影像設備的一組API,配合適當的采集卡與相關驅動程序,可以實現視頻采集。驅動視頻采集設備完成視頻采集和處理,需要相應的驅動程序和視頻流采集程序。視頻采集程序的內容主要包括攝像頭的初始化、打開、關閉、參數設置以及數據讀取等。
Video4linux 視頻采集的實現過程如下:
( 1) 初始化程序,包括打開視頻設備文件,讀取視頻采集設備信息以及設備緩沖區信息等; 初始化攝像頭參數主要通過init_videoIn 函數來完成。
( 2) 打開視頻采集設備。初始化工作完成后,通過V4L_open 函數檢查攝像頭設備是否加載,如能夠檢測到攝像頭設備,使用open 系統調用以只讀的方式打開視頻設備。
( 3) 獲取視頻設備信息和圖像信息。通過調用設備I /O 通道管理函數ioctl 中的VIDIOCGCAP 參數獲取視頻采集設備的名稱、類型、通道數、圖像寬度和高度等信息參數,調用ioctl 函數中的VIDIOCGPICT 參數讀取視頻采集設備緩沖video_picture 信息。
( 4) 視頻采集。在V4L 體系下,采用內存映射方式采集視頻。內存映射方式視頻讀取的具體操作如下:
①首先使用ioctl 系統調用VIDOOCGMBUF 命令獲取攝像頭存儲緩沖區的幀信息,之后初始化video_mbuf,修改video_mmbuf 設置。
②映射設備文件到內存。
③截取圖像,有單幀截取和連續幀截取兩種方式。進行單幀截取需先準備內存空間; 然后調用ioctl 函數的VIDIOCMCAPTURE 命令,以非阻塞形式開始一幀圖像截取; 接著調用ioctl( fd,VIDIOCSYNC,&frame)函數判斷該幀是否截取完畢; 最后就可將圖像數據寫入到Frame Buffer 中。若進行連續幀截取,則需通過循環語句中,使用VIDIOCMCAPTURE 和VIDIOCSYNC 函數判斷是否完成截取,并給采集到的每幀圖像賦地址。
( 5) 關閉攝像頭。視頻采集完成以后,最后的工作是關閉視頻采集設備。以內存映射的方法獲取視頻數據,需要在視頻采集任務完成之后關閉內存映射,然后調用close_v4l 函數關閉視頻設備。關閉視頻設備需要判斷視頻獲取方式: 如是內存映射方式,則通過munmap 函數。
4 嵌入式Web 監控的實現
嵌入式Web 監控的實現包括了Boa 服務器移植、CGI 網頁交互程序設計兩個部分。
4. 1 Boa 服務器移植
在嵌入式遠程監控系統中,Web 服務器的性能對系統的整體性能具有直接影響,因此Web 服務器的選擇和設計尤為重要。高效率的Web 服務器,才能使監控系統的能得到充分的發揮。
Boa 是一款單任務的HTTP 服務器,它支持CGI 技術,且具有自動生成目錄和解壓文件等功能。在運行效率方面,由于其只為CGI 程序創建新的進程,因此具有很高的HTTP 請求處理速度。故選用Boa 來構建嵌入式服務器。
服務器主要作用是為整個系統提供了一種網絡接入和信息服務方式。系統通過應用HTTP 協議聯網,調用具有數據請求和控制功能的CGI 程序,實現服務器對客戶端瀏覽器請求的處理,最終實現信息在瀏覽器的動態顯示,達到遠程監控的目的。
4. 2 CGI 網頁交互程序設計
CGI 技術即通用網關接口(Common Network Interface)技術,它支持WEB 數據動態刷新、轉換和顯示。
基于CGI 接口設計的程序運行在WEB 服務器端,像其他類型程序設計一樣,其必須通過CGI 標準格式進行編寫。CGI 程序的運行由瀏覽器端的輸入觸發,它的任務就是執行指令,將所需數據轉換為環境變量進行處理,并回傳處理結果。WEB 服務器與CGI 程序之間通過四種途徑進行通信: 環境變量、命令行、標準輸入和標準輸出。
CGI 的基本工作過程為: 根據瀏覽器的請求,CGI 程序通過執行Boa 服務器指令,調用其它應用程序進行處理,最后將處理結果以HTML 形式反饋給瀏覽器顯示。CGI 工作流程示意圖如圖3 所示。
圖3 CGI 工作流程示意圖
4. 3 系統測試
本系統的測試工作主要是在實驗室的局域網環境下進行的。
其中下位機為以S3C2440 處理器為核心的嵌入式目標板,配合ZC0301 攝像頭和數字溫度傳感器DS18B20,通過構建Linux 操作系統并移植Boa,將其配置成為嵌入式服務器; 下位機采用通用的PC 機,通過瀏覽器與服務器進行交互。上位機監控端和下位機嵌入式服務器通過網線和上位機相連接,構建成為局域網開發環境。
通過終端中運行Boa 服務器和數據采集程序,在監控端瀏覽器內輸入網頁: http: / /192. 168. 0. 6,即進入登陸界面,如圖4 所示。
圖4 系統登陸主界面
實時溫度采集界面如圖5 所示。
圖5 實時溫度監測界面
5 結束語
本文設計了一種了基于WEB 的嵌入式機房遠程監測系統,在實驗室條件下進行測試、調試和完善。測試結果表明,監測系統能夠實時準確的采集機房視頻和溫度數據,并在遠程瀏覽器動態流暢顯示,實現了信息實時監測,滿足了應用的需求。本文的后續工作是在現有的系統基礎上增加攝像頭的云臺控制功能以及嵌入式數據庫管理功能,提高系統的整體使用價值。
評論
查看更多