基于 STM32 的填埋场智能巡检小车
项目时间: 2025.03 — 2025.06
项目角色: 个人独立开发
项目方向: 嵌入式软件开发 / 智能控制 / 多传感器数据采集
一、项目简介
基于 STM32F103ZET6 设计并实现一款面向危废填埋场巡检场景的智能移动小车,采用集成双 L293D 电机驱动芯片的主控板,集成红外循迹、超声波避障、环境监测、火焰检测、异常告警及蓝牙通信等功能。通过多传感器数据采集、运动控制与无线数据交互,实现小车自主巡检、环境参数监测和异常状态告警,并支持通过手机 APP 进行远程监测。
项目采用 C 语言,基于 STM32 标准外设库完成外设配置与底层驱动开发,涉及 GPIO、定时器、外部中断、ADC、I²C、USART 等外设,并通过 OLED、LCD1602 实现巡检状态与环境数据的可视化。
图:智能巡检车图
图:App界面图
二、技术栈
- 主控平台: STM32F103ZET6 智能小车主控板
- 开发语言: C 语言
- 开发环境: Keil MDK
- 软件基础: STM32 标准外设库、中断机制、模块化驱动开发
- MCU 外设: GPIO、TIM、PWM、EXTI、ADC、I²C、USART
- 电机驱动: 双 L293D 电机驱动芯片、直流电机、软件 PWM
- 传感器与执行器: TCRT5000、HC-SR04、SG90、DHT11、火焰传感器、蜂鸣器
- 无线通信: 蓝牙模块、USART 串口通信、手机 APP
- 显示模块: SSD1306 OLED、LCD1602
三、核心功能与技术实现
1. 自主循迹与运动控制
- 循迹检测: 使用 TCRT5000 红外传感器采集地面黑白反射信号,通过 GPIO 读取检测结果,判断小车相对循迹线的位置。
- 电机驱动: 使用主控板集成的双 L293D 电机驱动芯片控制左右直流电机,基于 STM32 定时器中断实现软件 PWM,通过调整占空比控制电机转速。
- 转向控制: 根据循迹传感器的状态调整左右电机输出,实现差速转向与循迹纠偏。
2. 超声波避障与距离测量
- 距离检测: 使用 HC-SR04 超声波模块,通过测量 Echo 回波高电平持续时间计算障碍物距离。
- 自动避障: 结合 SG90 舵机带动超声波模块改变探测方向,比较不同方向的测距结果,辅助小车进行转向决策。
- 状态显示: 通过 LCD1602 显示障碍物距离及当前巡检状态,便于运行观察与功能调试。
3. 环境监测与火焰检测
- 温湿度采集: 基于 GPIO 实现 DHT11 单总线通信驱动,完成温湿度数据读取与解析。
- 火焰检测: 通过 ADC 采集火焰传感器模拟输出,对采样数据进行处理,实现火焰强度变化监测。
- 异常判断: 根据温湿度阈值及火焰检测结果进行状态判断,在检测到异常时触发蜂鸣器告警。
4. 蓝牙通信与远程监测
- 串口通信: 通过 USART 连接蓝牙模块,实现 STM32 与手机 APP 之间的无线数据交互。
- 数据传输: 将温湿度参数、火焰检测结果及异常状态封装为通信数据,通过蓝牙发送至手机 APP。
- 远程监测: 支持在手机端查看巡检小车采集的环境参数与异常信息,扩展设备的无线监测能力。
5. 显示交互与数据可视化
- OLED 驱动: 基于软件 I²C 实现 SSD1306 OLED 底层通信,自建 6×8 点阵字库,实现字符显示与环境数据刷新。
- 双屏显示: 使用 OLED 展示温湿度、火焰检测数据等环境信息,通过 LCD1602 显示巡检状态及障碍物距离。
- 状态展示: 整合传感器采集、运动控制与异常检测结果,便于现场观察和功能调试。
四、关键技术与难点
1. 软件 PWM 电机控制
利用 TIM2 定时中断产生周期性控制时序,通过软件控制双 L293D 驱动芯片输入端的高低电平比例,实现 PWM 占空比调节。结合左右电机差速控制,完成循迹转向与运动控制。
2. 多外设协同与资源分配
根据传感器、显示屏和电机驱动的接口需求进行 GPIO 引脚分配,排查外设引脚复用冲突,并协调定时器、中断与数据采集流程,保证各功能模块协同运行。
3. 不同电平系统的硬件适配
针对部分 5V 传感器模块与 STM32 3.3V GPIO/ADC 接口之间的电平兼容问题,检查模块输出特性与 MCU 输入要求,并根据实际电路进行接口适配,避免输入电压超出 MCU 引脚允许范围。
4. 串口通信与数据交互
通过 USART 实现 STM32 与蓝牙模块之间的数据收发,结合约定的数据格式组织环境参数与异常状态信息,并在手机 APP 端进行接收和展示,实现巡检数据的无线传输。
五、项目收获
通过该项目,完成了从 MCU 外设配置、传感器底层驱动、电机控制到整车功能联调的实践过程,加深了对 STM32 定时器、中断、ADC、GPIO、USART 及软件总线通信的理解,并积累了多模块协同开发、电机驱动、无线通信、硬件接口排查和嵌入式系统调试经验。