本人仅是一个普通本科生,仅有两年电赛经验,最高奖项为省级二等奖,故本文在介绍中一定存在一定片面、主观内容,请结合自身情况理性判断本文内容的取舍。


硬件篇

概述

硬件队员应当具备较强的错误分析能力与全局思考能力,因为硬件为万物之基础,硬件应给予软件足够可靠与稳定的调试环境,让硬软件的控制变量变为只有软件,这样才能更快速的使软件完成调试。

硬件定位往往是辅助位,在比赛过程中硬件队员应至少同时担任视觉工作或者对软件有足够的基础,以辅助队员在竞赛过程中实现既定功能。


万用板

每个硬件队员应辅助软件队友共同完成至少一块万用板。

例如上图,这块万用板具备了以上中文的全部功能,并且由于每个引脚加以批注,可以以最快速度确定引脚位置并飞线;在电机方面设定了镜像编码器电机接口,以应对两个电机在物理结构上为同向或反向设计差异,同时设计无编码器电机接口,增加适配范围;在开关方面设计电机开关与总开关隔离,可以实现在烧录程序和桌面调试过程中电机不会突然启动;在红外对管传感器设计上,中间引脚可以实现使用红外对管或使用串口功能的同一引脚复用,适配具备串口通讯与IIC通讯的红外对管;预留5V、GND、3.3V、9V预留口,可以实现丰富的模块拓展。

准备的万用板应具备在电赛竞赛中出现的几乎所有功能,根据软件队员的能力,可以考虑是否进行引脚复用,也可以使用例如RCT6这样引脚众多的主控芯片。

之所以说要具备几乎所有功能,是为了能够在电赛开赛时以最快速度进行团队启动,如果竞赛过程中不需要某一个模块,就不接入此模块,对此模块的软件进行注释,以这种方法在第一时间投入到竞赛的软件适配中。

一个可靠的万用板,不仅可以让队伍在硬件方面无后顾之忧,也可以在软件方面以最熟悉的代码应对竞赛。


问题排查

硬件学生应熟练掌握万用表、肉眼观察等排查故障的方法。

例如,万用表的导通检测功能是最为常见的芯片短路检测方法,将表笔分别接入正极与GND,若蜂鸣器报警,则说明芯片被烧穿。但对于经验丰富(烧了很多)的硬件队员,往往使用肉眼观察芯片上是否有灼烧痕迹即可判断芯片是否损毁

在电路设计上,控制组的硬件备赛应使用大量模块加排母底板的设计思路,这种设计思路可以方便的使用控制变量法、替换故障模块的方法最快完成问题排查与纠正。

在问题排查上,硬件学生最好具备一定软件基础,对软硬件同时加以分析,以确保问题排查的结果不至于有失偏颇。


见多识广

在下表中,我列出了我所知的电赛过程中可能会使用到的模块(大部分是用不到的)。

信息收集通讯视觉信息电路电源机械结构声光主控
加速度计蓝牙模块光流传感器继电器升压模块M3led模块stm32f4
多轴陀螺仪2.4ghz激光雷达电机驱动模块降压模块直流电机有源蜂鸣器stm32f1
气压计esp32openmv电调可调电压模块编码器电机无源蜂鸣器TI系列m0
红外对管串口屏k210稳压模块电压测量模块步进电机语音控制设备msp432
灰度传感器电阻屏树莓派按键矩阵18650电池舵机扬声器树莓派
超声波模块IIC显示屏Jetson滑动变阻器9v方形电池无刷电机声音传感器esp8266
温湿度计墨水屏橘子派L298N1.5v锂电池万向轮火焰传感器arduino
水位传感器激光发射模块tb6612AMS1117三极管阿克曼、差速点阵显示模块
光敏、热敏电阻深度摄像头拉法电容麦轮
碰撞传感器无线充电模块
触摸传感器无线接收模块
霍尔开关传感器太阳能充电模块
人体红外传感器
激光测距模块
烟雾传感器
振动传感器
心率传感器
压力传感器
热电偶
雨水模块

硬件学生应在淘宝上多逛逛,看看这些模块的使用方法与图片,以便在可能遇到需要这些模块的时候想得到有这种模块,只要想得到,软件实现也便不远了。

硬件学生知道的越多,在赛题的实现可能性上就会越大。

例如在无线充电小车题目中,软件在“充电器不输入时启动小车”功能或许不好实现,但使用继电器模块就可以以纯硬件电路实现充电器断电后启动小车。

再例如使用长脚排母可以实现一个主控接入两块底板等小技巧,给软件留下了容错空间。。


后勤储备

我的储备模式往往遵循以下规律:

小车:保证有两辆小车常备,另外再有一辆小车可以缺少元器件,当作备车。
电路:两块具备多接口的降压稳压模块(当作学生电源或者临时使用)、多块万用板上的降压模块。
电池:3块由3节18650电池组成的12V电池包。
视觉:3个摄像头(如openmv、k210、maixcam)
主控:管够的c8t6和DAP烧录器。
零件:多套万用板储备与万用板排针排母。
其他:至少一套焊笔、小焊台。


视觉

概述

视觉可供选择的主控非常多,在较为传统的方向有OPENMV,在NPU协助运算的神经网络计算方向有K210、MAXICAM,在CPU硬解方向有树莓派、橘子派,在GPU解算方向有Jetson,在实现特种功能上还有CCD摄像头、激光雷达。但无论选择哪种实现方式,整体实现语言基本都是使用python。


OpenMV

OpenMV具备丰富的开源软件,星瞳科技自身也提供了很多官方例程,与stm32主控使用数据包进行串口通讯,实现简单功能并不复杂,是电赛比赛中最常用的视觉模块。

但受限于其本质上是一个stm32f4,算力是有限的,在实现23年的跟踪矩形等复杂功能会出现帧率过低,控制存在延迟,具备劣势。

常用功能:色块追踪、视觉巡线、模板匹配、QR码、AprilTag


K210、MaixCAM

K210、MaixCAM得益于其强大的NPU与k210主控,在神经网络与AI学习上的优势是无与伦比的。尤其是MaixCAM更是专门为电赛而生一般,电赛所需要的功能都能在MaixCAM上轻易实现。

但传统的K210软件与硬件都具备很多bug,在软硬件上存在一定阻力

常用功能:神经网络识别、AI识别、色块追踪、视觉巡线、人脸识别、姿态检测


树莓派、橘子派

树莓派的开源资料是仅次于stm32的,要想实现各种复杂功能并不复杂,甚至还能够当作主控

但树莓派在供电设计上存在困难,树莓派采用5v3A的电池供电,与传统的12V电池包存在一定出入。由于是CPU硬解,在跑yolov5算法时帧率仅能稳定在5帧,但识别效果非常好

常用功能:上位机通讯、神经网络识别等以上功能


Jetson

我没有用过Jetson,无法提供有关建议。


特种视觉

CCD传感器

往往用于高速过程中的巡线识别。

激光雷达

能够对具备障碍物的赛场进行三维建模,对车体在空间中的移动进行精密控制。

光流传感器

往往用于无人机对自身悬停的位移检测。


备赛代码

无论使用哪种视觉传感器,都应该准备好很多基础代码,例如色块追踪(要做脱机调阈值功能)、视觉巡线、神经网络模型训练。