APP下载

基于Arduino的无线遥控小车的设计与实现

2022-03-16王飞飞郭宁峰

物联网技术 2022年3期
关键词:开发板路由器小车

赵 琦,王飞飞,郭宁峰

(平顶山学院 信息工程学院,河南 平顶山 467000)

0 引 言

近年来,随着经济水平和科学技术的快速发展,人们对大自然的探索和改造也逐渐进入了更深的层次。无线遥控探测器作为一种环境探测的重要工具,为自然环境以及灾后环境的探测工作做出了巨大的贡献。但是,因为路况等不确定因素的影响,部分探测器难以对不同的环境进行有效的探测。基于此,本文设计了一款基于Arduino的无线遥控视频小车系统,以实现对危险或者不易到达地区的环境监控和信息采集。

1 系统整体设计

本系统主要分为上位机软件模块和下位机硬件模块两个部分。软件模块主要包括基于Android智能终端的应用控制程序及电机驱动和舵机驱动程序。硬件模块以Arduino为控制核心进行设计,主要分为无线控制模块和视频监控模块两部分。通过将所有的软件模块与硬件模块相结合,最终构成一个完整的系统。该系统总体设计框图如图1所示。

图1 总体设计框图

根据对功能的分析,本系统主要包括小车的无线遥控和视频监控两大功能。通过对不同的控制指令进行判断,进而实现对无线遥控小车的运动控制;通过车载摄像头实现对小车周围情况的视频采集功能。系统功能如图2所示。

图2 系统功能

2 各模块详细设计

2.1 无线控制模块设计

Arduino UNO REV3开发板(以下简称“R3开发板”)是本系统的核心控制单元。作为Arduino平台最为通用的一款开源硬件产品,R3开发板采用ATMEGA328P单片机作为核心处理器,它拥有14个数字I/O引脚,其中可用于PWM输出的有6个,同时R3开发板还拥有6个模拟I/O口、一个频率为16 MHz的晶体振荡器、一个可用于程序烧录和供电的USB口、一个电源插座和复位按钮,具有功耗低、成本低、接口丰富的特点,完全能够满足该系统的设计需求。该系统通过对4个数字I/O引脚输出的控制来实现小车的控制功能。在实现对小车控制的四个引脚中,该系统使用两个PWM输出引脚(D5和D6),通过设置占空比来调节驱动电机的转动速率;使用两个数字引脚(D4和D7)作为电机的驱动引脚,通过为D4和D7输入高低电平来控制驱动电机的转动方向。

本系统中采用R3-L293D作为小车的驱动扩展板,R3-L293D驱动扩展板是一款为智能小车机器人开发而打造的多功能扩展板,采用排针式的对插结构设计,更全面地提升了Arduino开发板的适用性。它集成了电源开关、电机驱动、WiFi接口等功能接口,并且将Arduino UNO开发板的14个数字I/O口全部引出,多颜色的排针方式可以更简单地区分不同功能的引脚。R3-L293D的部分功能引脚如图3所示。

图3 R3-L293D的功能引脚

在无线路由的设计方面,TL-WR702是一种专为移动设备WiFi无线上网而设计的迷你无线路由器,利用其携带的内置天线,可有效扩展数据传输的距离,使数据有效传输距离达到最大300 m左右。TL-WR702的8 MB FLASH、64 MB RAM的内存也能够满足视频传输不卡顿的需求;它不需要单独电源,支持多种供电方式,并具有低压驱动的特点。通过TTL串口通信实现与Arduino UNO R3开发板的数据交互。

在电机控制方面,该系统采用L293D驱动芯片,通过H桥电路和控制器输出的PWM信号来实现对电机的控制,采用Micro USB接口的方式为其提供5 V稳压。将无线路由器模块的TTL线连接到R3-L293D扩展板的WiFi TTL接口上。通过将UVC摄像头驱动加载到OpenWrt系统上实现视频数据的实时无线传输。利用Socket模式进行指令信息和视频数据的传输。通过连接云服务器,控制端的虚拟按键值就可以被转换成相应的控制指令,然后通过无线路由器的串口进行控制指令数据的接收工作,最后将接收到的数据通过TTL串口通信发送给R3开发板,并由其进行相应的处理。

在本系统程序设计中,采用函数式开发的思想,根据小车不同的运动状态,利用analogWrite()方法和digitalWrite()方法进一步封装了 goAhead()、Left()、goBack()、Right()和Stop()方法。在实际程序中,使用digitalWrite()方法控制引脚的高低电平输出,通过调用goAhead()、goBack()、Left()、Right()和 Stop()方法分别实现小车的前进、后退、左转、右转和停止功能。小车无线控制模块流程如图4所示。

图4 小车无线控制模块流程

2.2 视频监控模块设计

作为本系统的核心功能之一,视频监控模块根据其特点可以划分为视频信号的采集、处理和传输三个模块。系统视频采集模块采用的硬件为USB免驱动摄像头。该USB摄像头拥有两个Interface,分别是Video Control Interface和Video Stream Interface。摄像头中的图像处理芯片会将其收集到的视频信号编码为固定的格式,然后通过FIFO缓冲将各个单元发送到USB总线上。路由器模块上的驱动程序会接收每一个数据单元,并将其组成一个完整的图像帧,然后由图像处理软件将图像帧编码成固定格式的图像数据。其工作流程如图5所示。

图5 视频处理流程

视频数据传输功能由无线路由器模块来实现。通过将UVC摄像头驱动加载到无线路由器模块的OpenWrt系统上,可以实现视频数据的实时无线传输。该系统的设计中所有的指令信息和视频数据都是通过Socket的模式传输,无线路由器模块在启动后会自动创建UDP连接,并连接云服务器,将采集到的数据以Socket的模式发送到指定端口的地址,以供客户端取用视频。

2.3 控制端软件模块设计

控制端软件模块主要工作是实现对硬件的远程控制、接收硬件设备传递来的视频信息,并将视频信息实时地显示在控制页面上。

本系统的控制端软件主要由两个页面组成:第一个页面为APP的主页面;通过点击其上的控制按钮可以进入到第二个页面,即控制页面。在控制页面使用digitalWrite()方法控制引脚的高低电平输出。通过将Servo.h库中Servo类型的变量附加到引脚上,实现对舵机的控制。通过点击不同的控制按钮对小车进行不同的控制操作,控制页面的背景为硬件设备所采集视频信息的展示窗口,通过myServo.attach(9)语句将舵机附加到9号引脚上,并通过write()方法将其默认状态下(即小车直行状态下)的舵机角度设置为90°。当控制芯片接收到使车载摄像头左摆的指令时,就通过myServo.write(60)语句将舵机角度设置为60°;而接收到右摆的指令时,就通过myServo.write(120)语句将舵机角度设置为120°。通过该窗口,用户可以实时看到小车前方的事物。控制软件的具体流程如图6所示。

图6 控制端软件流程

3 结 语

本设计采用控制端和数据采集端相结合的方式,可以很好地实现小车的远程控制以及视频信息的采集和传输、控制端的信息展示等功能,能在不同的条件下完成环境信息采集工作。该设计能够较好地协助甚至替代人们完成恶劣条件下的环境探测工作,在完成基本功能的基础上达到了比较理想的效果,具有较好的实用价值。

猜你喜欢

开发板路由器小车
买千兆路由器看接口参数
路由器每天都要关
大车拉小车
自制小车来比赛
两轮自平衡小车的设计与实现
无线路由器的保养方法
Microchip最新推出两款PIC32 Curiosity开发板
浅析单片机开发板的设计与制作
Mouser为您呈上开发关键之STMicroelectronics Nucleo开发板
Arduino和Atmel发布Arduino Zero开发板