1. 智能车竞赛硬件组入门指南
作为一名参加过三届智能车竞赛的老兵,看到很多新同学面对硬件开发时的手足无措,特别理解这种迷茫。记得我第一次负责"雁过留痕"组硬件时,光是看规则文档就花了整整一周时间。硬件开发确实比软件门槛更高,但掌握方法后反而更容易出成绩。下面我就结合自己的踩坑经验,给纯小白们梳理一条清晰的学习路径。
智能车竞赛硬件开发可以分解为三个核心模块:车体机械结构、电子控制系统和传感器模块。对于"雁过留痕"组别,今年新增的视觉识别任务使得摄像头模块成为重点。建议先从整体上了解这三个模块的协作关系:单片机接收传感器信号→处理数据→控制电机和转向→车体执行动作→摄像头采集环境信息→形成闭环控制。
重要提示:新手常犯的错误是直接扎进某个细节(比如画PCB),而忽视系统级设计。建议先用面包板搭建原型验证各模块可行性,再考虑集成化设计。
2. 赛前准备与规则解读
2.1 官方文档深度解析
拿到《第十七届全国大学生智能汽车竞赛规则》后,建议按以下顺序重点研读:
- 硬件限制条款:特别是STC32G12K128单片机的使用要求(今年必须使用这款国产芯片),注意外设数量限制(如PWM通道、串口等)
- 车模规格要求:包括尺寸限制(长宽高不超过25cm×15cm×15cm)、重量要求(含电池不超过1kg)
- 传感器白名单:今年允许使用OV7725、MT9V034等特定型号摄像头,禁止使用激光雷达
- 电源规范:限定7.4V锂电池供电,需设计过压保护电路
建议用Excel制作检查清单,每完成一个要求就打钩确认。去年有队伍因忽视"PCB必须自行设计"的条款,直接使用开发板导致资格审核不通过。
2.2 开发环境搭建
STC32G开发需要准备:
- 工具链:Keil C51(需安装STC芯片支持包)或PlatformIO+SDCC组合
- 下载工具:STC-ISP V6.91以上版本(注意新版芯片需要最新下载器)
- 调试设备:逻辑分析仪(必备!推荐DSView配合ChipAnalyzer插件)
- 硬件准备:官方核心板(STC32G12K128-LQFP64)+ 扩展板(建议自制)
安装完驱动后,先用blink例程测试下载流程。常见问题包括:
- 冷启动时序不对:需要在下载时先点击"下载"按钮再给板子上电
- 芯片型号选错:必须选择"STC32G12K128系列"
- 晶振设置错误:内部IRC建议设为22.1184MHz(与摄像头时钟同步)
3. 核心技能培养路径
3.1 单片机外设开发
STC32G的关键外设掌握顺序建议:
- GPIO控制:重点理解准双向口模式与推挽输出的区别(车灯用推挽,按键用准双向)
- 定时器:配置1ms系统心跳定时器(TIM0)和PWM生成定时器(TIM2/3)
- PWM输出:电机驱动需要4路PWM(建议TIM2_CH1/2和TIM3_CH1/2)
- ADC采集:电池电压检测用ADC_CH0(注意分压电阻精度选1%)
- 串口通信:调试必备(建议UART1打印日志,UART2连接无线模块)
示例代码(电机PWM初始化):
c复制void PWM_Init(void) {
PWMA_PS = 0x00; // 预分频器=1
PWMA_ARR = 899; // 20kHz PWM (24MHz/(900))
PWMA_ENO |= 0x0C; // 使能PWM2/PWM3输出
PWMA_PSCRH = 0; // 预分频器高位
PWMA_PSCRL = 0; // 预分频器低位
PWMA_CCMR2 = 0x68; // PWM模式1,CH3预装载使能
PWMA_CCER2 |= 0x03; // CH3输出使能
PWMA_CCR3 = 300; // 初始占空比33%
PWMA_BKR = 0x80; // 主输出使能
}
3.2 视觉模块开发要点
今年新增的紫外照射识别任务,需要掌握:
- 摄像头接口:OV7725的SCCB配置(注意STC的IIC需要软件模拟)
- 图像处理:建议先实现二值化处理(固定阈值法),再升级到自适应阈值
- 目标识别:采用连通域分析法(适合初学者),关键参数:
- 最小有效像素面积:20×20
- 色度阈值:Hue∈[30,90](根据实际环境调整)
- 饱和度阈值:Sat>50
调试技巧:
- 先用串口发送图像数据到上位机(如山外调试助手)查看原始图像
- 紫外LED驱动需用MOSFET(如AO3400),普通三极管容易烧毁
- 摄像头安装角度建议俯角30°(需考虑透视畸变校正)
4. 机械结构设计规范
4.1 车体框架设计
推荐材料:
- 主框架:3mm碳纤维板(CNC切割)
- 连接件:尼龙3D打印件(注意留足螺丝孔位)
- 车轮:官方指定橡胶轮胎(直径需在55-65mm之间)
设计注意事项:
- 重心位置应在前轮轴后1/3处(防止急停前翻)
- 摄像头支架要有减震设计(可用硅胶垫片)
- 走线需用蛇皮管保护,避免干扰电磁传感器
4.2 电路布局要点
PCB设计建议:
- 电源分区:电机驱动(底层)、控制电路(顶层)
- 滤波电容:每个电机并联100μF钽电容+0.1μF陶瓷电容
- 信号隔离:数字与模拟地单点连接(磁珠隔离)
- 接口防护:所有对外接口加TVS二极管
常见EMC问题解决方案:
- 电机干扰导致单片机复位:增加电源π型滤波
- 摄像头图像条纹:改用屏蔽线并加磁环
- 无线通信丢包:确保天线远离电机驱动器
5. 开发流程与时间规划
5.1 阶段划分建议
| 阶段 | 时间 | 关键任务 | 交付物 |
|---|---|---|---|
| 1.需求分析 | 第1周 | 规则解读、技术调研 | 需求文档 |
| 2.原型验证 | 2-3周 | 各模块单独测试 | 测试报告 |
| 3.系统集成 | 4-5周 | 联调、算法优化 | 完整车模 |
| 4.性能优化 | 6-7周 | 速度提升、稳定性测试 | 技术报告 |
5.2 每日工作建议
早上(2小时):
- 代码编写/调试(头脑清醒时段)
下午(3小时): - 硬件焊接/机械装配
晚上(2小时): - 技术文档整理
- 次日计划制定
特别提醒:每周必须留出1天进行完整功能测试,避免最后集成时问题爆发。
6. 常见问题解决方案
6.1 硬件典型故障
-
电机异常抖动
- 检查PWM频率(建议18-22kHz)
- 测量电机电流(空载应<100mA)
- 确认H桥驱动时序(死区时间≥500ns)
-
图像采集卡顿
- 降低分辨率(QVGA 320×240足够)
- 开启DMA传输(节省CPU资源)
- 检查帧同步信号(VSYNC波形要稳定)
-
无线控制延迟
- 改用NRF24L01+模块(比蓝牙响应快)
- 优化通信协议(去掉冗余校验)
- 调整天线位置(远离金属部件)
6.2 软件调试技巧
-
利用SWO输出调试信息
c复制void SWO_Init(uint32_t baudrate) { CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; TPI->ACPR = SystemCoreClock/baudrate - 1; TPI->SPPR = 2; // 1:1格式 TPI->FFCR = 0x00; ITM->LAR = 0xC5ACCE55; ITM->TER = 0xFFFFFFFF; ITM->TCR = 0x10009; } -
内存泄漏检测
- 在启动文件修改堆大小(至少2KB)
- 定期打印
__heap_end - __malloc_margin
-
实时性优化
- 关键任务用定时器中断(非RTOS方案)
- 图像处理耗时操作放在主循环外
7. 进阶学习建议
当基础功能实现后,可以尝试:
- 运动控制算法:PID参数整定(先P后I最后D)
- 图像优化:中值滤波去噪+边缘增强
- 无线升级:IAP功能实现(需划分Flash分区)
- 能耗优化:动态电压调节(DVS)技术
推荐学习资源:
- 《STC32G系列参考手册》(官网下载)
- 逐飞科技开源项目(GitHub搜索"逐飞视觉")
- 硬石科技电机驱动教程(B站视频)
最后分享一个血泪教训:比赛前一周务必做老化测试!我们去年因电机驱动器连续工作2小时后失效,痛失一等奖。现在我们的标准流程是:所有硬件必须通过72小时不间断压力测试。