大一也能打电赛!靠几个开源项目,我们3天做完了E题

科技   2024-09-25 20:01   江苏  

不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我

大家好,我们是来自华北电力大学的李萧毅、徐荥和章钰晨。2024年电赛我们选择的是E题,实现了题目中所要求的全部功能,还获得了北京市一等奖。很荣幸收到达尔闻的邀请,来和大家分享我们这次参赛经历。

我们参赛时都是大一,也是第一次参加电赛,能有这样的成绩并不是因为我们实力有多强,而是许多优秀开源项目,帮我们分担了很大一部分工作量。

选题



因为我们三人都没学过模电,能看懂,并有些思路的题目,也就只剩E(三子棋)、G(超声波)、H(小车)题了。但是我们注意到实验室有两台坏掉的3D打印机,虽然它的喷嘴热敏电阻有点问题,但机械结构都正常,尺寸也刚好符合题目要求,我们没有犹豫,直接向老师申请借来了这台打印机,选择E题并开始设计。

硬件



事实上,我们完全可以直接用这台3D打印机作为我们作品的机械部分,但考虑到评测时组委会可能要求必须自己设计机械结构,我们还是对这台3D打印机做了一些修改,去掉喷嘴和Y轴,把XZ轴横过来,这样原来喷嘴的位置就可以安装工具头用来在水平方向移动棋子了。

在棋子移动方案上,我们使用了最直接,也最简单的方式:用电磁铁吸取并移动棋子。棋盘也没用什么花里胡哨的底色,捡了个咖啡包装纸袋,剪成方形,画上格子,主打一个能用就行,棕色也不刺眼;底板用激光切割了一片木板,略微涂黑,摄像头能识别到黑白棋子就正合适。

再找个ESP32开发板,接上2个步进电机驱动模块,1个继电器模块用于控制电磁铁,硬件部分就算完成了。

软件



要说这个项目最复杂的部分,就是软件的编写了,或者说,视觉算法的编写。

很多同学做到这里,第一反应是去配置工程,找步进电机驱动算法,研究坐标转换等,启动时没限制加速度导致丢步,斜线坐标计算的误差……可能因此也怀疑过步进电机的精度。

而我们,连编译器都没碰,使用FluidNC(Github: bdring/FluidNC)这一基于ESP32的开源G代码解释器,配合它的网页端烧录、配置工具,不到1个小时就实现了平台的位置、速度、加速度控制,和电磁铁吸合与断开控制,重复定位精度更是达到了毫米级!而这些,只需通过串口发几行G代码,这为我们实现视觉算法节约了许多时间。

视觉算法方面,考虑到OpenMV价格较高,我们用OpenCV和泰山派来实现。下面简单介绍一下算法设计思路。

因为摄像头位置固定,可以直接进行透视变换,使图像坐标与物理坐标(毫米)一一对应。

棋盘的检测算法,使用直线检测后按角度分类,找到每条直线红蓝交点距离最接近100mm的两个点,在这条直线坐标增长最快的方向排序这些点,并在另一方向重复操作,就得到了棋盘位置。这样做的好处是即使棋盘被棋子遮挡了一小部分,也不影响棋盘位置的识别。

棋子的识别就相对简单了,使用圆形检测,只检测直径接近20mm(对应图片中40像素)的圆。为避免漏掉或多识别出棋子,只有识别到10个棋子时才进行下一步操作。黑白棋就很简单了,反正识别靠灰度图,大于127就是白,否则是黑。

因为我们没有设计电磁铁的Z轴运动结构,如果直线移动电磁铁会碰到其它棋子,所以要在移动前使用A*算法(Github: AtsushiSakai/PythonRobotics)规划电磁铁移动路径。同时,因为ESP32可以缓存串口发来的移动(G0)和电磁铁控制指令(M3),因此可以在移动棋子过程中在后台计算下一步的移动路径,在泰山派这种普通的Linux开发板(嗯,我们指导老师说它性能不够用)上也能实现一次计算连续恢复9颗棋子的效果。

对弈算法,我们选择的是最简单的minmax算法(Github: Cledersonbc/tic-tac-toe-minimax),也就是穷举法。300ms出结果,能用就行,剪枝优化什么的,留给专业的人去做吧。

算法的移植不算难,无非就是把原来的控制台输入用户操作改为由视觉算法输入。下面是软件总体设计框图供大家参考。

移植



虽然程序跑得起来,功能也没问题,但评测要求程序要在作品中,而现在我们一直在电脑上调试。在尝试向泰山派移植的过程中出现了不少问题:官方系统的Python和OpenCV版本太低,而且只开放了2个串口,SSH特别卡,而且这种嵌入式Linux和普通Linux不同,它不能通过apt安装驱动。但这些都没难住我们,用提前下载好的新版SDK(Github: CmST0us/tspi-linux-sdk),再对照原理图引出的引脚修改设备树的引脚复用,瑞芯微的SDK文档很全(比全winner家的全),只改了不到10行代码,就打开了第三个硬件串口,顺便把CH340驱动也编译进了内核,解决了串口不够用的问题。

UI



做到这里,已是第三天傍晚,我们开始设计作品的UI。今年的器件清单中特别提到了LCD屏,学校也统一购买了几块,但那20年前的UI的风格实在不符合我们的审美,而且我们时间还很充裕,完全可以给它设计一个漂亮的UI。翻箱倒柜找到高考后启明云端送我的一块ESP32-S3的触摸屏模块,之前也用它写过项目,有对应的LVGL(Github: lvgl/lvgl)驱动代码,拿来做交互正合适。LVGL,启动!

用SquareLine Studio大概设计一下界面,导出后手动把UI函数移植过去,对于串口通信,我们有备赛时准备的,把C语言结构体自动转换成跨平台无感数据互传代码,只需上位机Python写几个数据更新回调。

在rc.final设置开机自启,完成!

还剩一个白天,我们也没闲着,通过各种方式测试作品的稳定性,力求做到“万无一失”。

总结



这次电赛,我们的作品除去那台坏掉的3D打印机,成本不到300元,用这样普通的硬件,却实现了题目要求的全部功能。

在接下来的邀请赛中,我们因为没有模电设计经验,为了测量运放的单位增益带宽,硬是用三极管搭建放大电路,最后也没能成功。而赛后搜索得知,为避免压摆率影响,可以通过提高运放的放大倍率,在较低频率间接测量这一参数,也就是测量并计算增益带宽积。可见,电赛不只是电子设计技能的较量,更是经验的比拼。在做出任何决定之前,在被各种奇怪的软硬件问题搞得不知所措时,不妨放下手里的工作,看看前人的思路,说不定会有新收获!

END


电赛推荐阅读


2024电赛:

电源/仪表/射频方向清单分析与预测

2024年电赛仪器清单简要分析

24年电赛E/F/H赛题简要分析

H题:硬件拉胯,软件调成狗| 第一次电赛的血与泪

E题:下电赛这盘大“棋”,4天3夜CPU都干烧了

2023电赛:

电源类题常用模块汇总

控制类题常用模块汇总

电赛全流程详细攻略:赛前准备/4天3夜/综测/总测评/颁奖

2023电赛猜题回看,出题方向及器件准备(电源/控制/仪器仪表)

A题国一:A题电源提升效率和THD是王道

C题国一:C题难上天?用单片机搞定超高精度的仪器测量

E题国一:E题上Jeston nano+树莓派,电赛国一稳拿!

E题国一:超简单且很“穷”的方案,但国一到手啰~

H题国一:波形显示漂移?闭环调节频率差搞定!

2022电赛:

清单解读+信号类专场>>>

呼啦圈的N种玩法(测控题命题预测与准备建议)

最后8天怎么准备?各类别详细解读支招

A题与E题应对思路参考

A题与C题应对思路参考

C题:基于TI MCU和高效能电源控制芯片的多车智能跟随系统

F题:电赛人的4天3夜|省一值得!放手一搏F题

A题:无实物不电赛!A题无线充电电动小车勇夺TI杯(2022)

C题:直击电赛|反复推倒重来!6天5夜究竟做些什么?(完整攻略)

2021电赛作品解析:

A题国一:信号题FFT怎么做误差小频带宽?顺序采样是绝招

A题国一:一手等效采样,一手FFT测频,稳当拿国一
A题国二:先基频后采样,软件算法加持,所有指标一次通过!
B题国一:DSP高精度数控三相AC-DC电路,附赠提高效率7个tips
B题国一:电路相序随便接,2天就完成的方案,论前期准备的重要性
C题国一:三年电赛,两次国一! 效率98%是怎么做到的?

C题国一:两个DC-DC变换就把C题拿下?

D题国一:3块Jetson Nano 让节点数据处理飞起,壕!

E题国二:高频题目很复杂?AM调制轻松实现数字模拟混合收发

F题国一:双K210+OpenMV加持,最强循迹,识别无停留

F题国一:电赛中的智能视觉组

G题国二:飞行器方案用光流就逊了!这套高精度室内定位方案值得拥有

J题TI杯:6种波形识别测量,多种拟合算法,登顶TI杯

K题国一:LED稳定可调台灯用STC8单片机就够了

2021电赛猜题与培训:

电源题专场,猜题要点总结回看>>>

控制类专场,猜题要点总结回看>>>

备战电赛:知识储备/训练案例/赛题分析/单片机学习

电赛终极冲刺:历年(电源)真题考点解析!4天3夜做什么?

2020TI杯电赛作品解析:

2020 TI杯电赛 各题应对思路参考

2020全国电赛(省赛)猜题

成绩不太理想,但感悟很多的C题坡道行驶电动小车
99分坡道小车的实现过程
E题解析:放大器非线性失真度高精度测量
C题特等:非常“普通”的满分小车
D题解析:无人机超精准水平定位!多亏加了双目摄像头
B题解析:单相在线式不间断电源(UPS)
A题解析:STM32实现运动心电&温度&步数无线传输
F题解析:K210+STM32实现简易无接触温度测量与身份识别装置

2019国赛各赛题解析汇总:点击查看


推荐阅读:

项目分享 | 电赛系列 | 人工智能 | 考研 

必考知识点 毕业设计 | 开关电源 求职


我们是妮mo,达尔闻创始人,只讲技术不撩汉的小姐姐。尔闻在线教育平台旨在服务电子行业专业人士,提供技能培训视频,覆盖各细分领域热门话题,比如嵌入式,FPGA,人工智能等。并针对不同人群量身定制分层级学习内容,例如常用知识点,拆解评测,电赛/智能车/考研等,欢迎关注。

官网:www.darwinlearns.com
B站:达尔闻

达尔闻说
只讲技术不撩汉的小姐姐妮mo与你相遇达尔闻。这里提供技能培训视频,覆盖各细分领域热门话题,如嵌入式,FPGA,人工智能等。针对不同人群量身定制学习内容,如常用知识点,拆解评测,电赛/智能车/考研等!
 最新文章