循迹避障及定距离跟随小车
引言
嵌入式单片机系统因其微小、专业化、方便移动、高可靠性的优点,目前已经在各个行业和领域得到了非常广泛的应用,如工业机器人、现代化军事、计算机国防、移动通信、工业自动化控制等领域。循迹避障及定距离跟随小车作为一种智能行走机器人,具备强大的环境适应性,能够在不同温度、湿度、空间和磁场辐射等条件下稳定运行,完成人类难以进入或无法完成的探测任务,广泛适用于国防及民用等多个领域。
在嵌入式技术应用专业的学习中,我们系统地掌握了嵌入式系统的基本原理、硬件设计、软件编程以及传感器应用等多方面的知识。本项目根据 嵌入式技术应用专业《嵌入式综合实训》课程任务,结合团队成员对嵌入式技术的浓厚兴趣和专业所学,旨在通过开发一款循迹避障及定距离跟随小车,将理论知识与实际应用相结合,提升个人的实践技能和创新能力。

一、系统总体结构设计
1.1 系统简介
本系统具有一般循迹避障及定距离跟随小车的基本功能,即通过超声波和红外对管实现简单的循迹、避障和定距离跟随,在此基本功能的基础上,本系统还设计了通过WIFI控制小车板载小灯点亮或熄灭、小车靠近障碍物通过蜂鸣器报警、采集并记录当前环境的温湿度上云功能。在选取设计方案和采用元器件方面,该系统本着简单实用经济的思想,尽量简化电路设计,用最简单的电路布线和选用最经济实用的器件来达到设计要求。
循迹避障及定距离跟随小车具体以下基本功能:
(1)蓝牙控制:该功能是根据用户的需求通过终端按键进行小车的控制,此功能可以使小车处于系统设计的任意一种工作状态;
(2)循迹功能:该功能使小车跟随特定线路行驶;
(3)避障功能:该功能在小车遭遇障碍物时可以使小车脱险;
(4)定距离跟随功能:该功能使小车可以跟随特定物体。
除基本功能外,本着实用性,小车还设计了拓展功能:
(5)通过小车外置ESP8266模块连接WIFI实现远程点灯;
(6)蜂鸣器报警功能:在小车的避障功能内,小车添置了报警功能,提醒前方和周围人员注意小车,避免产生危险;
(7)温湿度采集和WIFI上云功能:通过 老师《传感网应用开发》课程的学习,使用小车的外置温湿度传感器实时采集温湿度数据,并上传到新大陆云平台;
(8)光照强度采集和WIFI上云功能:通过小车外置光照强度采集传感器,采集实时光照强度并上传到云端。
由于时间所限,拓展功能已在原理图中设计,但具体工程可能并未完全实现,以实际展示效果为准。
需要提请注意的是,由于硬件电路和串口设计的原因,本系统的蓝牙功能和WIFI功能不能同时启用,需要使用蓝牙和WIFI选择短接帽短接以启用有关功能。
1.2 方案设计
整个系统以STM32F103C8T6单片机为核心器件,配合电阻电容晶振等器件,构成单片机的最小系统。其它各个模块围绕着单片机最小系统展开。蓝牙模块使用HC-05主从机一体蓝牙模块,通过蓝牙控制小车的全部功能,避免使用多个按键占用小车整体空间;红外对管模块使用四路或两路TCRT5000红外反射传感器,识别小车下方深色路线,跟随线路行驶;舵机和超声波传感器模块可以实时采集前方数据,在小车距离障碍物一定距离时自动后退或转向,并驶出障碍区域;使用超声波传感器实时读取传感器距离被跟随物体,在被跟随物体向特定方向移动至一定距离后,小车前进或后退,实现引领和跟随功能;小车采用9V或12V电源供电,推荐使用9V电池以保证小车的工作稳定性。

循迹避障及定距离跟随小车(简称“小车”)以模块化设计思想为主导,主要由STM32F103C8T6核心板模块、电源模块、稳压器模块、电机驱动模块、蓝牙模块、OLED显示模块、舵机模块、超声波模块、红外模块组成。
小车的循迹工作流程是,由红外模块自动识别小车下方的深色线条,通过蓝牙控制开启循迹功能,小车沿着线条前进。小车避障的工作流程是,由超声波模块自动识别前方障碍物距离,由蓝牙控制开启避障功能,舵机模块开始工作,通过旋转超声波模块获取小车前方180度范围内的障碍物,自动选择最优方向前进。小车的定距离跟随工作流程是,由超声波模块自动识别被跟随物体的距离,在被跟随物体向特定方向移动到一定距离以后小车前进或后退。
二、 硬件设计
2.1 单片机最小系统板及拓展排针设计
单片机最小系统包括STM32F103C8T6单片机、复位电路、时钟电路构成。单片机最小系统示意图如图*所示。STM32F103C8T6单片机是意法半导体公司生产的ARM系列 32位Cortex-M3 CPU,采用WSD方法调试,具备体积小、高性能的特点。

2.2 电源输入和稳压模块设计
电源输入模块采用母头接口,使用9V或12V电源供电,在电源转换模块将电源电压转换为STM32F103C8T6单片机和其它组件所需的电压,确保供电系统稳定。其高效的的电压转换能力有助于延长电池的使用时间。

2.3 蓝牙模块设计
本项目采用了HC-05蓝牙模块,用于实现蓝牙的无线控制,允许用户通过手机终端或遥控器发送指令。蓝牙通信使用方便,成本低、通信距离适中,非常适合用于小型智能设备的无线控制。

2.4 WIFI通讯模块设计
本项目采用了ESP8266 WIFI通讯模块,用以实现WIFI无线控制和实时上传传感器数据,通过WIFI实现数据和指令的远程传输,使远程控制小车和接收小车采集到的传感器数据成为可能。

2.5 电机及其驱动模块设计
本项目采用了TB6612直流电机驱动模块,通过控制AO和AO2高低电平控制AIN1和AIN2输出,采用PWM调控电机转速,驱动直流减速电机。

2.6 OLED模块设计
OLED屏幕用于实时显示小车的状态信息,如速度、电池电量和障碍物距离。OLED屏幕具有高对比度、低功耗和广视角的特点,适合在小型智能设备上进行信息显示。

2.7 超声波模块设计
超声波模块用于检测前方障碍物的距离,提供实时的测距信息。其测量精度高、反应速度快,对实现自动避障功能非常重要。

2.8 舵机模块设计
舵机模块负责驱动小车的前置电机,带动超声波模块转换方向,在避障时发挥积极作用。

2.9 红外对管设计
本项目采用了TCRT5000红外对管,红外发射器一直发射红外线,红外线经反射后被接收,此时输出低电平,输出指示灯点亮。黑色是不反射红外线的,也就是说循迹模块遇到黑线,模块输出高电平,输出指示灯熄灭。

2.10 光照模块设计
光照模块负责采集当前环境的光照强度,采集数据可以通过WIFI上传到云平台。

2.11 蜂鸣器模块设计
蜂鸣器用于在遇到障碍物或电池电量低时发出声音报警。其体积小、声音大、反应迅速,适合作为报警装置。

2.12 温湿度模块设计
温湿度模块负责采集温湿度数据,其数据可以通过WIFI数据上传至云平台。

2.13 其他模块设计
2.13-1 WIFI或蓝牙选择模块设计
通过短接冒选择WIFI或蓝牙通信。
2.13-2 外接串口调试口设计
外界调试串口可以直接连接外设,为调试提供方便和备份。
2.13-3 用户按键设计
用户按键用于按键控制小车。
2.13-4 ADC采样模块设计
测量电压值。
2.14 小车原理图

2.15 小车PCB图


2.16 实物焊接
焊接稳压模块时,由于模块连接较近,容易将附件的焊锡粘连。可以采用事先融化一些焊锡在焊枪上,再轻轻接触原件。
焊接较小贴片时,也可以采取上述方案,先将一个引脚覆盖少量焊锡,再将原件用镊子固定,用高温焊枪融化焊盘上的覆锡,固定一边引脚后,再固定另一边。
三、软件设计
3.1 系统整体结构设计
主函数
|While循环
|-蓝牙控制【终端按键,以老师提供的蓝牙调试器为例】
|–前进【UP】
|–后退【DOWN】
|–左转【LEFT】
|–右转【RIGHT】
|–停止【OK】
|–显示组别、超声波测距值、当前电压值【1】
|–启动WIFI点灯功能【2】
|–清屏【3】
|–启动循迹模式【4】
|–启动避障模式【5】
|–启动定距离跟随模式【6】
具体代码另行更新,如有需要可以直接联系。
四、系统调试及功能实现
4.1 系统调试
系统调试遵循 “分模块测试 - 整体联调 - 优化迭代” 的原则,逐步排查并解决问题,确保小车功能正常运行。在系统调试的初始阶段,我们对各个硬件模块进行了详尽的单独测试。利用 STM32 的 GPIO 输出信号,我们精确控制了直流电机的正反转及速度,以确保其正常运行。对于红外传感器模块,我们将其置于综合楼407的黑色线条上,以此检验传感器输出信号是否符合理论预期。按键模块则通过一个简明的按键检测程序,验证了按键功能的准确性。蓝牙 HC05 模块在串口调试工具的帮助下,进行数据的发送与接收,以此确认通信链路的畅通无阻。超声波 SR04 模块通过对已知距离物体的测量,验证了测距功能的精准度。电池电压显示 ADC 模块则通过调整电池电压,检查读取电压值的准确性。最后,ESP8266 模块通过发送 AT 指令,测试了其连接 WIFI以及发送请求的能力。
在所有模块的单独测试均顺利通过后,我们进入了系统的联合调试阶段。通过精心编写主程序,将各个模块的功能无缝集成,使小车能够在循迹模式下自动前行,并在遇到障碍物时能够自动避障。同时,我们还实现了通过蓝牙遥控小车的运动操作,并通过WIFI 实现了远程点灯功能,同时实时显示电池电压。在整个调试过程中,我们不断优化算法和参数,旨在提升系统的稳定性和可靠性。
4.2 各模块的电路功能实现
循迹避障及定距离跟随小车具体以下基本功能:
4.2.1 蓝牙控制
功能使用HC-05蓝牙模块,根据用户的需求通过手机终端按键进行小车的控制,此功能可以使小车处于系统设计的任意一种工作状态;
4.2.2 循迹功能
该功能使小车跟随特定线路行驶,通过 TCRT5000 红外传感器检测地面的黑线轨迹,当小车偏离轨道时,相应的传感器输出信号变化;
4.2.3 避障功能
该功能使用超声波模块和舵机模块,测距避障,定期检测前方障碍物的距离,当距离小于设定阈值时,控制小车停止或转向,在小车遭遇障碍物时可以使小车脱险;
4.2.4 定距离跟随功能
该功能使用超声波模块,当小车在大于或小于一定距离时,小车前进或后退,控制小车可以跟随特定物体。
4.2.5 WIFI远程点灯功能
该功能使用小车的ESP8266模块,通过中国移动OneNet云平台发送数据,当小车接到数据后,控制板载小灯点亮或熄灭。
除基本功能外,本着实用性,小车还设计了拓展功能:
4.2.6 蜂鸣器报警功能
在小车的避障功能内,小车添置了报警功能,提醒前方和周围人员注意小车,避免产生危险;
4.2.7 温湿度采集和WIFI上云功能
通过《传感网应用开发》课程的学习,使用小车的外置温湿度传感器实时采集温湿度数据,并上传到新大陆云平台;
4.2.8 光照强度采集和WIFI上云功能
通过小车外置光照强度采集传感器,采集实时光照强度并上传到云端。
由于时间所限,拓展功能已在原理图中设计,但具体工程可能并未完全实现,以实际展示效果为准。
五、课程设计总结
5.1 课程设计总结
经过本次《嵌入式综合实训》的循迹避障及定距离跟随小车课程设计,我们对 STM32F103C8T6 主芯片的应用开发有了更深入的了解和掌握,同时也熟悉了 TB6612电机驱动模块、TCRT5000 红外传感器模块、蓝牙HC-05模块、超声波SR04模块、电池电压显示ADC模块和ESP8266 模块的使用方法。在硬件设计过程中,我们学会了根据实际需求选择合适的芯片和模块,并进行精确的电路设计和连接。在软件设计方面,我们掌握了 STM32 的 GPIO 控制、PWM 输出、串口通信、ADC 采集等编程技术,并能够编写多模块协同工作的复杂程序。通过实际的调试和测试,我们增强了发现问题、分析问题和解决问题的能力。本次课程设计不仅巩固了我们所学的嵌入式知识,也使我对嵌入式系统开发的理解更进一步。
5.2 本项目的不足之处
5.2.1 循迹模块安装和间距
在组装小车之初,我们应用课程示例将超声波模块置于侧面,四组循迹模块置于小车中间。在调试过程中,我们发现小车出现“摇头摆尾”的情况,循迹过程中不稳定,容易冲出黑线。
在调试过程中,我们发现并改进了最初的安装方式。我们将超声波模块改装到小车中心,并将四组红外对管两两一组置于小车底板侧方,且与小车行进方向水平对齐。为了避免小车快速感应,可以适当调宽两组循迹模块的距离,增加小车在黑线行进时的宽容度。
经过调整后,小车在循迹模块可以在各类黑线稳定行走。
5.2.2 代码模块化设计和打包
在学习之初,我们将大量函数都置于主函数main.c文件中,经过长期开发,主函数代码库中积累了大量函数名称,臃肿且繁杂。我们根据代码模块化的设计思路,自行分类打包了超声波模块、蓝牙模块、寻迹模块、WIFI模块等模块的驱动文件,并将头文件置于相应.h文件中,极大减少了主函数和函数循环中的代码,主函数文件可以实现仅需一条函数控制全部功能,且在专用模块中清晰可见,极大方便和调用函数功能,增强了代码的实用性和可读性。
5.2.3 蓝牙连接及情况储存器命令挤压
由于蓝牙连接不畅,经常导致小车启动后断联,我们通过编写函数和重启小车、复位系统对此进行了改进,并直接使用外接调试串口连接蓝牙模块,经过改进后,情况有所好转。
在蓝牙开发和调试过程中,我们发现蓝牙有时无法控制或不够灵敏,可以通过清空标志位的方式减少储存器中的命令积压,保证了代码的高效运行。
5.3 项目展望
随着现代社会的智能化和太空探索技术的高速发展,可以使用小车的ESP8266模块或添加一个无线电收发模块远程控制小车,使小车前往人类无法抵达的边疆,探索人类无法到达的远方。
部分内容省略。
参考资料:
[1] 妄北y. 基于STM32F103C8T6的智能小车设计:自动寻迹、避障与无线控制全解析 [EB/OL]. CSDN博客, 2025-01-13. https://blog.csdn.net/qq_62634009/article/details/145074327.
最后更新日期:2025-06-25