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