《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)
基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)
來(lái)源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》2006年07期
孫宏偉
摘要: 基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)[圖],0引言對(duì)圖像監(jiān)控系統(tǒng),,用戶(hù)常常提出這樣的功能需求:希望能夠監(jiān)控距離較遠(yuǎn)的對(duì)象,。這些對(duì)象有可能分布在
Abstract:
Key words :
0 引言

對(duì)圖像監(jiān)控系統(tǒng),,用戶(hù)常常提出這樣的功能需求:希望能夠監(jiān)控距離較遠(yuǎn)的對(duì)象,。這些對(duì)象有可能分布在郊區(qū),、深山,,荒原或者其他無(wú)人值守的場(chǎng)合,;另外,,希望能夠獲取比較清晰的監(jiān)控圖像,但對(duì)圖像傳輸?shù)膶?shí)時(shí)性要求并不高,,很明顯,,用傳統(tǒng)的PC機(jī)加圖像采集卡的方式很難滿(mǎn)足這樣的需求。

在嵌入式領(lǐng)域,,ARM9系列微處理器在高性能和低功耗方面提供了最佳的性能,,因此選用ARM9嵌入式處理器S3C2440設(shè)計(jì)實(shí)現(xiàn)了一個(gè)遠(yuǎn)程圖像光線(xiàn)監(jiān)控系統(tǒng)通過(guò)這個(gè)系統(tǒng),可以遠(yuǎn)在千里之外控制一個(gè)攝像機(jī)進(jìn)行圖像采集并回傳,。如果這個(gè)攝像機(jī)有一個(gè)485接口的云臺(tái),,還可以通過(guò)互聯(lián)網(wǎng)遠(yuǎn)程控制攝像機(jī)的取景角度、鏡頭拉伸,、聚焦等功能,。除了獲取圖像數(shù)據(jù)。系統(tǒng)還提供了多路開(kāi)關(guān)控制和數(shù)據(jù)采集功能,,可以連接溫度,、濕度等各類(lèi)傳感器和控制紅外夜視燈等其他外部設(shè)備的開(kāi)關(guān)狀態(tài)。最后,,通過(guò)GPRS或CDMA無(wú)線(xiàn)通信模塊及Internel互聯(lián)網(wǎng)將數(shù)據(jù)傳至任何地方,。

1 系統(tǒng)設(shè)計(jì)

本系統(tǒng)采用三星公司的S3C2440嵌入式處理器和arm-linux2.4.26操作系統(tǒng);S3C2440使用ARM920T內(nèi)核,,主頻是400MHz,;除了集成通用的串口控制器、USB控制器,、A/D轉(zhuǎn)換器和GPIO等功能之外,,還集成了一個(gè)攝像頭接門(mén)(CAMIF)(這個(gè)接口是遠(yuǎn)程圖像采集的核心部分)。系統(tǒng)在S3C2440處理器的控制下,,從CCD攝像機(jī)采集模擬視頻信號(hào),,然后經(jīng)過(guò)編碼、DMA傳輸?shù)絻?nèi)存緩沖,,接著由軟件對(duì)內(nèi)存中的數(shù)字視頻數(shù)據(jù)進(jìn)行壓縮和打包,。最后通過(guò)通信單元將圖像以IP包的方式發(fā)送到監(jiān)控中心的服務(wù)器,。整個(gè)系統(tǒng)的硬件結(jié)構(gòu)原理如圖1所示。

基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)

1.1 圖像采樣接口

S3C2440的攝像頭接口(CAMIF)支持ITU-R BT.601/656 YCbCr8比特標(biāo)準(zhǔn)的圖像數(shù)據(jù)輸入,,最大可采樣4096×4096像素的圖像,。攝像頭接口可以有兩種模式與DMA控制器進(jìn)行數(shù)據(jù)傳輸:一種是P端口模式,把從攝像頭接口采樣到的圖像數(shù)據(jù)轉(zhuǎn)為RGB數(shù)據(jù),,并在DMA控制下傳輸?shù)絊DRAM(一般這種模式用來(lái)提供圖像預(yù)覽功能),;另一種是C端口模式,把圖像數(shù)據(jù)按照YCbCr4:2:0或4:2:2的格式傳輸?shù)絊DRAM(這種模式主要為MPEG-4,、H.263等編碼器提供圖像數(shù)據(jù)的輸入),。上述兩種工作模式都允許設(shè)置一個(gè)剪輯窗口,只有進(jìn)入這個(gè)窗口的圖像數(shù)據(jù)才能夠傳輸?shù)絊DRAM,。上述過(guò)程可用圖2說(shuō)明,。

基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)

S3C2440的攝像機(jī)接口接收ITU標(biāo)準(zhǔn)的圖像數(shù)據(jù),,不能直接接收CCD攝像機(jī)輸出的模擬視頻信號(hào),,因此還需要1片SAA7113視頻解碼芯片。SAA7113可以輸入4路模擬視頻信號(hào),,通過(guò)內(nèi)部寄存器的不同配置可以對(duì)4路輸入進(jìn)行轉(zhuǎn)換,,輸入可以為4路CVBS或2路S視頻(Y/C)信號(hào),輸出8位“VPO”總線(xiàn),,為標(biāo)準(zhǔn)的ITU656,、YUV 4:2:2格式。對(duì)SAA7113初始化需要通過(guò)I2C 總線(xiàn)進(jìn)行,,而S3C2440內(nèi)部集成的I2C控制器正好可以實(shí)現(xiàn)這個(gè)過(guò)程,。S3C2440的攝像機(jī)接口與SAA7113的連接原理如圖3所示。

基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)

SAA7113的CE引腳與S3C2440的一個(gè)GPIO引腳相連,,這樣可以控制SAA7113的工作狀態(tài),。當(dāng)無(wú)須采集圖像時(shí),將該GPIO口輸出低電平,,使SAA7113芯片處于低功耗狀態(tài),,節(jié)省電能的消耗。對(duì)照?qǐng)D2和圖3可以看出,,SAA7113芯片就是圖2的“外部圖像傳感器”,。它向嵌入式系統(tǒng)的攝像機(jī)接口提供了采樣到的標(biāo)準(zhǔn)ITU視頻數(shù)據(jù),。這些數(shù)據(jù)經(jīng)過(guò)DMA的P端口或C端口控制傳輸?shù)搅藘?nèi)存,,這樣就可以在內(nèi)存中對(duì)圖像數(shù)據(jù)作進(jìn)一步的加工處理。

1.2 采樣接口驅(qū)動(dòng)

圖像采樣接口的驅(qū)動(dòng)按照Linux視頻設(shè)備驅(qū)動(dòng)的模型V4L(video for Linux)編寫(xiě)了SAA7113與S3C2440攝像機(jī)接口的驅(qū)動(dòng),。驅(qū)動(dòng)使用C端口模式與DMA進(jìn)行通信,。采樣1幀圖像之前,,首先設(shè)置采樣圖像的分辨率和剪輯窗口大小等參數(shù),然后設(shè)置DMA控制器訪(fǎng)問(wèn)的視頻采樣輸出緩沖的內(nèi)存地址,,接著就可以通過(guò)設(shè)置S3C2440的CAMIF接口控制寄存器啟動(dòng)1幀圖像的采集,。當(dāng)采集完1幀圖像時(shí),CAMIF接口會(huì)自動(dòng)啟動(dòng)1次C端口的DMA通信,,把采集的圖像數(shù)據(jù)傳到內(nèi)存,。傳輸結(jié)束后,會(huì)產(chǎn)生一個(gè)C端口的中斷,,通知驅(qū)動(dòng)1幀數(shù)據(jù)采樣和傳輸結(jié)束,。具體來(lái)說(shuō),這個(gè)驅(qū)動(dòng)需要實(shí)現(xiàn)以下功能:

1)初始化S3C2440的CAMIF接口的時(shí)鐘寄存器,。主要是根據(jù)SAA7113的外接晶振頻率設(shè)置攝像機(jī)時(shí)鐘分頻寄存器(CAMDIVN),。該寄存器的0~3位是分頻系數(shù),其計(jì)算方法是:

CAMCLK_DIV=UPLL/(CAMCLK * 2)-1

(初始化代碼略——編者注)

2)配置CAMIF接口的采樣參數(shù),。主要是輸入源圖像數(shù)據(jù)的格式,、輸出的圖像格式、采樣的窗口大小,、DMA的訪(fǎng)問(wèn)地址等參數(shù),。這里定義了一個(gè)結(jié)構(gòu),用于存儲(chǔ)與CAMIF接口相關(guān)的配置信息:

基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)

上述這些配置信息最終是與一系列的寄存器相關(guān)聯(lián)的,。這個(gè)結(jié)構(gòu)為讀/寫(xiě)寄存器提供了一個(gè)清晰的,、集中的存儲(chǔ)緩沖。

3)打開(kāi),、關(guān)閉和控制攝像機(jī)的接口函數(shù),。這3個(gè)接口函數(shù)是按V4L規(guī)范編寫(xiě)的,其原型如下:

①打開(kāi)攝像機(jī)接口函數(shù):static int v4l_cam_open(struct video_device *v,,int mode);

②控制攝像機(jī)接口函數(shù):static int v4l_cam_ioctl(struct video_device *v,,unsigned int cmd,void *arg);

③關(guān)閉攝像機(jī)接口函數(shù):static void v4l_cam_close(struct video_device *v);

4)中斷處理接口函數(shù),。該中斷處理函數(shù)在使用C端口模式完成1幀圖像采集后被調(diào)用,。函數(shù)原型定義如下:

static void S3C2440_camif_isr_c(int irq,void *dev_id,,struct pt_regs *regs);

5)讀取圖像數(shù)據(jù)的實(shí)現(xiàn)函數(shù),。該函數(shù)通過(guò)dev→rdy的值判斷1幀圖像有無(wú)采集轉(zhuǎn)換結(jié)束。如果該值置1,,則表示采樣結(jié)束,,這時(shí)就可以從圖像數(shù)據(jù)的緩沖中拷貝數(shù)據(jù)到用戶(hù)的存儲(chǔ)空間;如果為0,,則函數(shù)進(jìn)入阻塞或返回EAGAIN標(biāo)志,。順便提一下,,dev→rdy的值是在中斷處理函數(shù)中設(shè)置的,。(實(shí)現(xiàn)代碼略——編者注)

1.3 圖像數(shù)據(jù)的壓縮

S3C2440的CAMIF接口處理得到的1幀圖像數(shù)據(jù)比較大,,還要經(jīng)過(guò)進(jìn)一步的壓縮才能適合進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)傳輸。S3C2440處理器內(nèi)部沒(méi)有提供硬件的圖像壓縮編碼器,,但因?yàn)樗闹黝l較高,,可以使用軟件來(lái)進(jìn)行圖像壓縮??紤]到CPU的處理能力和對(duì)單幀采樣圖像的清晰度有較高的要求,采用基于離散余弦變換算法(DCT)的JPEG/MJPEG方式對(duì)圖像數(shù)據(jù)進(jìn)行壓縮編碼,。

1.4 圖像數(shù)據(jù)的傳輸

通信單元承擔(dān)了圖像的數(shù)據(jù)傳輸任務(wù),。在本系統(tǒng)中,有兩種通信單元可供使用,。一種是GPRS/CDMA無(wú)線(xiàn)傳輸模塊,。它們通過(guò)串口與S3C2440處理器相連接,在以太網(wǎng)絡(luò)傳輸線(xiàn)纜難以鋪設(shè)的環(huán)境中可以使用這種通信方式,。它的缺點(diǎn)是通信帶寬小,,傳輸速度慢,但是如果對(duì)實(shí)時(shí)性要求不高,,也能夠傳輸高清晰的靜態(tài)圖片,。另一種通信單元是10MHz的CS8900a以太網(wǎng)絡(luò)傳輸模塊,。它可與局域網(wǎng)相連接,,然后將監(jiān)控圖像發(fā)送到局域網(wǎng)的監(jiān)控服務(wù)器或者通過(guò)網(wǎng)關(guān)發(fā)送到互聯(lián)網(wǎng)上。這種通信方式速度高,,實(shí)時(shí)性好,但監(jiān)控現(xiàn)場(chǎng)要安裝有線(xiàn)的以太網(wǎng)絡(luò),。

1.5 攝像機(jī)云臺(tái)的控制

攝像機(jī)的云臺(tái)控制接口采用RS485通信方式,。因S3C2440內(nèi)部只有RS232的控制器,為此使用MAX485芯片設(shè)計(jì)了一個(gè)RS232到RS485的轉(zhuǎn)換接口,。該電路原理如圖4所示。

基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)

圖4中RS485的數(shù)據(jù)流方向由GPE13口的電平進(jìn)行控制,。

2 系統(tǒng)軟件的設(shè)計(jì)

系統(tǒng)軟件包含下位機(jī)軟件,、服務(wù)器軟件和客戶(hù)端軟件。下位機(jī)軟件部署在遠(yuǎn)程圖像監(jiān)控設(shè)備上。這個(gè)軟件作為一個(gè)Linux的守護(hù)進(jìn)程啟動(dòng),,負(fù)責(zé)壓縮采樣到的圖像數(shù)據(jù),,并把壓縮后的圖像打包,,然后通過(guò)Socket通信方式上傳到監(jiān)控服務(wù)器,。如果使用GPRS/CDMA無(wú)線(xiàn)傳輸模塊,上位機(jī)軟件在系統(tǒng)啟動(dòng)完成后,,就自動(dòng)進(jìn)行PPP撥號(hào),,建立起一條TCP/IP的通信管道??蛻?hù)端軟件部署在一臺(tái)連接到互聯(lián)網(wǎng)的PC機(jī)上,,它提供給最終用戶(hù)瀏覽監(jiān)控畫(huà)面,設(shè)置監(jiān)控參數(shù)等功能,。服務(wù)器軟件也部署在一臺(tái)連接到互聯(lián)網(wǎng)的計(jì)算機(jī)上,。這臺(tái)計(jì)算機(jī)在互聯(lián)網(wǎng)上有固定的IP或者域名,服務(wù)器軟件作為一個(gè)后臺(tái)進(jìn)程啟動(dòng),,為客戶(hù)端和遠(yuǎn)程圖像監(jiān)控設(shè)備之間的通信起到一個(gè)橋梁的作用,。因?yàn)檫h(yuǎn)程監(jiān)控設(shè)備的IP地址是動(dòng)態(tài)的,無(wú)法被客戶(hù)端直接尋址,,因此就需要服務(wù)器作為雙方通信的中間橋梁,。

下位機(jī)軟件通過(guò)驅(qū)動(dòng)程序提供的接口,在遠(yuǎn)程圖像監(jiān)控設(shè)備中完成硬件的初始化,、控制等功能,,同時(shí)又負(fù)責(zé)圖像的壓縮和傳輸。它是所有設(shè)備的控制中樞,,因此這里著重描述下位機(jī)軟件的工作流程,,如圖5所示。

基于ARM9的遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)

為了省電,,一些像SAA7113,、攝像機(jī)和夜視紅外燈等大功耗的器件和設(shè)備只有在需要時(shí)才工作,所以這些設(shè)備在初始化時(shí)都是斷開(kāi)電源的,。

下位機(jī)程序讀取保存在設(shè)備上的設(shè)備ID號(hào)(該ID號(hào)是唯一的),,以及監(jiān)控服務(wù)器的域名/IP地址和端口,然后下位機(jī)程序作為Socket連接的客戶(hù)端主動(dòng)與監(jiān)控服務(wù)器進(jìn)行連接,。連接成功之后,,送出設(shè)備的ID號(hào),。這時(shí)如果有監(jiān)控的客戶(hù)端想要查看某個(gè)遠(yuǎn)程監(jiān)控設(shè)備的圖像,,只要向監(jiān)控服務(wù)器發(fā)出請(qǐng)求,告訴服務(wù)器要連接的設(shè)備ID號(hào),服務(wù)器就會(huì)根據(jù)這個(gè)ID號(hào)對(duì)應(yīng)的Socket句柄,,為客戶(hù)端和遠(yuǎn)程監(jiān)控設(shè)備建立一個(gè)Socket連接通道,。

3 總結(jié)

遠(yuǎn)程圖像無(wú)線(xiàn)監(jiān)控系統(tǒng)在高壓輸電線(xiàn)路的覆冰監(jiān)測(cè)中得到了成功的應(yīng)用。在野外全天候環(huán)境下,,適時(shí)準(zhǔn)確地監(jiān)測(cè)高壓輸電線(xiàn)路覆冰厚度,,同時(shí)發(fā)出預(yù)警處理信息,從而有效地避免了斷纜事故的發(fā)生,。

遠(yuǎn)程圖像監(jiān)控技術(shù)是隨著計(jì)算機(jī)技術(shù),、數(shù)字通信技術(shù)、網(wǎng)絡(luò)技術(shù),、自動(dòng)控制技術(shù)以及LSI,、VLSI集成電路的發(fā)展而發(fā)展的,而基于ARM9嵌入式處理器的本系統(tǒng)正是這些技術(shù)學(xué)科相互交叉和融合發(fā)展的集中體現(xiàn),。實(shí)踐證明,,ARM9處理器的低功耗、高性能和多功能的特性滿(mǎn)足了遠(yuǎn)程圖像監(jiān)控的許多特殊需求,,是實(shí)現(xiàn)遠(yuǎn)程圖像監(jiān)控的很好選擇,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。