摘 要: 系統(tǒng)以基于Cortex-M4內(nèi)核的STM32F407作為控制核心,使用OV9655圖像傳感器采集圖像,并利用TFT屏動(dòng)態(tài)顯示。圖像傳輸模塊基于LwIP協(xié)議實(shí)現(xiàn)向PC傳輸圖像,最后PC接收并保存圖像數(shù)據(jù),利用MATLAB編程恢復(fù)圖像,將其與TFT顯示的圖像對(duì)比。實(shí)驗(yàn)結(jié)果表明,圖像傳輸穩(wěn)定可靠,圖像清晰,滿足機(jī)器人通過圖像識(shí)別目標(biāo)的要求。
關(guān)鍵詞: Cortex-M4 STM32F407;圖像傳輸;LwIP
0 引言
圖像是人類獲取信息的主要來源,也是智能機(jī)器人感知環(huán)境和識(shí)別目標(biāo)的重要信息源之一[1]。因此,如何通過相機(jī)傳感器高速、有效地獲取和傳輸圖像信息,成為智能機(jī)器人利用圖像正確感知環(huán)境和識(shí)別目標(biāo)的前提。本文介紹了一種基于STM32F407芯片,利用LwIP協(xié)議的圖像采集與傳輸系統(tǒng)。
1 系統(tǒng)的總體設(shè)計(jì)方案
本系統(tǒng)的總體設(shè)計(jì)思路為:以STM32F407為主控核心,通過DCMI接口接收?qǐng)D像傳感器OV9655采集的圖像,利用DMA方式將圖像發(fā)送到外部SRAM,同時(shí)通過FSMC接口將此數(shù)據(jù)發(fā)送到TFT屏顯示,然后將外部SRAM上的圖像通過網(wǎng)絡(luò)傳輸并保存到PC,最后,利用MATLAB軟件將接收的圖像數(shù)據(jù)進(jìn)行恢復(fù)顯示,并驗(yàn)證其正確性。系統(tǒng)總體結(jié)構(gòu)如圖1所示。
2 系統(tǒng)的硬件構(gòu)成
本系統(tǒng)的硬件電路主要包括:微處理器、攝像頭、以太網(wǎng)模塊、SRAM、TFT、RJ45接口、JTAG接口、復(fù)位電路、電源等。
本系統(tǒng)的微處理器為ST公司的STM32F407IGT6[2],其主頻達(dá)168 MHz,具有1 MB Flash,196 KB SRAM,專有DMA的10/100 Ethernet MAC,14 bit并行相機(jī)高速接口,為圖像數(shù)據(jù)的采集提供了高速的傳輸速率。
攝像頭采用Omni Vision 公司的OV9655[3],這是一款用于移動(dòng)設(shè)備的130萬像素CMOS圖像傳感器,具有照相和圖像處理的多種功能(曝光控制、灰度調(diào)節(jié)、自動(dòng)白平衡、色彩飽調(diào)節(jié)和噪聲消除等)。其采用的Omni Pixel技術(shù)平臺(tái),獨(dú)特的像素架構(gòu)增加了信噪比,使傳感器在低光照的條件下仍能良好工作。OV9655支持的圖像格式包括:RGB(GRB 4:2:2,RGB 5:6:5/5:5:5)、YUV(4:2:2)和YCbCr(4:2:2),輸出的圖像尺寸包括SXGA、VGA、CIF和小于CIF至40×30的任何尺寸,本文設(shè)置圖像輸出格式為RGB 5:6:5,分辨率為320×240。
以太網(wǎng)模塊的收發(fā)芯片為National公司的10/100 M以太網(wǎng)物理層收發(fā)芯片DP83848C,該芯片遵循Ethernet II和IEEE802.3u標(biāo)準(zhǔn),支持MII、RMII、SNI三種數(shù)據(jù)連接方式,本文采用了RMII模式,見圖1。對(duì)外采用RJ45接口連接,支持平行交叉網(wǎng)線自適應(yīng)(Auto-MDIX),內(nèi)部還集成了數(shù)據(jù)收發(fā)及濾波功能。在全雙工模式下,可以同時(shí)實(shí)現(xiàn)發(fā)送和接收,理論上最高速度能達(dá)到100 Mb/s,本文對(duì)其配置為100 Mb/s。
3 系統(tǒng)的軟件設(shè)計(jì)
系統(tǒng)軟件的實(shí)現(xiàn)包括:圖像數(shù)據(jù)采集、網(wǎng)絡(luò)傳輸、圖像數(shù)據(jù)存儲(chǔ)與恢復(fù)顯示。本文將重點(diǎn)介紹圖像采集和網(wǎng)絡(luò)傳輸?shù)膶?shí)現(xiàn)。
系統(tǒng)軟件結(jié)構(gòu)采用C/S(Client/Server)模式[4],在服務(wù)器端主要實(shí)現(xiàn)圖像的采集和發(fā)送,在客戶端實(shí)現(xiàn)圖像的接收、保存與恢復(fù)顯示。
3.1 圖像采集
通過STM32F407IG控制DCMI接收OV9655采集的圖像,再由DMA將圖像發(fā)送到外部SRAM,并將其復(fù)制到TFT屏上顯示,如圖2所示。
圖像采集流程具體為:
?。?)圖像采集模塊初始化,包括TFT彩屏初始化、SRAM初始化、DMA初始化和DCMI接口初始化。初始化配置后,實(shí)現(xiàn)攝像頭的DCMI接口和SRAM關(guān)聯(lián),即可通過DMA將DCMI接口的圖像傳輸?shù)絊RAM。
?。?)DCMI接口配置為幀中斷。當(dāng)獲得的一幀圖像數(shù)據(jù)后,產(chǎn)生中斷,進(jìn)入DCMI的中斷服務(wù)函數(shù),實(shí)現(xiàn)將SRAM中的圖像復(fù)制到TFT屏進(jìn)行顯示的功能。
?。?)使能DCMI接口捕獲圖像,并產(chǎn)生DCMI中斷。
(4)使能DMA,將DCMI接口的數(shù)據(jù)復(fù)制到SRAM。
3.2 圖像傳輸
本文利用LwIP(Light weight IP)實(shí)現(xiàn)圖像到PC的傳輸。LwIP是瑞士計(jì)算機(jī)科學(xué)院的DUNKELS A等人開發(fā)的一套用于嵌入式系統(tǒng)旳開源代碼TCP/IP協(xié)議棧,其在保持TCP/IP協(xié)議棧完整性的基礎(chǔ)上,減少了RAM和ROM的占用,使LwIP適合在嵌入式系統(tǒng)中應(yīng)用[5]。
嵌入式TCP/IP協(xié)議棧通常有以下兩種實(shí)現(xiàn)方式:一種是將協(xié)議簇中的每個(gè)協(xié)議作為一個(gè)單獨(dú)的進(jìn)程,并指定進(jìn)程之間的通信點(diǎn)。其優(yōu)點(diǎn)在于結(jié)構(gòu)清晰,代碼易懂,占用系統(tǒng)資源較少,且方便調(diào)試;另一種方式是將協(xié)議棧駐留在操作系統(tǒng)內(nèi)核中,應(yīng)用程序通過系統(tǒng)調(diào)用與協(xié)議棧通信。該方式對(duì)系統(tǒng)RAM、ROM資源占用較高,且不能很好地支持MDK[5]環(huán)境下的斷點(diǎn)調(diào)試,故本文選擇第一種實(shí)現(xiàn)方式。
本文采用C/S模式來實(shí)現(xiàn)圖像數(shù)據(jù)的發(fā)送和接收。其中,嵌入式系統(tǒng)作為服務(wù)器,PC作為客戶端。服務(wù)器首先創(chuàng)建一個(gè)Socket,等待與客戶端的連接,連接成功后發(fā)送圖像。
服務(wù)器圖像發(fā)送程序的基本步驟為:
?。?)創(chuàng)建Socket,并指定SOCK_STREAM為TCP的Socket;
(2)初始化服務(wù)器端口和地址,并綁定Socket到服務(wù)器地址;
?。?)監(jiān)聽Socket;
?。?)接受客戶端連接Socket的請(qǐng)求,并返回連接成功的Socket和客戶端的地址;
?。?)處理客戶端連接,將圖像采集模塊存儲(chǔ)到SRAM的圖像數(shù)據(jù),發(fā)送到客戶端;
?。?)關(guān)閉Socket,退出服務(wù)。
客戶端首先通過網(wǎng)絡(luò)助手設(shè)置其地址和端口:(1)協(xié)議類型為:TCP Client;(2)IP地址為:192.168.1.30;(3)端口為:5000。然后,客戶端調(diào)用Connect函數(shù)與服務(wù)器建立連接,連接成功后,通過網(wǎng)絡(luò)助手接收并保存從服務(wù)器發(fā)送的圖像數(shù)據(jù)(如圖3所示),最后關(guān)閉Socket。
通過網(wǎng)絡(luò)助手接收的圖像數(shù)據(jù)是將圖像中所有像素的RGB值逐行以每像素16 bit的十六進(jìn)制數(shù)進(jìn)行保存的。為了驗(yàn)證接收到的圖像數(shù)據(jù)的有效性和準(zhǔn)確性,本文通過MATLAB軟件編程,恢復(fù)并顯示圖像,如圖4所示,與圖2中TFT屏顯示的圖像相比,經(jīng)網(wǎng)絡(luò)傳輸?shù)絇C的圖像無失真。實(shí)驗(yàn)結(jié)果表明,圖像經(jīng)網(wǎng)絡(luò)傳輸有效而準(zhǔn)確。
4 結(jié)論
圖像是機(jī)器人智能識(shí)別目標(biāo)的重要信源之一。本文介紹了一種基于STM32F407的圖像采集和傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),利用輕量的TCP/IP協(xié)議進(jìn)行Socket編程,實(shí)現(xiàn)將服務(wù)器端采集的圖像數(shù)據(jù)網(wǎng)絡(luò)傳輸?shù)絇C客戶端。測(cè)試結(jié)果表明,其圖像傳輸效果高速而有效,可滿足客戶端對(duì)圖像采集與傳輸?shù)男枨?,并且該系統(tǒng)的架構(gòu)容易升級(jí)到無線網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程的圖像、視頻和語音傳輸。
參考文獻(xiàn)
[1] 馬燕.圖像目標(biāo)跟蹤算法研究[D].西安:西安電子科技大學(xué),2011.
[2] STMicroelectronics. STM32F407xx datasheet[N]. STMicroelectronics Group of Companies, 2013-03.
[3] OmniVision. OV9655 datasheet v1.3[N]. OmniVision Technologies, Inc., 2005-11-15.
[4] 王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2008.
[5] 胡亦萬,基于Cortex-M3的LwIP移植以及嵌入式WEB的應(yīng)用研究[D].南昌:南昌大學(xué),2013.