羅回彬,巫敏鋒
(北京理工大學珠海學院 計算機學院,珠海 519000)
?
基于WiFi的可實時視頻同傳的探測小車
羅回彬,巫敏鋒
(北京理工大學珠海學院 計算機學院,珠海 519000)
為了在高溫、有毒等特定環(huán)境下進行視頻圖像數(shù)據(jù)、氣體參數(shù)等環(huán)境狀態(tài)的檢測,本文設(shè)計一種基于單片機的可實時視頻同傳的探測小車。Windows監(jiān)控端通過DB120無線路由器與單片機STC89C52控制中心通信,發(fā)送控制信號給電機驅(qū)動模塊L298N、LED模塊,實現(xiàn)小車轉(zhuǎn)向、進退及燈光的控制;攝像頭模塊、溫度傳感器模塊進行視頻數(shù)據(jù)、溫度數(shù)據(jù)的采集,并實時回傳給Windows監(jiān)控端。
探測小車;路由器;MCU;視頻顯示;實時
隨著自動化技術(shù)的發(fā)展,智能控制廣泛應(yīng)用在軍事、科研、民用領(lǐng)域。無線探測小車集成了電子、機械、通信、傳感器、計算機軟硬件、人工智能及自動控制等多方面的技術(shù)。此外,其成本低、體積小、操作簡單,能較好地應(yīng)用在勘探、環(huán)境監(jiān)測等應(yīng)用。本文旨在設(shè)計一種能在高溫、有毒等特定環(huán)境下,進行遠距離無線遙控以及攝像、測溫探測的單片機小車控制系統(tǒng)。
本項目設(shè)計的是集單片機控制模塊、攝像模塊、溫度傳感器模塊、照明模塊及路由模塊為一體,可實時視頻傳輸及環(huán)境探測的探測小車,其系統(tǒng)硬件結(jié)構(gòu)框圖如圖1所示。探測小車以單片機芯片STC89C52為控制中心,電機驅(qū)動模塊L298N進行小車直流電機的驅(qū)動控制,溫度傳感器進行外部環(huán)境的檢測,攝像頭模塊進行視頻圖像的采集,LED模塊進行照明,并通過無線WiFi路由模塊實現(xiàn)Windows控制端與小車的無線通信。
圖1 系統(tǒng)整體硬件框圖
硬件部分主要采用市場上比較流行、穩(wěn)定性高且性價比高的模塊,此外,大部分模塊都組裝簡單、升級方便、可移植性強,便于項目的開發(fā)及后續(xù)升級維護。例如,攝像頭可通過USB接口直接連到路由器上,無需單片機轉(zhuǎn)發(fā),簡化了視頻流的傳輸。
2.1 電機驅(qū)動模塊
電機驅(qū)動模塊選用L298N,可接收標準的TTL邏輯電平信號,可驅(qū)動46 V/2 A以下的電機。其驅(qū)動模塊原理圖如圖2所示,L298N輸入電壓是12 V,L298N的OUT1、OUT2和OUT3、OUT4之間分別接2個電機,本項目可直接使用單片機的I/O輸入口Port1~Port4,A PWM、B PWM改變L298N的IN1、IN2、IN3、IN4引腳及ENA、ENB使能端,從而分別實現(xiàn)控制電機的正反轉(zhuǎn)及停止功能。
圖2 L298N驅(qū)動模塊原理圖
2.2 無線WiFi路由模塊
無線WiFi路由模塊采用的是DB120路由器,此路由器是OpenWRT系統(tǒng),刷機升級十分簡單。本項目可以通過網(wǎng)絡(luò)下載,在同一網(wǎng)段內(nèi)通過瀏覽器登錄192.168.1.1,選擇 “0829-openwrt-rc6-RG100A_DB120-squashfs-cfe.bin”版本的固件進行燒錄。固化后,該路由模塊可作為轉(zhuǎn)發(fā)站,實現(xiàn)USB攝像頭的加載及與單片機的串行通信。
2.3 攝像頭模塊
本項目選用中星微301主控芯片的USB攝像頭模塊,通過簡單的路由設(shè)置就能快速實現(xiàn)攝像頭的掛載。掛載成功后,可通過路由器的WiFi轉(zhuǎn)發(fā)攝像頭的動態(tài)視頻至Windows控制端。
2.4 溫度傳感器模塊
本項目選用DALLAS公司生產(chǎn)DS18B20的一線式溫度傳感器,進行外部環(huán)境數(shù)據(jù)的監(jiān)測,其線路簡單,僅有GND、DQ、VDD三個引腳。其中,DQ為數(shù)字信號輸入/輸出端,GND為電源地,VDD為外接供電電源輸入端。
本項目中,用戶監(jiān)控端與探測小車通過WiFi路由進行數(shù)據(jù)傳輸,因此,開發(fā)人員在軟件設(shè)計與實現(xiàn)過程中需要對小車進行控制編程、監(jiān)控視頻動態(tài)顯示、控制界面GUI設(shè)計及網(wǎng)絡(luò)編程(Socket編程)。
項目開發(fā)過程中,選用Keil C51開發(fā)環(huán)境,對探測小車進行軟件編程,實現(xiàn)對外部環(huán)境的測溫及小車電機的控制;選用編程簡單靈活、可移植性強的QT開發(fā)環(huán)境,進行Windows控制端的GUI設(shè)計、Socket編程及視頻動態(tài)顯示。此外,還選用了單片機多功能調(diào)試助手軟件、TCP&UDP-Debug軟件進行單片機的通信測試。
3.1 小車電機控制編程
進行電機驅(qū)動模塊L298N的電路連線,Port1~Port4分別為P2^0~P2^3,查閱L298N的數(shù)據(jù)手冊,對照其邏輯功能表在Keil C51下進行電機前進、后退、左轉(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; //左電機正轉(zhuǎn)
L298N_IN2 = 0;
L298N_IN3 = 1; //右電機正轉(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; //電機停止
Delay_1ms(100);
}
3.2 Socket編程
探測小車與路由器通信中,主要用到了QTcpSocket客戶端和QTcpServer服務(wù)器,其中本項目進行監(jiān)控端Socket編程。按照通信的交互時序,先創(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(){ //前進
tcpClient->sendCMD("Uo}WC");
}
3.3 監(jiān)控端GUI設(shè)計及視頻動態(tài)顯示
進行監(jiān)控端界面設(shè)計時,需考慮到整個界面的布局及易操作性。本項目選用WebView控件進行視頻的顯示;ButtonBox控件作為前后左右等按鈕開關(guān);Label控件顯示溫度值、時間和標題;LineEdit控件作為IP和端口號輸入端。
由于WebView控件只能加載路由轉(zhuǎn)發(fā)的靜態(tài)圖像,因此,為了實現(xiàn)監(jiān)控端實時視頻動態(tài)顯示,除了進行IP地址及端口號綁定設(shè)置外,還需要多加一個定時器來動態(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())); //把刷新視頻放入線程里運行
}
void WifiCar::video_event(){ //定時器動態(tài)刷新
QTimer *video_timer=new QTimer(this);
connect(video_timer,SIGNAL(timeout()),this,SLOT(load_video()));
video_timer->start(300);
}
3.4 實驗結(jié)果
通過軟硬件設(shè)計、編程調(diào)試及后期功能測試,探測小車系統(tǒng)能較好地實現(xiàn)小車控制、外部環(huán)境監(jiān)測、視頻實時動態(tài)顯示、LED照明等功能,整個控制過程中,可操作性較強。系統(tǒng)啟動后,用戶只需進行IP及端口的綁定設(shè)置,然后單擊“連接”按鈕;連接成功后,該按鈕將變成“已連接”狀態(tài)且右邊的紅色標識變成綠色,此時,通過監(jiān)控端上的按鈕,用戶可對小車進行前后左右的控制、開關(guān)LED燈、獲取實時視頻圖像及外部環(huán)境溫度。Windows監(jiān)控端如圖3所示。
圖3 Windows監(jiān)控端
[1] 張毅剛.單片機原理及接口技術(shù)[M].北京:人民郵電出版社,2011.
[2] 于連國,李偉,王妍瑋. 基于單片機的智能小車設(shè)計[J]. 林業(yè)機械與木工設(shè)備,2011(4).
[3] 韓少云,奚海蛟.基于嵌入式Linux的Qt圖形程序?qū)崙?zhàn)開發(fā)[M].北京:北京航空航天大學出版社,2012.
[4] 鄭潤芳,張海. STM32的小車自主定位與控制系統(tǒng)設(shè)計[J]. 單片機與嵌入式系統(tǒng)應(yīng)用,2013(9).
羅回彬(實驗師),研究方向為嵌入式系統(tǒng)設(shè)計及應(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)