国赛回忆
—2017年全国大学生电子设计竞赛
感谢犯贱、万款陪伴参加电赛 2017-8-15发
2017,8中旬全国大学生电子设计大赛已结赛完,12号20:00结赛,13号送完作品,正等着测评。经历了疲累的4天4夜的苦战,还算有个好成果。这几天的睡眠累计不超过10h,完赛补了一觉,以为可以睡个一天,也就睡了12h就醒了。闲下来,写点东西记录下这次的经历,有点杂。
电赛伊始
国赛一开始就是犯贱 同学一手策划准备的,起初学校根本没有当回事,学校就不吐槽了我们自己心知肚晓的。还好在犯贱的坚持和努力下得到了系里的支持。只是缺乏老师指导,没老师就得靠自己,我们所谓的指导老师也就是挂名而已,帮我们去报名啥的,比赛期间有问题,问了第二天都不一定给你反馈回来,哎一把辛酸泪。2016秋季学期,贱爷就在准备着第二年的国赛,吐槽着入门太晚,觉得准备的时间不够,和其他学校比起来,别人已经慢了一年。一开始我还没想参加,天天浑浑噩噩的混着。2017春学期,大二下,贱爷已经把前期工作准备的差不多了,但我还是那个样子瞎混着。中途还被高中基友们叫到上海去玩,说的是玩,我大老远的去,就带着我包了三天夜,这可以被他们吹一辈子了。大二下学期短,课程多,数电也是才学完,快到期末忙着做数电的课程DIY设计和另外一门生医工的心电信号系统检测,虽然都是赶着时间做完的,效果还是不错的,数电做的脑电控制,生医工的心电信号采集处理显示。这两个项目,都不是和贱爷一组,很皮贱爷一人扛起两个项目,基本可以说队友都是大水怪。临近期末,我决定暑假无事可做,就和贱爷参加电赛吧,然后就跟着贱爷一起找学校,找老师。找老师是真的坑,都说无利不起早, 那个坑货研究生还真把自己当回事,提的条件高的我都怕,叫我们去向系主任帮他问问有没有xxx名额,我真的去特xxxx的。仗着自己带过一年的省赛就很皮,后面了解下来,被带过的同学都很气,不要他也罢,找老师就不了了之,后面就我们自己干,说实话,我们都是被学弟(万款)带飞的。学弟能力真的很强,我们大学接触的东西,他是高中都差不多已经摸得热得很了(后面再说说学弟的能力)。期末考试完,系里在我们之前的坚持下,开了会,决定支持,并通知了大家报名,就这样,我们三人组了一个队 报了名,一开始总共学校报名的8组,有两组临时组的(开会时来了一个人,不知道三人一队),其他都是有准备的;后面那个我们之前找的研究生又去组了两个队来参加,最终我们是报名了10个队。
电赛准备
电赛的准备从期末考试未结束就开始的,贱爷一开始就在劝导我:你要是想参加比赛就别打游戏了,我们需要装备和学的东西太多了。如你还是要打就别参加了,一定要下决心,12分的决心。说实话我是真被贱爷打动了,寝室就是时间的黑洞,把电脑拆了搬去实验室。就开始了早起晚归的生活。贱爷真的拼,期末以前,就拉着我去把校图书馆,和大学城图书馆相关的书籍接了回来,大概50本,虽然最后我也没看多少,就3本,很多就是拿着翻了下,书本也就是参考。开始准备电赛,此时距离开始大概2个月左右。开始坐下来安心学习,不知道该准备些啥,查了些资料,知乎等等上面的写的电赛准备很好。归纳一下就三点:硬件,软件,队友。前面两点看的是个人能力,第三点就得看你是不是有识人的慧眼了。这次我们队三个人都很棒,虽然我现在写这篇文章的时候还没有评测,但是我们自测效果是很好的。软件是起点和基础:C,Java,Python,我都有经验,最主要的还是C语言,基本上硬件开发都是C写的,像最经典的51,现在的热门STM32,K60,MSP430以及Arduino,是用C开发的,即便是Pyboard,也是STM32的MCU,MicroPython使其简单化罢了。喜欢什么自己看吧网上资料都很多。个人认为,学习硬件开发还是要学好C,用STM32或者K60(玩智能车的),至于其他的 Arduino也就过家家罢了。毕竟32 工业用的比较多,树莓派啥的,你玩玩Linux就行了,个人觉得已经不属于单片机的范畴,还有就是国赛不允许用树莓派的,也不能用开发板,就只能使用最小系统版,组委会文件这样说明的:在赛区和全国评审测试中,参赛队的个人电脑、移动式存储介质、开发装置或仿真器等一律不得带入测试现场(实际制作实物中凡需软件编程的芯片必须事先下载脱机工作),竞赛实物制作所使用的“单片机最小系统板” 应仅含单片机芯片、键盘与显示装置、存储器、 A/D、 D/A,否则取消测试资格。 学好一款单片机,运用自如,脱离开发板。说道学单片机又会纠结学哪一款,我一开始学用的51入门上手很快,不过51 性能还是太低了,后面生医工的期末project要求(发的板子)用MSP430做就上手430,430就是功耗做的低,运算能力也低,想我这种不考虑功耗,就只考虑处理能力的当然是谁强用谁,我巴不得用树莓派,主频都过G了,看到过一个萤火虫的64位开发板也很强。后面在贱爷的煽动下还是选择32,队友他们都用的32,比赛时当然选择用32咯,32又分多个型号,你们喜欢啥就学啥吧,反正学了F4我用了F1还是很好用。说几点学32单片机的心得吧,也是借鉴Moore8 强哥的套路(强哥,小马哥的四轴系列视频不错,值得一看学习学习)。在你学习开发过程中,就把你写的程序例子打包成库类似于一个API库,以后需要用直接调用,记得写好注释,像USART,LCD,ADC,DAC,I2C,CAN,SPI,DMA等等这些常用模块,在你准备工作做得够大,你的库够丰富后做一个project可以直接copy自己的库,无需再去现写,copy过来修修改改岂不美哉。其实你在学32的时候32就提供了一个例子库,你可以直接搬过来改。个人觉得硬件开发,不需要你专门去写什么算法但是你至少得会用,现在32 的开发更容易了,有了HAL库,代码都能自动生成。有多人不愿意接受HAL,甚至库函数都不屑于用,喜欢扎实根底用寄存器操作。看个人吧,喜欢啥用啥,32既然都提供给你了,用不用是自己的,反正寄存器操作是最兼容的,库函数、HAL库是最简单的。除了单片机本身的模块你得吃透,其他的外部模块你也得备着用,比如MPU6050,很多控制都用的到,平衡小车,四轴。各种电机的驱动,你至少得用过一种。其他常见模块我就不累赘,大家基本都知道,超声红外,温\湿度…对于模块的运用自如,你用多了,即便是你用到一个新模块,你看datasheet就大概知道怎么用了。讲完单片机和模块的准备,我们还有什么呢?我们一开始就是准备做的控制类题目,控制类题目本科组就两道,一道估计是四轴飞行器的,我们不打算,这个入手更高,成本更高不想选择,就只剩下另外一个。看完前几年的题目,小车基本已经退出本科组的控制舞台,像倒立摆,风力摆等等都是结合物理实际而设计的题目,对控制是很有挑战的。控制,自动化控制是工业是发展方向,准备期间,7-29我们去参观了华南国际工业自动化展览会,基本看到了整个中国工业的自动化控制技术,这里面现在主要是一机器智能为主,机器智能又是以机器视觉为主。很庆幸在深圳有很多机会可以去看各种展览。回到我们的控制话题,我们要做的控制需要精准快速,如果你是开环控制是达不到要求的,要么超调,要么欠调,很难达到刚刚好,但是我们用闭环控制引入反馈调节可以比较容易的做到,其中最经典的就是PID控制。起初我看也是懵逼的,我一个不是自动化专业的(学校也没有这个专业)渣渣觉得很难受,很难得样子,但是为了目标硬着头皮去看,发现其实很简单的,类似于信号与系统的反馈调节一样,P、I、D,组合可控制系统达到(动态)稳定,他其实就是就是个响应方程(万事万物都能用方程描述是不是很神奇),搞完PID我们练手的第一个东西就是风力摆,机械结构直接走TB,算法设计参考网上陌生的学长的。虽然TB买的别人的套件,组装起来,加上用他人的代码花了不少的时间才搞出来,其中电机驱动我们修改了替换原来的L298N大块头用的TB6612FNG小型更好用,但是还是烧了两个(这个驱动很容易就烧了)。机械结构我们也做了修改,运动跟平滑少阻力。最后的效果还行,主要就是练手PID控制,一开始我们调节PID参数用的很笨重的方法,没有时间写上位机,就用串口收集人为阶跃响应数据,再用Origin作图对比,得到一个比较好的PID参数,其实很多时候I参数不用引入。看看图片感受下吧:
X轴的坐标变化
X轴对应电机PWM输出
我们可以看出,系统在出现偏差恢复到设定值还是很快的,这基本就是PID控制。在电赛封装完的第二天有人私戳我问我PID怎么调控,他们也是做控制类题目滚球系统不过没有做出来,不甘心。说网上看了一大堆资料,却不到怎么调节PID的值,其实就是自己没看明白,理论没看懂,我们身为工科生,就是把理论变成实践,加强队理论的理解,不是用实践去理解理论。理论是我们行事的基础,我们理论必须扎实才可以完成很多工作。他一直在问我PID怎么调,我就一直回答就改变PID对应的参数值就行了,按着网上那个口诀基本没问题,是你的系统响应曲线最美就行了,他还是不理解,我就只好一步步讲着过去,想了解PID调控的可以看看聊天记录点击这里,我就不多述了。反正对于控制类题目以后基本都是闭环控制,闭环控制最简单就是PID,还有其他的什么模糊PID,神经网络等等,我们暂不涉猎,估摸着比赛也用不到这么高深的,要是想深入可以去看看。其实我们比赛的前期准备算是很努力用心了,全校估摸着就两三组是在用心准备的,中途大家一起开会两次就能看出效果,最后的比赛更能看出。万款虽然是学弟,但是他的能力已经远远高于我们,我们的主控板(最小系统版)和电源板是他画了几天的PCB画出来的,MCU用的STM32F429,最大封装引脚。主控自助设计的四层PCB板,电源是12V 转 5\3V DCtoDC 的PCB,捷多邦打的板子,拿回来自己焊接的,比赛的时候用的很爽。除了主控,和电源,还有其他很多硬件模块都需要提前备好,不然你会发现等到组委会发了元器件清单很多东西TB就会涨价或者卖完了,更有的直接打着电赛的名义卖什么电赛指定用品。提前屯好货,这次比赛我们的确垫了不少money进去,我吃饭都悠着的,自己的小小私房钱都被掏空了,我一般是不会向家里特别的要,自己都是成年人了,还被养着就已经很过意不去了,很多时候自己可以解决。其次学校可承诺给我们报销^-^,美滋滋。东西越齐你干起来越快。我们是舍得花的,都是大批大批的买,还好这次舵机备的多,不然就GG了。说完赛前的人员,软件,硬件的准备,基本就到了比赛前夕了。
电赛前夕
这次电赛在7-23就有人透露出题目信息,让大家坐立不安,众说纷纭,具体的经历过的大概都知道。等到8-2出元器件清单的时候(其实8-1号下午就出了,看官网的显示应该是其网页服务器忘记校对时间而提前放出来了)又再一步确定了前面的透露信息应该是符合的这次比赛的。大家就开始疯狂买买买,估计这个时候TB的电子器件类东西都是销量翻翻翻,感觉电赛都提高了国家的GDP,有几家TB的电子商铺就是靠我们这些大学生存的,基本的顾客就是我们,销量和口碑都不错的,东西你在一家买习惯了,你也不愿意换了。玩电子还是烧钱的,东西虽然不是很贵,但是多啊!尤其是这次的那个直线行程电机,坑了我们很多人,我们就是买了也没用,买了几本就不能退货了,只能放着吃吃灰看看啥时候用吧。在元器件出来后大家都猜了半球系统,很多同学是真的很棒,元器件出来一两天就把东西做出来了(真正的实力选手,靠能力不靠运气)。由于元器件里面有摄像头,我们一直考虑着如果是控制类应该不太肯可能用摄像头控制,但是由不得不防,只好准备一个简单点的OpenMV,相信大家都听说过吧,挺强大和实用的,虽然中文教程不是很完善,但是店家给的技术支持很棒,我也很佩服吧OpenMV做出来的那两个美国佬,强!有Python基础基本上OpenMV上手就会,没什么难度,这次电赛我是觉得我们开挂了用了它。不过也有用了它都没有做出来的队,这就真的皮了,希望他们以后能好好学习提高能力。题目发出之前我们都基本准备好了,就等着8-9号开题。期间我们也搜集了很多板球系统的资料,这类资料国内很少,你雇个一艘就会很多,而且多的方案也很多,摄像头,激光,电阻屏,电磁等等。
电赛-ing
7:30,题目一出,还好有心里准备的,果然是板球系统,不过名字是滚球系统,板子是65CM*65CM的,这么大的板子,我一问另外一个哥们(他们已经做了一个小的板球系统,大概就A4纸大小),他们就直接放弃这个题目转战电源类去了,我们还是硬着头皮选了。开始设计机械结构,第一天基本就是万款画了机械结构,材料用的亚克力板子(早就买了备着),设计的双层结构(后面坑),本来可以就在学校里面用激光切的。怕我们用坏他的机器,推三拉四的,算了我们自己用钱解决,但是外面加工就迟了一个晚上(睡得最长的一个晚上4h),哎真想自己买个切割机。后面第二天我们搭好结构,在第三天凌晨5可以动,下午吃完饭突然看到一个消息,双层结构违规(最气的是这个消息是中午就出了,我们傍晚才知道,知道老师第二天下午才给我们说,要是等着他早就GG),我们又只好改,考虑着改什么材料的(亚克力行不通了),基本上店铺该下班的都下了。最后21:40打电话给和学校接触比较多的广告店,要了两块KT板,让老板送来的,开始老板说师傅喝酒喝得有点多怕是送不来,后面还是老板亲自送来的,五星好评。又连夜改板子,改结构。就是第四凌晨4点多差不多就能跑球了,开始调PID这都是第四天了啊,20:00就结束了。想着都蛋疼,顾不得睡觉怕这就是干,膝盖都跪疼了,手在地上一直撑着都撑出一块淤的出来O_o。反正就是拼了命的也罢PID参数调出来了,还好我们都是有经验的人。看着群里有些对PID摸不着头脑的很是懵逼。滚球系统的题目大家可以在网上找的到如果没有可以点击这里 。这个题目会的人都知道主要把基础的第一问和第二问做好后面的都不是问题,现在就看谁控制的更好了。PID控制也分好坏,双环比单环更稳,双环(位置+速度)、单环(位置)。其实这道题单环就已经可以满足了,我们知道有人是用了双环的,我们是在没有时间去调双环(切板子换结构浪费两三天),就一心把单环调好就行。功夫不负有心人,最后的效果还是可以的,后面我会贴上风力摆和滚球系统的部分片段。其实像那种已经在出题前就已经做出来的可以三环控制,加一个MPU6050加速计,系统能更稳。经典PID调节就是经验,技术大家基本都会,就是看谁调出来的系统更好,更适应自己的系统。做完封箱的时候,巡视员老师笑着说,你们够拼的啊,看着你们在地上趴着调试,一会儿就睡过去了,但是十几分钟就醒了。说实话着四天睡眠不超过10h,还要保持清醒的搞事情,真的是在搞自己事情,食不果腹的,满身的脏东西都顾不得那么多,送完作品回校,洗了两次头才基本吧头发洗干净,头发成股都是十几年前的事了。叫上室友涛神陪我去泳池休闲游,放松了下才回去睡着的,本以为可以睡个一天,12h就醒了,然后慢慢码字写了这篇记录。
后记
在这个时候,各赛区的都忙着去评测,而我们还要等到18号才可以。哎,看着别人都已经入围了,我们不知会咋样。下面是风力摆和滚球的一部分图,都不算美好:
<<<:>>>
一直想写博客的,在上学期做课程设计的时候就想记录下自己的学习生活,一直闲里偷闲闲下来就和基友开黑去了,现在终于有时间。后面我看啥时候吧当初做的东西也补上吧,树莓派-智能寝室控制系统,树莓派-脑电波检测识别执行系统,生医工-心电信号提取及心率计算系统,树莓派都是和涛神一起做的。如果有必要我再把滚球系统也在详细的写一个吧。
其他
感谢我的两个队友 贱爷和万款,很高兴我们有这次经历,一起努力进步。感谢王老师和张老师以及系里的支持。感谢爸妈支持,放暑假都没有回去陪陪你们,是我的锅。感谢网友 @Durian 一起讨论加油,感谢OpenMV的@小智智的技术支持! 感谢清洁阿姨每天来给我收垃圾! 还有啥来着。。。
万款同学的个人TB,欢迎大家去看看,技术交流也可以,走你–>>DIY marke
想到了啥再补O.O
2017.09.18 更新:
今天九一八,先缅怀先烈,没有先烈们也就没有我们现在;再给自己祝贺一下赛事的完结。全国组委会发布最后的获奖名单,还是国二。初评名单在前10+天就已经发布。
8-23入围综合测评,说实话今年的综合测评,广东赛区的有点坑人没抱希望进国赛的,只求不被打回省一。
总结一下,过程很爽,不要太在意奖项伤己而已。技术是最实在的!好好学习!
声明:本人文中的数据尽量采用比较可靠的来源,并尽量注明来源。但本人无法保证数据来源完全可信,请大家注意鉴别,我将不承担由此引发的各种后果。数据图片是原创数据图,篇头图片是国赛的官网图。本人文章中包含内部链接以及外部链接,不保证链接可访问性以及其安全性。本文为个人见解,如有雷同,那就是我们一个思维。
文章中的友情链接根据本人需要进行选择性添加,如若侵犯连接地址拥有者的权利,本人立刻删除,但不承担修改之前造成的影响。联系邮箱: 1719821665@qq.com
本人保留对本声明的更改权利。