基于STM32的智能市政清洁小车系统设计
摘 要
随着城市化进程的不断加快,市政道路与公共区域的清洁维护任务日益繁重,传统的人工清扫方式存在效率低下、人力成本高昂以及在恶劣环境下作业风险较高等痛点。为提升城市清洁作业的自动化与智能化水平,本设计研发了一套基于STM32单片机的智能市政清洁小车系统。该系统以STM32F103C8T6作为核心控制器,构建了包含红外循迹、超声波避障、尘满检测、水泵洒水、电机驱动清扫、语音播报以及OLED显示等多功能于一体的嵌入式解决方案。硬件上,系统整合了TCRT5000红外传感器实现路径识别,利用HC-SR04超声波传感器实时探测障碍物,并通过TC1508A电机驱动模块控制小车运动;同时,设计者将水泵、直流电机驱动的风扇以及毛刷相结合,共同构成了清扫执行单元,并集成语音模块用于作业提示。软件上,设计了主控制逻辑、循迹与避障协调算法以及清洁任务的自动执行流程,实现了小车在预设路径上的自主导航、动态避障与自动化清洁作业。
经过系统性的硬件搭建、软件编程与联合调试,测试结果表明,该智能清洁小车能够稳定地沿黑色轨迹行驶,在遇到近距离障碍物时能及时停止并触发避障逻辑;清洁功能(洒水、清扫)可随小车启动而自动运行,并在遇到障碍物时暂停,待障碍物解除后恢复;语音模块能够按照设计要求在清洁作业时播放提示音。系统各项功能运行稳定,响应及时,达到了预期的设计目标,为市政环卫工作的智能化升级提供了一种成本可控、技术可行的参考方案。
关键词:STM32单片机;智能清洁小车;循迹避障;自动控制;市政清洁
Design of Intelligent Municipal Cleaning Cart System Based on STM32
Abstract
Against the backdrop of accelerating urbanization, the task of cleaning municipal roads and public areas is becoming increasingly heavy. Traditional manual cleaning methods suffer from low efficiency, high labor costs, and high operational risks in harsh environments. To enhance the automation and intelligence level of urban cleaning operations, this design develops an intelligent municipal cleaning cart system based on the STM32 microcontroller. The system uses the STM32F103C8T6 as the core controller, building an embedded solution that integrates multiple functions including infrared tracking, ultrasonic obstacle avoidance, dust fullness detection, water pump spraying, motor-driven sweeping, voice broadcasting, and OLED display. In terms of hardware, the system integrates TCRT5000 infrared sensors for path recognition, an HC-SR04 ultrasonic sensor for real-time obstacle detection, and a TC1508A motor driver module for motion control. Simultaneously, the water pump, a DC motor-driven fan, and a brush are combined to form the cleaning execution unit, with a voice module integrated for operational prompts. For software, the design includes the main control logic, a coordination algorithm for tracking and obstacle avoidance, and an automated cleaning task execution process, enabling the cart to perform autonomous navigation, dynamic obstacle avoidance, and automated cleaning along a preset path.
Through systematic hardware construction, software programming, and joint debugging, test results show that the intelligent cleaning cart can stably follow a black trajectory. Upon detecting a nearby obstacle, it can stop promptly and trigger the obstacle avoidance logic. The cleaning functions (spraying and sweeping) activate automatically with the cart's startup and pause when an obstacle is encountered, resuming after the obstacle is cleared. The voice module plays prompt tones as designed during cleaning operations. The system demonstrates stable performance and timely responses across all functions, meeting the expected design goals. This provides a cost-controllable and technically feasible reference solution for the intelligent upgrade of municipal sanitation work.
****Key words:****STM32 microcontroller; Intelligent cleaning cart; Tracking and obstacle avoidance; Automatic control; Municipal cleaning
目 录
[第一章 绪论](#第一章 绪论)
[1.1 选题背景及其意义](#1.1 选题背景及其意义)
[1.2 国内外研究现状](#1.2 国内外研究现状)
[1.2.1 国内发展现状](#1.2.1 国内发展现状)
[1.2.2 国外发展现状](#1.2.2 国外发展现状)
[1.3 主要内容](#1.3 主要内容)
[1.4 文章结构](#1.4 文章结构)
[1.5 本章小结](#1.5 本章小结)
[第二章 系统总体方案设计](#第二章 系统总体方案设计)
[2.1 系统需求分析](#2.1 系统需求分析)
[2.2 系统总体设计方案](#2.2 系统总体设计方案)
[2.3 主要模块选型](#2.3 主要模块选型)
[2.3.1 主控芯片选择](#2.3.1 主控芯片选择)
[2.3.2 显示模块选择](#2.3.2 显示模块选择)
[2.3.3 电机驱动模块选择](#2.3.3 电机驱动模块选择)
[2.4 本章小结](#2.4 本章小结)
[第三章 硬件系统设计](#第三章 硬件系统设计)
[3.1 STM32F103C8T6最小系统电路](#3.1 STM32F103C8T6最小系统电路)
[3.2 循迹模块电路设计](#3.2 循迹模块电路设计)
[3.3 超声波避障模块电路设计](#3.3 超声波避障模块电路设计)
[3.4 电机驱动模块电路设计](#3.4 电机驱动模块电路设计)
[3.5 清洁执行模块电路设计](#3.5 清洁执行模块电路设计)
[3.6 语音提示模块电路设计](#3.6 语音提示模块电路设计)
[3.7 尘满检测与显示电路设计](#3.7 尘满检测与显示电路设计)
[3.8 整体电路综合分析](#3.8 整体电路综合分析)
[3.9 本章小结](#3.9 本章小结)
[第四章 软件系统设计](#第四章 软件系统设计)
[4.1 主程序设计](#4.1 主程序设计)
[4.2 循迹子程序设计](#4.2 循迹子程序设计)
[4.3 超声波避障子程序设计](#4.3 超声波避障子程序设计)
[4.4 清洁与语音协同子程序设计](#4.4 清洁与语音协同子程序设计)
[4.5 本章小结](#4.5 本章小结)
[第五章 系统测试与分析](#第五章 系统测试与分析)
[5.1 系统整体测试](#5.1 系统整体测试)
[5.2 系统功能测试](#5.2 系统功能测试)
[5.2.1 循迹功能测试](#5.2.1 循迹功能测试)
[5.2.2 避障与清洁联动功能测试](#5.2.2 避障与清洁联动功能测试)
[5.2.3 清洁与语音提示功能测试](#5.2.3 清洁与语音提示功能测试)
[5.2.4 尘满检测与显示功能测试](#5.2.4 尘满检测与显示功能测试)
[第六章 结论](#第六章 结论)
[6.1 总结](#6.1 总结)
[6.2 展望](#6.2 展望)
[致 谢](#致 谢)
[附录A 整体电路图](#附录A 整体电路图)
[附录B 程序代码](#附录B 程序代码)
第一章 绪论
1.1 选题背景及其意义
城市公共卫生是衡量一个城市文明程度和管理水平的重要指标。随着我国城镇化率的持续攀升,城市道路、广场、公园等公共区域的保洁面积大幅增加,对清洁工作的效率和质量提出了更高要求。目前,国内多数城市的道路清洁仍主要依赖环卫工人手持工具进行巡回清扫,这种传统模式不仅劳动强度大、作业效率低,而且在严寒、酷暑、雾霾或交通繁忙的路段,环卫工人面临较大的健康与人身安全风险。与此同时,人口老龄化趋势的加剧正在导致适龄劳动力供给减少,环卫行业"招工难、留人难"的问题日益凸显。因此,探索一种能够替代或辅助人工完成基础清扫任务的智能化设备,具有显著的社会价值和现实紧迫性。智能清洁小车作为一种移动机器人技术的具体应用,能够自主完成路径跟踪、障碍躲避和地面垃圾清理等工作,可以有效降低人力依赖,提升作业的一致性与安全性。将此类技术引入市政环卫领域,不仅能优化资源配置,还能推动城市公共服务向着更加精细化、智能化的方向发展。本设计正是基于这一现实需求,旨在开发一套成本适中、功能集成、运行可靠的智能清洁小车系统,为市政清洁工作的自动化转型提供一种可行的技术方案。
1.2 国内外研究现状
1.2.1 国内发展现状
国内在智能化清洁设备领域的研究起步稍晚,但近年来发展迅速,众多学者和技术人员围绕单片机控制、传感器应用以及自动化系统集成开展了大量富有成效的工作。徐梅(2005)对多种类型的单片机进行了简要介绍,分析了各自的特点与应用领域,为后续研究者在嵌入式系统开发中的芯片选型提供了基础性的参考依据9。于建勇(2011)深入浅出地探讨了时钟电路在单片机系统运行中的核心作用,强调了稳定时钟源对于保障程序时序正确与系统可靠性的重要意义10。在此基础上,喻丽丽、朱艳、吴婷(2023)设计了一套基于单片机的温度控制系统,详细阐述了传感器数据采集、控制算法执行以及输出调节的实现方法,这一思路对于需要环境参数感知的智能设备具有普遍的借鉴价值11。张炳贵、杨佳(2024)则进一步将单片机技术与物联网概念结合,设计了一套基于Linux的水产养殖监测及智能投喂系统,展示了嵌入式系统在远程监控与自动化作业领域的强大潜力,其中涉及的数据上传与指令下发逻辑,与本设计中的传感器数据上报和执行器控制有相似之处12。束仁义等人(2024)针对STC12C5A60S2单片机的显示模块进行了深入的实验研究,探讨了字符与图形信息的稳定呈现方法,这对于需要人机交互界面的嵌入式设计具有良好的指导作用13。孟庆涛等人(2014)对实时时钟电路在单片机系统中的仿真设计进行了研究,强调了时间基准对于顺序控制任务的重要性154。徐敏(2022)基于STC89C52单片机完成了蜂鸣器的驱动设计与实现,研究了不同频率的脉冲信号如何产生特定的提示音,这一成果为本设计中的语音提示功能提供了基础的技术支撑15。在面向具体应用的开发方面,张梦君、任莉(2025)基于STM32平台设计了一套宠物远程监控装置,实现了对宠物状态的异地查看,验证了STM32在数据采集与无线传输应用中的高可靠性16。石楚伦等人(2024)则开发了一款基于STM32的宠物自动喂食器,通过集成传感器与执行机构,实现了定时定量的自动化喂养,其机电协同控制的逻辑对设计多执行器联动的系统很有启发17。特别值得一提的是,高婉婷、曳永芳(2023)直接针对智能小车的避障系统进行了基于STM32的设计,详细阐述了超声波传感器测距原理以及电机控制策略,为移动机器人自主导航功能的确立提供了直接且成熟的参考方案18。以上研究从基础的单片机原理、外围电路驱动,到具体的传感器融合与运动控制,为本智能清洁小车系统的设计构建了坚实的技术基础。
1.2.2 国外发展现状
相较于国内,国外在自动化清洁设备领域的研究起步更早,尤其在机器人定位、导航与路径规划等核心算法方面积累了深厚的理论基础,并已成功将多项技术转化为成熟的商业产品。在基础技术研究层面,Gundogdu Y M (2003)对用于产生悬浮气流的旋转阀式颗粒供给器进行了设计改进,该项研究虽然直接面向工业物料处理,但其对微细颗粒物(如灰尘)的定量、稳定输送与控制方法进行了深入探讨,为清洁设备中粉尘收集与过滤系统的优化设计提供了重要的工程参考19。这一研究体现了国外学者在解决自动化清洁设备底层物理问题上的严谨性。在整机系统层面,以iRobot公司的Roomba系列扫地机器人为代表,国外产品已经历了多次技术迭代,从最初的随机碰撞式清扫发展到如今基于摄像头或激光雷达(LDS,即激光测距与建图技术)的全局规划式清扫,实现了对室内环境的高效覆盖与智能分区。同时,诸如德国Kärcher等厂商也推出了面向大型工商业和市政场所的无人驾驶式清扫车,这些设备融合了高精度GPS、惯性导航、多线激光雷达等多种传感器,能够在复杂的半结构化环境中自主作业、自动充电和远程调度。这些成熟的技术路线与产品形态表明,国外在清洁机器人的产业化与复杂场景适应性方面处于领先地位,其系统架构思想和多传感器融合策略对本设计在市政环境下的应用拓展具有重要的参考价值。
1.3 主要内容
本设计围绕市政道路自动清洁这一具体应用场景,以STM32F103C8T6单片机作为主控核心,构建一套集自主循迹、动态避障、自动清扫、洒水降尘及语音提示功能于一体的智能小车系统。在硬件层面,系统将采用TCRT5000红外传感器模块组成循迹单元,用于识别预设的黑色引导路径;利用HC-SR04超声波传感器实时监测前方障碍物距离,为避障决策提供依据。运动控制部分选用TC1508A电机驱动模块,分别控制左右直流电机的转速与转向,实现小车的前进、后退与转弯动作。清洁执行机构包括由MOS管控制的水泵模块,用于洒水降尘;一个直流电机驱动风扇并配合毛刷,模拟地面垃圾的清扫与收集。此外,系统还将集成单线语音模块,在启动清洁任务时自动播放提示语音,以及一个OLED显示屏用于显示小车当前工作状态。在软件层面,将编写C语言程序实现主控逻辑,包括传感器数据采集与处理、基于有限状态机的循迹与避障模式切换、清洁执行机构的联动控制策略,并通过模块化编程思想对各功能子程序进行封装与调度,最终使小车能够沿着指定路径自主行驶,在遇到障碍物时停止清洁并等待或避让,绕过后自动恢复作业,从而实现对目标区域的自动化清洁任务。
1.4 文章结构
本论文共分为六个章节。第一章为绪论,主要阐述了智能市政清洁小车的研究背景与意义,通过文献综述分析了国内外相关领域的发展现状,并介绍了本文的主要研究内容。第二章为系统总体方案设计,首先进行了详细的需求分析,确定了设计目标与技术指标,然后给出了系统的整体硬件框架和软件功能架构,并对主控芯片、显示模块等关键元器件进行了选型对比。第三章为硬件系统设计,详细介绍了STM32最小系统电路以及各个功能模块(循迹、避障、清洁、语音、显示等)的电路原理、接口定义及其与主控芯片的管脚连接。第四章为软件系统设计,描述了系统的主程序流程以及各子模块(如循迹、避障、清洁控制)的程序设计思路与实现逻辑,并给出了相应的程序流程图。第五章为系统测试与分析,通过搭建测试平台,对系统的各项功能进行了详细的测试,并展示和分析测试结果。第六章为总结与展望,对全文工作进行了总结,指出了设计中存在的不足,并对未来的改进方向进行了展望。
1.5 本章小结
本章首先从城市化进程带来的环卫挑战和人力成本上升的现实问题出发,阐述了设计一款智能市政清洁小车的必要性和积极意义。随后,通过系统性的文献回顾,梳理了国内在单片机应用、传感器驱动及自动控制系统方面的研究成果,以及国外在清洁机器人底层技术和产业化方面的领先优势,明确了本设计的技术起点与可借鉴之处。最后,对本文的主要研究内容和全文各章节的安排进行了概述。通过本章的论述,确立了本设计的研究价值和技术路线,为后续章节的具体设计与实现工作奠定了良好的基础。
第二章 系统总体方案设计
2.1 系统需求分析
为实现市政道路的自动化清洁任务,本系统需具备自主移动和环境感知两大核心能力。基于此,设计目标如下:小车能够稳定识别并跟随一条宽度为15-20毫米的黑色轨迹,在直线路径上行驶时左右偏移量不超过5厘米;具备障碍物检测能力,当小车前方30厘米内出现高度超过5厘米的障碍物时,系统应在0.5秒内做出响应,控制小车停止前进;在无障碍物时,清洁功能(洒水和清扫)应持续运行,而一旦检测到障碍物并停车,清洁功能应自动暂停,以避免空转或造成二次污染;当障碍物移除后,小车应能自动恢复行驶并重新启动清洁功能。此外,小车需在每次启动清洁任务时自动播放一次"开始清扫"的语音提示,以提醒周围行人。整个系统应能在5V或12V直流供电下稳定工作,并具备基本的尘满检测功能,当集尘装置需要清理时发出提示。通过上述具体参数的设定,本设计的硬件选型与软件逻辑开发均有明确的目标,确保最终成果是一个功能完整、响应可靠的实用系统。
2.2 系统总体设计方案
本设计采用模块化的思想,以STM32F103C8T6单片机为核心,构建了一个集感知、决策、执行与交互于一体的智能清洁小车系统。系统总体硬件方案框图如图2-1所示。STM32单片机作为控制中枢,负责协调所有外设模块的工作。感知单元包括左右两个TCRT5000红外循迹模块,用于采集路径信息;一个HC-SR04超声波模块,用于测量与前方障碍物的距离;一个红外尘满检测模块,用于监测集尘盒状态。决策与逻辑控制均由单片机内部程序完成,它根据循迹模块的数据决定小车的行进方向,根据超声波数据决定是否触发避障与暂停清洁任务,并根据尘满检测结果决定是否发出提示。执行单元主要包括:由TC1508A驱动模块控制的左右直流电机,负责小车的运动;一个由MOS管控制的水泵,用于洒水;一个直流电机驱动的风扇,与毛刷配合模拟清扫;一个吸尘器继电器,用于控制吸尘电机的启停;一个单线语音模块,用于播报提示音。交互与显示单元由一个OLED12864显示屏构成,用于实时显示小车的工作状态、清洁次数或故障代码。各模块各司其职,通过STM32的GPIO引脚进行连接与控制,共同完
|---|------------------------------------------------------------|
| |
| |
|
成从环境感知到动作执行的完整闭环。
图2-1 系统总体硬件方案框图
2.3 主要模块选型
本小节将对系统中的关键模块进行方案对比与选择,以确保系统性能、成本及开发难度之间的平衡。
2.3.1 主控芯片选择
方案一:采用STC89C52单片机。该芯片是经典的8位微控制器,基于8051内核,技术成熟,学习资料丰富,开发环境简单,且成本极低。然而,其处理速度相对较慢,最高工作频率约为35MHz,运行内存(RAM)仅512字节,程序存储空间为8KB,对于需要同时处理多个传感器数据、运行复杂逻辑控制算法以及驱动多个外部设备的应用场景,其资源显得捉襟见肘,可能无法满足系统流畅运行的需求。方案二:采用STM32F103C8T6单片机。该芯片是基于ARM Cortex-M3内核的32位微控制器,主频可达72MHz,拥有64KB的Flash和20KB的RAM,处理能力强,能够轻松应对多任务并发处理。它集成了丰富的片上外设,包括多个16位定时器、多个USART、I2C、SPI接口以及多达37个GPIO引脚,非常适合连接本设计中众多的传感器和执行模块。其开发环境Keil MDK成熟稳定,代码库丰富。STM32F103C8T6单片机实物如图2-2所示。
|---|------------------------------------------------------------|
| |
| |
|
图2-2 STM32F103C8T6单片机实物图
结论:本系统需要同时处理循迹、超声波测距、电机PWM控制、语音播放、状态显示等多个任务,对主控芯片的处理能力和接口数量有较高要求。STC89C52的资源难以满足设计需求,而STM32F103C8T6凭借其强大的性能、丰富的外设和良好的生态系统,能够为本设计提供稳定可靠的核心支持。因此,选择STM32F103C8T6作为本系统的主控制器。
2.3.3 电机驱动模块选择
方案一:采用L298N电机驱动模块。该模块是一款经典的电机驱动芯片,可以驱动两个直流电机或一个步进电机,驱动能力强,最大工作电流可达2A。但其缺点是体积较大,芯片自身功耗较高,且会产生较大的电压降,逻辑控制部分需要单独的5V供电,电路连接相对复杂。
|---|------------------------------------------------------------|
| |
| |
|
方案二:采用TC1508A电机驱动模块。该芯片是一款专用于低压直流电机驱动的集成电路,内部集成了H桥电路,可以方便地实现电机的正反转、制动和调速功能。它支持2.5V至7.2V的宽电压输入,输出电流可达1.5A,足以驱动小型直流电机。其外围电路非常简单,无需额外元件,采用标准TTL逻辑电平控制,与STM32的GPIO可直接连接。TC1508A模块实物如图2-4所示。
图2-4 TC1508A电机驱动模块实物图
结论:本设计中的清洁小车采用小型直流电机驱动,对驱动电流的要求不高,但对系统的体积、功耗和连接便捷性有一定要求。L298N模块虽然驱动能力强,但体积和功耗偏大。TC1508A模块以其小体积、低功耗、控制简单的优势,更适合本设计。因此,选择TC1508A作为小车的电机驱动模块。
2.4 本章小结
本章对智能市政清洁小车系统进行了整体的方案设计。首先,基于实际应用场景提出了具体的设计目标与技术参数,明确了系统应具备的自主循迹、动态避障、自动清洁与人机交互等功能。随后,构建了以STM32F103C8T6为核心的硬件方案框图,并详细阐述了各功能模块在系统中的角色。最后,对主控芯片、显示模块和电机驱动模块进行了方案对比与选型论证,确定了STM32F103C8T6、0.96寸OLED和TC1508A作为最终选择。通过本章的工作,明确了系统的技术路径和构成,为后续详细的硬件电路设计和软件程序开发奠定了坚实的基础。
第三章 硬件系统设计
3.1 STM32F103C8T6最小系统电路
STM32F103C8T6最小系统是保证单片机正常工作的基本电路单元,包括电源电路、时钟电路、复位电路和程序下载电路。电源电路为芯片提供稳定的3.3V工作电压。系统通过USB接口或外部端子输入5V直流电,经过AMS1117-3.3线性稳压器转换为3.3V,供给STM32及其外围电路。在每个电源引脚附近均并联了0.1μF的陶瓷电容,用于滤除高频噪声。时钟电路为单片机提供工作节拍,由8MHz无源晶振和两个22pF的负载电容构成外部高速时钟,经过芯片内部PLL倍频后可得到72MHz的系统时钟;此外,一个32.768kHz的晶振为实时时钟提供精确的低速时钟。复位电路采用简单的阻容复位方式,当按键按下时,RESET引脚被拉低,系统复位。程序下载电路采用SWD两线式调试接口,仅需SWDIO和SWCLK两个引脚即可完成程序的下载和在线调试,大大简化了电路连接。STM32F103C8T6最小系统电路原理如图3-1所示。

图3-1 STM32F103C8T6最小系统电路原理图
3.2 循迹模块电路设计
本设计采用TCRT5000红外反射式光电传感器来实现循迹功能。该传感器模块工作原理基于不同颜色表面对红外线的反射能力差异,黑色路面吸收大部分红外线,反射较弱;白色路面则反射较强。模块集成了一个红外发射管和一个红外接收头,接收头输出的是数字电平。当检测到白色路面时,模块输出低电平;检测到黑色路径时,输出高电平。这种数字输出方式使得单片机无需进行模数转换,直接读取GPIO电平即可判断。本设计共使用两个循迹模块,分别放置在小车底盘的左右两侧,用于检测黑色轨迹的边缘。左循迹模块的输出引脚直接连接到STM32的PA0引脚,右循迹模块的输出引脚连接到PA1引脚。通过读取这两个引脚的电平状态组合,主控芯片即可判断小车相对于引导线的位置,从而决策是直行、左偏还是右偏。该模块供电电压为5V,由系统电源直接提供。循迹模块电路原理如图3-2所示。

图3-2 循迹模块电路原理图
3.3 超声波避障模块电路设计
为实现障碍物检测功能,本设计选用了HC-SR04超声波测距模块。该模块通过发射超声波脉冲并接收回波的时间差来计算与前方物体的距离,具有探测距离远、盲区小、精度高的特点。模块共有四个引脚:VCC、GND、Trig和Echo。工作时,STM32通过一个GPIO引脚向Trig引脚输出一个持续10微秒以上的高电平脉冲,触发模块内部电路发射8个40kHz的超声波。模块接收到回波后,会通过Echo引脚输出一个高电平,高电平的持续时间即为超声波从发射到返回所经过的时间。STM32通过另一个GPIO引脚捕获Echo引脚高电平的持续时间,再根据声速(340m/s)计算出距离,计算公式为:距离 = 高电平持续时间 × 340m/s / 2。本设计中,将超声波模块的Trig引脚连接至STM32的PB15引脚,Echo引脚连接至PB14引脚。由于Echo输出的是5V高电平,而STM32的GPIO容忍3.3V,因此在电路中串联了一个1kΩ的限流电阻进行电平匹配,以防止损坏单片机引脚。超声波模块电路原理如图3-3所示。

图3-3 超声波模块电路原理图
3.4 电机驱动模块电路设计
小车运动由两个直流减速电机驱动,分别控制左右轮。为了实现电机的正反转、调速及制动,本设计选用了TC1508A电机驱动芯片。该芯片内部集成了两个完整的H桥电路,其控制逻辑简单:两个输入引脚IN1和IN2控制一个电机的输出OUT1和OUT2。当IN1为高、IN2为低时,电机正转;反之则反转;两者电平相同,则电机停止。电机的转速通过向IN1或IN2引脚输入PWM信号进行控制。本系统使用STM32的四个GPIO引脚分别连接TC1508A的两个通道输入。具体连接如下:PB6和PB7引脚分别连接至左电机的IN1和IN2;PB8和PB9引脚分别连接至右电机的IN1和IN2。通过向这些引脚输出不同占空比的PWM波形,可以精细地控制小车的行进速度与转向角度。模块的VCC引脚接系统5V电源,GND与系统地共地。电机驱动模块的电路连接确保了主控芯片能够可靠地控制小车的所有运动状态。电机驱动模块接口电路原理如图3-4所示。

图3-4 TC1508A电机驱动模块接口电路原理图
3.5 清洁执行模块电路设计
本设计的清洁功能包括洒水和清扫两部分。洒水功能由一个小型直流水泵实现,清扫功能由一个直流电机驱动的风扇与毛刷协同完成。考虑到水泵和风扇电机均为感性负载,直接使用STM32的GPIO驱动会导致芯片烧毁,因此设计采用MOS管作为电子开关进行控制。本设计选用一个低内阻的N沟道MOS管,其漏极连接负载的负极,源极接地,栅极通过一个10kΩ电阻下拉至地,并由STM32的GPIO引脚直接驱动。当PB13引脚输出高电平时,MOS管导通,负载(水泵和风扇)的供电回路接通,开始工作;当PB13引脚输出低电平时,MOS管关断,负载停止。值得注意的是,水泵与风扇的MOS控制共用了同一个控制引脚PB13,这意味着洒水和清扫功能将同步启停,在逻辑上符合清洁任务协同进行的要求。同时,为吸收电机和水泵启停时产生的反向电动势,在电机两端反向并联了一个续流二极管。清洁执行模块(水泵与风扇)的控制电路原理如图3-5所示。


图3-5 清洁执行模块控制电路原理图
3.6 语音提示模块电路设计
为了在清洁作业时给予周围行人提示,本系统集成了一个单线语音模块。该模块采用串行单总线控制方式,仅需一个I/O口即可完成触发播报功能,极大简化了电路连接。模块内部预置了"开始清扫"、"请注意避让"等提示语音。STM32通过向模块的数据引脚发送特定的单总线时序脉冲,即可触发对应地址的语音播放。本设计将语音模块的数据引脚直接连接至STM32的PA4引脚。当系统初始化完成,准备进入自动清洁模式时,主控芯片会向PA4引脚发送一段预设的触发脉冲,模块随即通过内置的功率放大器驱动扬声器播放提示音。该模块的工作电压为3.3V至5V,可直接由系统电源供电,其待机功耗极低,适合电池供电的移动设备。语音模块与STM32的连接电路简洁可靠。语音模块接口电路原理如图3-6所示。

图3-6 语音模块接口电路原理图
3.7 尘满检测与显示电路设计
为及时提示用户清理集尘盒,系统加入了红外尘满检测模块。该模块利用红外对管原理,当集尘盒内的灰尘累积到一定高度,阻挡了红外发射管与接收管之间的光路时,模块的数字输出引脚电平会发生跳变。模块的输出为数字开关量,可直接与STM32的GPIO相连。本设计将尘满检测模块的输出引脚连接至PA8引脚。主控芯片通过周期性读取该引脚电平,判断集尘盒是否已满。一旦检测到满尘信号,可在OLED屏幕上显示"尘满请清理"的字样。显示电路采用0.96寸OLED屏,该模块采用I2C总线接口,仅需两根信号线。根据管脚分配,将OLED模块的SCL时钟线连接至STM32的PB5引脚,SDA数据线连接至PB4引脚。STM32通过I2C协议向OLED发送指令和数据,即可实时显示小车的工作模式、超声波测距值以及尘满状态等信息。尘满检测模块与OLED显示模块的电路原理分别如图3-7和图3-8所示。

图3-7 尘满检测模块电路原理图

图3-8 OLED显示模块电路原理图
3.8 整体电路综合分析
综合上述各模块电路设计,整个系统的硬件电路以STM32F103C8T6为核心,构建了一个功能完备、层次清晰的电子系统。系统电源由5V输入经稳压后分为3.3V和5V两个电压域,分别供给数字核心和传感器、执行器。所有传感器模块均通过其信号引脚与STM32的GPIO建立直接的数字或PWM连接,构成了从物理世界到数字世界的感知通道。执行器部分,通过TC1508A驱动模块与直流电机连接,实现了运动控制;利用MOS管的高频开关特性,安全地驱动了水泵和风扇等感性负载。交互部分,OLED显示屏提供了直观的状态反馈,语音模块则提供了听觉维度的信息输出。整体来看,各模块电路相对独立,功能划分明确,接口清晰,且严格遵循了管脚分配表。主控芯片通过读取PA0、PA1、PA8、PB14等引脚的数字电平或脉冲宽度获取环境信息,通过向PB6-PB9、PB13、PA4、PB12等引脚输出高低电平或PWM波形来控制外部设备。这种模块化、低耦合的硬件架构不仅降低了电路设计的复杂度,也为后期软件的模块化编程和系统故障排查提供了极大的便利。完整的系统电路图详见附录A。
3.9 本章小结
本章详细阐述了智能市政清洁小车系统的硬件电路设计。首先介绍了以STM32F103C8T6为核心的最小系统电路,包括电源、时钟、复位和下载电路。随后,按照功能模块逐一分析了循迹模块、超声波避障模块、电机驱动模块、清洁执行模块、语音提示模块以及尘满检测与显示模块的电路原理、工作方式及其与STM32主控芯片的具体管脚连接。每个模块的介绍均严格遵循了预设的管脚分配,明确了信号流向与控制逻辑。通过对整体电路的综合分析,验证了硬件设计的合理性与可行性。本章的硬件设计为后续的软件程序开发提供了明确的物理平台和控制接口。
第四章 软件系统设计
本系统的软件程序是在Keil uVision5集成开发环境下,采用C语言编写完成的。Keil MDK提供了丰富的库函数和高效的编译器,特别适合STM32系列微控制器的开发。软件设计遵循模块化思想,将不同功能(如循迹、避障、电机控制、清洁等)封装成独立的子函数,在主程序中通过状态机和逻辑判断进行统一调度。系统软件主要包含主程序、循迹子程序、超声波避障子程序、清洁控制子程序、语音提示子程序以及状态显示子程序。程序设计的核心在于协调好循迹行驶与避障暂停两种状态,确保小车既能沿轨迹行走,又能安全地处理突发障碍。
4.1 主程序设计
系统主程序负责初始化所有外设模块,包括GPIO引脚配置、定时器初始化(用于PWM输出和输入捕获)、I2C初始化(用于OLED)以及各传感器模块的初始化。完成初始化后,程序进入主循环。在主循环中,程序首先执行超声波测距,获取与前方障碍物的距离。接着,判断该距离是否小于设定的安全阈值(如30厘米)。若小于阈值,说明前方有障碍物,系统将进入"避障停车"状态,此时关闭清洁功能(PB13置低电平),并控制电机停止(PB6-PB9输出停止电平)。若距离大于阈值,说明前方安全,系统则进入"正常清扫"状态,首先启动清洁功能(PB13置高电平),然后调用循迹子程序,根据左右循迹传感器的状态控制小车前进或转向。同时,主程序会周期性地读取尘满检测引脚PA8的状态,若检测到尘满,则在OLED上显示警告信息。主程序的整体逻辑清晰地划分了安全与危险两种场景下的系统行为。主程序流程图如图4-1所示。

图4-1 主程序流程图
4.2 循迹子程序设计
循迹子程序是实现小车自主导航的基础。程序首先读取连接在PA0和PA0引脚上的左右两个循迹传感器的电平状态。两个传感器均为数字输出,检测到黑线(即轨迹)时输出高电平,检测到白色地面时输出低电平。程序根据这两个电平的组合状态,决定小车的运动方式。当左传感器为低、右传感器为低时,说明小车位于轨迹正中央,此时应驱动两个电机均以相同速度向前直行。当左传感器为高、右传感器为低时,说明小车已向左偏离轨迹,需要向右修正,此时程序控制左电机转速不变或加快,右电机减速或反转,从而实现右转。当左传感器为低、右传感器为高时,说明小车向右偏离,需要左转。理论上,左右传感器同时为高的状态不应出现在良好的循迹过程中,但若出现,程序可设定为停车或直行。通过不断的"检测-比较-修正"这一闭环控制过程,小车能够始终沿着黑色引导线稳定行驶。该子程序被主程序在无障碍物时循环调用。循迹子程序流程图如图4-2所示。

图4-2 循迹子程序流程图
4.3 超声波避障子程序设计
超声波避障子程序负责精确测量前方障碍物的距离,为主程序的决策提供依据。程序开始时,为确保触发信号稳定,先将Trig引脚(PB15)拉低一段时间。然后,向其输出一个持续约12微秒的高电平脉冲,以触发HC-SR04模块发射超声波。紧接着,使用定时器的输入捕获功能或简单的电平等待方法,监听Echo引脚(PB14)的高电平持续时间。当Echo引脚变为高电平时,启动计时器;当Echo引脚变回低电平时,停止计时,得到高电平持续的时间长度t(单位为微秒)。根据物理学公式,距离S = (t * 340) / 2 / 10000,计算结果单位为厘米。为了减少偶然误差,程序通常进行三次测量并取平均值,作为最终的距离返回值。该子程序将计算得到的距离值(单位:厘米)返回给主程序。整个测距过程对时序要求较高,因此在代码实现中需注意微秒级延迟的精确性。超声波避障子程序流程图如图4-3所示。

图4-3 超声波避障子程序流程图
4.4 清洁与语音协同子程序设计
清洁与语音协同子程序负责在系统启动清扫任务时,同步触发语音提示并维持清洁执行机构的运行。程序的设计思路是,当主程序判断小车进入正常清扫状态时,会调用本子程序。子程序首先检查一个全局的"首次启动"标志位。若为首次启动,则向连接语音模块的PA4引脚发送一段特定的单总线时序脉冲,触发播放"开始清扫"的提示音。播放完成后,将该标志位清零,避免重复播放。随后,子程序将连接水泵和风扇MOS管的PB13引脚置为高电平,导通MOS管,使水泵和风扇开始工作。在整个清扫过程中,只要主程序持续调用本子程序,PB13引脚就保持高电平,清洁功能持续运行。一旦主程序因检测到障碍物而不再调用本子程序,PB13引脚将被主程序逻辑重置为低电平,清洁任务暂停。这种设计实现了语音提示的单次触发与清洁动作的持续保持,逻辑清晰且易于实现。清洁与语音协同子程序流程图如图4-4所示。

图4-4 清洁与语音协同子程序流程图
4.5 本章小结
本章详细介绍了智能市政清洁小车系统的软件设计。首先,明确了以Keil MDK为开发环境、C语言为编程语言的开发平台。然后,采用模块化设计思想,依次阐述了主程序、循迹子程序、超声波避障子程序以及清洁与语音协同子程序的设计思路、实现逻辑和工作流程,并为每个关键功能模块绘制了对应的程序流程图。主程序作为调度核心,根据超声波测距结果在"正常清扫"与"避障停车"两种状态间切换;循迹子程序通过读取左右传感器数据实现路径跟踪;避障子程序精确计算障碍物距离;清洁协同子程序则巧妙地将语音提示与执行机构控制相结合。整个软件系统层次分明,各模块协同工作,共同保障了小车自主、安全、智能地完成清洁任务。
第五章 系统测试与分析
5.1 系统整体测试
|---|------------------------------------------------------------|
| |
| |
|
为验证智能市政清洁小车系统的功能完整性及运行稳定性,在完成硬件焊接、组装和软件编程后,搭建了模拟市政道路环境的测试场地。场地由一张大型白色桌面板铺设而成,上面使用黑色电工胶带粘贴出一条包含直道、弯道和交叉口的闭合环形轨迹。在轨迹的特定位置放置了纸盒作为模拟障碍物。系统上电后,STM32主控芯片完成所有外设初始化,OLED屏幕正常点亮并显示初始状态。将小车放置在轨迹起点,启动自动运行模式,观察其循迹、避障及清洁功能的执行情况。整体系统实物如图5-1所示。测试结果表明,小车能够正常启动,各模块响应迅速,整体运行平稳。
图5-1 系统整体实物图
5.2 系统功能测试
5.2.1 循迹功能测试
循迹功能是系统的基础。测试时,将小车分别放置在黑色轨迹的不同位置,观察其修正行为。测试分为直道测试和弯道测试两部分。在直道上,将小车人为拨向轨迹左侧,观察其是否向右修正;拨向右侧,观察其是否向左修正。在弯道处,观察小车是否能沿着弧形轨迹顺利通过而不脱离。共进行20次完整循迹行驶测试,记录小车脱离轨迹的次数。测试结果如表5-1所示。测试表明,在光线均匀的环境下,循迹模块能准确识别黑白路面,小车循迹稳定,仅在急弯处出现过2次轻微偏离,但能很快自动修正。
表5-1 循迹功能测试表
|------|------------|------|------|------|
| 测试项目 | 测试条件 | 测试次数 | 成功次数 | 成功率 |
| 直道循迹 | 人为偏移修正 | 10 | 10 | 100% |
| 弯道循迹 | 通过R=30cm弯道 | 10 | 8 | 80% |
5.2.2 避障与清洁联动功能测试
本测试旨在验证小车在遇到障碍物时能否停车并暂停清洁功能,以及障碍物移除后能否恢复。在小车前方40cm处放置一个纸箱。启动小车,观察其运行至距障碍物约30cm时的行为。记录小车停止时与障碍物的距离、清洁功能(水泵和风扇)是否停止、以及语音是否重复播放。障碍物移开后,观察小车是否在3秒内恢复行驶和清洁。测试结果如表5-2所示。经测试,小车在距障碍物28-32cm范围内均能准确停止,清洁执行模块随之停止运转,且语音未重复播放。障碍物移开后约2秒,小车恢复前进并重新启动清洁功能。避障测试现场如图5-2所示。
表5-2 避障与清洁联动功能测试表
|------------|--------------|-------------|----|
| 测试场景 | 预期行为 | 实际行为 | 结果 |
| 前方30cm出现障碍 | 停车,清洁停止 | 停车,水泵风扇停转 | 通过 |
| 障碍物持续存在 | 保持停车,清洁停止 | 保持静止,清洁不工作 | 通过 |
| 障碍物移除 | 3秒内恢复行驶,清洁启动 | 约2秒后恢复,清洁工作 | 通过 |

图5-2 超声波避障测试现场图
5.2.3 清洁与语音提示功能测试
测试清洁功能是否能在正常行驶时持续运行,以及在启动时是否只播放一次语音。将小车置于无障碍物的轨迹上运行,观察水泵是否喷水、风扇是否旋转。同时,监听小车启动时是否播报"开始清扫"的提示音,以及在长达3分钟的连续运行中是否会重复播放。测试结果如表5-3所示。结果表明,在无障碍物时,清洁功能持续稳定运行。语音提示仅在系统复位后第一次进入清扫模式时播放一次,符合设计要求。语音模块测试如图5-3所示。
表5-3 清洁与语音提示功能测试表
|------|---------|----------|-------|----|
| 测试功能 | 测试方法 | 预期结果 | 实际结果 | 结论 |
| 洒水功能 | 观察水泵出水口 | 持续有水喷出 | 有细流喷出 | 正常 |
| 清扫功能 | 观察风扇与毛刷 | 持续旋转 | 持续旋转 | 正常 |
| 语音提示 | 监听系统启动 | 仅播报一次提示音 | 仅播报一次 | 正常 |

图5-3 语音模块测试图
第六章 结论
6.1 总结
本文围绕市政道路自动化清洁这一实际应用需求,成功设计并实现了一款基于STM32单片机的智能清洁小车系统。该系统以STM32F103C8T6为核心控制器,集成了红外循迹模块、超声波避障模块、电机驱动模块、水泵洒水模块、风扇清扫模块、语音提示模块以及OLED显示模块,构成了一个集环境感知、自主决策与动作执行于一体的嵌入式系统。在硬件设计上,对各功能模块进行了独立的电路设计,并严格按照预设的管脚分配完成了与主控芯片的连接,确保了系统的电气稳定性和可扩展性。在软件设计上,编写了模块化的C语言程序,实现了主控逻辑、循迹算法、避障策略以及清洁动作的协同控制,通过有限状态机模型协调了循迹行驶与避障停车两种工作模式。经过系统的软硬件联调与测试,结果表明:小车能够稳定地沿黑色引导线行驶,在检测到前方30厘米内的障碍物时能及时停车并暂停清洁任务,待障碍物移除后自动恢复作业;清洁功能在行驶中持续运行,并在启动时自动播放语音提示;尘满检测与OLED显示功能工作正常。本设计基本完成了预设的各项功能指标,验证了基于低成本传感器和嵌入式技术的智能清洁方案的可行性,对于推动小型环卫设备的智能化具有一定的参考价值。
6.2 展望
尽管本设计实现了预期的基本功能,但在测试过程中也发现了一些有待改进之处。首先,循迹模块在急弯或光线强烈变化的环境下偶有失效,未来可以考虑引入更多的循迹传感器(如四路或八路),并采用PID控制算法来替代当前简单的阈值判断,使循迹更加平滑和稳定。其次,当前的避障策略较为简单,仅为遇障即停,障除即行。在实际复杂的市政环境中,小车可能会遇到长时间停留的障碍物,更理想的策略是实现自主绕障。后续可以增加一个舵机云台,带动超声波传感器扫描左右两侧的空隙,使小车具备规划绕行路径的能力。此外,本设计还未实现远程监控与调度功能。后续可以通过增加ESP8266 WiFi模块,将小车的工作状态、位置信息以及摄像头采集的画面上传至云端服务器或手机APP,从而实现远程启动、停止、规划清扫路径等操作,进一步提升系统的智能化与实用性。最后,清扫机构的集尘效果和容量目前较为初级,未来可以借鉴成熟吸尘器的气旋分离技术,对尘盒结构进行优化设计,提高清洁效率。
参考文献
01 罗珺.青海水产养殖迈向多元发展新征程N.青海日报,2025-04-17(008).
02 刘雷浩.淡水鱼圈养试验场自动投饵装置设计与试验D.武汉:华中农业大学,2022.
03 姜燕,梁萍萍,李腾宇,等.基于物联网感知应用的绿色水产养殖一体化管理平台设计J.现代农业装备,2024,45(03):69-75.
04 王腾.虾饲料稀相气力输送自动饲喂系统数值模拟研究D.青岛:青岛科技大学,2023.
05 莽琦,徐钢春,朱健,等.中国水产养殖发展现状与前景展望J.渔业现代化,2022,49(2):1-9.
06 黄一心,田昌凤,孟菲良,等.中国池塘养殖设施装备历史、现状和发展研究J.渔业现代化,2020,47(03):10-15.
07 徐长春,郑楠,孙巍,等.基于PLC和触摸屏的深海网箱自动投饵远程控制系统J.天津科技大学学报(自然科学版),2022,31(01):16-22.
08 徐梅.几种单片机简介J.高校实验室工作研究,2005(2):63-64.
09 于建勇.浅谈时钟电路在单片机中的作用J.硅谷,2011,(08):155+166.
10 喻丽丽,朱艳,吴婷.基于单片机温度控制系统的设计J.电子元器件与信息技术,2023,7(10):26-29.
11 张炳贵,杨佳.基于Linux的水产养殖监测及智能投喂系统设计J.电子制作,2024,32(12):52-54+26.
12 束仁义,徐锋,王健,等.基于STC12C5A60S2单片机显示模块的实验研究J.廊坊师范学院学报(自然科学版),2024,24(03):83-88.154 孟庆涛,李良,陈志瑞,等.实时时钟电路的单片机仿真设计J.仪表技术,2014(10):24-26.
13 徐敏.基于STC89C52单片机的蜂鸣器的设计与实现J.无线互联科技,2022,19(16):95-98.
14 张梦君,任莉.基于STM32的宠物远程监控装置设计J.科技与创新,2025,(05):63-65.
15 石楚伦,王佳佳,韩朋锦,等.基于STM32的宠物自动喂食器J.物联网技术,2024,14(02):97-100.
16 高婉婷,曳永芳.基于STM32智能小车避障系统的设计J.物联网技术,2023,13(02):131-135.
17 Gundogdu Y M .Design improvements on rotary valve particle feeders used for obtaining suspended airflowsJ.Powder Technology,2003,139(1):76-80.
致 谢
本论文的选题、研究以及撰写工作是在老师的悉心指导下完成的。老师严谨的治学态度、渊博的专业知识以及平易近人的学者风范,给我留下了深刻的印象。在论文的每一个阶段,从选题的确定、方案的论证到具体的设计实施,再到最后论文的反复修改,老师都倾注了大量的心血,给予了关键性的指导和中肯的建议。在此,谨向老师致以我最诚挚的感谢和最崇高的敬意。
感谢我的同窗室友和朋友们,在毕业设计期间,我们一同探讨技术难题,分享学习资料,互相鼓励,共同进步。每当我在编程或电路调试中遇到瓶颈时,总能从与他们的交流中获得新的灵感和解决思路。感谢他们为我的学习和生活带来的温暖与快乐。
同时,我要感谢我的父母和家人。感谢他们一直以来对我学业的默默支持和无微不至的关怀,是他们无私的爱和付出,为我创造了安心学习的环境,是我能够顺利完成学业的坚强后盾。
最后,感谢参考文献中的所有作者,他们的研究成果为我的设计工作提供了重要的理论依据和技术参考。本设计虽然完成,但仍有诸多不完善之处,恳请各位评审老师批评指正。在未来的工作和学习中,我将继续努力,不断提升自己的专业水平和实践能力。
附录A 整体电路图

附录B 程序代码