比赛获奖的武林秘籍:07 一文速通电子设计大赛,电子人必看的获奖秘籍
摘要
本文主要介绍了全国大学生电子设计大赛的含义、比赛形式、组队技巧,结合自身经历讲解了备赛指南,同时对往年题目进行了分析和总结。
正文
引言部分:
在电子技术的广阔天地中,年轻的电子设计爱好者们如同勇敢的探险家,怀揣着对知识的渴望和对创新的追求,踏上了电子设计竞赛的征程。
全国大学生电子设计竞赛,是他们展示才华、激发潜能的舞台,在这里,他们不仅能够提升自己的技术水平,还能够锻炼团队协作能力和创新思维。展示自己突出的技术与实践实力
大赛介绍:
全国大学生电子设计竞赛是教育部和工信部共同发起的大学生学科竞赛之一,该竞赛面向大学生群众性科技活动,目的在于推动高等学校促进信息与电子类学科课程体系和课程内容改革。
大赛目标:
全国竞赛是一项全国性的大学生学科竞赛,旨在紧密结合教学实际,重视基础知识和前沿技术。它的目的是促进电子信息类专业的建设,引导高校在教学中注重培养学生的创新能力和协作精神,加强动手能力和工程实践的培养,提高学生解决工程问题的电子设计制作综合能力。同时,它也鼓励广大学生积极参与课外科技活动,为优秀人才提供脱颖而出的机会。
题目分类:
竞赛题目主要围绕电子电路的应用设计,包括模拟和数字电路,可以涉及到模-数混合电路、单片机、可编程器件、EDA 软件工具和 PC 机(主要用于开发)的应用方面。下面我们就来说一下电赛题目的具体分类,电赛题目大致分为:电源类、信号源类、高频无线电类、放大器类、仪器仪表类、控制类。接下来,我们就来详细介绍一下。
电源类:简易数控直流电源、直流稳压电源;
- 信号源类:实用信号源的设计和制作、波形发生器、电压控制 LC 振荡器等;
- 高频无线电类:简易无线电遥控系统、调幅广播收音机、短波调频接收机、调频收音机等;
- 放大器类:实用低频功率放大器、高效率音频功率放大器、宽带放大器等;
- 仪器仪表类:简易电阻、电容和电感测试仪、简易数字频率计、频率特性测试仪、数字式工频有效值多用表、简易数字存储示波器、低频数字式相位测量仪、简易逻辑分析仪;
- 数据采集与处理类:多路数据采集系统、数字化语音存储与回放系统、数据采集与传输系统;
- 控制类:水温控制系统、自动往返电动小汽车、简易智能电动车、液体点滴速度监控装置。
通过上面的介绍相信大家对比赛毕竟有了一些了解,那比赛到底该如何准备呢?该学些什么呢?
在了解需要学习什么东西之前,我们先来看一下往年的电赛都比些什么吧!这里就以 2019 年电赛为例给大家做下分析:
竞赛时间及具体流程:
自 1997 年起,全国大学生电子设计竞赛每两年举行一次,通常在竞赛年份的 8 月初进行。
总赛期为期四天,四天三夜(具体日期届时通知)
需要注意的是:
不要因为一点小细节,丢掉比赛资格!!!
- 《设计报告》写作装订
参赛学生在撰写《设计报告》时应注意,报告封面及每页纸上均不得出现参赛队的学校、代码、姓名等文字,否则取消评审资格。
报告正文长度严格限制为 A4 纸 8 页以内,首页另附 300 字以内的设计报告中文摘要,正文采用小四号宋体字,行距固定值 22 磅,标题字号自定,纵向打印。《设计报告》每页上方必须留出 3cm 以上空自,空自区域内不得有任何文字,每页右下端注明页码。
- 《设计报告》密封
竞赛结束之际,各参赛队应将设计报告密封纸(空白 A4 纸)在距设计报告上端约 2cm 处装订,然后将参赛队的代码(代码由赛区组委会统一编制,开赛前通知各队)写在设计报告密封纸(空白 A4 纸)距离上纸边约 1cm 居中处,掀起密封纸折向设计报告背面,用胶水粘在背面。
- 竞赛作品上交及密封
综合测评综合测评不能上网,也不允许带手机及电子资料,仅允许带一些纸质材料。现场会提供基本元件。需要关注的是,综合测评成绩低于某一分数线的,直接无缘参加国赛。而进入国赛的队伍,综合测评成绩会计入总成绩。
具体注意事项可以移步至大赛官网查看:全国大学生电子设计竞赛培训网 (nuedc-training.com.cn)
组队及比赛形式:
学生采用自愿组合、3 人一队的原则组成参赛队,由所在学校统一向赛区竞赛组委会报名。参赛队分本科生组和高职高专学生组,参赛队数由参赛学校自行确定。
全国竞赛专家组根据命题原则,分别为本科生组和高职高专学生组统一编制若干个竞赛题目,供参赛队选用。
各赛区竞赛所需场地及仪器设备、元器件或材料原则上由参赛学校提供。
全国大学生电子设计竞赛采用“半封闭,相对集中”的组织方式。
“半封闭”是指赛期内,各参赛队必须独立完成竞赛题目的各项要求,不得与他人商量和交流,任何教师不得介入,但学生可离开赛场查阅各种有关资料,可在规定时间内用餐和休息;
“相对集中”是指参赛学校安排本校参赛队集中在不超过三个实验室内完成竞赛,便于巡视员检查。建议有条件的赛区,增加赛区一级的网络在线监控,赛区组委会可对赛区内各个竞赛场地全景实施实时在线监控,作为对已有巡视检查制度的有效补充。赛区组委会监控是否录屏及录屏存留时间由赛区组委会决定。
题目获取方式:
赛事组织方采用网上发题的方式。竞赛将于电赛开赛的第一天早上 7 点 30 分在全国大学生电子设计竞赛的官方网站:
全国大学生电子设计竞赛培训网
8 点竞赛准时开始。
备赛指南:
说到这里,相信各位小伙伴已经对全国大学生电子设计竞赛这个比赛有了最基本的了解,但真正“战役”才刚刚开始,对于电赛来说,如何高效备赛才是我们的重头戏。
电子竞赛的“战线”延展漫长,虽然时间充裕,但任务却异常艰巨。涵盖模拟-数字混合电路、单片机、嵌入式系统、DSP、可编程器件、EDA 软件、互联网、大数据、人工智能、射频及光电器件等多方面技术应用,我们往往是在课余时间去深入学习,磨练团队间默契与协作。
这个时候,一份系统化的知识梳理,就显得格外雪中送炭啦!
从嵌入式原理入手
那么接下来。我们就以介绍嵌入式原理入手,全面总结电子设计类比赛中电子专业学生所需的知识准备。
嵌入式是一门交叉学科,一个嵌入式电子产品(比如手机)从底层到上层,一般会涉及半导体芯片、电子电路、计算机、操作系统、多媒体等不同专业领域的知识,由于其碎片化的特点,大多数入门学习者面临着:不知道学什么、怎么学的问题,因此本文我们对嵌入式不同技能进行分类和总结,让入门初学者能够有一个总体的学习思路。
总体来说,还是可以把嵌入式学习分为三个大的阶段:
首先基础学习阶段,这就包括通用编程基础(C语言、数据结构/算法、操作系统、计网、计组、Linux系统基础)和基本的硬件基础,扎实地掌握这两大基础,是后续持续发展和不断进步的动力源泉。
其次就是嵌入式应用编程阶段,或者说系统平台编程阶段。因为一般会以特定的嵌入式平台和特定的嵌入式操作系统为依托,熟悉这个系统平台上的编程方法和流程。以常见的ARM+RTOS为例,需要掌握从通信协议到多任务编程、GUI开发、网络编程、外设基本操作、中间件和组件库的使用几个方面。
最后就是深入嵌入式底层开发阶段,最常见的就是内核开发和驱动开发,这些统属于内核态开发范畴,所以需要对操作系统内部机制有所涉猎和理解,在此基础上需要掌握从系统移植到内核开发、驱动开发的各个细节。
除此之外,在嵌入式软件中,我们也要了解基本的编程设计模式和函数接口设计方法、简易上位机的制作、常用无线通信协议等等内容。
首先,先进行理论知识的准备
模拟电路
-
基本元件与电路分析:掌握电阻、电容、电感、二极管、三极管等元件的工作原理和基本电路分析方法。
-
运算放大器:学习运算放大器的基本原理、典型应用电路(如积分器、微分器、滤波器等)。
- 典型应用电路
- 反相放大器:输出电压与输入电压反相,增益由外部电阻决定
- 同相放大器:输出电压与输入电压同相,增益由外部电阻决定
- 积分器:输出电压是输入电压的积分
- 微分器:输出电压是输入电压的微分
- 滤波器:用于信号频率选择和处理,包括低通、高通、带通和带阻滤波器。
- 典型应用电路
数字电路
-
逻辑门与组合逻辑电路:掌握基本的逻辑门电路、组合逻辑电路设计与分析。
- 逻辑门
-
基本逻辑门:与门(AND)、或门(OR)、非门(NOT)、异或门(XOR)、与非门(NAND)、或非门(NOR)。
-
逻辑运算:掌握基本逻辑门的功能及其真值表。
-
- 组合逻辑电路
-
半加器与全加器:用于二进制加法的基本电路。
-
编码器与译码器:编码器将输入的信号转换为编码信号,译码器将编码信号转换为输出信号。
-
多路选择器与数据分配器:多路选择器选择多个输入信号中的一个输出,数据分配器将输入信号分配到多个输出端。
-
- 组合逻辑电路设计与分析
- 布尔代数:利用布尔代数进行逻辑表达式的简化。
- 卡诺图:通过卡诺图进行逻辑函数的化简,优化电路设计。
- 逻辑门
-
时序逻辑电路:学习触发器、寄存器、计数器、时序分析与设计方法。
- 触发器
-
基本类型:D 触发器、JK 触发器、T 触发器。
-
工作原理:了解触发器的工作原理及其真值表和时序图。
-
- 寄存器
- 移位寄存器:用于数据的存储和移动。
- 计数器:用于计数脉冲的个数,有同步计数器和异步计数器。
- 时序逻辑电路设计与分析
- 状态机设计:利用状态机实现复杂的时序逻辑电路,了解 Moore 型和 Mealy 型状态机。
- 时序分析:分析电路的时序特性,包括建立时间、保持时间、时钟偏移等。
- 触发器
掌握一款单片机的基本使用
电赛的题目类型主要包含以下七个方面:
- 电源类
- 信号源类
- 高频无线电类
- 放大器类
- 仪器仪表类
- 数据采集与处理类
- 控制类
在以上 7 大方面中,我们都可以采用 STM32 作为控制器,包括电源类题型,STM32 的控制器一直以来都是一个不错的选择。
- STM32 基于 ARM Cortex-M 系列处理器,提供高速运算能力和优秀的实时处理性能。这使得它能够处理复杂的控制算法、快速响应外部事件,并且适应需要高速运算和响应的电赛题目要求;
- STM32 具有丰富的外设模块,包括多个通用定时器、串行通信接口(如 USART、SPI、I2C)、模拟和数字转换器(ADC 和 DAC)等。这些外设模块能够轻松实现各种传感器的数据采集、外部设备的控制和通信需求,满足电赛题目中数据采集与处理、控制类等各方面的要求。
- ST 官方提供的 STM32Cube 软件开发平台和 STM32CubeMX 配置工具,使得开发人员可以快速生成初始化代码、配置外设和生成项目框架,极大地提高了开发效率。此外,STM32 的开发工具链完整,支持多种编程语言和开发环境,如 C 语言、Keil、IAR 等,使得开发者可以根据自己的喜好和项目需求选择合适的开发方式。
想要参加电赛的小伙伴们,可以优先学习一下 STM32 这款单片机,不仅可以实现电赛题目的要求,还将在电子设计和嵌入式系统领域打下坚实的基础。
这里,对于 STM32 单片机来说,要掌握的最最基本的技能包括:
- 串口通信:熟练运用 STM32 板上的串口,实现数据的发送与接收,这是基础中的基础。
- 电平控制:了解并能够控制板子上电平的抬高与降低,这对于与各种外设的交互至关重要。
- PWM 波控制:掌握 PWM 波的输出以及动态控制技术,这对于电机控制和亮度调节等应用极为重要。
- 中断处理:熟悉中断的调用和处理,这对于实时响应各类事件和异常处理非常关键。
- 模拟数字转换:熟练使用 STM32 板上的 ADC 和 DAC 转换功能,这对于信号的处理和转换不可或缺。
- 传感器集成:掌握板子与各种传感器的配合使用,如温度、湿度、光线等,以及如何读取传感器数据。
- 模块控制:了解如何控制各类模块,如步进电机、舵机等,并能够编写程序来实现复杂的功能,如三维云台的物体跟踪和定位。
- 综合应用:不仅要使设备能够运动,更要能够编写程序来实现高级功能,如自动跟踪和精确控制。
就先以电源类题目来说,电源题对单片机的算法要求不高,程序的复杂度也相对较低,负责软件开发的同学需要熟练以下技术点:
-
基本外设的使用:
- DAC 和 ADC:用于信号转换和处理。
- 外部中断和定时器中断:用于实现精确的时间控制和响应外部事件。
- PWM 输出:用于控制电源输出和调节电压。
- OLED 或数码管驱动:用于显示电参数和状态信息。
-
电参数测量:
- 能够使用单片机实现对直流电压、电流,交流电压有效值、电流有效值,有功功率和功率因数等电参数的测量。
-
电源控制方法:
- 掌握基本的电源控制方法,了解如何使用单片机的 PWM 或 DAC 功能控制开关电源。
- 能够实现逆变、并联均流控制等高级电源控制功能。
- 熟悉简单 PID 控制算法,用于电压和电流的稳定控制。
全方面备赛攻略
针对硬件、软件、视觉和机械这些方面,对于电赛来说,也是必不可少的。这些方面又如何去进行准备呢?让我们逐一来了解一下吧!
硬件方面:
- 能够完成基本运算放大电路、滤波电路、电压比较电路、DCDC 电路、电驱驱动电路、MCU 外围电路设计;
- 会使用常用的 NI Multisim 14.0,Proteus 8 Professional,LTspice 等电路仿真软件;
- 能够通过阅读数据手册,快速搭建电路;
- 会使用示波器、信号发生器、逻辑分析仪、电子负载、万用表等常用仪表;
- 通过阅读论文、查阅资料等方式快速搭建电路。
嵌入式软件方向:
- 熟悉一款或多款单片机,熟练掌握 GPIO、外部中断,ADC 模数转换,定时器,dma 数据传输、通信协议(IIC,IIIC,SPI,串行总线(rs485,rs232,rs422,全双工,半双工,单工,智能卡,can 总线),单总线通信,usb,usb2.0,usb3.0,网络协议接口)等外设应用;
- 熟练应用 C 语言,会使用 IDE 中基本的调试方法,包括程序编译与一键下载、单步执行、逐行执行、跳出函数、断点、执行到光标行、外设寄存器状态查看、变量监测、内存查看、逻辑分析、Debug Viewer、系统分析、Event Recorder 调试、代码时间统计、命令窗口、工具箱的使用等;
- 掌握至少一种 RTOS 的使用方法,包括任务创建,任务调度,消息队列,信号量,互斥组,任务同步,内存管理,Tracealyzer 调试追踪等;
- 了解基本的常用通信协议,包括 modbus、zigbee、蓝牙等;
- 会使用基本调试软件,包括:Event Recorder+MDK、逻辑分析 Kingst、mcuISP 串口助手、ST-LINK Utility、NetAssist 网络调试、STM32CubeMonitor 内存监测、SecureCRT、MobaXterm、whbots PID 调试工具、usb2s 调试工具、字库制作软件、putty 远程连接工具、balenaEtcher 镜像烧录工具、CVSP Driver 虚拟串口工具、UltraISO 镜像烧录工具等;
- 熟练使用常见电子模块:OLED 屏幕,DTH11 温湿度传感器,LM75 温度传感器,MPU6050,LCD1206,L298N,步进电机,超声波测距,SD 卡,OV7670 摄像头,串口屏,舵机,继电器,HC05 蓝牙,NRF24L01 单片射频收发模块,霍尔传感器,无刷直流电机,AD 模数转换模块(SPI),遥感模块等。
- 能理解信号的时序关系,根据数据手册写驱动程序。
视觉方向
- 可以应用 OpenCV 库实现图像变换(空域与频域、几何变换、色度变换、尺度变换)、图像增强(灰度变换增强、直方图增强、图像平滑/降噪图像(边缘)锐化)、纹理分析(取骨架、连通性)、图像分割(阈值分割、基于边界分割、Hough 变换、分水岭分割)、图像特征提取(几何特征、形状特征、幅值特征、颜色特征、直方图特征、局部二值模式( LBP)特征)、模式识别、目标追踪等;
- 可以在一款或者多款 MPU 上部署图像处理算法;
- 对数字图像处理理论基础、计算机视觉理论基础有了解;
- 可以使用 Sklearn 库、Pytorch 框架等机器学习框架实现视觉特征提取及特征处理;
- 会使用专用于图像处理的单片机(K210、OpenMV 等)以及一些在线模型训练平台。
机械方向:
- 会使用 SW、NX 等软件进行基本 3D 建模及运动仿真;
- 会使用 RobotArt、Robcad、Webots 等基本机器人仿真软件;
- 会使用 3D 切片软件及 3D 打印机;
- 会使用 ANSYS 软件进行有限元分析等;
往年题目:
以我去年做过的 23 年国电赛 E 题(运动目标控制与自动跟踪系统设计)为例,先给大家分析一下当时遇到的难点
任务概述:
任务包括两个独立的系统:红色激光系统和绿色激光系统。在一个无干扰的平面屏幕上进行操作,屏幕上粘贴一张 A4 空白纸,四周用黑色电工胶带覆盖,形成一个黑色矩形框。具体任务如下:
-
红色激光系统:
- 使用红色激光笔发射的光斑模拟运动目标。
- 光斑应落在距离屏幕 1 米处,直径不超过 1 厘米。
- 红色光斑位置控制系统应能够控制光斑在屏幕范围内任意移动。
- 控制红色激光光斑在黑色矩形框内沿边缘扫描一周。
-
绿色激光系统:
- 使用绿色激光笔发射的光斑,并由绿色光斑位置系统控制,用于自动追踪屏幕上的红色光斑。
- 绿色光斑直径不超过 1 厘米。
- 绿色激光笔的放置线段与屏幕平行,位于红色激光笔两侧,距离红色激光笔在 0.4 米至 1 米之间。
- 不论红色系统是否在沿黑色矩形框扫描,绿色激光系统需自动追踪红色光斑,确保两光斑的追踪距离保持在 3 厘米以内,并且两光斑位置可以重合。
- 追踪成功后,绿色系统应发出警报。
任务剖析:
红色激光系统:
-
识别黑色矩形框:
- 利用传感器或摄像头识别电工胶带围成的黑色矩形框。
- 通过图像处理算法计算出矩形框的坐标。
-
控制红色激光遍历矩形框:
- 基于计算出的矩形框坐标,编写控制算法使红色激光光斑沿着矩形框的 4 条边运动。
- 确保红色光斑的运动平滑且精确。
绿色激光系统:
-
识别红色激光:
- 通过摄像头或其他传感器实时捕捉屏幕上的红色激光光斑位置。
- 使用颜色过滤或其他图像处理技术识别红色光斑。
-
控制绿色激光追踪红色激光:
- 设计控制算法,使绿色激光光斑能够实时追踪红色激光光斑的位置。
- 保持两光斑的追踪距离小于 3 厘米,确保精度。
- 实现绿色光斑与红色光斑位置重合时,绿色系统发出警报。
核心问题在于:
- 激光点的识别:需要准确识别红色和绿色激光光斑的位置。这可以通过图像处理技术实现,例如颜色过滤、边缘检测和形态学处理等。
- 激光点的控制:需要精确控制激光光斑的移动。这需要编写高效的控制算法,确保激光光斑能按照预定轨迹移动并保持精确的追踪。
功能设计:
识别功能
使用 OpenMV 模块来实现,这是一个基于 Python 的开源图像处理模块,适用于实时图像处理和机器视觉任务。利用 OpenMV 提供的图像处理函数和算法,可以编写 Python 脚本来实现颜色识别、形状识别等功能。
在红色系统中,通过 OpenMV 利用四元检测算法来识别黑色矩形框。该算法可以识别任意大小和角度的矩形,并返回一个包含 rect 对象的列表。通过调用 rect.corners()函数,可以获得一个包含四个顶点(x,y)的列表,这些顶点按照顺时针顺序排列。由于背景屏幕为白色,屏幕内只有黑色矩形框、红色激光点和绿色激光点,因此激光点的识别问题可以简化为颜色识别问题。由于激光点的大小远小于屏幕和矩形框的大小,OpenMV 可以将激光点识别为一个颜色点,并返回其坐标。
运动控制系统
运动控制系统由 STM32 单片机实现。单片机需要获取控制目标的坐标信息,而这些坐标信息是由 OpenMV 获取的,因此需要通过串口通信将坐标信息传输给单片机。
尽管 OpenMV 具备自主控制能力,可以连接云台作为主控设备,但由于许多附加任务和外设负载,OpenMV 的可用输出端口有限,功耗也相对较高。因此,OpenMV 只负责视觉识别和信息传输,而所有附属任务的执行和运动目标的控制则由单片机完成。
激光点的运动控制通过单片机采用增量式 PID 算法实现闭环控制。选择增量式 PID 算法的原因是激光点在视觉采集视角中的运动范围有限。可以在程序中设置一个初始基准坐标,根据目标坐标与基准坐标的差值,转换为增量调用 PID 算法进行控制。
对于黑色矩形框的遍历,从 OpenMV 中获取矩形的四个顶点坐标后,可以分别计算出基于 OpenMV 坐标系的四条矩形边的一次函数。在两个端点之间取一定的样值,通过单片机控制云台遍历每一个样值坐标,完成一条矩形边的遍历。重复四次即可完成整个矩形框的循迹。需要注意遍历的坐标点顺序,以保证轨迹的连接性,防止出现“跳跃”的情况。
更多比赛获奖的秘籍和技巧,可看这里原文链接。
原文链接
电子计算机类比赛获奖的秘籍,可点击这里:
电子计算机类比赛的“武林秘籍”-电赛光电设计大赛计算机设计大赛嵌入式芯片与系统设计竞赛,你要的都在这里!
往期推荐:
学嵌入式的你,还不会面向对象??!
全网最适合入门的面向对象编程教程:00 面向对象设计方法导论
全网最适合入门的面向对象编程教程:01 面向对象编程的基本概念
全网最适合入门的面向对象编程教程:02 类和对象的 Python 实现-使用 Python 创建类
全网最适合入门的面向对象编程教程:03 类和对象的 Python 实现-为自定义类添加属性
全网最适合入门的面向对象编程教程:04 类和对象的Python实现-为自定义类添加方法
全网最适合入门的面向对象编程教程:05 类和对象的Python实现-PyCharm代码标签
全网最适合入门的面向对象编程教程:06 类和对象的Python实现-自定义类的数据封装
全网最适合入门的面向对象编程教程:07 类和对象的Python实现-类型注解
全网最适合入门的面向对象编程教程:08 类和对象的Python实现-@property装饰器
全网最适合入门的面向对象编程教程:09 类和对象的Python实现-类之间的关系
全网最适合入门的面向对象编程教程:10 类和对象的Python实现-类的继承和里氏替换原则
全网最适合入门的面向对象编程教程:11 类和对象的Python实现-子类调用父类方法
全网最适合入门的面向对象编程教程:12 类和对象的Python实现-Python使用logging模块输出程序运行日志
全网最适合入门的面向对象编程教程:13 类和对象的Python实现-可视化阅读代码神器Sourcetrail的安装使用
全网最适合入门的面向对象编程教程:全网最适合入门的面向对象编程教程:14 类和对象的Python实现-类的静态方法和类方法
全网最适合入门的面向对象编程教程:15 类和对象的 Python 实现-__slots__魔法方法
更多精彩内容可看:
给你的 Python 加加速:一文速通 Python 并行计算
一文搞懂 CM3 单片机调试原理
肝了半个月,嵌入式技术栈大汇总出炉
电子计算机类比赛的“武林秘籍”
一个MicroPython的开源项目集锦:awesome-micropython,包含各个方面的Micropython工具库