国二,2023国赛(E题),中山大学-基因拟态酶队 | 证明已开
本帖最后由 基因拟态酶 于 2023-11-27 09:48 编辑这次国赛我为了打造亮点,全部方案都选择国产、性价比高的,同时用了STC32屠龙刀、SSD202D、ESP32这三个芯片,SSD202D移植OPENCV做图像处理,STC32控制舵机,ESP32做激光点定位。方案是没问题的,但是由于舵机精度不够,卡了两天时间调节,最终没有完全做完,只拿到国二,辜负了姚总的期望!
电赛报告、STC32程序贴在附件里~放几张电赛作品的照片(略丑)
硬件部分:①硬件总体方案:(全国产低成本)(1)红色激光器:由全球第一STC32G12K128作为主控芯片,通过串口连接SSD202D移植Opencv负责图像处理,最终通过STC32高级PWM做两轴舵机云台控制。(2)绿色激光器:全球第一STC32G12K128作为主控芯片,连接ESP32芯片驱动OV2640进行图像处理,最终通过STC32高级PWM做两轴舵机云台控制。
②硬件原理图:(1)红色激光器:
(2)绿色激光器:
软件部分:①简易UART协议由于STC32与另外两个外设芯片之间通过UART通信,为了设计方便,定义一种简单的UART通信协议:
②红色激光部分,STC32与图像识别模块的通信指令表:(1)STC32发送给图像识别模块
动作指令数据
1自动五点校准0x01五个字节,第一个字节表示目前进行到第几个点(0为第一个点),第二个到第五个字节为一个坐标,表示当前校准位置在屏幕坐标系下的坐标。(浮点值乘以一千倍取整,高位在前,例:(0.25,0.2)表示为))
2进行矩形检测,并请求获取A4靶标的四个顶点图像坐标0x02无
(2)图像识别模块发送给STC32
动作指令数据
1返回校准结果的透视矩阵0x01透视矩阵的9个浮点数。(浮点值乘以一千倍取整,高位在前,例:(0.25,0.2)表示为))
2返回矩形顶点在图像中的坐标0x02四个坐标(每个数值用两个字节,高位在前)
③坐标处理算法(1)寻找PWM占空比与屏幕坐标的关系通过简单几何建模,使得红色激光点可以停留在屏幕上任意指定的坐标位置,从而实现回原点、绕着屏幕边框走的要求。简单几何建模,确定舵机角度值与激光点在屏幕上的坐标值的一一对应关系:
其中,参数ω和a33等于 1,通过透视变换后得到屏幕坐标下x,y。
④红色激光器部分工作流程与实现方法:(1)用户按下与STC32连接的[回原点按键,STC32立刻调整PWM占空比,使得云台带动激光点落在屏幕正中央。(此时的占空比为提前手动测量并保存的定值,由于红色激光部分与屏幕之间的位置关系固定,因此可以这么做)。(2)用户按下与STC32连接的[校准按键,STC32立即进入校准模式,动作如下:1、STC32通过调整PWM占空比,使得云台带动激光点落在(-0.2,0.45)坐标,并通过UART向图像处理模块发送[自动五点校准命令,附带参数为:当前校准第1个点,坐标为(-0.2,0.45)2、STC32通过调整PWM占空比,使得云台带动激光点落在(0.2,0.45)坐标,并通过UART向图像处理模块发送[自动五点校准命令,附带参数为:当前校准第2个点,坐标为(0.2,0.45)3、STC32通过调整PWM占空比,使得云台带动激光点落在(0.2,0.05)坐标,并通过UART向图像处理模块发送[自动五点校准命令,附带参数为:当前校准第3个点,坐标为(0.2,0.05)4、STC32通过调整PWM占空比,使得云台带动激光点落在(-0.2,0.05)坐标,并通过UART向图像处理模块发送[自动五点校准命令,附带参数为:当前校准第4个点,坐标为(-0.2,0.05)5、STC32通过调整PWM占空比,使得云台带动激光点落在(-0.01,0.25)坐标,并通过UART向图像处理模块发送[自动五点校准命令,附带参数为:当前校准第5个点,坐标为(-0.01,0.25)6、图像处理模块自发计算透视矩阵M,并通过UART向STC32发送。STC32接收后将其储存。(3)用户按下与STC32连接的[绕屏运行按键,STC32立刻调整PWM占空比,使得云台带动激光点绕着屏幕边框运动。由于红色激光部分与屏幕之间的位置关系固定,只需提前手动测量并储存屏幕边框四个点的坐标,即可通过简单插值让激光点绕着屏幕边框运动。(4)用户按下与STC32连接的[绕靶标运行按键,STC32通过UART向图像处理模块发送[进行矩形检测,并请求获取A4靶标的四个顶点图像坐标命令,图像处理模块识别矩形并通过UART向STC32发送[返回矩形顶点在图像中的坐标命令,附带参数为:四个顶点在摄像头视角下的坐标值。STC32接收到之后,将坐标值与透视矩阵进行矩阵乘法运算,得到A4靶标的四个顶点在屏幕坐标系下的坐标,并立刻调整PWM占空比,使得云台带动激光点绕着A4靶标边框运动。
⑤图像识别模块发送给STC32的UART指令
动作指令数据
1红激光坐标0x01坐标(每个数值用两个字节,高位在前)
2绿激光坐标0x02坐标(每个数值用两个字节,高位在前)
⑤绿色激光器部分工作流程与实现方法:用户按下与STC32连接的[开始按键,STC32立刻进入[寻找模式,调整PWM占空比,使得云台带动绿色激光点快速在屏幕上扫描运动。图像识别模块不停地检测摄像头画面中的红色、绿色激光点并且将其坐标值通过UART向STC32汇报。一旦STC32发现画面中出现了红色激光点,则立刻转入[跟踪模式,此时STC32会通过PID算法调整PWM占空比,使得绿色激光器跟随红色激光器;同时,STC32控制有源蜂鸣器发声,控制LED亮起,做到声光提示。
番外篇:由于这次电赛成绩比较菜,没太多好分享的经验。那就讲讲我与stc的故事,放一些我从第一次接触stc开始做过的一些小玩意吧~
小白阶段:
初二的时候,我偶然(真的太偶然,毕竟谁会看QQ资讯)通过QQ资讯看到螃蟹王国的一篇文章,是一个摇摇棒的制作教学,第一次接触到单片机这个词,淘宝一搜第一个就是STC89C52开发板(当时被这个芯片吓到了,以为所有单片机都这么大,长度达到5.5cm)。然后我速速下单了开发板和单片机,晶振啥的,纯手工飞线做了一个摇摇棒,把自己乐坏了。
那个时候还不知道啥是c语言,只知道易语言,所以只能直接cv别人的程序。后来为了修改显示内容,就学了C基本语法,用易语言生成字模的C文件。再后来又用STC89c52等顺手做了旋转LED,
写字机器,
无线空中鼠标,
激光雕刻机,
红外逻辑分析仪
等等。那个时候我对STC特别好奇,因为官网很有特色,特别是那个大火炉,好像说是每个芯片出厂前都烤够8小时(不知道是不是这个意思)。有时候官网还会悬赏20万破解芯片加密,当时我还自不量力地去学了一段时间了单片机解密。还研究了一下STC-ISP,发现了几个彩蛋,比如软件标题说这个软件售价6000元,我还以为我免费下载到了是赚了6000。有的芯片如果设置了过高的内部振荡器频率,软件会让用户输入一个电话号码作为确认,那个电话号码我怀疑是姚总的。
进阶阶段:
2020年高三疫情居家,偶然看到淘宝推送2块多一个的全新热敏打印机芯,很好奇为啥这么便宜,可能是倒闭工厂的余料之类的。
虽然便宜,但是没有任何资料,于是我花了五天时间全网搜资料,但是只搜到一个原厂类似产品的data sheet。在确认的引脚定义后就尝试用STC15W408AS,结果真的成功了,于是就做了一个错题打印机(网课时截屏直接打印知识点,真的太方便)。
之后就一发不可收拾,每天我都会在淘宝找这种廉价全新的零件,然后疯狂找资料去用STC驱动。后面又陆续做了20块钱成本的针式打印机,
成本2块钱的加湿器,成本25块钱的可以打电话的计时器
,成本5块钱的疝气强光灯等等。大学后我才知道原来这种人群被定义为垃圾佬。
大学后,我开始意识到8051的局限性,就开始用全志、星宸、瑞芯微、ESP32等较为高端的方案了,但是只要涉及到串口调试,我都习惯使用STC-ISP,因为STC ISP能够自动显示有效的串口号和设备名,而其他几乎所有串口软件都不支持显示设备名。大二的时候参加了广东省电赛,第一次用到屠龙刀,用于破解宿舍空调码,最终整个作品获得省一,拿到了姚总的1K赞助,从此爱上STC32,放个省赛作品视频
https://v.stcai.com/sv/36bd1815-18a6eac9123/36bd1815-18a6eac9123.mp4
总之,STC真的帮我实现了很多想法,直到现在我还拖着五十多片STC15L104W和STC15W408AS,只要有一些比较简单的控制我都会想到它们两个(可惜STC15L104W没有UART,但是奈何体积小,很多时候还是用的它)。
最后的最后的最后,期待宏晶的175℃大火炉越烧越旺,薪火相传,蒸蒸日上!更期待STC推出可以跑linux(uCLinux)的soc!
开心,中山大学 来报道了 !
当年中山大学吴老师推荐,中山大学建设了 4个 STC实验室
广东省组委会也给力,证明也开了
卧槽,大佬,中间那个介绍互联网+PPT既视感 能驱动ov5640吗?不懂期望回复 牛逼啊, 优秀儿,继续奋战{:qiang:}
页:
[1]