基于Arduino的智能寻迹小车设计
1 系统方案设计1.1 方案论证本设计对于实现自动寻迹的智能小车提出如下两套设计方案。方案一采用传统的51单片机进行整体的小车设计它有8位CPU4kbytes程序存储器32条I/O口线21个专用寄存器2个可编程定时/计数器5个中断源2个优先级一个全双工串行通信口[6]。智能小车以STC89C51为主芯片红外传感器作为检测信号的工具红外传感器能识别地面反射的光信号经过一个电压比较器把光信号转换为单片机可识别的电信号在把这个电信号给STC89C51单片机进行集中处理并传递给驱动模块控制电机的驱动进而控制小车的前进方向。当小车两边的都处于白色路面时红外传感器两都能接受到自己发射的红外光这样小车就正常前进。当一侧的红外传感器检测不到发出的红外光时会根据情况做出对应的行驶方向上的调整当两侧红传感器都检测不到自己发射的红外光时小车停止前进[7]。方案二本设计采用以新型的Arduino UNO开发板为核心进行小车的整体设计它由14个数字输入/输出引脚其中6个可用于PWM输出、6个模拟输入引脚、一个USB接口、一个16 MHz的晶体振荡器、一个ICSP接口、一个DC接口一个复位按钮等组成。它的使用也非常简便只需要把它连接到计算机或者用电池给它供电我们就可以使用它[8]。本设计使用两轮驱动用两个电机分别驱动左轮和右轮。通过小车底部的两个寻迹探头来检测地面的黑线。主要利用了黑色对光的反射能力很弱白色对光的反射能力较强的原理。假如放置车辆的时候小车偏左小车底部的右边的探头就会检测到地面的黑线小车就会执行右转弯的函数使小车在两个探头之间小车的两侧都检测不到黑线。小车直行。需要转弯的时候寻迹探头会首先感知到地面颜色的变化这个变化会由寻迹模块传给Arduino单片机由单片机内执行一个向另一侧转弯的信号小车整体就会向另一侧转弯。当转过弯后循环此过程直到两侧都检测不到黑线小车直线前进。经过资料查阅、与老师探讨、总结出了两种设计的优缺点如下(1)Arduino平台作为新发展起来的平台它摒弃了传统单片机繁杂的开发模式在C语言的基础上进行简化使得作为一个Arduino平台的开发者而言效率更高。(2)使用Arduino平台做项目由于它的广大兼容性完全可以按照自己的需求来丰富、扩展自己的使用模块使得项目的成品功能更加丰富。而传统的单片机依赖于硬件的设计需要和单片机匹配的硬件模块和制作整块PCB开发板。Arduino平台的模块化方式使得开发更便捷。(3)Arduino平台自诞生起它就是一个开源的平台我们可以从互联网上获取想要的任何信息在互联互助的今天传统的单片机限于书本上的学习内容变得枯燥乏味而互联网的多样化时代使得Arduino这个新平台的学习更加愉快。综上所述作为新兴的开源Arduino平台它的性能比51单片机更好且运行更加稳定而且传统的51单片机在高电平输出方面会稍显无力在保护电路方面51单片机会经常出现被烧坏的情况。在这个信息多元化的时代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接口或者使用电源适配器甚至是电池就可以驱动[9]。在硬件方面选择了Arduino Uno这块开发板“Uno”在意大利语是“一”的意思这是Arduino平台的第一块开发板因此在功能反面这块开发板功能全、性能好此后的Arduino开发板都是基于“Uno”的衍生产品。在软件方面Arduino平台开发出一套自己专门的Arduino IDE这就完成了Arduino平台初版的开发标准也为后来的Arduino其他开发板奠定了基础。Arduino Uno的主要数据如表2.1.1所示。表2.1 Arduino Uno主要数据型号 Arduino Uno微控制器 ATmega328P工作电压 5 V输入电压推荐 7-12 V数字I/O引脚 14PWM通道 6模拟输入通道ADC 6Flash 32 KBSRAM 2 KBEEPROM 1 KB时钟速度 16 MHz板载LED引脚 13Arduino是一款方便上手、灵活便捷、效率极佳的开源电子技术平台包含硬件(各种型号的Arduino板)和软件(Arduino IDE)[10]。它构建于开源的simple I/O介面版并且具有使用类似Java、C语言的良好开发环境。Arduino包含两个主要的部分:硬件部分是可以用来做电路连接的Arduino平台;另外一个则是Arduino IDE你的计算机中只要安装了Arduino IDE用USB连接到它的平台选好对应的COM串口编写出你想要做事情把程序下载到Arduino当中。Arduino平台就会立刻执行它应该做的事情[11]。Arduino开发板的核心是ATMEGA328P单片机它是双列直插式28管脚的芯片其引脚连接Arduino微控制器的模拟端口和数字端口关系图如图2.1所示。0-13号为数字端口其中带有“”的具有PWM输出功能标有A0A5标号的是模拟端口。图2.1Arduino UNO端口与Atmal328P引脚对应图2.7 蜂鸣器提示电路的设计本设计需要一款当按钮按下时会警示按钮被按下的报警提示模块不需要过大的音量。通过蜂鸣器实现报警电路具有电路简单性能可靠、稳定等优点最重要的是低成本。本系统所采用的报警模块为5V有源蜂鸣器模块蜂鸣器直接与图2.4.3中A3引脚相连。打开电源开关当按钮被按下时程序会给A3口一个高电平使蜂鸣器响按钮松开时蜂鸣器停止。蜂鸣器电路图如2.14所示。2.14 蜂鸣器电路2.8 LED指示灯电路的设计本设计中每此探测到黑色循迹路线都应该对应的LED指示灯当小车一侧探测到黑线时指示灯亮反之熄灭。随着线路的不断变化指示灯的亮暗也应该随之变化。图2.15分别为LED左右指示灯电路。图2.15 LED指示灯电路3 项目的软件设计3.1 Arduino的开发环境Arduino的编程语言是基于C语言开发的不过后来又引入C的了面向对象的变成思想这使得现在的Arduino核心库文件采用了C和C混合而成[18]。Arduino的编程语言是指Arduino的给广大开发者们提供的接口(英文名是API)的集合。在Java中接口是一系列方法的声明可以被任何人实现这个接口这和C的面向对象的编程思想有着异曲同工之妙。因此即使我们不懂在传统的开发方式中不懂配置各个寄存之间的关系只要我们调用的相应的接口底层的代码直接就帮我们配置了各个繁杂的寄存器。如下图3.1所示就是一个最基本的Arduino开发环境。图3.1 Arduino开发环境在Arduino的开发环境中最重要的两个方法或函数就是setup()和loop()。其中setup()方法中主要用来做定义变量的操作该方法仅会在Arduino平台通电时运行一次相当于变量的初始化操作。loop()方法是一个不断循环的函数主要用这个方法来控制setup()中已经初始化好的端口。实现一个Arduino最简单的让Arduino开发板上的LED灯闪烁的功能如下图3.2所示[19]。图3.2 点亮Arduino开发板上面的LED灯的程序其中pinMode(int,string)这个被封装好的接口需要两个参数第一个参数类型为整数主要是为了设置我接下来需要使用哪个引脚第二个参数为INPUT或者OUTPUT这样就设置好了引脚的模式这样就初始化为13号端口的引脚。digitalWrite(int,string)这个被封装好的接口需要两个参数第一个参数为定义好的接下来要用到的引脚第二个参数为我要给这个引脚输出的是高电平(HIGH)还是低电平(LOW)。通过这些简单的被封装好的接口我们就能进行快速的开发。3.2 寻迹小车端口初始化在Arduino平台中若想使用一个端口应该进行端口的定义及初始化操作如下图3.3为寻迹小车初始化操作。在主函数的外部定义Arduino控制小车的端口在setup()函数中初始化定义好端口的输出方式。图3.3寻迹小车初始化操作3.3 寻迹小车行进函数若想让小车按照规定的路线前进、转弯、停车等操作应该在不同的方法中对已初始化好的端口进行对应操作小车的直行停止前进函数如下图3.4所示。图3.4 小车的前进和停车函数3.4 单片机主程序介绍主程序流程图如图3.5所示打开转接板上的电源开关后系统进行初始化操作当按键没被按下时程序一直在循环检测按键是否被触发当按键被按下时蜂鸣器响动小车处于启动状态。把小车放在具有黑线的白色寻迹路线上若两侧均没有检测到黑色路线小车会直线行驶当小车一侧检测到黑线另一侧没有检测到黑线时小车会向有黑线的这一侧进行转弯当小车两侧传感器同时检测到黑线时小车停止。图3.5 程序主流程图文章底部可以获取博主的联系方式获取源码、查看详细的视频演示或者了解其他版本的信息。所有项目都经过了严格的测试和完善。对于本系统我们提供全方位的支持包括修改时间和标题以及完整的安装、部署、运行和调试服务确保系统能在你的电脑上顺利运行。

相关新闻

SQL入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

SQL入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

导读: SQL语言有40多年的历史,从它被应用至今几乎无处不在。我们消费的每一笔支付记录,收集的每一条用户信息,发出去的每一条消息,都会使用数据库或与其相关的产品来存储,而操纵数据库的语言正是 SQL &…

2026/7/3 14:29:52 阅读更多 →
Selenium自动化测试入门:python unittest 单元测试框架

Selenium自动化测试入门:python unittest 单元测试框架

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 unittest又名PyUnit, Python单元测试框架(The Python unit testing framework),简称为PyUnit。自从 Python 2.1 版本…

2026/7/3 14:29:54 阅读更多 →
数据资产评估效率低?AI架构师亲测:标准化方法让评估时间缩短50%

数据资产评估效率低?AI架构师亲测:标准化方法让评估时间缩短50%

数据资产评估效率低?AI架构师亲测:标准化方法让评估时间缩短50% 引言:一场关乎数据价值的生死时速 凌晨三点,会议室灯光惨白,王明揉着发胀的太阳穴,盯着屏幕上密密麻麻的数据表。作为一家金融科技公司的数据资产经理,他正带领团队为即将到来的监管数据资产入表要求做最…

2026/7/3 14:29:54 阅读更多 →

最新新闻

基于YOLOv11的果树害虫智能识别系统开发与优化

基于YOLOv11的果树害虫智能识别系统开发与优化

1. 项目概述:基于YOLOv11的果树害虫智能识别系统去年在果园实地调研时,我发现果农们仍在用最原始的方法识别害虫——拿着放大镜一片叶子一片叶子地检查。这种低效的识别方式直接导致虫害防治的滞后性,往往发现时已经造成不可逆的损失。这正是…

2026/7/4 23:43:22 阅读更多 →
如何从‘能聊天’升级到‘让别人愿意主动找你聊’的系统?

如何从‘能聊天’升级到‘让别人愿意主动找你聊’的系统?

一、第一刀:为什么大多数人只能“能聊天”,不能“被找聊”? 因为他们停留在:被动对话系统✔ 特征: 别人发起你回应你维持但不会“积累吸引力”👉 本质:只是“对话节点”,不是“对话源…

2026/7/4 23:41:22 阅读更多 →
基于Playwright与MCP协议实现浏览器自动化与手动操作协同

基于Playwright与MCP协议实现浏览器自动化与手动操作协同

1. 项目概述:当自动化脚本遇上你的手动操作在浏览器自动化测试和爬虫开发的日常里,我们常常面临一个尴尬的割裂:一边是精心编写的Playwright脚本,在无头模式下高效、稳定地执行任务;另一边,则是我们自己手动…

2026/7/4 23:39:21 阅读更多 →
通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能

通过COM组件在Web上实现Kinect骨骼追踪、声控截屏保存的功能

具体实现 第一部分 ActiveX插件的实现 1) 创建一个新的解决方案,叫做MyFirstKinect。 2)接着创建一个Windows窗体控件库,用于做ActiveX的插件,项目叫做MyFirstKinectControl 3)在MyFirstKinectControl项目…

2026/7/4 23:39:21 阅读更多 →
Coze平台AI Agent开发实战与优化技巧

Coze平台AI Agent开发实战与优化技巧

1. Coze平台与AI Agent开发概述作为一名长期从事AI应用开发的工程师,我最近深度体验了Coze平台在AI Agent开发中的实际表现。这个由字节跳动推出的开发平台确实为不同技术背景的用户提供了一种全新的AI应用构建方式。与传统开发模式相比,Coze最显著的特点…

2026/7/4 23:39:21 阅读更多 →
机器学习模型线上稳定性实战:特征一致性、数据漂移与推理容错

机器学习模型线上稳定性实战:特征一致性、数据漂移与推理容错

1. 这不是“跑通模型”就完事的课——它讲的是模型怎么在真实业务里活下来“From Notebook to Production: Running ML in the Real World (Part 4)”这个标题,光看前半句,很多人会下意识划走:又一个讲MLOps流程的泛泛而谈?但关键…

2026/7/4 23:37:20 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻