羅回彬,巫敏鋒
(北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院,珠海 519000)
?
基于WiFi的可實(shí)時(shí)視頻同傳的探測(cè)小車
羅回彬,巫敏鋒
(北京理工大學(xué)珠海學(xué)院 計(jì)算機(jī)學(xué)院,珠海 519000)
為了在高溫、有毒等特定環(huán)境下進(jìn)行視頻圖像數(shù)據(jù)、氣體參數(shù)等環(huán)境狀態(tài)的檢測(cè),本文設(shè)計(jì)一種基于單片機(jī)的可實(shí)時(shí)視頻同傳的探測(cè)小車。Windows監(jiān)控端通過DB120無(wú)線路由器與單片機(jī)STC89C52控制中心通信,發(fā)送控制信號(hào)給電機(jī)驅(qū)動(dòng)模塊L298N、LED模塊,實(shí)現(xiàn)小車轉(zhuǎn)向、進(jìn)退及燈光的控制;攝像頭模塊、溫度傳感器模塊進(jìn)行視頻數(shù)據(jù)、溫度數(shù)據(jù)的采集,并實(shí)時(shí)回傳給Windows監(jiān)控端。
探測(cè)小車;路由器;MCU;視頻顯示;實(shí)時(shí)
隨著自動(dòng)化技術(shù)的發(fā)展,智能控制廣泛應(yīng)用在軍事、科研、民用領(lǐng)域。無(wú)線探測(cè)小車集成了電子、機(jī)械、通信、傳感器、計(jì)算機(jī)軟硬件、人工智能及自動(dòng)控制等多方面的技術(shù)。此外,其成本低、體積小、操作簡(jiǎn)單,能較好地應(yīng)用在勘探、環(huán)境監(jiān)測(cè)等應(yīng)用。本文旨在設(shè)計(jì)一種能在高溫、有毒等特定環(huán)境下,進(jìn)行遠(yuǎn)距離無(wú)線遙控以及攝像、測(cè)溫探測(cè)的單片機(jī)小車控制系統(tǒng)。
本項(xiàng)目設(shè)計(jì)的是集單片機(jī)控制模塊、攝像模塊、溫度傳感器模塊、照明模塊及路由模塊為一體,可實(shí)時(shí)視頻傳輸及環(huán)境探測(cè)的探測(cè)小車,其系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。探測(cè)小車以單片機(jī)芯片STC89C52為控制中心,電機(jī)驅(qū)動(dòng)模塊L298N進(jìn)行小車直流電機(jī)的驅(qū)動(dòng)控制,溫度傳感器進(jìn)行外部環(huán)境的檢測(cè),攝像頭模塊進(jìn)行視頻圖像的采集,LED模塊進(jìn)行照明,并通過無(wú)線WiFi路由模塊實(shí)現(xiàn)Windows控制端與小車的無(wú)線通信。
圖1 系統(tǒng)整體硬件框圖
硬件部分主要采用市場(chǎng)上比較流行、穩(wěn)定性高且性價(jià)比高的模塊,此外,大部分模塊都組裝簡(jiǎn)單、升級(jí)方便、可移植性強(qiáng),便于項(xiàng)目的開發(fā)及后續(xù)升級(jí)維護(hù)。例如,攝像頭可通過USB接口直接連到路由器上,無(wú)需單片機(jī)轉(zhuǎn)發(fā),簡(jiǎn)化了視頻流的傳輸。
2.1 電機(jī)驅(qū)動(dòng)模塊
電機(jī)驅(qū)動(dòng)模塊選用L298N,可接收標(biāo)準(zhǔn)的TTL邏輯電平信號(hào),可驅(qū)動(dòng)46 V/2 A以下的電機(jī)。其驅(qū)動(dòng)模塊原理圖如圖2所示,L298N輸入電壓是12 V,L298N的OUT1、OUT2和OUT3、OUT4之間分別接2個(gè)電機(jī),本項(xiàng)目可直接使用單片機(jī)的I/O輸入口Port1~Port4,A PWM、B PWM改變L298N的IN1、IN2、IN3、IN4引腳及ENA、ENB使能端,從而分別實(shí)現(xiàn)控制電機(jī)的正反轉(zhuǎn)及停止功能。
圖2 L298N驅(qū)動(dòng)模塊原理圖
2.2 無(wú)線WiFi路由模塊
無(wú)線WiFi路由模塊采用的是DB120路由器,此路由器是OpenWRT系統(tǒng),刷機(jī)升級(jí)十分簡(jiǎn)單。本項(xiàng)目可以通過網(wǎng)絡(luò)下載,在同一網(wǎng)段內(nèi)通過瀏覽器登錄192.168.1.1,選擇 “0829-openwrt-rc6-RG100A_DB120-squashfs-cfe.bin”版本的固件進(jìn)行燒錄。固化后,該路由模塊可作為轉(zhuǎn)發(fā)站,實(shí)現(xiàn)USB攝像頭的加載及與單片機(jī)的串行通信。
2.3 攝像頭模塊
本項(xiàng)目選用中星微301主控芯片的USB攝像頭模塊,通過簡(jiǎn)單的路由設(shè)置就能快速實(shí)現(xiàn)攝像頭的掛載。掛載成功后,可通過路由器的WiFi轉(zhuǎn)發(fā)攝像頭的動(dòng)態(tài)視頻至Windows控制端。
2.4 溫度傳感器模塊
本項(xiàng)目選用DALLAS公司生產(chǎn)DS18B20的一線式溫度傳感器,進(jìn)行外部環(huán)境數(shù)據(jù)的監(jiān)測(cè),其線路簡(jiǎn)單,僅有GND、DQ、VDD三個(gè)引腳。其中,DQ為數(shù)字信號(hào)輸入/輸出端,GND為電源地,VDD為外接供電電源輸入端。
本項(xiàng)目中,用戶監(jiān)控端與探測(cè)小車通過WiFi路由進(jìn)行數(shù)據(jù)傳輸,因此,開發(fā)人員在軟件設(shè)計(jì)與實(shí)現(xiàn)過程中需要對(duì)小車進(jìn)行控制編程、監(jiān)控視頻動(dòng)態(tài)顯示、控制界面GUI設(shè)計(jì)及網(wǎng)絡(luò)編程(Socket編程)。
項(xiàng)目開發(fā)過程中,選用Keil C51開發(fā)環(huán)境,對(duì)探測(cè)小車進(jìn)行軟件編程,實(shí)現(xiàn)對(duì)外部環(huán)境的測(cè)溫及小車電機(jī)的控制;選用編程簡(jiǎn)單靈活、可移植性強(qiáng)的QT開發(fā)環(huán)境,進(jìn)行Windows控制端的GUI設(shè)計(jì)、Socket編程及視頻動(dòng)態(tài)顯示。此外,還選用了單片機(jī)多功能調(diào)試助手軟件、TCP&UDP-Debug軟件進(jìn)行單片機(jī)的通信測(cè)試。
3.1 小車電機(jī)控制編程
進(jìn)行電機(jī)驅(qū)動(dòng)模塊L298N的電路連線,Port1~Port4分別為P2^0~P2^3,查閱L298N的數(shù)據(jù)手冊(cè),對(duì)照其邏輯功能表在Keil C51下進(jìn)行電機(jī)前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)和停止的編程。編程樣例如下所示:
sbit L298N_IN1 = P2^0;
sbit L298N_IN2 = P2^1;
sbit L298N_IN3 = P2^2;
sbit L298N_IN4 = P2^3;
void carFront(){ //小車前行
L298N_IN1 =1; //左電機(jī)正轉(zhuǎn)
L298N_IN2 = 0;
L298N_IN3 = 1; //右電機(jī)正轉(zhuǎn)
L298N_IN4 = 0;
Delay_1ms(100);
}
void carStop(){ //小車停止
L298N_IN1 = 0;
L298N_IN2 = 0;
L298N_IN3 = 0;
L298N_IN4 = 0;
L298N_PWM = 0; //電機(jī)停止
Delay_1ms(100);
}
3.2 Socket編程
探測(cè)小車與路由器通信中,主要用到了QTcpSocket客戶端和QTcpServer服務(wù)器,其中本項(xiàng)目進(jìn)行監(jiān)控端Socket編程。按照通信的交互時(shí)序,先創(chuàng)建TcpSocket類,然后建立連接。其關(guān)鍵代碼如下:
TcpClient::TcpClient(){
tcpSocket = new QTcpSocket(this);
connect(tcpSocket,SIGNAL(error(QAbstractSocket::
SocketError)),this,SLOT(displayError(QAbstractSocket::SocketError)));
}
void TcpClient::sendCMD(QString cmd){
//發(fā)送小車控制指令
tcpSocket->write(cmd.toAscii());
}
void TcpClient::newConnection(QString ipAdress,int port){
//建立連接
tcpSocket->abort();
tcpSocket->connectToHost(ipAdress,port);
}
void WifiCar::on_Front_Button_pressed(){ //前進(jìn)
tcpClient->sendCMD("Uo}WC");
}
3.3 監(jiān)控端GUI設(shè)計(jì)及視頻動(dòng)態(tài)顯示
進(jìn)行監(jiān)控端界面設(shè)計(jì)時(shí),需考慮到整個(gè)界面的布局及易操作性。本項(xiàng)目選用WebView控件進(jìn)行視頻的顯示;ButtonBox控件作為前后左右等按鈕開關(guān);Label控件顯示溫度值、時(shí)間和標(biāo)題;LineEdit控件作為IP和端口號(hào)輸入端。
由于WebView控件只能加載路由轉(zhuǎn)發(fā)的靜態(tài)圖像,因此,為了實(shí)現(xiàn)監(jiān)控端實(shí)時(shí)視頻動(dòng)態(tài)顯示,除了進(jìn)行IP地址及端口號(hào)綁定設(shè)置外,還需要多加一個(gè)定時(shí)器來(lái)動(dòng)態(tài)刷新。以下為關(guān)鍵代碼:
WifiCar::WifiCar(QWidget *parent) : QWidget(parent), ui(new Ui::WifiCar){
ui->webView->load(QUrl("http://192.168.1.1:8080/?action=snapshot"));
ui->IP_lineEdit->setText("192.168.1.1");
ui->Port_lineEdit->setText("2001");
connect(Video_Thread, SIGNAL(Send_Video_Signals()), this,SLOT(video_event())); //把刷新視頻放入線程里運(yùn)行
}
void WifiCar::video_event(){ //定時(shí)器動(dòng)態(tài)刷新
QTimer *video_timer=new QTimer(this);
connect(video_timer,SIGNAL(timeout()),this,SLOT(load_video()));
video_timer->start(300);
}
3.4 實(shí)驗(yàn)結(jié)果
通過軟硬件設(shè)計(jì)、編程調(diào)試及后期功能測(cè)試,探測(cè)小車系統(tǒng)能較好地實(shí)現(xiàn)小車控制、外部環(huán)境監(jiān)測(cè)、視頻實(shí)時(shí)動(dòng)態(tài)顯示、LED照明等功能,整個(gè)控制過程中,可操作性較強(qiáng)。系統(tǒng)啟動(dòng)后,用戶只需進(jìn)行IP及端口的綁定設(shè)置,然后單擊“連接”按鈕;連接成功后,該按鈕將變成“已連接”狀態(tài)且右邊的紅色標(biāo)識(shí)變成綠色,此時(shí),通過監(jiān)控端上的按鈕,用戶可對(duì)小車進(jìn)行前后左右的控制、開關(guān)LED燈、獲取實(shí)時(shí)視頻圖像及外部環(huán)境溫度。Windows監(jiān)控端如圖3所示。
圖3 Windows監(jiān)控端
[1] 張毅剛.單片機(jī)原理及接口技術(shù)[M].北京:人民郵電出版社,2011.
[2] 于連國(guó),李偉,王妍瑋. 基于單片機(jī)的智能小車設(shè)計(jì)[J]. 林業(yè)機(jī)械與木工設(shè)備,2011(4).
[3] 韓少云,奚海蛟.基于嵌入式Linux的Qt圖形程序?qū)崙?zhàn)開發(fā)[M].北京:北京航空航天大學(xué)出版社,2012.
[4] 鄭潤(rùn)芳,張海. STM32的小車自主定位與控制系統(tǒng)設(shè)計(jì)[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2013(9).
羅回彬(實(shí)驗(yàn)師),研究方向?yàn)榍度胧较到y(tǒng)設(shè)計(jì)及應(yīng)用。
Detecting Car for Real-time Video Transmission Based on WiFi
Luo Huibin,Wu Minfeng
(Department of Computer,College of Zhuhai of Beijing Institute of Technology,Zhuhai 519000,China)
In order to detect the video image data and gas parameters in some specific environments like high-temperature or toxic ones,the detecting car based on the MCU which can transmit the real-time video is designed.The Windows control terminal communicates with STC89C52 through wireless router of DB120.It sends the control signals to motor driven module L298N and LED module to control the car steering,advance and retreat and the light.The camera module and temperature module can collect the video data and temperature data, meanwhile,the data can be returned to Windows control terminal.
detecting car;router;MCU;video display
TP23
A
迪娜
2014-12-22)