APP下载

基于WiFi的可实时视频同传的探测小车

2015-07-02罗回彬巫敏锋

单片机与嵌入式系统应用 2015年6期
关键词:路由器路由小车

罗回彬,巫敏锋

(北京理工大学珠海学院 计算机学院,珠海 519000)



基于WiFi的可实时视频同传的探测小车

罗回彬,巫敏锋

(北京理工大学珠海学院 计算机学院,珠海 519000)

为了在高温、有毒等特定环境下进行视频图像数据、气体参数等环境状态的检测,本文设计一种基于单片机的可实时视频同传的探测小车。Windows监控端通过DB120无线路由器与单片机STC89C52控制中心通信,发送控制信号给电机驱动模块L298N、LED模块,实现小车转向、进退及灯光的控制;摄像头模块、温度传感器模块进行视频数据、温度数据的采集,并实时回传给Windows监控端。

探测小车;路由器;MCU;视频显示;实时

引 言

随着自动化技术的发展,智能控制广泛应用在军事、科研、民用领域。无线探测小车集成了电子、机械、通信、传感器、计算机软硬件、人工智能及自动控制等多方面的技术。此外,其成本低、体积小、操作简单,能较好地应用在勘探、环境监测等应用。本文旨在设计一种能在高温、有毒等特定环境下,进行远距离无线遥控以及摄像、测温探测的单片机小车控制系统。

1 系统总体方案设计

本项目设计的是集单片机控制模块、摄像模块、温度传感器模块、照明模块及路由模块为一体,可实时视频传输及环境探测的探测小车,其系统硬件结构框图如图1所示。探测小车以单片机芯片STC89C52为控制中心,电机驱动模块L298N进行小车直流电机的驱动控制,温度传感器进行外部环境的检测,摄像头模块进行视频图像的采集,LED模块进行照明,并通过无线WiFi路由模块实现Windows控制端与小车的无线通信。

图1 系统整体硬件框图

2 硬件设计及选型

硬件部分主要采用市场上比较流行、稳定性高且性价比高的模块,此外,大部分模块都组装简单、升级方便、可移植性强,便于项目的开发及后续升级维护。例如,摄像头可通过USB接口直接连到路由器上,无需单片机转发,简化了视频流的传输。

2.1 电机驱动模块

电机驱动模块选用L298N,可接收标准的TTL逻辑电平信号,可驱动46 V/2 A以下的电机。其驱动模块原理图如图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使能端,从而分别实现控制电机的正反转及停止功能。

图2 L298N驱动模块原理图

2.2 无线WiFi路由模块

无线WiFi路由模块采用的是DB120路由器,此路由器是OpenWRT系统,刷机升级十分简单。本项目可以通过网络下载,在同一网段内通过浏览器登录192.168.1.1,选择 “0829-openwrt-rc6-RG100A_DB120-squashfs-cfe.bin”版本的固件进行烧录。固化后,该路由模块可作为转发站,实现USB摄像头的加载及与单片机的串行通信。

2.3 摄像头模块

本项目选用中星微301主控芯片的USB摄像头模块,通过简单的路由设置就能快速实现摄像头的挂载。挂载成功后,可通过路由器的WiFi转发摄像头的动态视频至Windows控制端。

2.4 温度传感器模块

本项目选用DALLAS公司生产DS18B20的一线式温度传感器,进行外部环境数据的监测,其线路简单,仅有GND、DQ、VDD三个引脚。其中,DQ为数字信号输入/输出端,GND为电源地,VDD为外接供电电源输入端。

3 软件设计

本项目中,用户监控端与探测小车通过WiFi路由进行数据传输,因此,开发人员在软件设计与实现过程中需要对小车进行控制编程、监控视频动态显示、控制界面GUI设计及网络编程(Socket编程)。

项目开发过程中,选用Keil C51开发环境,对探测小车进行软件编程,实现对外部环境的测温及小车电机的控制;选用编程简单灵活、可移植性强的QT开发环境,进行Windows控制端的GUI设计、Socket编程及视频动态显示。此外,还选用了单片机多功能调试助手软件、TCP&UDP-Debug软件进行单片机的通信测试。

3.1 小车电机控制编程

进行电机驱动模块L298N的电路连线,Port1~Port4分别为P2^0~P2^3,查阅L298N的数据手册,对照其逻辑功能表在Keil C51下进行电机前进、后退、左转、右转和停止的编程。编程样例如下所示:

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; //左电机正转

L298N_IN2 = 0;

L298N_IN3 = 1; //右电机正转

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服务器,其中本项目进行监控端Socket编程。按照通信的交互时序,先创建TcpSocket类,然后建立连接。其关键代码如下:

TcpClient::TcpClient(){

tcpSocket = new QTcpSocket(this);

connect(tcpSocket,SIGNAL(error(QAbstractSocket::

SocketError)),this,SLOT(displayError(QAbstractSocket::SocketError)));

}

void TcpClient::sendCMD(QString cmd){

//发送小车控制指令

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 监控端GUI设计及视频动态显示

进行监控端界面设计时,需考虑到整个界面的布局及易操作性。本项目选用WebView控件进行视频的显示;ButtonBox控件作为前后左右等按钮开关;Label控件显示温度值、时间和标题;LineEdit控件作为IP和端口号输入端。

由于WebView控件只能加载路由转发的静态图像,因此,为了实现监控端实时视频动态显示,除了进行IP地址及端口号绑定设置外,还需要多加一个定时器来动态刷新。以下为关键代码:

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(){ //定时器动态刷新

QTimer *video_timer=new QTimer(this);

connect(video_timer,SIGNAL(timeout()),this,SLOT(load_video()));

video_timer->start(300);

}

3.4 实验结果

通过软硬件设计、编程调试及后期功能测试,探测小车系统能较好地实现小车控制、外部环境监测、视频实时动态显示、LED照明等功能,整个控制过程中,可操作性较强。系统启动后,用户只需进行IP及端口的绑定设置,然后单击“连接”按钮;连接成功后,该按钮将变成“已连接”状态且右边的红色标识变成绿色,此时,通过监控端上的按钮,用户可对小车进行前后左右的控制、开关LED灯、获取实时视频图像及外部环境温度。Windows监控端如图3所示。

图3 Windows监控端

结 语

[1] 张毅刚.单片机原理及接口技术[M].北京:人民邮电出版社,2011.

[2] 于连国,李伟,王妍玮. 基于单片机的智能小车设计[J]. 林业机械与木工设备,2011(4).

[3] 韩少云,奚海蛟.基于嵌入式Linux的Qt图形程序实战开发[M].北京:北京航空航天大学出版社,2012.

[4] 郑润芳,张海. STM32的小车自主定位与控制系统设计[J]. 单片机与嵌入式系统应用,2013(9).

罗回彬(实验师),研究方向为嵌入式系统设计及应用。

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)

猜你喜欢

路由器路由小车
买千兆路由器看接口参数
维持生命
路由器每天都要关
路由器每天都要关
大车拉小车
自制小车来比赛
铁路数据网路由汇聚引发的路由迭代问题研究
一种基于虚拟分扇的簇间多跳路由算法
刘老师想开小车
探究路由与环路的问题