朱為,聞時(shí)光,滕璞駿
(1.東北大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院,沈陽 110819;2.東北大學(xué) 信息科學(xué)與工程學(xué)院)
CC3200 SimpleLink WiFi模塊的高速圖像傳輸
朱為1,聞時(shí)光2,滕璞駿2
(1.東北大學(xué) 機(jī)械工程與自動(dòng)化學(xué)院,沈陽 110819;2.東北大學(xué) 信息科學(xué)與工程學(xué)院)
針對(duì)全國(guó)大學(xué)生智能汽車創(chuàng)新競(jìng)賽中,視覺組通過串口發(fā)送圖像來調(diào)試車模的過程中出現(xiàn)的速度慢問題,提出了基于TI CC3200 SimpleLink WiFi模塊的圖像高速傳輸方案,并進(jìn)行了實(shí)驗(yàn)驗(yàn)證。利用WiFi模塊通過網(wǎng)絡(luò)將單片機(jī)采集到的圖像數(shù)據(jù)發(fā)送給計(jì)算機(jī),進(jìn)而顯示為圖像。實(shí)驗(yàn)結(jié)果表明:本方案可以高速并準(zhǔn)確地傳輸圖像,實(shí)時(shí)性高,可以讓智能車在運(yùn)行的同時(shí)發(fā)送圖像,極大地提高了調(diào)試效率。
CC3200 SimpleLink;WiFi;圖像傳輸;MKL26;智能車
在智能車競(jìng)賽的視覺組中,路徑識(shí)別算法的調(diào)試方法主要是通過USB轉(zhuǎn)串口將單片機(jī)采集到的圖像數(shù)據(jù)發(fā)送到電腦上位機(jī),并還原為圖像。由于串口的傳輸速率低,實(shí)時(shí)性不高,所以只能在智能車靜止或速度極低時(shí)傳輸圖像。而智能車在運(yùn)行時(shí)因?yàn)樗俣瓤煲约皵z像頭晃動(dòng)等原因,采集并處理后的圖像與靜止時(shí)是不一樣的。串口的速率低,無法查看實(shí)時(shí)圖像,給圖像調(diào)試增加了困難。而目前WiFi網(wǎng)絡(luò)的傳輸速率已達(dá)數(shù)百兆,遠(yuǎn)遠(yuǎn)超過串口的速率。將WiFi技術(shù)運(yùn)用到智能車中,可以高速地傳輸實(shí)時(shí)圖像。本文基于TI WiFi模塊和智能車平臺(tái)進(jìn)行了實(shí)驗(yàn),驗(yàn)證了智能車通過WiFi高速傳輸實(shí)時(shí)圖像的可能性。
1.1 智能車平臺(tái)
本文設(shè)計(jì)了一套完整的智能車系統(tǒng),包括主控制器、圖像采集模塊、電機(jī)驅(qū)動(dòng)模塊、轉(zhuǎn)向舵機(jī)模塊、速度反饋模塊、串口調(diào)試模塊以及電源管理模塊[1]。
主控制器選用的是恩智浦公司的Kinetis系列MCU KL26。Kinetis L系列產(chǎn)品以Cortex-M0+為內(nèi)核,功耗非常低,但性能卻很高,在超低功耗運(yùn)行(VLPR)模式下的功耗僅為50 μA/MHz,具有多種睡眠模式,可根據(jù)不同的中斷喚醒源從睡眠模式迅速切換到工作模式,待處理完數(shù)據(jù)之后再迅速返回到睡眠狀態(tài),從而延長(zhǎng)電池的使用壽命。攝像頭用的是智能車競(jìng)賽中深受大家喜愛的硬件二值化攝像頭,車模使用的是比賽組委會(huì)指定的C車模。
串口模塊用于系統(tǒng)的一般調(diào)試,如打印小車狀態(tài)信息等。由于選用WiFi模塊進(jìn)行圖像的傳輸,我們通過SPI通信方式將圖像傳輸給WiFi模塊。在PCB設(shè)計(jì)時(shí),預(yù)留出了SPI通信接口。本文重點(diǎn)介紹通過WiFi模塊傳輸實(shí)時(shí)圖像的過程,其他模塊不再詳細(xì)介紹。智能車系統(tǒng)整體結(jié)構(gòu)如圖1所示。
圖1 智能車系統(tǒng)框圖
1.2 WiFi模塊
WiFi技術(shù)是一種無線接入技術(shù),全稱為無線保真技術(shù)(Wireless Fidelity)。WiFi技術(shù)不需要鋪設(shè)物理線路,應(yīng)用非常方便,而且通信速率高,應(yīng)用門檻低,越來越受到人們的重視。
SimpleLink CC3200器件是業(yè)界第一個(gè)配備了內(nèi)置WiFi功能的無線MCU。CC3200由3大系統(tǒng)組成:應(yīng)用MCU子系統(tǒng)、WiFi 網(wǎng)絡(luò)處理器子系統(tǒng)、電源管理子系統(tǒng)。應(yīng)用MCU子系統(tǒng)包含一個(gè)運(yùn)行頻率為80 MHz的行業(yè)標(biāo)準(zhǔn)ARM Cortex-M4內(nèi)核,同時(shí)還配有多種外設(shè);WiFi網(wǎng)絡(luò)處理器子系統(tǒng)包含一個(gè)額外的專用ARM MCU,用于WiFi功能,完全不需要MCU的參與;電源管理子系統(tǒng)包括支持廣泛電源電壓范圍的集成直流-直流轉(zhuǎn)換器[2]。本文使用的是核心板CC3200-LaunchXL。此核心板體積小,并且留出許多引腳,非常適合用于智能車。
2.1 總體設(shè)計(jì)
本文要實(shí)現(xiàn)使用WiFi模塊進(jìn)行圖像的高速傳輸,必須保證每一個(gè)環(huán)節(jié)的數(shù)據(jù)傳輸速度都足夠快。先由KL26通過DMA采集攝像頭拍到的圖像,處理后通過SPI與CC3200-LaunchXL進(jìn)行通信,將圖像數(shù)據(jù)發(fā)送至CC3200,CC3200接收到數(shù)據(jù)后通過WiFi發(fā)送給上位機(jī),最后上位機(jī)對(duì)數(shù)據(jù)進(jìn)行處理并顯示為圖像。流程圖如圖2所示。
圖2 系統(tǒng)流程圖
2.2 圖像采集
KL26是飛思卡爾公司推出的一款超低功耗單片機(jī),但性能卻相當(dāng)高,也是智能車比賽中常用的一款單片機(jī)之一。硬件二值化攝像頭使用RTL級(jí)電路進(jìn)行圖像數(shù)據(jù)采集和二值化處理,大大減少了主控制器的工作量,并且獲得了很高的圖像采集速率。
圖3 圖像采集流程圖
圖像的采集過程主要依靠DMA完成。DMA全稱叫直接內(nèi)存存取(DIRECT MEMORY ACCESS),是一種高效的數(shù)據(jù)傳輸技術(shù),它允許在外部設(shè)備和存儲(chǔ)器之間直接讀寫數(shù)據(jù),且不需要CPU的參與,整個(gè)數(shù)據(jù)傳輸過程都在DMA控制器的控制下進(jìn)行。用DMA采集圖像,效果比一般的讀取I/O口效率高,大大地釋放了CPU的資源,并且沒有噪點(diǎn)。要完成圖像對(duì)采集工作,重點(diǎn)是要把握好攝像頭的工作時(shí)序。攝像頭的圖像采集是通過對(duì)攝像頭的場(chǎng)、行中斷的捕捉來完成的。場(chǎng)中斷標(biāo)志著一場(chǎng)圖像的到來,行中斷標(biāo)志著一行圖像的到來。程序中通過場(chǎng)中斷判斷一場(chǎng)圖像的到來,PCLK中斷觸發(fā)DMA傳輸[3]。
采集工作主要分為以下幾個(gè)步驟: (1) 初始化設(shè)置。(2) 打開場(chǎng)中斷。(3) 中斷觸發(fā)DMA傳輸。其中,初始化設(shè)置又包括SCCB配置、DMA初始化、引腳中斷初始化。圖像采集流程圖如圖3所示。
2.3 SPI通信
SPI是串行外設(shè)接口(Serial Peripheral Interface)的縮寫。SPI是一種同步的通信總線,它支持高速率和全雙工。除此之外,它需要的芯片引腳較少,僅通過4根線就能完成高速的數(shù)據(jù)傳輸操作,既節(jié)約了芯片的引腳,又縮小了PCB的布局尺寸,因此SPI獲得了越來越廣泛的應(yīng)用。KL26提供了兩個(gè)SPI模塊,SPI0和SPI1,CC3200-LaunchXL也留有SPI的接口。使用SPI通信協(xié)議,KL26和CC3200之間就能進(jìn)行高速的數(shù)據(jù)傳輸了。
SPI的通信原理很簡(jiǎn)單,它以主從方式工作,這種模式通常有一個(gè)主設(shè)備和一個(gè)或多個(gè)從設(shè)備,需要4根線,如果只有一個(gè)從設(shè)備,3根線也可以。這也是所有基于SPI的設(shè)備共有的,它們是SDI(數(shù)據(jù)輸入)、SDO(數(shù)據(jù)輸出)、SCLK(時(shí)鐘)、CS(片選)。
MISO(SDI):主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出。
MOSI(SDO):主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入。
SCLK:時(shí)鐘信號(hào),由主器件產(chǎn)生。
CS:從器件使能信號(hào),由主器件控制。
要使兩個(gè)設(shè)備通過SPI進(jìn)行通信,主從機(jī)的時(shí)鐘極性、時(shí)鐘相位配置必須一致[4]。本文以KL26作為主機(jī),CC3200為從機(jī),以10 Mbps的速率進(jìn)行通信。主機(jī)部分程序如圖4所示。
圖4 主機(jī)KL26部分程序
2.4 WiFi傳輸
CC3200接收到圖像數(shù)據(jù)后,需要通過WiFi將數(shù)據(jù)傳送給計(jì)算機(jī)。WiFi 技術(shù)是基于802.11 協(xié)議的無線局域網(wǎng)接入技術(shù),它利用接入點(diǎn)AP(Access Point)和無線網(wǎng)卡組成無線網(wǎng)絡(luò)。傳統(tǒng)的有線局域網(wǎng)和無線局域網(wǎng)通過AP進(jìn)行連接, 因此任何一臺(tái)裝有無線網(wǎng)卡的計(jì)算機(jī)都可以通過AP 來分享網(wǎng)絡(luò)資源[5]。要使CC3200和計(jì)算機(jī)通信,兩者必須連結(jié)在同一網(wǎng)絡(luò)接入點(diǎn),即AP。計(jì)算機(jī)主動(dòng)開啟WiFi熱點(diǎn),即創(chuàng)建了一個(gè)AP,同時(shí)計(jì)算機(jī)被分配一個(gè)局域網(wǎng)IP地址。其他設(shè)備輸入相應(yīng)的ID和密鑰,就可以連入此網(wǎng)絡(luò),同時(shí)也被分配一個(gè)IP地址。當(dāng)知道對(duì)方的IP地址時(shí),同一節(jié)點(diǎn)下的兩個(gè)網(wǎng)絡(luò)設(shè)備就能進(jìn)行通信[6]。
WiFi通信協(xié)議主要有TCP協(xié)議和UDP協(xié)議。TCP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,而UDP是無連接,不保證可靠的傳輸層協(xié)議。當(dāng)傳輸?shù)臄?shù)據(jù)量較大,且進(jìn)行一對(duì)一通信時(shí),應(yīng)采用傳輸更可靠的TCP協(xié)議,確保數(shù)據(jù)的準(zhǔn)確性。由于本文傳輸圖像對(duì)數(shù)據(jù)的準(zhǔn)確性要求高,故采用TCP協(xié)議。
本文參考了TI官方給出的TCP_Socket例程,在程序中將CC3200設(shè)置為服務(wù)器,發(fā)送數(shù)據(jù)到固定端口(5001);計(jì)算機(jī)設(shè)為客戶端,接收服務(wù)器端口的數(shù)據(jù)。計(jì)算機(jī)主動(dòng)開啟WiFi熱點(diǎn),它將被分配一個(gè)局域網(wǎng)IP地址。由于將計(jì)算機(jī)作為客戶端,只需接收服務(wù)器發(fā)送來的數(shù)據(jù),故計(jì)算機(jī)的局域網(wǎng)IP地址在實(shí)際中并未用到。CC3200連接上WiFi熱點(diǎn)后,也被分配一個(gè)固定的局域網(wǎng)IP地址,并通過串口打印到計(jì)算機(jī)屏幕上。上位機(jī)只需設(shè)置好服務(wù)器(CC3200)的IP地址和數(shù)據(jù)端口號(hào),連接上服務(wù)器后就可以接收服務(wù)器發(fā)送過來的數(shù)據(jù)。將CC3200設(shè)置為服務(wù)器的好處是在其連接上熱點(diǎn)后可以把它本身的IP地址打印出來,即使下次連接時(shí)IP地址改變了,也不用修改CC3200的程序并燒錄進(jìn)去。通信過程如圖5所示。
圖5 CC3200與計(jì)算機(jī)通信流程圖
2.5 顯示圖像
上位機(jī)接收到數(shù)據(jù)后對(duì)其進(jìn)行處理,通過識(shí)別固定幀頭可以有效地判別出一幀完整的圖像數(shù)據(jù),然后將其描繪出來,并顯示在軟件界面上,使用者就可以查看實(shí)時(shí)圖像了。
由于硬件二值化攝像頭傳輸?shù)臄?shù)據(jù)是一個(gè)字節(jié)存儲(chǔ)8個(gè)像素,所以大小為160×60的圖像占用的實(shí)際內(nèi)存僅為普通攝像頭的八分之一。KL26傳輸一幀圖像僅需2 ms。實(shí)驗(yàn)中發(fā)現(xiàn)當(dāng)SPI速率大于1 Mbps時(shí),CC3200開始丟失數(shù)據(jù)。經(jīng)過分析,將CC3200從純粹的SPI接收改為DMA ping-pong模式接收,建立兩個(gè)緩沖區(qū),讓其交替工作,明顯改善數(shù)據(jù)丟失的情況(參考TI官方sdk spi_demo_DMA例程)。當(dāng)SPI速率為10 Mbps時(shí),接收到的數(shù)據(jù)也是完全準(zhǔn)確的。
由于通過WiFi傳輸數(shù)據(jù),所以需要專門的上位機(jī),軟件來接收以及處理WiFi網(wǎng)絡(luò)的數(shù)據(jù)。筆者用C#語言自主開發(fā)了一款智能車調(diào)試上位機(jī)用以接收WiFi的數(shù)據(jù)并顯示為圖像。最終效果如圖6所示。
High-speed Image Transmission Research Based on CC3200 SimpleLink WiFi Model
Zhu Wei1,Wen Shiguang2,Teng Pujun2
(1.College of Mechanical Engineering and Automation,Northeastern University,Shenyang 110819,China; 2.College of Information Science and Engineering,Northeastern University)
Aiming at the problem of slow speed in the course of debugging the car model by the visual group sending images through the serial port in the national college students intelligent vehicle innovation contest,an image high-speed transmission scheme based on TI CC3200 SimpleLink WiFi module is proposed.The system uses the WiFi module through the network to collect the image data,and sends to the computer,and then displays the image.The experiment results show that the scheme can transmit images high-speedly and accurately,the smart car is running at the same time is sending the images,that greatly improves the debugging efficiency.
CC3200 SimpleLink;WiFi;image transmission;MKL26;intelligent vehicle
圖6 調(diào)試上位機(jī)顯示圖像
TN919.85
A