摘要: 3G 網(wǎng)絡(luò)的發(fā)展, 手機(jī)將成為信息社會(huì)的核心樞紐, 隨時(shí)、隨地地進(jìn)行遠(yuǎn)程檢測(cè)實(shí)時(shí)監(jiān)控已成為需求。本文介紹了基于Micro2440 開(kāi)發(fā)板的手機(jī)視頻監(jiān)控系統(tǒng)設(shè)計(jì)方案, 前端視頻采集以ARM920t 內(nèi)核的嵌入式微處理器S3C2440 為硬件核心, 以WinCE 為嵌入式實(shí)時(shí)操作系統(tǒng)。傳輸系統(tǒng)采用中國(guó)聯(lián)通的WCDMA 無(wú)線網(wǎng)絡(luò), 應(yīng)用萬(wàn)維網(wǎng)作為服務(wù)器, 后端監(jiān)控系統(tǒng)驅(qū)動(dòng)程序開(kāi)發(fā)在Platform Builder 中完成, 應(yīng)用程序在EVC 可視化開(kāi)發(fā)環(huán)境中完成。通過(guò)實(shí)驗(yàn), 證明了系統(tǒng)設(shè)計(jì)的正確與合理: 已在3G 手機(jī)中顯示圖片, 圖片清晰, 性價(jià)比高, 系統(tǒng)穩(wěn)定性好。
隨著3G 網(wǎng)絡(luò)技術(shù)的快速發(fā)展以及3G 手機(jī)各項(xiàng)功能的增強(qiáng), 使得利用3G 手機(jī)實(shí)現(xiàn)隨時(shí)隨地的視頻監(jiān)控已成為可能。而嵌入式技術(shù)作為當(dāng)今IT 業(yè)的熱門技術(shù), 各種嵌入式芯片如DSP, A RM, SOC 等被廣泛應(yīng)用于數(shù)碼、安防、交通信號(hào)采集、遠(yuǎn)程醫(yī)療等領(lǐng)域[ 1] , 可以預(yù)見(jiàn)未來(lái)便攜式多功能的個(gè)人醫(yī)療數(shù)字服務(wù)終端會(huì)像手機(jī)一樣普及[ 2] , 用戶可以隨時(shí)隨地地將自己重要的生理信息實(shí)時(shí)、準(zhǔn)確、快速地傳送到遠(yuǎn)程醫(yī)療中心或家庭護(hù)理專家處, 從而得到醫(yī)生的專業(yè)建議和指導(dǎo), 實(shí)現(xiàn)遠(yuǎn)程醫(yī)療監(jiān)護(hù)的應(yīng)用。文獻(xiàn)[ 3] 中的無(wú)線監(jiān)控系統(tǒng)也用到ARM9 芯片和WinCE 操作系統(tǒng), 但對(duì)軟件設(shè)計(jì)部分論述不清晰, 文獻(xiàn)[ 4] 論述的基于ARM 的無(wú)線視頻監(jiān)控系統(tǒng)只介紹了簡(jiǎn)單的硬件結(jié)構(gòu)和程序流程圖, 沒(méi)有給出實(shí)驗(yàn)結(jié)果, 文獻(xiàn)[ 5] 只給出了仿真圖, 文獻(xiàn)[ 6] 論述的基于3G 的手機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)也只介紹了簡(jiǎn)單的系統(tǒng)框圖和應(yīng)用實(shí)例, 并沒(méi)有實(shí)驗(yàn)結(jié)果, 文獻(xiàn)[ 7] 和文獻(xiàn)[ 8] 均采用ARM9 內(nèi)核嵌入式芯片, 且采用Linux 操作系統(tǒng),但是都沒(méi)有實(shí)驗(yàn)驗(yàn)證, 且主要論述的是Linux 內(nèi)核編譯。本文設(shè)計(jì)一種基于ARM9 芯片的3G 手機(jī)嵌入式視頻采集系統(tǒng), 該系統(tǒng)與參考文獻(xiàn)[ 3-8] 所論述的視頻采集系統(tǒng)相比, 具有體積小、能耗低、更新維護(hù)方便、開(kāi)發(fā)難度低等特點(diǎn)。
1 系統(tǒng)硬件結(jié)構(gòu)
本系統(tǒng)的硬件平臺(tái)實(shí)物如圖1, 鑒于系統(tǒng)的可靠性、可擴(kuò)展性、可維護(hù)性, 本系統(tǒng)采用模塊化的設(shè)計(jì)原則, 整個(gè)系統(tǒng)的視頻采集系統(tǒng)硬件由3 個(gè)部分構(gòu)成。
圖1 硬件平臺(tái)實(shí)物
1. 1 微系統(tǒng)核心模塊
該模塊是由嵌入式微處理器S3C2440A, NANDFALSH 接口電路、SDRAM 接口電路和總線接口電路組成。S3C2440 是三星公司基于ARM920T 內(nèi)核的32 位RISC 微處理器芯片, 為手持設(shè)備及一般類型的應(yīng)用提供低價(jià)格、低功耗、高性能小型微控制器的解決方案。采用了新的總線架構(gòu)AMBA, 其內(nèi)核還實(shí)現(xiàn)了MMU, Har vard 高速緩沖體系結(jié)構(gòu)。另外其加強(qiáng)的ARM 體系結(jié)構(gòu)MMU 支持WinCE, Linux 和EPOC32等操作系統(tǒng)[ 9] , 支持ARM 調(diào)制體系結(jié)構(gòu), 支持從NAND FLA SH 存儲(chǔ)器啟動(dòng)。而且, 它還集成了豐富的片上功能, 如LCD 控制器、UART 接口、USB 主從接口、I2C 接口、CAM IF 單元等。
SDRAM 雖掉電不能保存數(shù)據(jù), 但它有非常高的讀寫速度, 故適合主程序的運(yùn)行。本系統(tǒng)采用2 片32 MB型號(hào)為HY57V561620 的芯片級(jí)聯(lián)構(gòu)成64 MB 的SDRAM 存儲(chǔ)器, 該芯片的內(nèi)部存儲(chǔ)結(jié)構(gòu)是4 Banks×4M×16 b, 共4 個(gè)Bank。NAND FLASH 存儲(chǔ)系統(tǒng)采用三星公司的K9F1208U0M 芯片, 存儲(chǔ)容量為64M× 8 b。核心模塊與外設(shè)控制模塊的接口連接由總線接口實(shí)現(xiàn)。
1. 2 視頻采集模塊
該模塊采用Micro2440 開(kāi)發(fā)板自帶的CMOS 攝像頭接口, 直接使用友善之臂提供的CAM130 攝像頭模塊, 該模塊由一個(gè)130 萬(wàn)像素的CMOS 圖像傳感器OV9650 及其接口電路、電源電路組成。選擇CMOS傳感器是因?yàn)樗屑啥雀?、體積小、功耗低、編程方便、易于控制、成本低等優(yōu)點(diǎn), 并且該類型的傳感器正向低噪聲和高靈敏度等方向發(fā)展, 故CMOS 傳感器是目前低像素圖像采集系統(tǒng)的最佳選擇。接口電路將圖像信號(hào)進(jìn)行A/ D 轉(zhuǎn)換和處理, 傳送到處理器的CAM IF。
微系統(tǒng)核心模塊通過(guò)I2C 串行總線實(shí)現(xiàn)對(duì)傳感器的控制。電源電路由電源轉(zhuǎn)換芯片A S1117 為攝像頭提供1. 8 V 和2. 8 V 電壓, 其中2. 8 V 電壓是通過(guò)可調(diào)壓芯片分壓得到( 即為圖2 中的VDD_CAM) 。該模塊的供電電壓為3. 3 V, 與微系統(tǒng)核心模塊的供電電壓是一致的, 無(wú)需另外單獨(dú)提供。
1. 3 外設(shè)控制模塊
該模塊由LCD 與觸摸屏接口電路、JTA G 調(diào)試接口電路、U SB 主從口電路、復(fù)位電路、電源電路、RS 232串口電路等構(gòu)成。LCD 與觸摸屏接口電路用于顯示應(yīng)用程序編寫完成后采集的視頻數(shù)據(jù)、接受用戶的外部控制命令等, 起到人機(jī)接口的作用。JAT G 調(diào)試接口提供硬件調(diào)試的功能, 它遵循IEEE 11491 標(biāo)準(zhǔn), 利用邊界掃描技術(shù), 通過(guò)邊界掃描鏈實(shí)現(xiàn)對(duì)芯片輸入輸出信號(hào)的觀察控制。JATG 在本系統(tǒng)中的一個(gè)重要功能就是將引導(dǎo)加載程序Boot loader 燒寫進(jìn)開(kāi)發(fā)板, 用于進(jìn)一步的內(nèi)核加載。USB 主口用于外接U 盤、移動(dòng)硬盤和鼠標(biāo)等支持U SB 總線接口的設(shè)備, 可以擴(kuò)展存儲(chǔ)空間。
USB 從口則用于向系統(tǒng)燒寫WinCE 內(nèi)核文件以及系統(tǒng)與PC 機(jī)之間的通信。復(fù)位電路采用既有電源監(jiān)控和數(shù)據(jù)保護(hù)又有看門狗作用的專門復(fù)位芯片MAX811來(lái)保證系統(tǒng)出現(xiàn)異常時(shí)能可靠復(fù)位。RS 232 用于通過(guò)超級(jí)終端或DNW 工具查看Bo ot loader 程序啟動(dòng)的情況以及擴(kuò)展串口通信功能。該處的電源電路提供5 V( 為整個(gè)系統(tǒng)提供外部電源) 、3. 3 V( 核心模塊、外設(shè)控制、圖像采集模塊供電) 和1. 3 V( 核心模塊供電) 。
2 圖像傳感器接口電路與工作原理
攝像頭使用的是CAM130 模塊, 其中的圖像傳感器為OV9650, 該部分原理圖及接口電路如圖2 所示。
圖2 CAM130 模塊原理圖及OV9650 接口電路
OV9650 與處理器的接口包括SCCB( 串行攝像機(jī)控制總線) 接口、數(shù)據(jù)輸出接口和控制接口等3 部分。
SCCB 接口起到傳遞處理器提供的初始化OV9650內(nèi)部寄存器參數(shù)的作用, 其數(shù)據(jù)線SIOD 和時(shí)鐘線SI-OC, 相當(dāng)于I2C 總線中的SDA 與SCL。也就是說(shuō), SC-CB 起到I2C 總線的作用。OV9650 是I2C 總線的從器件, S3C2440 是對(duì)應(yīng)的主器件。I2 C 總線采用串行方式從高位到低位傳輸字節(jié)數(shù)據(jù), 每個(gè)字節(jié)傳輸完后, 主控制器將SDA 置為高電平并釋放, 等待從設(shè)備發(fā)送確認(rèn)信號(hào)。OV9650 內(nèi)嵌了一個(gè)10 位A/ D 轉(zhuǎn)換器, 對(duì)應(yīng)有10 個(gè)數(shù)據(jù)輸出口D[ 0: 9] 。輸出圖像數(shù)據(jù)的格式可以為10 位原始RAW, RGB 或經(jīng)過(guò)內(nèi)部DSP 轉(zhuǎn)換的8 位RGB/ YCbCr。本系統(tǒng)選擇的微處理器芯片S3C2440的CAM IF 單元支持8 位的YU V/ YCbCr 格式, 故需將OV9650 的數(shù)據(jù)接口D[ 9: 2] 與CAM IF 的數(shù)據(jù)口CAMDAT A[ 7: 0] 相連接。OV9650 的XVCLK 用于接收CPU 輸出的24 MHz 的工作時(shí)鐘。OV9650 內(nèi)部產(chǎn)生的幀同步信號(hào)VSYNC、行同步信號(hào)HREF、像素時(shí)鐘信號(hào)PCLK 等3 個(gè)時(shí)鐘信號(hào)傳入ARM 芯片中, 用于控制圖像采集。每一個(gè)VSYN C 脈沖表示一幀圖像數(shù)據(jù)采集的開(kāi)始, HREF 的高電平則表示采集一行圖像數(shù)據(jù), 圖像傳感器按從左到右的順序在每個(gè)PCLK脈沖過(guò)程中依次采集一個(gè)字節(jié)的數(shù)據(jù), 直到一幀圖像數(shù)據(jù)全部采集完成。
3 3G圖片傳輸流程
圖片傳輸流程圖如圖3 所示, 3G 手機(jī)向MINI2440開(kāi)發(fā)板發(fā)送短信請(qǐng)求發(fā)照片, ARM9 控制中心接收到信息,發(fā)送出文件名與文件大小, TCP 服務(wù)器收到信息接收完圖片并關(guān)閉窗口, 同時(shí)向3G 手機(jī)回饋圖片已接收完畢的信息, 接著3G 手機(jī)向服務(wù)器發(fā)送請(qǐng)求接收照片, T CP 服務(wù)器向3G 手機(jī)發(fā)送圖片數(shù)據(jù), 直到圖片接收完畢, 當(dāng)接收完畢, 3G 手機(jī)向服務(wù)器反饋圖片接收完畢。
圖3 3G 圖片傳輸方案
有關(guān)Micro2440 開(kāi)發(fā)板發(fā)送圖片及3G 手機(jī)接收?qǐng)D片的部分程序如下所示:
/ / TCP 監(jiān)聽(tīng)
UINT ListenT hread( vo id * p)
{
/ / 準(zhǔn)備接收請(qǐng)求
CGSMW_CameraDlg * pDlg = ( CGSMW_CameraDlg* ) p;
SOCKET s= pDlg??> m_hSo cket;
CStr ing strFileName = temp; / / 得到文件名
st rcpy( temp, buffer + i+ 1) ;
lo ng lFileSize = ato l( temp) ; / / 得到文件大??;
st rFilePath= “ \ 123ARM\ ”+ strFileName; / / 進(jìn)度條操作,接收并保存文件
CFile file( strFilePath, CFile: : modeCreate | CFile: : mode??Write) ;
long iTemp = 0;
while ( 1)
{
rcv = r ecv ( s, buffer, 1024, 0) ;
if ( rcv = = 0)
{
break;
}
file. Wr ite( buffer, rcv) ;
iTemp + = rcv ;
}
file. Close( ) ;
send( s, “ [ ! %] ” , 4, 0) ; / / 發(fā)送接收文件結(jié)束請(qǐng)求
int ret1= send( pDlg> m_hSo cket, buffer, iSize, 0) ;
/ / 發(fā)送文件的名稱和大小
/ / 發(fā)送文件
if ( iEnd= = SOCKET_Error)
{
strError. Format( _T( “ Send File: %d”) , er ro r= WSAGetLast Error( ) ) ;
AfxM essag eBox ( strErr or) ;
break;
}
iT mp + = iEnd;
pDlg> m_pro gr ess. Set Pos( iTmp) ;
Sleep( 10) ;
/ / 判斷發(fā)送是否成功、結(jié)束處理
if ( iTmp = = lFileSize)
{
}
CSt ring st rTemp= “發(fā)送文件結(jié)束” ;
/ / 回復(fù)對(duì)方接收完畢
pDlg> SendMessag e( NULL, NULL) ;
pDlg> m_cState. SetWindowTex t( st rTemp) ;
/ / shutdow n( ) ;
ExitThread( 0) ;
return 0;
4 應(yīng)用軟件設(shè)計(jì)及實(shí)驗(yàn)結(jié)果
操作系統(tǒng)與硬件平臺(tái)間采用虛擬串口進(jìn)行通信,EVC 在實(shí)現(xiàn)串口數(shù)據(jù)通信中存在2 個(gè)局限性: 一是EVC 不支持串口通信控件MScomm, 另一個(gè)是WinCE不支持重疊I/ O 操作。因此, 要采用WinCE 的API 函數(shù)和多線程技術(shù)進(jìn)行數(shù)據(jù)串口通信的底層開(kāi)發(fā)[ 10] 。
Window s API 函數(shù)將串口視為文件, 對(duì)于串口的操作類似于對(duì)于普通文件的操作。在EVC 環(huán)境中, 通過(guò)調(diào)用CreateFile 函數(shù)來(lái)打開(kāi)串口, 設(shè)置串口讀寫模式:
H ANDLE m _ hComm = Cr eateFile ( szPor t, GENERIC _READ| GENERIC _WRIT E, 0, NULL, OPEN _ EXISTING, 0,NULL) ;因?yàn)閃inCE 不支持重疊I/ O, 所以CreateFile 的第6 個(gè)參數(shù)不能設(shè)置為: FILE _ FLAG _ OVER _LAPPED, 這里設(shè)置成通用常數(shù)“ 0”, 否則串行通信處理將被系統(tǒng)信息阻塞。
打開(kāi)串口以后, 可以使用串口初始化函數(shù)SetCommState( ) 來(lái)獲取串口當(dāng)前的配置, 如串口號(hào)、波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位等:
BOOL CGSM W_CameraDlg: : OpenPo rt ( UINT port No , / * 串口號(hào)* /
UINT baud, / * 波特率* /
UINT parity, / * 奇偶校驗(yàn)* /
UINT databits, / * 數(shù)據(jù)位* /
UINT sto pbits / * 停止位* / )
初始化緩沖區(qū)的信息:
Purg eComm( m _ hComm, PURGE _ TXCLEAR | PURGE _RXCLEAR) ;
m _ hReadCloseEv ent = CreateEvent ( NULL, T RUE,F(xiàn)ALSE, NU LL) ;
m_ hReadT hread = Cr eateThread ( NU LL, 0, ReadT hr ead Func, this, 0, & m_dw ReadT hreadID) ;
應(yīng)用程序開(kāi)發(fā)是在EVC 集成開(kāi)發(fā)環(huán)境中進(jìn)行的。
用EVC 的AppWizard 向?qū)Ы⒒贛FC 的對(duì)話框程序架構(gòu), 在進(jìn)行頁(yè)面布局“圖像顯示區(qū)域”、“初始化”、“接聽(tīng)”、“撥號(hào)”、“掛機(jī)”等按鈕后, 為各種按鈕添加各種消息響應(yīng)時(shí)間以及完成對(duì)各按鈕進(jìn)行的設(shè)置, 以響應(yīng)用戶期待的命令。“初始化”按鈕是進(jìn)行3G 網(wǎng)絡(luò)的初始化。“接聽(tīng)”按鈕就是響應(yīng)3G 手機(jī)發(fā)送給開(kāi)發(fā)板的命令,“撥號(hào)”按鈕所需進(jìn)行的設(shè)置有對(duì)方號(hào)碼、撥號(hào)時(shí)發(fā)送的消息以及服務(wù)器IP 和端口號(hào), 設(shè)置完這些就可進(jìn)行撥號(hào)等待響應(yīng)了;“掛機(jī)”按鈕實(shí)現(xiàn)退出應(yīng)用程序和關(guān)閉攝像頭驅(qū)動(dòng)的功能。實(shí)現(xiàn)這些按鈕的單擊事件響應(yīng)函數(shù)的添加是比較容易的, 在EVC 環(huán)境中直接雙擊按鈕, 進(jìn)入代碼編輯區(qū)就可進(jìn)行編程調(diào)試。這里給出“初始化”和“撥號(hào)”按鈕的部分代碼, ……后面為省略的部分。
OpenPor t( 7, 115200) ; / / AT Com
if ( m_hComm ! = INVALID_H ANDLE_VALU E) / / 如果初始化按鈕被按下
{
/ / 3G 初始化
UpdateData( TRUE) ;
SendCommand( “ATE0\ r\ n” ) ; / * 取消回顯命令* /
…}
else
{
st r = “WCDMA 沒(méi)有連接上”;
Messag eBox ( st r) ;
return;
}
…
CStr ing str ( “AT D”) ;
UpdateData( TRUE) ;
m_hut. EnableWindow( TRUE) ;
st r+ = m_RecvTele;
st r+ = “ ; \ \ r\ \ n”;
UpdateData( ) ;
SendCommand( str ) ; / * 讀取SIM 中的第一條短信* /
…
系統(tǒng)應(yīng)用軟件開(kāi)發(fā)完成之后, 在3G 手機(jī)應(yīng)用程序中打開(kāi)手機(jī)主控端軟件, 單擊 初始化按鈕完成 撥號(hào)前的設(shè)置, 將信息發(fā)送給Micro2440 開(kāi)發(fā)板, 等待響應(yīng),順利地采集圖片并最終顯示到3G 手機(jī)上, 圖4 為3G手機(jī)主控終端軟件界面及圖片顯示結(jié)果。
5 結(jié) 語(yǔ)
該系統(tǒng)實(shí)現(xiàn)基于ARM9 平臺(tái)和WinCE 操作系統(tǒng),通過(guò)CMOS 攝像頭采集現(xiàn)場(chǎng)照片信息, 然后通過(guò)WCDMA 無(wú)線網(wǎng)絡(luò)連接到萬(wàn)維網(wǎng)服務(wù)器, 手機(jī)端設(shè)計(jì)出滿足條件的軟件, 最終在3G 手機(jī)上實(shí)現(xiàn)圖片監(jiān)控的功能。該系統(tǒng)具有實(shí)時(shí)性較好、成本較低、便于攜帶等優(yōu)點(diǎn), 非常適合在安保、交通、手持設(shè)備、家電、學(xué)校巡防等方面的應(yīng)用, 它是實(shí)現(xiàn)視頻監(jiān)控部分的重要組成部分。
目前只實(shí)現(xiàn)了圖像的傳輸及在3G 手機(jī)上的顯示, 視頻部分的傳輸顯示, 由于時(shí)間原因, 還暫時(shí)沒(méi)有完成。下一步將采用合適的視頻壓縮編碼算法如H. 264,MPEG4 編解碼技術(shù), 實(shí)現(xiàn)視頻監(jiān)控功能。
圖4 3G 手機(jī)主控終端軟件界面及圖片顯示結(jié)果
參考文獻(xiàn)
?。?1] 喻亮。 嵌入式系統(tǒng)的結(jié)構(gòu)特征與研究概況[ J] 。 企業(yè)科技與發(fā)展, 2010( 8) : 55-57.
?。?2] 謝園園, 孫發(fā)勤。 基于嵌入式系統(tǒng)的遠(yuǎn)程醫(yī)療監(jiān)護(hù)終端的設(shè)計(jì)與模擬實(shí)現(xiàn)[ J] 。 金陵科技學(xué)院學(xué)報(bào), 2006, 22( 3) : 34-36.
[ 3] 許雪梅, 郭遠(yuǎn)威, 吳愛(ài)軍, 等。 基于嵌入式Window s CE50 的無(wú)線監(jiān)控系統(tǒng)研究[ J] 。 現(xiàn)代電子技術(shù), 2009, 32( 2) : 25-29.
?。?4] 趙曉軍, 任明偉, 蘇海霞, 等。 基于ARM 的嵌入式無(wú)線視頻監(jiān)控系統(tǒng)[ J] 。 微型機(jī)與應(yīng)用, 2010, 29( 16) : 54-56.
[ 5] 查婧, 劉波, 曹劍中。 嵌入式視頻采集與網(wǎng)絡(luò)傳輸系統(tǒng)[ J] 。電子器件, 2009, 32( 3) : 646-648.
?。?6] 李伶, 李太君。 基于3G 的手機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)[ J] 。 通信技術(shù),2010, 43( 9) : 130-132.
?。?7] 焦鉻, 易小波, 李仁發(fā)。 基于嵌入式Inter net 的遠(yuǎn)程視頻監(jiān)控系統(tǒng)設(shè)計(jì)[ J] 。 計(jì)算機(jī)技術(shù)與發(fā)展, 2009, 19( 5) : 176-179.
[ 8] 錢華明, 劉英明, 張振旅。 基于S3C2410 嵌入式無(wú)線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[ J] 。 計(jì)算機(jī)測(cè)量與控制, 2009, 17( 6) : 1132-1134.
?。?9] 王靜。 基于S3C2440 和TCP/ IP 網(wǎng)絡(luò)的紅外線圖像采集和處理系統(tǒng)[ D] 。 南京: 南京理工大學(xué), 2008.
?。?10] 劉慶亮, 劉建成。 WinCE 下多線程串口通信在導(dǎo)航系統(tǒng)中的應(yīng)用[ J] 。 軟件導(dǎo)刊, 2010, 9( 3) : 77-79.
[ 11] 李文新, 王廣龍, 陳建輝, 等。 基于WinCE 的數(shù)字羅盤集成電路I2 C 驅(qū)動(dòng)程序開(kāi)發(fā)[ J] 。 電子測(cè)量技術(shù), 2009, 32( 10) :73-76.