我所读的学校的是广东的一所高职院校,这一届电赛,我们学校出动了七支,其中一支队伍荣获省一,四支队伍荣获省二。
想想都兴奋,大一参加就混了个省二,还是挺不容易的。
接下来,简单谈谈三人团队的分工。我们团队由两个大一(其中一个是我,另一个是我隔壁宿舍的)和一个大二组成。
我负责程序那一部分,比赛前训练走了一条弯路。在比赛前两个月,听了老师的怂恿,去学了一下树莓派,学了一些opencv函数用法,(TMD)opencv在树莓派上一卡一卡的,而且opencv学起来也不太容易,因为缺乏一些计算机视觉的理论知识,这才是硬伤。后来,将图像识别功能放弃了。我还是继续学树莓派,我想把树莓派作为主控。
树莓派上面有I2C, 串口,SPI通信。用python语言,很容易就调用起它们了,最重要的一点是,有许多硬件方面的python库,不用自己另外写驱动。我用树莓派完成了吹帆板的题目(用到pid算法)。就这样,爽了一个多月。后来,我们自己看了下组委发布的要求,比赛用到的主控必须是最小系统.......
无奈之下,我开始转去学习stm32f103c8t6, 还好还好,得益于之前学过点皮毛(刷过原子哥的视频),现在重新上手,也不至于重头开始。我看了下其他组的,他们买了正点原子的mini板,还有野火的mini板。然后再刷他们的教程。
嘻嘻嘻,左手操起stm32f103c8t6最小系统,收手操起st-link 下载器,在keil里面单击一下....咋了??没反应,驱动装了啊,怎么不认账.....我跪了... 然后乖乖用回 51的TTL下载器,用串口下载不单单慢,而且麻烦,每次下载都要调换跳线帽。后来,有一位师兄点醒了我,他说用仿真器下载要按着复位键....哦,原来如此。
我记得很久之前,老师怂恿了我们一番,说用stm32cubeMX 开发很快,很方便。接下来的时候,我都是用stm32cubeMX 来开发,一键生成你配置好的管脚,太爽啦~~~仔细一下,它不是用标准库,而是用HAL库.....这下子突然慌了起来,完全没接触过。不过,HAL库学起来也不难,很容易上手,它已经封装了很多很多的函数,非常强大!!!!刚开始用它的串口函数的时候,有点反直觉,弄得我一头雾水~
比赛前,我已经把矩阵键盘,OLED, PWM等等的基本功能封装好,可以直接调用。
我这组选择了J题 模拟电磁曲射炮。有5个组选了 测量类的,还有一组选了 旋转LED灯。
身边的老师老师都说,没接触过这玩意(电磁炮),我那组的指导老师用了一堆理论给我分析这道题,大概意思是,想要把钢珠发射出去,先要有个初速,然后分析了楞次定律,摆弄着右手,分析电磁和电流方向......woc,不就是射个钢珠出去,而且最远才3米......你给我分析得像个初学者一样....电磁炮我早有研究过,也看过B站的视频,结构非常简单,不就一个大一点的电容,将它升压,然后跟线圈短接,“boom~”钢球就射出去了.......
我找了一个视频给指导老师看了一下,指导老师也震惊了,他说,不科学啊,怎么没有初速就直接射出去了....妈呀,我不管他了,直接去淘宝买材料咯。先是升压模块,能升到390V;然后是450V耐压的电容;还有水管,小钢球(这个踩坑,买了不锈钢的,不导磁,后来再买一批回来,浪费了一天了)。
这一天,我叫队友去看看电磁炮的原理...搜搜那些计算公式(因为写报告用得上,但最后没啥卵用)。我就拿了隔壁组的云台,当作电磁炮的支架。凌晨2点之前,我一直在弄调试云台,一直弄基本的功能(oled屏,按键.....)。大概2点过后,我走去隔壁的办公室,趴在桌子上睡觉........一天就这样结束了。
到10点左右,材料基本到齐,全用顺丰....
大电容有了,升压模块有了,炮管也有了,线圈也绕好了....
“劈里啪啦..." 一下在就接好线。开始调升压模块,这里也有一个大坑...升压模块开路和接入电容再调完全不一样。开路调到370V,电容充电时候,直接给我冲到450V以上,吓到我们赶紧拔了电容,这电压超过了电容的耐压值了, 可能往上再冲,全场震惊。接上电容再调电压,正常了。一键"fire", 钢珠射出去了....
到下午为止,其他组的材料和工具基本也到齐了。木方啊,钉子啊,大大容器,小小的塑料杯,长长的筷子。哇塞,还有醋、牛奶,白糖,盐.......果然测量类的不简单啊。
这一天,我们绕了几匝线圈,我们尝试不同规格的线圈发射炮弹。每次上膛,期待满满。
这一晚,我们死劲地在寻找云台的中心点。舵机调转,木块叠加,圆规度量,程序测试,
这一通宵,我拼死编写好功能控制的界面。实现不同功能的界面切换。队友在走廊上不断发射电磁炮,试图找到最优的参数。
没有晚安。
其他小组的成员也静静趴在桌面上稍作休息,还有的全力以赴,焊接电路。
喝了一点咖啡,我依然感到困倦...
.........
还没结束。
我有点忘记这天具体做了什么。
非常非常的困.....再喝一点咖啡,居然能撑一个上午了。
吃完早餐回来,应该还在调试我的棉结吧。
到了9点多,顺丰来电话,应该我的铁钢珠到了。拿回来后,我们迅速地用漆包线绕了一只炮管出来。
已经临近中午,话说老师想得真周到,叫饭堂的人把饭搬到比赛场地,这样确实大大节约了很多时间。
下午时候,队友拿走我的云台,他们在走廊上试射。走廊用油性笔画了多条轨迹。整个下午,他们在外面一边发射铁珠,一边记录钢珠落下的距离,还有云台的垂直角度。
得到一堆数据后,我们尝试通过 mathematics软件生成一条公式。
我的界面控制功能还没完善,只能将云台单独接入单片机,通过简单的输入,验证公式的合理性。
第三天的夜幕降临.......
我的界面功能终于完全实现。发挥题第二部的自动搜寻界面功能也实现了。
到了晚上10点左右,我开始用上openmv摄像头。哦,对了,摄像头早已固定在炮台上了。
一下子过去了两个小时,到了凌晨0点。我开始处理摄像头和stm32之间的串口通信。这个难题困扰了我很久.....
首先,摄像头通过串口传回什么数据?是控制舵机的pid值。计算得出来pid值是浮点型,那又怎么传输?对python来说,直接用struct.pack来打包成二进制数据,这是轻而易举的事情。但是对于stm32来说,它又如何解开这个二进制浮点型呢?????
我翻遍的网络资源,还是不太理解浮点型在内存中的存储格式,自然就很难解包.....
突然,我脑子一抽,想到了一个办法,这也是我以前用过的办法。既然浮点型不容易解包,干脆把它变成整形不就行了吗。怎么变了呢?如果要精确两位,那就把pid的值乘上100,然后再数据打包传回给 stm32。原来就这么简单......
又是一个通宵。队友在写报告。话说报告也不太好写。它要求理论分析,能力分析之类的.....他们挣扎到快4点,终于在睡着了。报告也不了了之。而我还在调自动搜寻功能.....
再喝点咖啡续命........
隔壁组也在拼死在弄,毕竟最后一晚了.......
整个通宵,弄好了自动搜寻功能。。。。。。
但是,自动搜寻测距部分还没弄,还有报告部分还没完成,还有公式还没真正在场外验证。时间不够了,时间不够了......
已经没时间在抱怨他们了。
早上时候,我尝试用了一下一体化超声波探头...发现还是满准确的,能测4米距离。但是,现在从装上去,再到逻辑功能的时间,花费的时间不太确定。现在当务之急,先验证公式的可行性,先保住前面基础要求的分数。
吃完午餐,我们像赶灾一样,在外面试射。键盘输入距离,确认后,云台自动抬起一定角度,最后手动发射出去。来来去去,去去来来,发现效果并不理想。我开始注意到,云台下面的底座是用一块不太规则的长方形木板,外观上已经不太好看了;最重要的一点是,整块板压下去,看不起地面上的参考点,单靠木板边角的几条手画的红色线,误差非常大......开始叫他们更换的时候,他们俩坚决反对,说已经画好了,准确了。但每次都要对准很久,而且是尝发了几炮,才找准,测评时候要是这样,没戏。
后来,老师过来看了一下,也说了一下,看看能不能换其他板,说这块板太丑了。后来,我们队友跟老师理论,说这块板已经很好了,能找到一块板已经很不错了,还说这块板比较重,承受得了发射的后坐力....板子?桌面上还有几块完整模型板,桌底还有几块亚克力板。后坐力?这东东压根没有后坐力,最多舵机摆动的时候会有抖动。我也无力跟他们理论,两个通宵真的很累了;想想那篇报告还要再重写一遍,想哭的力气都没了。
我记得下午时候,我边写报告边打瞌睡.......从网上复制粘贴一大堆.....好吧,这样应该能凑很多字数了。写着报告要注意它给格式要求.....
下午4点左右,他们弄了一块亚克力底板,透明的,圆坐标也画好,清晰明了。这下我就放心了。
他们说,换了板子,参数要重新调过。他们又在拼死试炮.....我觉得他们的方法用错,他们试图再测一遍,得到新的数据,重新建立关系式。我认为,关系式就不必修改了,可以通过分几段来测试,这一段距离范围里不断去补偿修正....(测评时候,我们就是用这种方式,比如实际量出250cm,我在键盘输入270cm,打出去正好落在中心环附近)。
折腾了一番,大概到了,5点半。我们开始着重解决一键发射的问题。之前也尝试过用晶闸管,我们也从未用过晶闸管,接上去后不太行;后来尝试用继电器,不过继电器是那种小功率,结果烧了;最后我想了一个办法,通过舵机摆臂触碰,实现开关功能。在最后的一点时间里,队友将舵机引脚焊上去了。紧接着上机测试,居然整块最小系统都没反应,应该烧了,之前那块子接了一台在我桌面上被调过的稳压电源(被队友坑了),开机就是7V,把我的板子烧了。
但是,现在的那块板子又不像烧了,有时候有反应,有时候有无反应(OLED有时候亮,有时候灭掉,很奇怪)。快到封箱时间了,我拼命在查原因,我也无能为力了,没有备用的开发办了。
眼看快要封箱,心里越是着急...
眼看快到7点,眼泪快要落下....这4天3夜难道白费了?
后来,组委会的人到来了,带上了白条。
他们给了我们一小段封箱时间,大概半个小时吧。。。。。
好~!我们整队看到了希望。
就在这半个小时,我们分工找材料,找元器件。我们重新焊出一块开发板出来,把程序烧进去,还没来得及测试,就把它扔进箱子里面。箱子也就贴上了白条。。。。。。
不管行不行,已经无悔了....
8月12日,早上搭大巴来到了华南理工大学。下午1点20分左右。开始进入测评场地。
我们完成作品密封箱审验后跟随志愿者进去H/J题的测试场地(31号楼一楼大厅)。
在等待测评过程中,由于志愿者误认我们是H题,叫我们进去准备后发现错误,并叫我们再次出去等待(作品并没有开箱),大约五分钟后,由一名女志愿者带领我们进去大厅最里面的场地准备测评,她叫我们放下箱子把作品拿出来可以调试,调试时间为30分钟,调试期间我们问她借了万用表、直流稳压电源线等工具,并进行资料填写以及上交作品论文。
我们把硬件接线完成后并上电试射几次。然后跟评委老师说我们已经可以测试。评委老师叫我们把作品拿到防护棚里上电准备测试并告知我们准备好后以"开始"为口令后就可以把炮弹射出去,旁边会有志愿者进行摄像,一位女评委拿手机拍照,一位女评委在观察,一位男评委会计算充电时间,我们准备好后大喊"开始"并把炮弹射出去,拍照评委老师却说这次不行,她还没准备好,并让我们重新发射,我们按她要求重新发射两次(距离300mm),环数为8、9。
发射两次后评委老师把环形靶调整距离以及水平角度,并让我们喊"开始"口令发射炮弹,我们按要求打了出去,这次也没拍到,老师叫我们再打一次,并以这次环数为成绩,这次6环或者7环。
这次打完后老师问我们自动寻靶完成没有,由于我们没有完成这个功能,老师说好你们可以离开。
然后我们按志愿者指引完成作品封箱并贴上封条后签退离开。
我们打了5炮,整个过程老师并没有告知我们任何一次环数。
回到学校后。晚上时候,老师突然发来一条消息,说我们组还有做旋转LED灯题目的那一组 0 分...我们立刻向指导老师要求上诉。指导老师要求我们写下整个过程的来龙去脉。劈里啪啦一大堆写了给他。
我们那一组与做旋转LED的组 本来0分的,后来,最终的成绩是省二等奖。
感觉坐了一趟宇宙飞船。
大起大落.......最终熬了个省二......
摸摸自己的脉搏,真幸运,原来还活着。
对了,下一年是省赛,非常期待。
1、这个比赛还是乖乖地用 stm32吧。 树莓派好像只有在 ”E题_基于互联网的信号传输系统" 能用。
2、多准备一两套自己焊好的最小系统,以防烧掉,没得替换。
3、还是要注重一个测量的方法,盲目去测,费时又费力。(测量发射准确性的时候,感觉他们有点转不过弯来,死活要射中靶心)
4、程序工程要每隔一段时间备份一份出来。从开始到现在,我把这题的程序备份了15份出来,有利于调试。
5、根据喜好来选题吧。高职类题目有三大道,其中测量类已经有5组选了,1道旋转led也给选了。剩下一道电磁炮的,看上去挺好玩,于是乎就入手。
6、原来封箱还有技巧的。这里不敢多说。。。。
7、有亲密的人相伴,会给你无穷无尽的力量。