M-Design创意设计竞赛项目报告
项目名称:基于ESP32C3的智能巡线小车设计
1. 项目介绍和创意介绍
项目介绍
本项目是参加2025茂泽电子M-Design创意设计竞赛方向一边缘智能、智能设备。本项目设计并实现了一款基于ESP32C3微控制器的智能巡线小车。小车通过五路灰度传感器检测地面黑线,从而完成巡线的任务。电源管理模块采用LM2596和AMS1117-adj,电机驱动模块选用TB6612,内置MOS管防反接电路和快恢复保险丝,确保电路安全。此外,通过ADC采集电池电压,实现了电量监测与提示功能。项目使用米斯奇(Mixly)进行图形化编程,并结合自制的3D建模小车结构,完成了硬件与软件的集成。
创意介绍
本项目的创意点主要体现在以下几个方面:
- 多传感器融合:采用五路灰度传感器,提高了巡线的精度和稳定性。
- 智能化电源管理:通过ADC实时监测电池电压,并结合提示灯提醒用户及时充电,提升了小车的实用性。
- 电路保护设计:内置MOS管防反接电路和快恢复保险丝,有效防止电源反接和过流损坏电路。
- 图形化编程:使用米斯奇进行开发,降低了编程门槛,适合初学者快速上手。
2. 简短的使用到的硬件介绍
主要硬件清单
- ESP32C3微控制器:主控芯片,负责传感器数据采集、电机控制和电池电压监测。
- 五路灰度传感器:用于检测地面黑线,输出模拟信号。
- LM2596 DCDC模块:将7.5V锂电池电压降压至5V,为电机驱动模块供电。
- AMS1117-adj稳压模块:将5V电压降压至3.3V,为ESP32C3和其他低功耗器件供电。
- TB6612电机驱动模块:驱动TTL马达,实现小车的运动控制。
- MOS管防反接电路:防止电源反接损坏电路。
- 快恢复保险丝:防止电流过大损坏电路。
- 7.5V (两节)18650锂电池:为整个系统供电。
- LED灯:用于电池电量低时提醒用户。
3. 设计思路介绍
项目设计思路
- 电源管理:锂电池通过LM2596降压至5V,为电机驱动模块供电;AMS1117-adj进一步降压至3.3V,为ESP32C3和其他低功耗器件供电。
- 传感器数据采集:五路灰度传感器检测地面黑线,输出模拟信号,ESP32C3通过ADC采集传感器数据。
- 电机控制:ESP32C3根据传感器数据生成控制信号,通过TB6612驱动TTL马达,实现小车的巡线功能。
- 电池电压监测:ESP32C3通过ADC采集电池电压,控制提示灯的亮灭,提醒用户及时充电。
- 电路保护:MOS管防反接电路和快恢复保险丝确保电路安全。
4. 原理图和PCB介绍
原理图
图一.5路灰度传感器设计原理图
图二.主控板设计原理图
图三.TB661模块原理图
PCB图
图四.5路灰度传感器设计PCB图
图五.主控板设计PCB图
图三.TB661模块PCB图
5. 流程框图和建模介绍
软件逻辑框图
电气连接框图
关键代码
以下是使用米斯奇生成的部分关键代码:
#include <Arduino.h>
#include <analogWrite.h>
void setup(){
pinMode(4, INPUT);
pinMode(19, OUTPUT);
pinMode(12, OUTPUT);
pinMode(18, OUTPUT);
pinMode(0, INPUT);
pinMode(1, INPUT);
pinMode(2, INPUT);
pinMode(3, INPUT);
}
void loop(){
if (analogRead(4) >= 3100) {
digitalWrite(19,HIGH);
digitalWrite(12,LOW);
digitalWrite(18,LOW);
} else if (analogRead(4) <= 3100 && analogRead(4) >= 2600) {
digitalWrite(18,HIGH);
digitalWrite(19,LOW);
digitalWrite(12,LOW);
} else {
digitalWrite(12,HIGH);
digitalWrite(19,LOW);
digitalWrite(18,LOW);
}
//前进
digitalWrite(18,HIGH);
if (analogRead(0) >= 1000 && (analogRead(1) >= 1000 && (analogRead(2) <= 1000 && (analogRead(3) >= 1000 && analogRead(4) >= 1000)))) {
analogWrite(8, 200);
analogWrite(6, 200);
} else if (analogRead(0) >= 1000 && (analogRead(1) <= 1000 && (analogRead(2) <= 1000 && (analogRead(3) >= 1000 && analogRead(4) >= 1000)))) {
analogWrite(8, 100);
analogWrite(6, 150);
delay(50);
} else if (analogRead(0) >= 1000 && (analogRead(1) <= 1000 && (analogRead(2) >= 1000 && (analogRead(3) >= 1000 && analogRead(4) >= 1000)))) {
analogWrite(8, 100);
analogWrite(6, 200);
delay(100);
} else if (analogRead(0) <= 1000 && (analogRead(1) >= 1000 && (analogRead(2) >= 100 && (analogRead(3) >= 1000 && analogRead(4) >= 1000)))) {
analogWrite(8, 100);
analogWrite(6, 250);
delay(100);
} else if (analogRead(0) >= 1000 && (analogRead(1) >= 1000 && (analogRead(2) >= 1000 && (analogRead(3) <= 1000 && analogRead(4) >= 1000)))) {
analogWrite(8, 200);
analogWrite(6, 100);
delay(100);
} else if (analogRead(0) >= 1000 && (analogRead(1) >= 1000 && (analogRead(2) <= 1000 && (analogRead(3) <= 1000 && analogRead(4) >= 1000)))) {
analogWrite(8, 150);
analogWrite(6, 100);
delay(50);
} else if (analogRead(0) >= 1000 && (analogRead(1) >= 1000 && (analogRead(2) >= 1000 && (analogRead(3) >= 1000 && analogRead(4) <= 1000)))) {
analogWrite(8, 250);
analogWrite(6, 100);
delay(100);
} else if (analogRead(0) >= 1000 && (analogRead(1) >= 1000 && (analogRead(2) <= 1000 && (analogRead(3) <= 1000 && analogRead(4) <= 1000)))) {
analogWrite(8, 250);
analogWrite(6, 0);
delay(500);
} else if (analogRead(0) <= 1000 && (analogRead(1) <= 1000 && (analogRead(2) <= 1000 && (analogRead(3) >= 1000 && analogRead(4) <= 1000)))) {
analogWrite(8, 0);
analogWrite(6, 250);
delay(500);
} else {
analogWrite(8, 0);
analogWrite(6, 0);
}
delay(10);
}
6. 功能展示图及说明
功能展示
- 巡线功能:小车能够稳定跟随黑线行驶,适应不同曲率的路径。
- 电池电压监测:当电池电压低于设定阈值时,提示灯亮起,提醒用户充电。
- 电路保护:电源反接或过流时,电路自动断开,保护硬件安全
建模展示
7. 设计中遇到的难题和解决方法
难题1:巡线精度不足
问题描述:初期使用三路灰度传感器时,小车在弯道处容易偏离黑线。
解决方法:增加传感器数量至五路,优化阈值参数,提高巡线精度。
难题2:电池电压监测不准确
问题描述:ADC采集的电池电压波动较大,导致提示灯频繁闪烁。
解决方法:增加软件滤波算法,平滑电压数据,提高监测准确性。
8. 对本次竞赛的心得体会
心得体会
通过本次竞赛,我深刻体会到硬件设计与软件开发的紧密结合的重要性。在项目中,我不仅学习了ESP32C3的使用方法,还掌握了传感器数据采集、电机控制、电源管理等技术。同时,米斯奇的图形化编程工具让我快速实现了功能开发,降低了编程门槛。
意见与建议
- 增加硬件资源:建议竞赛提供更多种类的传感器和模块,以便参赛者实现更复杂的功能。
- 优化评审标准:建议评审时不仅关注功能实现,还注重项目的创新性和实用性。
总结
本项目通过硬件与软件的结合,成功实现了一款智能巡线小车,具有较强的实用性和创新性。未来,可以进一步优化控制算法,增加更多功能,如避障、远程控制等,提升小车的智能化水平。