1 / 21
文档名称:

Arduino智能小车实验报告.docx

格式:docx   大小:1,359KB   页数:21页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Arduino智能小车实验报告.docx

上传人:s0012230 2018/1/15 文件大小:1.33 MB

下载得到文件列表

Arduino智能小车实验报告.docx

文档介绍

文档介绍:“蓝牙手柄避障小车”设计
设计者:严梓桓(34%),汤楷宸(33%),梁德棋(33%)
1. 项目背景
本作品为基于Arduino控制的智能小车。
智能小车在技术上和移动机器人有着密切相关的联系,有着关于自动控制、传感器技术、电子电路上的重要实践意义。通过对基本功能进行不同方向,多种多样的扩展,可以为我们的生活提供各种各样的便利。这类设备可以应用于复杂多样的工作环境,在民用和军用上都可以有各种各样颇有意义的用途。
一般来说,红外避障实现方便、技术要求相对简单、易于做到实时控制。并且,一般的红外避障装置在测量精度方面能达到实用的要求,因此成为常用的避障方法。利用红外传感器来实现小车的智能避障时,通过测量小车与障碍物的距离,实现小车多角度检测障碍物,从而加以判断转向、后退和前进,使小车能成功的躲避障碍物,并按照控制者的意愿前进。
受到现有的产品和技术的启发,我们小组制作简易的智能小车。这款简易的智能小车,可以通过操作人的遥控进行操控,进行各种运动,当遇到障碍物时,可以灵活地进行自动避障。而小车的舵机转向,更加的贴合我们的现实汽车的模型,对实现智能无人汽车的出现有一定的借鉴优势。我们还计划为它加装通过Wi-Fi连接的摄像头模块,将拍到的图像数据传输到电脑上。除此之外,我们还希望将来可以通过手机App来对小车进行操控,让小车使用更为方便,功能更加强大。
2. 创意描述
这款简易的智能小车,可以通过操作手柄进行遥控操控,进行各种前进、后退、转弯、变速等运动。切换模式后,当遇到障碍物时,它可以通过红外避障模块,探测到障碍物,灵活地进行自动避障。
创新点:使用手柄操作,操纵方便,具有很大的娱乐性。
3. 功能及总体设计
该作品主要可以分为两个部分:小车的运动、转向部分和红外避障部分。对于运动和转向部分,经由Arduino UNO板,再用PM-R3多功能扩展板连接电机和舵机,实现小车运动。操作时,通过蓝牙和遥控手柄连接主板,达到操纵的目的;红外避障部分,分布在小车各侧的多个红外小板通过红外传感器模块感应到障碍物,进而控制舵机的转动,避开障碍物。
功能介绍
这款简易的智能小车,通过操作手柄进行遥控操控,进行各种前进、后退、转弯、变速等运动。切换模式后,当遇到障碍物时,它可以通过红外避障模块,探测到障碍物,灵活地进行自动避障。
总体设计
该小车主要由运动和转向部分和红外避障部分两个部分组成。
(1)整体框架图
项目整体框架图如图1所示。
图1 整体框架图
PM-R3多功能扩展板连接到Arduino UNO板上,通过PM-R3多功能扩展板连接并驱动步进电机和转向舵机;另外,PM-R3多功能扩展板连接了红外避障模块,四个红外避障小板接收到的障碍物的信号通过它处理,控制电机的工作和舵机的转向。
(2)系统流程图
系统流程图(遥控模式略)如图2所示。
图2 系统流程图
避障模式下,在小车运动过程中,如果遇到障碍物,被红外小板探测到后,让舵机转动,从而达到转向的目的;如果前方各个方向都有障碍物,小车则后退。
(3)总电路图
系统总电路图如图3所示
图三系统总电路图
Arduino UNO板上连接了有PM-R3多功能扩展板。驱动步进电机和转向舵机也通过PM-R3多功能扩展板连接;另外,PM-R3多功能扩展板连接到红外避障模块,四个红外避障小板接收到的障碍物的信号通过它传回扩展板,控制电机的工作和舵机的转向。
模块介绍
本项目主要包括以下几个模块:运动与转向模块、红外避障模块,下面分别给出各部分的功能、元件、电路图和相关代码。
(1)运动与转向模块
功能介绍:小车通过操作手柄进行遥控操控,进行各种前进、后退、转弯、变速等运动
元器件清单:S3003舵机,17mm联轴器 D-3mm,,,传动连杆,后轮连杆,电机固定支架,25mm金属减速电机,开关,PM-R3多功能扩展板,PS2手,-2400mAH锂电池组,杜邦线。
电路图:电机模块接线图如图4所示;电机模块电路原理图如图5所示;PM-R3扩展电路板电路示意图如图6所示。
图4 电机模块接线图
图5 电机模块电路示意图
图6 PM-R3扩展电路板电路示意图
相关代码:
#include <> //舵机库文件
#include <> //蓝牙PS2X手柄库文件
PS2X ps2x; //声明手柄ps2x
Servo myservo; //声明舵机myservo
//ps2引脚
#define PS2_DAT A0 //14
#define PS2_CMD A1 //15
#define PS2_SEL A2 //16
#define PS2_C