问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于Arduino的智能寻迹小车设计

创作时间:
作者:
@小白创作中心

基于Arduino的智能寻迹小车设计

引用
CSDN
1.
https://blog.csdn.net/QQ1928499906/article/details/145926131

在21世纪的今天,科技不断的进步,机器人这个词不在陌生,其功能和实用性也逐渐被人们所了解和接受,无论在智能家居还是在物流运输等场合,移动机器人充当着许多不可或缺的角色,所以,在当代的科技发展中,此领域发展相对于传统制造业发展极其迅速。为了探索具有良好寻迹功能的智能小车在现代快节奏的生活中能给人们提供何种便利,及对智能小车的各个性质研究有着重要的实际意义。

本设计利用Arduino平台和相关电路组成的智能寻迹小车,其中核心主要包括了寻迹模块、电源模块、驱动模块等。本课题主要的核心就是用红外寻迹模块来识别路面上的黑色指定路线,以性能强劲、上手容易的Arduino单片机为核心,红外模块采集到的信号能转换为能被Arduino单片机识别的数字信号。采用驱动芯片L293D用来操纵直流减速电动机。软件部分选择了以C语言为核心封装的Arduino的编程语言,其具有跨平台、开放性、简单清晰等优点。

结果表明,基于Arduino的智能寻迹小车设计是可行的,本设计表现出了对人们生产生活等方面的极大便利。

系统方案设计

方案论证

本设计对于实现自动寻迹的智能小车提出如下两套设计方案。

方案一:

采用传统的51单片机进行整体的小车设计,它有8位CPU,4kbytes程序存储器,32条I/O口线,21个专用寄存器,2个可编程定时/计数器;5个中断源,2个优先级,一个全双工串行通信口。

智能小车以STC89C51为主芯片,红外传感器作为检测信号的工具,红外传感器能识别地面反射的光信号,经过一个电压比较器,把光信号转换为单片机可识别的电信号,在把这个电信号给STC89C51单片机进行集中处理并传递给驱动模块控制电机的驱动,进而控制小车的前进方向。当小车两边的都处于白色路面时,红外传感器两都能接受到自己发射的红外光,这样小车就正常前进。当一侧的红外传感器检测不到发出的红外光时,会根据情况做出对应的行驶方向上的调整,当两侧红传感器都检测不到自己发射的红外光时,小车停止前进。

方案二:

本设计采用以新型的Arduino UNO开发板为核心进行小车的整体设计,它由14个数字输入/输出引脚(其中6个可用于PWM输出)、6个模拟输入引脚、一个USB接口、一个16 MHz的晶体振荡器、一个ICSP接口、一个DC接口,一个复位按钮等组成。它的使用也非常简便,只需要把它连接到计算机或者用电池给它供电我们就可以使用它。

本设计使用两轮驱动,用两个电机分别驱动左轮和右轮。通过小车底部的两个寻迹探头来检测地面的黑线。主要利用了黑色对光的反射能力很弱,白色对光的反射能力较强的原理。假如,放置车辆的时候小车偏左,小车底部的右边的探头就会检测到地面的黑线,小车就会执行右转弯的函数使小车在两个探头之间,小车的两侧都检测不到黑线。小车直行。需要转弯的时候,寻迹探头会首先感知到地面颜色的变化,这个变化会由寻迹模块传给Arduino单片机由单片机内执行一个向另一侧转弯的信号,小车整体就会向另一侧转弯。当转过弯后,循环此过程直到两侧都检测不到黑线小车直线前进。

经过资料查阅、与老师探讨、总结出了两种设计的优缺点如下:

  1. Arduino平台,作为新发展起来的平台,它摒弃了传统单片机繁杂的开发模式,在C语言的基础上进行简化,使得作为一个Arduino平台的开发者而言,效率更高。
  2. 使用Arduino平台做项目,由于它的广大兼容性,完全可以按照自己的需求来丰富、扩展自己的使用模块,使得项目的成品功能更加丰富。而传统的单片机,依赖于硬件的设计,需要和单片机匹配的硬件模块和制作整块PCB开发板。Arduino平台的模块化方式使得开发更便捷。
  3. Arduino平台自诞生起,它就是一个开源的平台,我们可以从互联网上获取想要的任何信息,在互联互助的今天,传统的单片机限于书本上的学习内容变得枯燥乏味,而互联网的多样化时代使得Arduino这个新平台的学习更加愉快。

综上所述,作为新兴的开源Arduino平台,它的性能比51单片机更好且运行更加稳定,而且传统的51单片机在高电平输出方面会稍显无力,在保护电路方面,51单片机会经常出现被烧坏的情况。在这个信息多元化的时代,Arduino平台的学习成本更低,开发效率更高。因此,本设计采用方案二。

项目的总体设计

本项目基于Arduino单片机设计的智能寻迹小车由:Arduino UNO开发板、转接主控板、寻迹模块、电源模块等构成。单片机负责存储程序、打开电源开关首先程序会执行按键、端口初始化操作。等待下一步指令,当单片机检测到按键按下后,蜂鸣器会响起,寻迹程序开始。小车在白色的地面沿着黑色寻迹路线前进。系统的功能框图如1.1所示。

小车前进时,两侧的传感器映射灯常亮。假如小车要右转弯时,小车的左侧红外传感器始终能检测到返回的红外光,小车的左轮始终前进,小车的左指示灯常亮。小车右侧的红外传感器在右转弯时会触碰黑线,检测不到返回的红外光,输出高电平,右前轮停止转动,这时候右侧传感器映射灯熄灭。小车的左前轮前进,右前轮由于检测到黑色路线,右轮停止转动,实现小车右转弯。左转弯功能相反。既此时完成整个寻迹功能。

项目硬件设计

Arduino平台简介

Arduino Uno是基于ATmega328P单片机的开发板。它有14个数字输入/输出引脚,6个模拟输入引脚,一个16 MHz的晶体振荡器,一个USB接口,一个DC电源接口,一个ICSP接口,一个复位按钮。它包含了单片机最小系统的全部内容,只用简单地连接到计算机的USB接口,或者使用电源适配器,甚至是电池,就可以驱动。

Arduino是一款方便上手、灵活便捷、效率极佳的开源电子技术平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE)。它构建于开源的simple I/O介面版,并且具有使用类似Java、C语言的良好开发环境。Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino平台;另外一个则是Arduino IDE,你的计算机中只要安装了Arduino IDE用USB连接到它的平台,选好对应的COM串口,编写出你想要做事情,把程序下载到Arduino当中。Arduino平台就会立刻执行它应该做的事情。

Arduino开发板的核心是ATMEGA328P单片机,它是双列直插式28管脚的芯片,其引脚连接Arduino微控制器的模拟端口和数字端口关系图如图2.1所示。0-13号为数字端口,其中带有“”的具有PWM输出功能,标有A0A5标号的是模拟端口。


图2.2 Arduino Uno开发板实物图

  1. 微处理器:ATmega328P,8位微处理器,片内包含32KB Flash(0.5KB由BootLoader使用),2KB SRAM,1KB EEPROM,运行时钟频率为16MHz。
  2. 外接电源:当Arduino Uno板脱离电脑独立运行时,使用5-12V直流电源均可供电。
  3. USB接口:与电脑连接,用于从电脑中下载程序,同时给Uno单板供电。
  4. 模拟输入:6个模拟输入,提供10-bit的解析度(0-1023)。
  5. 数字输入/输出:Arduino Uno 开发板有14管脚用来输入或输出。其中1管脚是TX,0管脚是RX。他们是串口通信的引脚,作为AVR单片机提供了这两个串口通信的引脚Arduino Uno开发板为了解决Arduino平台连接电脑的问题把使用USB转接口的适配器和0,1两个串口相匹配,做到了Arduino平台与电脑的通信。Arduino开发板上带有的6个“~”的管脚作为可提供8位范围是(0-255)的PWM输出管脚。

项目的软件设计

Arduino的开发环境

Arduino的编程语言是基于C语言开发的,不过后来又引入C++的了面向对象的变成思想,这使得现在的Arduino核心库文件采用了C和C++混合而成。

Arduino的编程语言,是指Arduino的给广大开发者们提供的接口(英文名是API)的集合。在Java中接口是一系列方法的声明,可以被任何人实现这个接口,这和C++的面向对象的编程思想有着异曲同工之妙。因此,即使我们不懂在传统的开发方式中,不懂配置各个寄存之间的关系,只要我们调用的相应的接口,底层的代码直接就帮我们配置了各个繁杂的寄存器。如下图3.1所示就是一个最基本的Arduino开发环境。

图3.1 Arduino开发环境

在Arduino的开发环境中,最重要的两个方法或函数,就是setup()和loop()。其中setup()方法中主要用来做定义变量的操作,该方法仅会在Arduino平台通电时运行一次,相当于变量的初始化操作。loop()方法是一个不断循环的函数,主要用这个方法来控制setup()中已经初始化好的端口。

实现一个Arduino最简单的让Arduino开发板上的LED灯闪烁的功能如下图3.2所示。

项目调试

项目硬件调试

电路板焊接,按照元器件的判断方式按照长正短负的方式进行区分安装,逐一焊接。焊接好后,接通5V电源,首次通电需马上断电,检查指示灯提示,以防出现焊接错误造成器件损毁。焊接好的转接板和Arduino开发板如下图4.1所示。


图4.2 Arduino开发板和转接板对接图

硬件部分整体联调,将小车的电机、主板、寻迹模块等依次用L形固定架固定在小车上,最终小车的整体如下图4.3所示。


4.3 基于Arduino的智能寻迹小车整体图

结 论

采用Arduino Uno平台完全符合本设计的控制需求,循迹模块、电源模块、驱动模块可以与ATmega328P单片机完美的融合兼容,可抗干扰耐用。整个小车运行稳定可靠,识别黑色循迹路面灵敏,准确。电源可以共用整合,该设计方案达到了我们的预期设计。

本设计由电源电路、以Arduino Uno开发板为核心的、直流减速电动机驱动电路、寻迹模块电路、LED指示灯电路、蜂鸣器提示电路和按键电路组成。首先,给小车接通电源,打开开关,按下按钮,蜂鸣器响起。小车的主程序会进行初始化操作,把小车放在带有黑色寻迹的路面时,小车沿着黑色的寻迹路线进行行驶,传感器把实时路径传送给主控芯片,主控芯片把接受到的信息处理成能被驱动电路识别的电信号,通过驱动电路来控制电机的转速和方向。既此时完成寻迹功能。

本设计的主要实现功能是:接通电源,按钮被按下时,蜂鸣器响动,小车启动寻迹程序,小车会根据地面的黑色寻迹路线进行自动寻迹功能的同时,左右两侧LED指示灯会提示哪边探测到了寻迹路线。采用Arduino新平台后,较传统的51平台,系统的识别准确率大大提高。由此能更加稳定、高效的完成寻迹任务,大大降低了程序出错的概率。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号