arduino智能跟随小车
前言
目前,“机器人"已经成为生活中频繁出现的词汇。本课设所做的智能跟随机器人,属于反馈型移动机器人。
反馈型移动机器人:
- 可以简单定义为一种对外界信号进行处理反馈最终实现的方式将感知和动作连接在一起的可自移动设备。
- 它必须具有在一个位置的环物独立完成某些工作的能力。这里的智能更多的是指通过传感器感受外界的变化,通过通过传感器感受外界的变化,最终通过执行器做出反应。
如今中国具有跟随性的产品.主要是有轨机械跟随,用于工厂的各类生产机车的一部分,或是比赛场的有轨跟随拍摄车,并没有实际针对超市、旅馆、飞机场等大众场合,或家庭个人的产品。基于超声波定位及单片机各模块的综合运用,设计了一款能够对特定移动目标进行实时跟踪的智能小车。利用超声波定位技术和跟随性技术可以根据不同场合的跟踪要求设置小车的跟踪距离和跟踪速度等参数,可以实现对移动目标的准确跟踪,帮助携带物品,解放人们双手。
图中充电宝为电源
在智能小车项目中,我们通过控制直流电机的正反转、刹车和转速来控制小车的行动。
在这台小车中,对直流电机发出的控制指令来自于Arduino主控板,而Arduino主控板的外部输入则来自于超声波传感器、遥控器。本文的自动跟随小车的Arduino主控板外部输入来自于超声波传感器。
超声波传感器
超声波传感器是利用超声波的特性的传感器。超声波接收到触发信号后,模块自动发出8个40KHZ的方波,同时开始计时并自动监测是否有信号返回,通过记录超声波从开始发送到接收回波间隔,来判断前方障碍物的距离。
注:感应角度范围:15°
超声波测距
const int TrigPin = 9; //超声波触发引脚连接UNO引脚9
const int EchoPin = 2; //超声波接受引脚连接UNO引脚2const int leftPin1=8; //AIN1连接引脚8
const int leftPin2=7; //AIN2连接引脚7
const int rightPin3=4; //BIN1连接引脚4
const int rightPin4=3; //BIN2连接引脚3d
const int leftSpeed=6; //PWA连接引脚6
const int rightSpeed=5; //PWB连接引脚5
const int intSpeedPWM=120; //设置小车运行的初始速度int dist;
int followDist = 30; // ❶定义反应的距离
int followBalance = 10; // ❷定义范围void setup() {// put your setup code here, to run once:pinMode(TrigPin,OUTPUT);pinMode(EchoPin,INPUT);pinMode(leftPin1,OUTPUT);pinMode(leftPin2,OUTPUT);pinMode(rightPin3,OUTPUT);pinMode(rightPin4,OUTPUT);
}void loop() {followDrive(); // 自动跟随}//******************************
// 功能:跟随模式
// 参数:无
//*******************************
void followDrive() { // ❸getDistance(); // ❹获取当前的距离if ((dist >= followDist - followBalance) && (dist <= followDist + followBalance)) {analogWrite(leftSpeed, intSpeedPWM);analogWrite(rightSpeed, intSpeedPWM);if (dist > followDist) { // 当两者间的距离大于设定值时,小车前进forward(); }else if (dist < followDist) { // 当两者间的距离大于设定值时,小车后退backward(); }else {pause(); // 小车停止}}else {pause();}
}void getDistance() { // 超声波测距函数digitalWrite(TrigPin, LOW);delayMicroseconds(2);digitalWrite(TrigPin, HIGH);delayMicroseconds(10);digitalWrite(TrigPin, LOW);dist = pulseIn(EchoPin, HIGH) / 58.0;
}//===============
// 前进
//===============
void forward(){digitalWrite(leftPin1,1);digitalWrite(leftPin2,0);digitalWrite(rightPin3,1);digitalWrite(rightPin4,0);
}
//===============
// 后退
//===============
void backward(){digitalWrite(leftPin1,0);digitalWrite(leftPin2,1);digitalWrite(rightPin3,0);digitalWrite(rightPin4,1);
}
//===============
// 左转
//===============
void turnLeft(){digitalWrite(leftPin1,0);digitalWrite(leftPin2,0);digitalWrite(rightPin3,1);digitalWrite(rightPin4,0);
}
//===============
// 右转
//===============
void turnRight(){digitalWrite(leftPin1,1);digitalWrite(leftPin2,0);digitalWrite(rightPin3,0);digitalWrite(rightPin4,0);
}
//===============
// 原地左转
//===============
void rotateLeft(){digitalWrite(leftPin1,0);digitalWrite(leftPin2,1);digitalWrite(rightPin3,1);digitalWrite(rightPin4,0);
}
//===============
// 原地右转
//===============
void rotateRight(){digitalWrite(leftPin1,1);digitalWrite(leftPin2,0);digitalWrite(rightPin3,0);digitalWrite(rightPin4,1);
}
//===============
// 停止
//===============
void pause(){digitalWrite(leftPin1,0);digitalWrite(leftPin2,0);digitalWrite(rightPin3,0);digitalWrite(rightPin4,0);
}
系统测试
以手与小车的距离为标准 通过手的移动,来测试小车。
测试超声波模块时,可通过编译器的串口检测器测试。
arduino智能跟随小车相关推荐
- 【毕业设计】基于超声波智能跟随小车 - 单片机 物联网 stm32 c51
文章目录 1 项目简介 2 课题背景 3 硬件说明 3.1 小车硬件设计 3.2 小车底座 3.3 无线收发器 3.4 超声波模块 3.5 直流电机和电源 3.6 目标携带装置 3.7 整体电路图 4 ...
- Arduino智能物流小车项目(MEGA2560)
因为这是我做的第一个项目,然后平时也不太喜欢拍照.再加上有强迫症,没事喜欢清理文件相册.导致这个项目的材料照片文件十分匮乏(其实几乎都没了).这是用的一些仅存残余文件,来写本人的第一篇博客,算是留作纪 ...
- 毕业设计 单片机超声波智能跟随小车 - 物联网 嵌入式 stm32
文章目录 1 项目简介 2 课题背景 3 硬件说明 3.1 小车硬件设计 3.2 小车底座 3.3 无线收发器 3.4 超声波模块 3.5 直流电机和电源 3.6 目标携带装置 3.7 整体电路图 4 ...
- STM32单片机智能跟随小车_红外遥控(程序+原理图+PCB+论文报告)
本设计: 基于STM32单片机智能跟随小车_红外遥控(程序+原理图+PCB+论文报告) 原理图:Altium Designer 程序编译器:keil 5 编程语言:C语言 编号C0021 资料下载 [ ...
- 使用超声波传感器采用图形化编程制作Arduino自动跟随小车
在智能小车项目中,我们通过控制直流电机的正反转.刹车和转速来控制小车的行动. 在这台小车中,对直流电机发出的控制指令来自于Arduino主控板,而Arduino主控板的外部输入则来自于超声波传感器.灰 ...
- 基于红外感应的远距离智能跟随小车,自动跟随小车
跟随原理 下面介绍红外感应的跟随小车的自动跟随部分. 基本原理:在小车上安装一个红外接收器(能测量红外入射角的感应器),人手持一个红外发射模块. 根据不同的入射角,调整小车前进方向.若入射角在右边,就 ...
- Arduino智能物流小车各部分功能代码详解(省工程训练能力综合竞赛)
文章目录 前言 测试部分 循迹部分 超声波测距部分 避障部分 机械臂控制部分 扫码部分 初赛部分 前言 考虑到之前那篇博客写的太简略,也只给了一个最终代码,比较容易让人看不懂.本篇主要写一些不同功能函 ...
- arduino 蓝牙 android 小车,arduino智能蓝牙小车
大家好!这是小编第二次做小项目~ 小编目前专业是电气自动化的,不搞点硬件方面的东西,不学点控制技术,有点对不起自己所学的专业. 小编这次打算做arduino多功能智能小车~ 首先,为啥选择arduin ...
- 文章4:多功能智能跟随行李箱控制系统设计 | 本科毕业设计 - 【资料搜索技巧+参考资源整合】
一.资料搜索技巧 1. 搜索引擎: a. 单独搜索引擎 淘宝 知乎 CSND 语雀 B站 微信 CNKI b. 综合搜索引擎 百度 谷歌 2. 搜索关键字: 自动跟随行李箱 a. 跟随为主 自动跟随 ...
最新文章
- html如何打包压缩,所有css打包压缩到一个js里面
- 浅析网站优化知识自学从哪些方面开始起步
- python xpath语法-XPath 语法
- Docker用Commit给容器做快照
- nvidia显卡cuda的性能_性能追平上代万元旗舰!NVIDIA GeForce RTX 3070规格解析
- 图解命令行手动编译构建一个win32汇编程序
- jQuery添加/改变/移除CSS类
- BZOJ2252(BFS水题)
- java 多线程 聊天_Java做一个多线程类似于QQ的聊天程序。
- php转化xml数组_PHP实现数组array转换成xml的方法
- centos yum install 默认目录_Centos7如何更换yum仓库
- 手动配置泛域名https (资源)
- jQuery文档处理
- 22条你不知道的微营销干货
- JQuery WEUI Tabbar 的坑
- E71(S60 3rd)通话录音软件 -终极录音- 的用法
- 武汉知名 IT 公司大盘点
- 【Windows】实现微信双开或多开
- 一台计算机连接两个投影,一台电脑两个投影仪要如何连接
- linux 二次封装 释放,Linux必学的60个命令(二)
热门文章
- 想带好团队,要先学会使用GTD
- u盘安装red linux,U盘安装Red Hat Enterprise Linux(方法1)
- 河南对口计算机本科学校有哪些,河南省 2017 年普通高等学校对口招收中等职业学校毕业生考试-计算机类基础课参考答案...
- 入门级短信推送,你还不会吗?
- Java对接云mas发送短信(https方式)
- 数据仓库1-数仓的意义
- 软件工程网络15团队作业1——团队组队展示
- “找不到或加载主类”是什么意思?
- 微信中提示浏览器打开网址链接如何解决
- 【经典算繁体08题】字串核对