每年8月那几天,全国高校实验室都会同步亮起“作战”状态的灯。我见过太多队伍在电子设计竞赛(简称电赛)这四天三夜里,被自己的准备不足打得措手不及——有人连题目都没读完就开始焊板子,有人凌晨三点才意识到单片机引脚分配从一开始就规划错了,也有人最后十分钟发现上位机数据格式和硬件对不上。
这篇内容不是什么官方攻略,就是我把自己从大二第一次参赛到后来拿奖带队,整条备赛线完整复盘一遍。从怎么挑队友、备赛期该练什么、模块怎么囤,到四天三夜每一步该干嘛、怎么防止交作品前一小时翻车,全在里面了。如果你正准备打电赛,或者对这类高强度的嵌入式项目感兴趣,照着这条线走,至少能让你少走一两个月的弯路。
1. 备赛先搞清楚赛制和赛道,别想当然
1.1 电赛到底考什么,很多人第一年就理解错了
先说一个最容易犯的认知错误:电赛不是把你三个月学到的东西拿来考试,而是逼你在96个小时里从零设计、搭建、调试出一个能现场演示的电子系统。题面里不会给你现成电路图,只有功能要求和技术指标。比如2023年那道电源题,要求你做一个宽输入、高精度的DC-DC变换器,效率要到某个百分比,动态响应还得快——这种题目在平时的课设里几乎碰不到。
全国大学生电子设计竞赛的题目,一般分成这么几类:
- 电源类(AC-DC、DC-DC、逆变器、充电管理)
- 信号类(信号发生器、滤波器、放大电路、锁相环)
- 控制类(小车、无人机、机械臂、视觉识别定位)
- 仪器仪表类(数字万用表、示波器前端、参数测量仪)
- 通信类(收发机、调制解调、信道编码)
- 数据采集与处理类(高速采样、FFT、显示交互)
你在备赛之前,得先老实地问自己一个问题:你这个队伍的优势到底在哪。是硬件调电源的手感特别好,还是STM32裸机加FreeRTOS玩得转,还是FPGA那套时序逻辑比较熟?电赛的原则是“扬长避短”,不要拿自己的短板去跟别人的长板硬碰。我见过不少队伍,平时在学校实验室什么都玩,但没一个方向特别深,比赛抽到信号题直接懵了。反过来,有些队伍从开学初就确定只练控制类题目,小车方案家里的工具链全部备齐,比赛一上来就把主控、传感器、电机驱动做成标准模块,最后稳稳把基本要求吃掉,拿国奖的概率反而很高。
1.2 96小时不是让你从零开始的,是让你做系统集成的
带过赛的老师都会说一句话:真正的高手在比赛期间做的事情,不是“设计”,而是“拼装”。你看到的那些看起来很亮眼的作品,核心模块早就被他们在备赛期练了无数遍,比赛时只是根据题目要求重新组合参数和接口。
所以备赛的核心逻辑很明确:提前把底层能力练成“肌肉记忆”,比赛时才有时间处理题目本身的细节。什么叫肌肉记忆?给你一个MPS的Buck芯片,你能不看datasheet的典型应用图,直接画出外围电路并算出电感电容参数;给你一个OLED屏和I2C总线,你能在十分钟内初始化完成并显示字符;给你一个编码器电机,你能直接说出PID三个参数从哪个方向开始调。
这些能力不是靠比赛前几天突击的,而是靠备赛期反复做项目磨出来的。我之前带队训练时有个规矩:每个队员每两周必须完成一个小模块的“极限搭建”测试,从原理图到出波形,限时4小时。刚开始学员们叫苦连天,但三个月后,比赛期间他们的动作明显比别人快一步,别人还在翻手册的时候,他们已经把主板点亮了。
1.3 别忽略文档能力,占的分数比你想象中多
很多队伍把重心全放在硬件上,结果设计报告写得乱七八糟,最后总分被拉下来一大截。电赛的评分由现场演示和设计报告两部分组成,报告占的比重通常有20%~30%。测试一结束,评委拿着你的报告对照题目要求逐条查,你论证过程不清楚、参数计算过程缺失、测试数据造假(这个绝对别干),都会被狠狠扣分。
建议备赛期就养成写文档的习惯。从暑假开始,每次做一个小项目,都按比赛的格式写一份技术报告:系统方案论证、理论分析与计算、电路与程序设计、测试方案与测试结果、总结与展望。尤其是计算过程,评委非常看重你“算”的能力,比如电源题效率是多少,你用了什么拓扑,开关频率为什么选这个,电感纹波电流怎么算的,这些都必须白纸黑字写清楚。
2. 组队这件事,比你想的更影响结局
2.1 黄金三人组不是三个人都会焊板子
电赛规定每队三人,但三人不是“三个全能手”,而是“三块互补拼图”。比较理想的配置是:
- 队长兼系统架构师:负责把控全局,读题拆题,规划整体方案,分配任务,比赛阶段推进度。这人要冷静,擅长做决策。
- 硬件工程师:负责原理图设计、PCB绘制、焊接调试、电源和测量类模块搭建。手要稳,心要细。
- 软件工程师:负责单片机/FPGA代码、算法逻辑、上位机界面、系统联调。逻辑清晰,debug能力强。
当然这也不是绝对的,有的队伍是硬件和软件各两人交叉重叠。但不管怎么分,有一点很关键:每件事都得有明确的owner。比赛期间最怕的就是三个大老爷们围着一块板子大眼瞪小眼,谁都觉得“这归我管”,结果谁都没管。
2.2 怎么判断一个队友能不能处
组队最好的时机是备赛前的三到六个月,或者提前一个学期。判断标准其实很简单:看他在平时的小组作业里是什么表现。是那个主动把最难的部分扛下来的人,还是那个只会在Deadline前问“做到哪了”的人;是遇到bug能在半小时内自己想办法解决的人,还是那个直接拿起手机刷短视频等着别人给答案的人。
我建议第一次组队不要找熟人朋友,要找能力互补并且能听进别人意见的人。电赛期间压力极大,凌晨两三点人最累的时候,性格上的缺陷会被无限放大。我以前有一组学员,平时关系好得穿一条裤子,比赛第二天因为要不要换主控芯片直接冷战了六个小时,最后方案没定,进度白白浪费一个上午。相反,另一组虽然平时交流不多,但都是讲道理的人,吵完架五分钟各自拿着示波器继续干活。
2.3 组队后的协作机制:文档、Git、每日站会
队伍成立后,马上建立三个东西:
- 一个共享的在线文档(存所有模块资料、datasheet、代码片段、踩坑记录)
- 一个代码仓库(用Git,最好私有库,管理固件和上位机代码)
- 一个固定频率的碰头节奏(每周至少一次完整的技术交流和演示)
很多人不理解:比赛只有96小时,用Git不是浪费吗?其实恰恰相反。四天里代码迭代极快,如果没有版本管理,很可能出现“改了三行代码板子不工作了,又不知道是哪三行”的绝望时刻。有了Git,你可以随时回滚到能跑的那一版。而且比赛时人很累,手滑覆盖文件的概率很高,仓库能给你们兜底。
3. 备赛期怎么练才不是白费力气
3.1 以赛题为纲,用往届真题做模拟演练
不下水的人永远学不会游泳,电赛备赛最有效的训练方式就是做真题模拟。找近五年(甚至近十年)的题目,挑三到四个不同方向的题,每个题目给三到四天时间,完全按照赛制走一遍:从拿到题目开始计时,24小时内必须定方案、分配任务,然后连续作战,最后提交作品和报告。全程不玩手机不睡懒觉,就按比赛状态来。
模拟之后一定要做复盘。复盘不是看“功能做出来没有”,而是逐条对着题目要求打分:
- 基本要求是否全部满足?哪个指标没到?
- 发挥要求有没有尽量去吃?
- 时间分配合理吗?卡在哪一个环节?
- 模块化做得够不够,有多少时间在重复写代码/画板子?
建议把每次模拟的情况记录在一张表上,比如传感器模块套用耗时、电源上电掉链子的概率、队友沟通是否顺畅。练上三轮,你的比赛节奏基本上就有谱了。
3.2 模块化思维怎么养:先建“积木库”
我在带队时,一直强调一件事:把比赛当成搭积木,不要当成雕艺术品。你要在备赛期把下面这些“积木”准备好,验证好,记清楚参数和使用方法:
- 电源模块:至少三种(低压差LDO、DC-DC降压、升压型),要测好纹波、效率和负载能力
- 主控最小系统板:STM32F103、STM32F4系列,或者ESP32,用于平时的快速原型验证
- 电机驱动模块:TB6612、DRV8833以及大功率的BTS7960,不同驱动能力要心里有数
- 传感器模块:红外测距、超声波、MPU6050六轴、摄像头(OpenMV或者普通OV2640)、灰度传感器
- 通信模块:NRF24L01、蓝牙、LoRa或者ESP8266/ESP32的WiFi
- 显示与交互:OLED屏、TFT屏、矩阵键盘、旋钮编码器
每个模块都写一张“模块卡”:型号、关键参数、接线方式(最好彩色图)、初始化代码、踩过的坑(比如I2C地址不对、SPI时序太快等)。比赛时翻自己的模块卡,比翻厂商datasheet快十倍。
3.3 工具和仪器的提前准备
比赛现场一般会提供一个桌面工位,电源(通常是实验室的直流电源或者标配的线性稳压电源)、示波器、信号发生器、万用表、电烙铁这些基本设备会有,但要做大项目还是人多手杂。建议自己至少带上:
- 一套趁手的焊接工具(烙铁、焊台、风枪看情况带)
- 一把好用的剥线钳和斜口钳
- 足够长的杜邦线(每种长度都必须有,这个消耗量惊人)
- 常用贴片阻容感(尤其是电阻,多备几个阻值,省得到时候翻箱倒柜)
- 备用芯片和模块(单片机至少带两块,电源IC带三到五份,传感器按需备份)
- 一个好的万用表(最好带自动量程的,手忙脚乱时少一个旋钮就少一份出错概率)
- 各种各样的接线端子(插拔式接线端子、XH2.54、KF2510)
另外,一定要提前确认自己的电脑接口类型,比赛工位只提供电源插座,笔记本的扩展坞、USB转串口线、JTAG下载器都要自己带够。我亲身经历过一次:全场只有他一个人带了ST-Link/V2的下载器,其他两支用同一个型号单片机的队伍排队来借,场面一度非常紧张。
3.4 赛前两个星期的“降载”和“增压”
临近比赛的前两周,不建议再学新东西了,也不建议再做全新的大项目。这个阶段的正确操作是:
- 把用过的模块重新测试一遍,确认它们在极限情况下(电池电压偏低、信号有干扰)还能正常工作
- 把之前写好的代码库整理成一个个可复用的.c/.h文件,带上注释
- 做一两次“只用一个晚上”的小系统测试,比如用最小系统板+传感器+电机驱动,完成一个极简闭环控制
- 准备参赛文档模板,把作品简介、指标测试表、demo视频脚本提前写好
另外,别忽视身体状态的调整。四天三夜不是靠前三天熬出来的,是靠赛前作息和体能撑着。提前一周把生物钟往比赛节奏靠,别等比赛开始才熬夜突击,那真的会让你在第二天下午注意力断崖下跌。
4. 四天三夜的实战战术板
4.1 拿到题目的前两小时:定方案像选股票,不能只看涨得快
比赛开始的哨声一响,整个赛场瞬间安静,所有人都盯着题目。这时候最容易犯的错误是“一窝蜂抢热门题”。有的题目看着简单,稳妥,但做的人一多,评委给分就卷;有的题(比如综合题)看似复杂,但只要有靠谱的框架,反而有机会冲高分。但也不要盲目追求冷门,冷门往往说明它真的很难。
我的建议是:三人先各读一遍题目,花20分钟独立理解,不要讨论,然后把每道题的关键指标、难点、自己的把握程度写下来。再一起对照各自的强项,选出第一意向和第二意向,如果第一意向的技术风险太高,随时换第二意向。选题一旦定了,就不要轻易回头。中途换题是大忌,时间成本无法承受。
4.2 从整体到局部,立刻画系统框图
定题之后,立刻在白板上画系统级框图:输入(电源、传感器)→信号处理(运放、滤波、ADC)→主控(MCU/FPGA)→执行/输出(电机、显示、上传)。确定每个模块的接口定义:供电电压、逻辑电平、通信协议、GPIO分配。
这里有个特别重要的点:先分配IO资源,再画板子写代码。很多队伍时钟MCU的引脚分配用的是“边画边想”,结果画到一半发现调制解调器的信号脚和PWM输出脚冲突了,要么飞线,要么换主控。把BOM(物料清单)全列出来,对照datasheet把引脚一次分配好,标注备用引脚,然后严格按照这个分配表去连线和写代码,会省很多事。
4.3 模块落地顺序:先拿分,再拿分多
比赛时间分配的核心策略是“优先攻击基本要求”。基本要求相对简单,是保底分数;发挥要求指标更高,是冲刺分数。建议进度条这样设定:
- 第一天上午:方案确认 + 关键原理验证(用面包板飞线快速验证核心电路,比如PWM能不能控制输出、传感器能不能读数据)
- 第一天下午~第二天下午:硬件定版(画PCB或手工焊万用板)+ 软件主体框架(主循环、中断、通信协议、状态机)
- 第二天晚上~第三天白天:软硬件联调,把基本要求逐项打钩
- 第三天晚上~第四天上午:冲发挥要求,优化未达标的指标
- 第四天下午:封板,写报告,整理演示流程和备份数据
在联调阶段,建议“一次只开一个功能”。我经常看到有人上来就把全部模块一起跑,结果系统挂掉后完全不知道是哪部分引起的。正确做法是:先把电源控制闭环调好,再加载传感器,再让传感器控制执行器,最后上通信。每一步都验证、记录、备份。
4.4 熬夜的正确姿态:轮流睡,不是不睡
四天三夜的“夜”是真实的。比赛到第二天凌晨,很多人会陷入一种“又困又不敢睡”的状态,效率极低,还容易焊错线。我的经验是:团队必须强制分班,两人工作,一人睡两小时,到点换班。睡觉的人不要看手机,闭眼就睡;值夜班的人保持清醒,做那些不需要特别精细的工作,比如焊线、查手册、写文档、测试数据整理。
这里有个私人心得:凌晨三四点前后,人的判断力会降到低谷,不适合做“这版有问题要不要推翻重来”的决策。有什么重大决策,要么放到白天精神好的时候,要么三个人同时在场投票决定,千万别让一个人凌晨犯迷糊时拍板。
4.5 封锁现场之前,自测清单必须走一遍
离比赛截止还有三到四个小时,一定要收手。不再加新功能,不再改代码逻辑,只做“固化测试”。把作品按最终形态装好,然后照着下面核对:
- 上电顺序对不对(先开电源,再初始化板子,最后连外部信号)
- 各电源电压是否在指标范围内,纹波是否可接受
- 功能测试按题目要求逐条走,记录实际数据(数据很重要,报告要用,评分也要看)
- 稳定性测试:连续运行20分钟,看看有没有重启、卡死、漂移
- 断电重启测试:模拟教授现场第一次上电演示的场景,确认不会出现“昨晚明明是好的”的悲剧
- 备份源码、工程文件、报告文稿到U盘/云盘
到了这一步,你们仨反而可以轮流休息一下。现场测试时,不要手忙脚乱,按准备的脚本操作,操作完一项就当众报出数据,让评委听得清楚,也显得团队非常专业。
5. 现场翻车高发区和排雷记录
5.1 电源问题:占所有故障的一半以上
电赛现场翻车最高发的原因,不是程序逻辑写错了,而是电源没有处理好。举例:用7805线性稳压器,输入接12V,输出5V给单片机供电,结果电机一转,电压瞬间跌落超过300mV,单片机直接复位。这种问题在备赛时就应该查出来:要么电机单独供电,要么地线用星形接法,要么换DC-DC模块并加强滤波。
另一个常见电源坑是共地问题。传感器和主控、电机驱动之间的地如果不连通或者多点接地,轻则读数跳动,重则烧毁模块。做系统连线的第一步永远是确认“地”一致。
5.2 传感器数据不稳、噪声大怎么排查
如果传感器读数上下跳,先看看是不是电源纹波影响的,用示波器测一下传感器VCC的波形;再看信号线是不是太长且没有做滤波,I2C/SPI信号线上串个小电阻或者加上拉是否正常;最后,看看参考地和信号地是否存在环路。
还有,如果你用摄像头模块,注意光源环境。比赛现场灯光是顶灯,反光和阴影都很奇怪,最好在备赛时多调一下曝光参数和阈值,别指望到了现场再“自动适配”,那样大概率会自闭。
5.3 代码编译通过但功能不对?
这类问题通常出在时钟配置和外设初始化顺序上。很多STM32用户习惯把用不到的GPIO不初始化,结果这些引脚电平随机漂移,干扰了外围器件。建议上电后抓紧把用到的所有GPIO显式配置一次,输入、输出、复用分别写清楚,不开任何没必要的默认功能。
另一个很隐蔽的问题是中断优先级配置。两个中断同时到来,如果优先级决定顺序不对,很有可能会导致数据传输错乱。比如编码器中断和定时器中断互相抢,最后电机控制频率就乱了。写代码前,先把系统的中断优先级列表画在纸上,这是从一开始就要想清楚的事。
5.4 常见问题速查表
| 故障现象 | 可能原因 | 排查顺序 |
|---|---|---|
| 上电后单片机无反应 | 电源没到VCC/下载口不通 | 测电压→测复位脚→测晶振→重新上电 |
| 电机不转或抖动 | 驱动芯片使能脚没拉高/PWM频率不合适 | 查EN脚→查PWM波形→查电源电流 |
| OLED白屏或花屏 | 地址设错/初始化时序不对/电压太低 | 查地址(常见0x3C/0x3D)→查SDA/SCL顺序→查复位时序 |
| 无线通信丢包 | 频道冲突/天线不稳/供电不足 | 换频道→降速率→加大退耦电容 |
| 数据跳变 | 参考电压漂移/采样时间太短 | 看波形→加平均滤波→加大采样时间 |
如果你的时间只剩半天,但上面还有好几个问题没解决,就优先处理会影响基本要求的部分,其他能砍则砍,不要掉入“优化执念”,那个是拿不到分还耗光状态的坑。
6. 一些只有比过赛才懂的经验
最后跟你聊点没法写进教科书的东西。
第一,比赛比的其实是决策速度。哪一个瞬间决定换掉不争气的模块,哪一个瞬间决定放弃一项指标保另一项,哪一个瞬间决定不让队友继续钻牛角尖。这些决策没有标准答案,但做得越快的人,后面越从容。
第二,四天三夜的情绪管理是要练的。比赛第二天晚上通常是最容易吵架的时候,所有人都累了,一点点小摩擦都会被放大。备赛时最好就约定一条规则:任何质疑都只对技术、不对人,发言前先把证据摆到桌面上。有一次我们为了一个运放的偏置电阻吵了半小时,后来发现是对方用的万用表表笔接触不良导致读数差了几百毫伏——从那以后,我要求全队在质疑别人之前,先自己检查一遍工具和测量方法。
第三,文档和习惯决定下限,临场发挥决定上限。当你准备充分时,现场测试只是把平时练过无数次的动作再做一遍。那些能稳定发挥的队伍,从来不是靠运气,而是把所有可变因素都在赛前变成了常量。
如果你正在备赛,从明天开始就做两个动作:把队内每个人的强项列出来,然后找一套去年的真题,关起门来模拟24小时。先做起来,别光看攻略,动手比什么都重要。等你经历过一次完整的四天三夜,再回头看这些文字,大概会心一笑——原来那个让你血压飙升的坑,早就在路上了。