基于Arduino的智能寻迹小车设计
基于Arduino的智能寻迹小车设计
在当今科技快速发展的时代,机器人技术在智能家居、物流运输等领域发挥着越来越重要的作用。本文将详细介绍基于Arduino平台的智能寻迹小车设计,通过对比传统51单片机方案,展示Arduino平台在开发效率、兼容性和学习成本方面的优势。
摘要
本文设计了一款基于Arduino平台的智能寻迹小车,主要由寻迹模块、电源模块、驱动模块等核心组件构成。采用红外寻迹模块识别黑色指定路线,以Arduino单片机为核心进行信号处理,通过L293D驱动芯片控制直流减速电机。软件部分采用Arduino的C语言编程环境,具有跨平台、开放性等特点。实验结果表明,该设计能够稳定可靠地完成寻迹任务,为生产生活带来便利。
1 系统方案设计
1.1 方案论证
本设计提出了两种实现自动寻迹智能小车的方案:
方案一:采用传统的51单片机,通过红外传感器检测地面反射光信号,经电压比较器转换为电信号后,由STC89C51单片机处理并控制驱动模块。
方案二:采用Arduino UNO开发板为核心,利用其丰富的数字/模拟输入输出引脚和便捷的开发环境。通过两个寻迹探头检测地面黑线,根据黑色和白色对光的反射能力差异,实现小车的自动寻迹功能。
经过对比分析,Arduino平台在开发效率、兼容性和学习成本方面具有明显优势,因此本设计选择方案二。
1.2 项目的总体设计
本项目基于Arduino单片机设计的智能寻迹小车由:Arduino UNO开发板、转接主控板、寻迹模块、电源模块等构成。单片机负责存储程序、打开电源开关首先程序会执行按键、端口初始化操作。等待下一步指令,当单片机检测到按键按下后,蜂鸣器会响起,寻迹程序开始。小车在白色的地面沿着黑色寻迹路线前进。系统的功能框图如1.1所示。
图1.1 系统功能图
小车前进时,两侧的传感器映射灯常亮。假如小车要右转弯时,小车的左侧红外传感器始终能检测到返回的红外光,小车的左轮始终前进,小车的左指示灯常亮。小车右侧的红外传感器在右转弯时会触碰黑线,检测不到返回的红外光,输出高电平,右前轮停止转动,这时候右侧传感器映射灯熄灭。小车的左前轮前进,右前轮由于检测到黑色路线,右轮停止转动,实现小车右转弯。左转弯功能相反。既此时完成整个寻迹功能。
2 项目硬件设计
2.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.1Arduino UNO端口与Atmal328P引脚对应图
实物如下图2.2所示:
图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单板供电。
(5) 模拟输入:6个模拟输入,提供10-bit的解析度(0-1023)。
(6) 数字输入/输出:Arduino Uno 开发板有14管脚用来输入或输出。其中1管脚是TX,0管脚是RX。他们是串口通信的引脚,作为AVR单片机提供了这两个串口通信的引脚Arduino Uno开发板为了解决Arduino平台连接电脑的问题把使用USB转接口的适配器和0,1两个串口相匹配,做到了Arduino平台与电脑的通信。Arduino开发板上带有的6个“~”的管脚作为可提供8位范围是(0-255)的PWM输出管脚。
3 项目的软件设计
3.1 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所示。
4 项目调试
4.1 项目硬件调试
电路板焊接,按照元器件的判断方式按照长正短负的方式进行区分安装,逐一焊接。焊接好后,接通5V电源,首次通电需马上断电,检查指示灯提示,以防出现焊接错误造成器件损毁。焊接好的转接板和Arduino开发板如下图4.1所示。
图4.1 (左) Arduino开发板 (右)转接板
把转接板按照Arduino开发板上的孔位对齐,接到Arduino开发板上,如下图4.2所示。
图4.2 Arduino开发板和转接板对接图
硬件部分整体联调,将小车的电机、主板、寻迹模块等依次用L形固定架固定在小车上,最终小车的整体如下图4.3所示。
4.3 基于Arduino的智能寻迹小车整体图
5 结 论
采用Arduino Uno平台完全符合本设计的控制需求,循迹模块、电源模块、驱动模块可以与ATmega328P单片机完美的融合兼容,可抗干扰耐用。整个小车运行稳定可靠,识别黑色循迹路面灵敏,准确。电源可以共用整合,该设计方案达到了我们的预期设计。
本设计由电源电路、以Arduino Uno开发板为核心的、直流减速电动机驱动电路、寻迹模块电路、LED指示灯电路、蜂鸣器提示电路和按键电路组成。首先,给小车接通电源,打开开关,按下按钮,蜂鸣器响起。小车的主程序会进行初始化操作,把小车放在带有黑色寻迹的路面时,小车沿着黑色的寻迹路线进行行驶,传感器把实时路径传送给主控芯片,主控芯片把接受到的信息处理成能被驱动电路识别的电信号,通过驱动电路来控制电机的转速和方向。既此时完成寻迹功能。
本设计的主要实现功能是:接通电源,按钮被按下时,蜂鸣器响动,小车启动寻迹程序,小车会根据地面的黑色寻迹路线进行自动寻迹功能的同时,左右两侧LED指示灯会提示哪边探测到了寻迹路线。采用Arduino新平台后,较传统的51平台,系统的识别准确率大大提高。由此能更加稳定、高效的完成寻迹任务,大大降低了程序出错的概率。