找回密码
 立即注册
楼主: 神***

2023年电赛申领奖金,奖金已发放; 2025年,最高奖100万@STC32

[复制链接]

该用户从未签到

9

主题

293

回帖

1702

积分

版主

积分
1702
QQ
发表于 2023-10-12 09:41:04 | 显示全部楼层
杭州科技职业技术学院-STC32G12K128 J题国一
视频介绍:


QQ:1463035472,微信:19952583954
回复 支持 反对 送花

使用道具 举报

该用户从未签到

5

主题

72

回帖

847

积分

版主

积分
847
发表于 2023-10-12 15:31:29 | 显示全部楼层
南通职业大学===获得全国大学生电子设计竞赛2023年,大专组一等奖
K题: 辨音识键奏乐系统, STC8H8K64U作为唯一主控MCU实现
按规定一等奖奖金人民币1万@STC8H8K64U,其实用32位8051,奖金就是2万元了

按规定一等奖奖金人民币2万@STC32G12K128
www.STCAIMCU.com 本学期结束前会给广大获奖优秀师生团队发出奖金回家过个好年

===因仅相距10公里,经去现场确认,主控芯片是STC8H8K64U,并且是唯一主控芯片,奖金人民币1万元
点评:有点可惜了,若改成STC32G12K128的32位8051为主控,奖金就是2万元
          实际工作只需要换个头文件,换个KEILC251编译器,5分钟就穿越到32位8051了
          当然用STC8H8K64U是足够了,这款是全球最快的 1T 8051,能直接USB仿真和USB下载,还有DMA,支持各种外设
          南通职业大学是第一个评审获得通过的获奖师生团队,实在是因为距离太近了,直接去现场确认了获奖的真实性
截图202311221014541977.jpg
K题的任务是:辨音识键奏乐系统
通过驻极话筒采集水杯声音,通过设计信号调理电路将声音信号放大和滤波,再通过电压比较器电路将模拟信号变成

方波(数字信号)发送给单片机进行识别。

采用STC8H8K64作为主控芯片,采用触摸屏作为人机交互界面,按照模块化设计方法,编写了触摸屏程序控制程序和辨音

识别算法程序。人机交互界面灵活、友好、美观,识别精度高。
www.stcmcudata.com/STC8F-datasheet/STC8H.pdf
www.stcmcudata.com/STC8F-datasheet/STC32G.pdf
http://www.stcmcudata.com/STCISP/stc-isp-15xx-v6.92G.zip

【新提醒】国一,2023年电赛中使用STC8H8K64U完成K题赛题;已开学校证明 - 2025全国大学生电子设计竞赛技术支持版块,最高奖100万,一等奖2万,选型 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)


回复 支持 反对 送花

使用道具 举报

该用户从未签到

5

主题

72

回帖

847

积分

版主

积分
847
发表于 2023-10-12 16:27:34 | 显示全部楼层
本帖最后由 每天不一YOUNG 于 2023-11-21 11:09 编辑

硬件部分:
通过驻极话筒采集水杯声音,通过设计信号调理电路将声音信号放大和滤波,再通过电压比较器电路将模拟信号变成方波(数字信号)发送给单片机进行识别。
本次系统采用STC8H8K64U芯片作为主控:


主控模块.png 触摸屏模块.png 识音模块.png 降压电路.png



识音奏乐系统_SCH.pdf

1021.86 KB, 下载次数: 23

回复 支持 反对 送花

使用道具 举报

该用户从未签到

5

主题

72

回帖

847

积分

版主

积分
847
发表于 2023-10-12 16:27:43 | 显示全部楼层
本帖最后由 每天不一YOUNG 于 2023-11-21 11:11 编辑

软件设计方面:
采用STC8H8K64作为主控芯片,采用触摸屏作为人机交互界面,按照模块化设计方法,编写了触摸屏程序控制程序和辨音识别算法程序。人机交互界面灵活、友好、美观,识别精度高。
截图202310121722379066.jpg

截图202310121722541382.jpg

截图202310121723113540.jpg

截图202310121723332968.jpg

源程序.zip

5.8 MB, 下载次数: 27

回复 支持 反对 送花

使用道具 举报

该用户从未签到

5

主题

72

回帖

847

积分

版主

积分
847
发表于 2023-10-12 16:28:39 | 显示全部楼层
参赛视频:
南通职业大学--获得全国大学生电子设计竞赛2023年,大专组一等奖,K题@STC8H8K64U
===K题是:
辨音识键奏乐系统
按规定一等奖奖金人民币1万@STC8H8K64U,其实用32位8051,奖金就是2万元了

按规定一等奖奖金人民币2万@STC32G12K128
www.STCAIMCU.com 在本学期结束前给广大获奖优秀师生团队发出奖金回家过个好年


截图202310121726102048.jpg

===因仅相距10公里,经去现场确认,主控芯片是STC8H8K64U,并且是唯一主控芯片,奖金人民币1万元
点评:有点可惜了,若改成STC32G12K128的32位8051为主控,奖金就是2万元
          实际工作只需要换个头文件,换个KEILC251编译器,5分钟就穿越到32位8051了
          当然用STC8H8K64U是足够了,这款是全球最快的 1T 8051,能直接USB仿真和USB下载,还有DMA,支持各种外设
          南通职业大学是第一个评审获得通过的获奖师生团队,实在是因为距离太近了,直接去现场确认了获奖的真实性

https://pan.xunlei.com/s/VNgCNDr ... 4%E6%96%B9%E4%BE%BF




回复 支持 反对 送花

使用道具 举报

该用户从未签到

9

主题

293

回帖

1702

积分

版主

积分
1702
QQ
发表于 2023-10-12 16:47:13 | 显示全部楼层
本帖最后由 32位8051-STCAI 于 2023-12-14 13:14 编辑

嘉兴学院===获得2023年全国大学生电子设计竞赛 , 本科组二等奖
E题:运动目标控制与自动追踪系统@STC32G12K128二等奖奖金人民币5千元
E题要求:设计制作一个运动目标控制与自动追踪系统
===两个云台使用的主控芯片均为STC32G12K128

嘉兴学院2023年全国大学生电子设计竞赛使用STC32G12K128为主控芯片-本科组
===2023/12/13审核通过 !
截图202312131518568005.jpg
为确保奖金发放评审的公平公正,经广大老师推荐,委托第三方资深团队组织评审,点评如下:

使用V831视觉模块完成视觉处理工作及坐标发送任务,STC32G作为主控模块接受坐标信息后根据偏差对舵机或者声光控制系统做出控制。
整个系统中,主要的解析以及控制部分都是由STC32G完成,可以认为是唯一主控芯片。
结论:建议颁发二等奖全额奖金人民币伍千元,以资鼓励!
获奖证书:
截图202312131428452895.jpg
视频介绍,是补拍的视频,只是部分不是全部:

本作品分别使用两个由两个舵机搭建的二维电动云台,完成题目中的运动目标控制以及自动追踪系统。两个云台使用的主控芯片均为STC32G12K128,使用V831用来处理图像和捕捉运动目标。对于基础部分,我们选择了固定V831的方式,对于发挥部分,我们选择将V831与二维云台硬件相连的方法,这样操作可以简单高效的实现题目要求。我们的二维云台由两个舵机构成,其优势在于使用脚口少,仅需要共两路PWM即可操控,但无法精确获得舵机运动,闭环控制较为复杂,加之舵机损耗精度下降,在一段实践的闭环失败后我们选择了开环嗯冲。视觉方面我们选择了边缘检测来寻找边框,使用智能视觉部分训练红色激光用于识别,对于追踪部分固定绿色激光与V831,将绿色激光亮度降低避免干扰后让红色激光始终处于屏幕中间即可实现追踪。机械方面基础题部分我们选择铝基柱和亚克力板,铜柱等材料将云台与V831垫高以避免云台在数学方面平移时造成的误差和摄像头畸变造成的误差,追踪部分则使用小车为底搭建,主要原因是准备了半天小车不用一下心里难受。
摘要
        本设计给出以STC32G和自主设计的主板为控制核心,固定有激光笔的舵机云台为被控对象,Sipeed M2dock V831系列视觉模块构成运动目标控制与自动追踪系统。采用视觉处理算法测出目标像素坐标,转化为相应的空间坐标,控制云台进行定位,结合PID算法对红色光斑模拟的运动控制系统和绿色光斑模拟的追踪系统进行闭环控制,使激光能够较稳定地按指定轨迹移动。经检测,系统有较好的稳定性,符合题目的各种要求。
1 系统方案
运动目标控制与自动追踪系统总体方案设计
1.1 运动追踪部分设计
设计制作一个运动目标控制与自动追踪系统。
系统包括模拟目标运动的红色光斑位置控制系统和指示自动追踪的绿色光斑位置控制系统以及声光提示系统。系统结构示意及摆放位置见图 1(a)。图中两个激光笔固定在各自独立的二维电控云台上。在两个云台的后方,分别架设一组摄像头,红色激光笔云台后架设的摄像头用于识别A4靶纸及红色光斑坐标,并向主板发送坐标信息,主板根据坐标信息解算云台控制所需输入,追踪系统中,绿色激光笔云台后架设的摄像头用于识别红色光斑的位置,向主板传递光斑坐标信息,主板控制云台使用绿色激光笔对红色光斑进行追踪,完成追踪任务后,声光提示系统连续发出声光提示。
截图202310121634584468.jpg
1.1 视觉算法部分设计与选择运动追踪部分设计
视觉系统采用Sipeed M2dock V831系列套件
预处理:首先,对输入图像进行预处理,包括去噪、增强和滤波等操作,以提高激光点的可视性。
阈值分割:使用阈值分割技术将图像转换为二值图像。可以根据激光点的亮度和颜色特征选择合适的阈值进行分割。
边缘检测:调节RGB阈值,利用色块识别算法提取图像中的指定色块。由于激光点通常是明亮的点,色块识别可以帮助定位激光点的大致位置。
连通区域标记:通过连通区域标记算法,将相邻的边缘点组合成连通区域。对于每个连通区域,计算其质心(即激光点的位置)。
1.2 处理器的选择
1) 采用STM32F103作为主控芯片:
意法半导体设计的一款高性能32位单片机,主频可达72MHz,外设功能丰富等但是底层铺设相对复杂,价格也较高,开发成本较高。
2) 采用TC264D作为主控芯片:
此单片机是由Infineon Technologies发布的一款基于TriCore内核的微控制器,主频可高达200MHz,具有丰富的高性能外设接口,但下载电路复杂且芯片价格贵,开发文档庞大,难以短时熟悉芯片,设计成本较高。
3)采用STC32G作为主控芯片:
STC32G是由宏晶科技的一款基于C251内核的微控制器,主频可达35Mhz,具有丰富的外设接口,单价相对不高,下载电路简单,设计成本低。
综上所述,考虑到本系统程序架构较为简单,为降低开发复杂度和降低成本,所以选择了性价比较高的单片机STC32G作为主控芯片。
1.3 电机的选择
方案一:采用步进电机:
        步进电机精度高,驱动能力强,但限于材料储备,只能考虑舵机。
方案二:采用占空比控制转速的数字舵机:
        占空比控制转速的舵机可以控制通过调节占空比大小控制正反转和转速,理论上较适合于PID控制,但实际情况是该舵机死区较大,不好把握控制精度,故放弃了此方案。
方案三:采用占空比控制转动角度的数字舵机
        占空比控制转动角度的舵机步长较为固定,与步进电机类似,相对于方案二中的舵机更好控制。  
综上所述,选用占空比控制转动角度的数字舵机更为合适。
2 理论分析与计算2.1 运动目标控制与追踪性能分析与计算
视觉预处理
主要方法是通过像素点坐标推算空间平面坐标下面是具体方法的概述:
相机标定:相机标定是确定相机内外参数的过程。通过拍摄特定的校准板或者已知空间点,可以获取像素坐标与空间坐标之间的对应关系。
特征提取与匹配:在图像中提取出能够代表空间点的特征,比如角点、边缘、斑点等。然后,通过在不同图像中匹配这些特征点,建立像素坐标之间的对应关系。
二值化的基本原理
图像的二值化处理就是讲图像上的点的灰度置为0或255,也就是讲整个图像呈现出明显的黑白效果。即将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。
在数字图像处理中,二值图像占有非常重要的地位,特别是在实用的图像处理中,以二值图像处理实现而构成的系统是很多的,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像,这样子有利于再对图像做进一步处理时,图像的集合性质只与像素值为0或255的点的位置有关,不再涉及像素的多级值,使处理变得简单,而且数据的处理和压缩量小。为了得到理想的二值图像,一般采用封闭、连通的边界定义不交叠的区域。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255表示,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。如果某特定物体在内部有均匀一致的灰度值,并且其处在一个具有其他等级灰度值的均匀背景下,使用阀值法就可以得到比较的分割效果。如果物体同背景的差别表现不在灰度值上(比如纹理不同),可以将这个差别特征转换为灰度的差别,然后利用阀值选取技术来分割该图像。动态调节阀值实现图像的二值化可动态观察其分割图像的具体结果。


我们使用了相对简单的机器视觉标定方法,将屏幕中心与相机像素中心相重合,此时在空间中像素平面与屏幕所在平面存在一个相似三角形,屏幕上直线的实际长度与其在图像中的像素长度成正比。 截图202310121643252169.jpg
图(2)
国二,使用STC32完成E题获得全国大学生电子设计竞赛国二(已开证明) - 2025全国大学生电子设计竞赛技术支持版块,最高奖100万,一等奖2万,选型 - 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区  https://www.stcaimcu.com/forum.p ... 4258&extra=page%3D2












QQ:1463035472,微信:19952583954
回复 支持 反对 送花

使用道具 举报

该用户从未签到

9

主题

293

回帖

1702

积分

版主

积分
1702
QQ
发表于 2023-10-12 16:50:54 | 显示全部楼层
本帖最后由 32位8051-STCAI 于 2023-11-21 15:45 编辑

硬件介绍:
1 电路与程序设计1.1 舵机电源的选择
方案一:直接使用电池组供电,该电源随着使用电压不稳,不利于舵机控制
方案二:采用开关电源效率高,但是开关电源相比于线性稳压电源纹波较大,不利于舵机控制。
方案三:自行设计线性稳压电源模块给系统各部分供电,由于各稳压芯片不贵,而且电压可调,做好滤波设计,使用效果也不错。
综合以上三种方案,选择方案三。

截图202310131147405254.jpg

截图202310131148155095.jpg

1.2 总体电路图
1.1 视觉处理系统的选择
Sipeed M2Dock V831是一款由Sipeed推出的开发板。它基于RISC-V架构,搭载了全志V831处理器,主频是400MHz。M2Dock V831拥有丰富的外设接口,包括USB、串口、I2C、SPI等,方便连接各种外部设备。此外,它还有一块LCD显示屏和摄像头接口,可与外部显示屏和摄像头进行连接。M2Dock V831支持多种编程语言,包括MicroPython和C语言,因此开发人员可以选择适合自己的编程语言进行开发。此外,Sipeed还提供了丰富的开发资源和示例代码,方便开发者学习和使用。总体而言,Sipeed M2Dock V831是一款功能强大的开发板,适用于物联网、人工智能、机器视觉等多个领域的开发项目,是十分适合用于本次电赛环境的视觉系统,所以选用Sipeed M2Dock V831作为视觉处理方案。
截图202311210927148675.jpg 截图202311210927479133.jpg 截图202311181140187281.jpg 截图202311181140343766.jpg
程序设计流程图如下
   
对于控制方面,stc32g12k128有着有益的性能和便捷的操作方式,加之丰富的开源代码能简单高效的实现我想要的操作。配合曾经写过的屏幕按键RBG相关以及实用的IDE,在比赛中给人的感觉就是相当省心,可以专心去解决赛题,不会因为主控芯片感到束手束脚和使用不适。
系统以STC32G12K128单片机作为主控芯片,利用SipeedM2dock V831开发板完成视觉处理任务,结合PID闭环控制算法完成题中要求的运动控制任务和追踪控制任务,经检测,系统完成了题目要求,可以使用按键选择任务及调节参数,人机交互性能良好。此外,系统有很好的稳定性,符合题目的各种要求。

QQ:1463035472,微信:19952583954
回复 支持 反对 送花

使用道具 举报

该用户从未签到

9

主题

293

回帖

1702

积分

版主

积分
1702
QQ
发表于 2023-10-12 16:51:05 | 显示全部楼层
本帖最后由 32位8051-STCAI 于 2023-10-13 11:55 编辑

软件介绍:
1.1 程序设计
运动控制
进行位置式PID运算。代码通过以下公式进行位置式PID运算:
dx_pwm = (int)(0.01 * turn.p * x_error + 0.01 * turn.d * (x_error - last_x_error))
根据比例系数turn.p和微分系数turn.d计算x方向的PWM增量。
dy_pwm = (int)(0.01 * turn.p * y_error + 0.01 * turn.d * (y_error - last_y_error))
根据比例系数turn.p和微分系数turn.d计算y方向的PWM增量。将舵机的中值(X_MID和Y_MID)减去对应方向的PWM增量,得到x和y方向的目标PWM值。
以上就是运动过程的PID闭环控制运行思路,它通过位置式PID控制实现了所设计的控制目标
视觉识别
导入所需的库和模块。该代码使用了maix库来访问摄像头和显示设备,以及serial库来实现与UART串口的通信。定义阈值。代码中使用了set_LAB列表来定义两个LAB颜色空间的阈值范围,用于识别目标颜色。并且给出了红色和白色的阈值范围。进入循环,不断进行图像处理和目标跟踪。获取摄像头图像。通过img = camera.capture()从摄像头获取一帧图像。针对每个预定义的LAB阈值范围,进行颜色识别。
        使用img.find_blobs(set_LAB[j], merge=True)函数来在图像中查找符合阈值范围的颜色区域,并将较小的区域进行合并。如果找到了目标颜色的区域,则进行目标跟踪。代码通过遍历blobs列表来获取每个找到的区域的坐标信息。然后,将找到的颜色区域用矩形框标记出来,并计算出所有区域的中心坐标(x_sum和y_sum)。根据目标的中心坐标计算出相对于图像中心的偏移量(dx和dy)。偏移量的计算通过将所有区域的中心坐标求平均,并减去图像中心的坐标(120,120)。将目标的偏移量发送给串口。代码通过构建一个带有偏移量的字符串消息(msg),并将其发送给串口。通过display.show(img)将处理过的图像显示在屏幕上,可以观察到目标颜色区域和跟踪结果。
以上就是算法的思路,它通过颜色识别和目标跟踪实现了对特定颜色目标的定位和追踪。
截图202310131152463010.jpg
按照设计的基本要求,系统可分为三大模块,MCU主控模块、V831视觉处理模块、激光笔二位云台系统模块。其中V831视觉模块主要负责完成视觉处理工作及坐标发送任务,STC32G MCU主控模块接受到坐标信息后根据偏差对舵机或者声光控制系统做出控制。
void main()
{
        WTST = 0;              
        DisableGlobalIRQ();               
        sys_clk = 35000000;     
        board_init();                       
       
        Board_Common_Init();
        R(0);G(1);B(0);
        EnableGlobalIRQ();
  while(1)
        {                       
                get_xy_points(); //当发生dx,dy给值时,这个函数就会开始追踪偏差
                Check_and_Change_Desk();
                if(_now_mod==_desk4&&KEY1_IN){apply_point();R(0);G(0);B(1);}
                if(flag_task==2)
                {
                        cloud_yaw_duty=zuobiao[1][0];
                        cloud_pitch_duty=zuobiao[1][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                       
                        cloud_yaw_duty=zuobiao[2][0];
                        cloud_pitch_duty=zuobiao[2][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        cloud_yaw_duty=zuobiao[3][0];
                        cloud_pitch_duty=zuobiao[3][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        cloud_yaw_duty=zuobiao[4][0];
                        cloud_pitch_duty=zuobiao[4][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        cloud_yaw_duty=zuobiao[1][0];
                        cloud_pitch_duty=zuobiao[1][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        flag_task=0;
                }
                if(flag_task==3)
                {
                        Move_Peihe();
                }
                if(flag_task == 4)
                {
                        cloud_yaw_duty=task3[1][0];
                        cloud_pitch_duty=task3[1][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                       
                        cloud_yaw_duty=task3[2][0];
                        cloud_pitch_duty=task3[2][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        cloud_yaw_duty=task3[3][0];
                        cloud_pitch_duty=task3[3][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        cloud_yaw_duty=task3[4][0];
                        cloud_pitch_duty=task3[4][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        cloud_yaw_duty=task3[1][0];
                        cloud_pitch_duty=task3[1][1];
                        Steer_Y_P(cloud_yaw_duty,cloud_pitch_duty);
                        delay_ms(1000);
                        flag_task=0;
                }
                if(flag_task == 6)
                {
                        get_xy_points();
                }
                if(flag_task == 5)
                {
                        get_xy_points(); //当发生dx,dy给值时,这个函数就会开始追踪偏差
                        if(dx<-1)
                        {
                                renwusanj8_yaw-=0.2;
                        }
                        else if(dx>1)
                        {
                                renwusanj8_yaw+=0.2;
                        }
                        else
                        renwusanj8_yaw=renwusanj8_yaw;
                       
                        if(dy<-1)
                        {
                                renwusanj8_pitch-=0.2;
                        }
                        else if(dy>1)
                        {
                                renwusanj8_pitch+=0.2;
                        }
                        else
                                renwusanj8_pitch=renwusanj8_pitch;
                       
                        Steer_Y_P((int)renwusanj8_yaw,(int)renwusanj8_pitch);
                        delay_ms(50);

                }
               
               
        }
}
V831智能视觉代码.zip (5.49 KB, 下载次数: 13) 绿色追踪代码.zip (1.08 MB, 下载次数: 12) 红色循迹代码.zip (8.78 MB, 下载次数: 14)

QQ:1463035472,微信:19952583954
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    开心
    2024-4-9 10:41
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    7

    主题

    103

    回帖

    858

    积分

    超级版主

    积分
    858
    发表于 2023-10-13 10:16:17 | 显示全部楼层
    本帖最后由 岁月如歌 于 2024-1-15 08:58 编辑

    重庆交通大学--获得2023年全国大学生电子设计竞赛,  本科组二等奖
    E题:运动目标控制与自动追踪系统@STC32G12K128,
    追踪占据三分之一
            建议颁发二等奖全额奖金的五分之四(肆仟元),以资鼓励!
    ===2023/12/13审核通过,已上传获奖证书和相关视频。
    58TIU))G])[MIK}[G%PGLHE.png
    为确保奖金发放评审的公平公正,经广大老师推荐,委托第三方资深团队组织评审,点评如下:
    红色激光控制部分由视觉模块提供红色激光位置信息,由STC32G进行位置闭环运算以及云台控制,
    虽然提供资料仅包含STC32G部分,但总体看下来与其标题相差不大
    结论
    整体方案STC32G12K128红色激光舵机占据三分之二,友商绿色
    追踪占据三分之一,建议颁发二等奖全额奖金的五分之四(肆仟元),以资鼓励!
    获奖证书:
    29C65158A1095118F5923B032F6DFF77.jpg
    补拍视频:

    ================以下是获奖团队文件描述和相关资料==================

    核心是红色激光舵机,绿色追踪 是友商的MCU,6个题目红光全部占据
    整体方案STC32G12K128红色激光舵机占据三分之二,友商MUC绿色
    追踪占据三分之一,主要的控制是STC32,友商单片机辅助完成题目的作用。
    按规定本科组二等奖奖金人民币5千元@STC32G12K128

    本系统由多个模块组成,包括中控模块、摄像头模块、电源模块、云台舵机模块、稳压模块、显示模块、激光模块和声光模块。使用STC32G12k128单片机和TC264单片机作为控制中心,通过舵机云台控制激光的运动。Open ART mini摄像头识别黑框后,将通过串口与STC32G12k128单片机进行通信,然后完成相应的红色光斑的目标控制。对于绿色光斑跟踪系统,Open ART mini首先通过摄像头识别红色激光,然后与TC264单片机进行串口通信,之后通过增量式PID等算法的处理输出PWM波形控制二维云台运动,使绿色光斑能跟随红色光斑。整个系统实现了高精度的目标控制和追踪功能。

    1.1总体方案
    根据竞赛任务及需求可知,本次项目包括目标控制系统和自动追踪系统两个系统。目标控制系统需实现红色激光从屏幕任意位置能够自动复位回到屏幕中心,并且可以环绕屏幕边沿、特定的靶向运动。自动追踪系统利用摄像头实现绿色激光追踪定位红色激光的位置,并随之运动。运动目标控制与自动追踪系统集成了PID 算法、图像处理技术,其工作原理如图所示。
    工作原理.png
    模拟目标运动的红色光斑位置控制系统主要以STC32G12K128作为主控板。在校准好位置之后,利用陀螺仪定位初始位置并设置复位按键,通过复位功能,二维舵机云台可以准确移动至原点位置,确保系统在每次使用前都返回准确的初始状态,提供精确的定位和操作。通过控制按键来控制单片机运行,进而控制舵机云台的转动,实现模拟目标运动的效果。
    指示自动追踪的绿色光斑位置控制系统主要以TC264作为主控板。该系统通过摄像头识别屏幕上的红色激光点,并通过串口将激光点的坐标信息传给TC264单片机。单片机接收到摄像头传来的信息后,通过图像增强算法、增量式PID等算法的处理,输出PWM波形来控制二维云台的运动,使绿色光斑能够跟随红色光斑。
    1.2主控和摄像头的选择
        主控方案的选择
    方案一:MSP430 芯片。MSP430芯片以低功耗闻名,汇编语言使用灵活, 寻址方式多,处理能力强大。但是运行速度较慢,上手较困难,不适合项目团队后续汇总联调。
    方案二:STM32 控制芯片。STM32易于开发,STM32 库函数的使用使得开发更加便捷,并且运算处理能力强,STM32 适用于对处理性能和存储容量要求更高的应用。
    方案三:STC32G12K128控制芯片。STC32G12K128简单易于使用,使用C251内核使得开发更为便捷。并且主频可到35MHz,外加大容量片上eeprom,可便捷的存放调试过程的数据。

    本项目不会大规模面向市场应用,因此不需要考虑关注功耗成本问题,反而更关注图片数据处理性能以及精度。在实现功能上三种芯片都能符合要求。但MSP430上手较为困难,故放弃方案一。STC32G易上手易使用,价格合理,且外围电路简单,功能强大,故选择方案三STC32G12K128作为主控芯片。

    摄像头模块的论证与选择
    方案一:Opencv。它提供了丰富的图像处理和计算机视觉算法,可以进行特征检测、模板匹配、目标跟踪、运动估计和立体视觉等任务。其中 OpenCV 更适用于桌面或服务器应用,具有丰富的算法库和跨平台的特性。
    方案二:K210。K210 是一款集成了神经网络处理器的特定应用芯片,一般适用于高性能的 AI 计算机视觉任务,在人脸识别、图像分类等方面具有很高的计算性能。
    方案三:Openmv。Openmv集成了图像传感器、图像处理器和开发板,能够进行颜色跟踪、线条跟踪、物体检测和人脸识别等功能,同时 OpenMV具有低功耗、小体积和高性能的特点,可以在嵌入式系统上实现实时图像处理和机器视觉任务。

    本次方案设计不需要模型训练,因此排除 K210 方案。我们是在嵌入式系统上实现激光追踪,因而相对较小而且易于开发的 OpenMV 是一个更佳的选择。综上所述最终选择方案三——Openmv。

    https://www.stcaimcu.com/forum.php?mod=viewthread&tid=4562&extra=

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    2024-4-9 10:41
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    7

    主题

    103

    回帖

    858

    积分

    超级版主

    积分
    858
    发表于 2023-10-13 10:25:20 | 显示全部楼层
    本帖最后由 岁月如歌 于 2023-12-13 13:47 编辑

    软件方案设计
    运动部分总体设计软件框图如下图所示,利用简单的菜单对不同题目的不同功能进行选择,分别运行不同题目后,系统会回到原点准备进行下一个项目的测试。
    运动部分总体设计软件框图.png
    2.1运动目标控制——坐标映射
    在本装置中需通过 PWM 驱动舵机转动,实现红色激光的目标控制与绿色激光的自动追踪。考虑到需完成上下、左右这两个维度的方向运动,因此采用两个舵机构成而自由度的云台,通过两个舵机的协调,可以将最上方的云台转到任意目标位置。由于云台的坐标为球面坐标,目标控制与追踪的平面为二维平面,如图 2.1 所示,因此需要完成球面角度、坐标转化。
    球面角度坐标转化过程如下,取最上方舵机的机械中心作为坐标圆点建立空间坐标系,在进行目标控制和自动追踪过程中,激光的运动轨迹本质上是一个圆,而根据机械结构可得到,圆的半径为 H 以及云台与坐标轴的夹角a、b。
    考虑到设备复位,故坐标圆点与屏幕中心位置在同一平面内,方便后续的建模分析。假设激光在屏幕上的坐标为 A,屏幕上距离激光的距离为 k。坐标转化求解原理示意如图 2.2 所示。
    图 2.2.png 2.2.png
    根据图 2.2 结合几何映射关系可得 A 点坐标,首先确定中间变量值 l,求解式如下式所示。
    确定中间变量值 l.png
    求得 l 的值为 U77HW~JO09TW$IY]~HKLHNI.png         之后求解 A 点的(y,z)的坐标,公式如下所示
    7CS1CPL6LWBD~M_]TG{LCO7.png

    可得屏幕上任意点的坐标为 A 如下式 2.3 所示,

    2.3.png
    2.2追踪性能分析与计算
    增量式PID算法的相关分析与计算
    增量式PID算法公式: u(k) = u(k-1) + Kp * (e(k) - e(k-1)) + Ki * e(k) + Kd * (e(k) - 2 *e(k-1) + e(k-2))
    其中,u(k)是控制器在时刻k的输出值; u(k-1)是控制器在上一时刻k-1的输出值; e(k)是当前时刻k的误差,即设定值与实际值之间的差异; e(k-1)是上一时刻k-1的误差;e(k-2)是上两个时刻k-2的误差; Kp是比例系数,用于调整比例控制的作用程度; Ki是积分系数,用于调整积分控制的作用程度; Kd是微分系数,用于调整微分控制的作用程度。
    通过调整比例系数Kp、积分系数Ki和微分系数Kd的大小,可以对控制器的响应速度、稳定性和抗干扰能力进行调节,以达到期望的控制效果
    #include"headfile.h"


    Pid_Inc Right;
    Pid_Inc Left;

    floatP_SET=0.11;    //0.1
    floatI_SET=0.07;//0.06
    floatD_SET=0;//40      //100        //5
    uint8 cam_flag =0;
    uint8cam_temp_flag = 0;
    floatblack_angle_temp[9] = {0};
    float err[9] ={0};

    Pid_Inc Right;
    Pid_Inc Left;

    voidPid_Inc_Init()
    {

        Right.P = P_SET;                      //p参数
        Right.I = I_SET;                      //i参数
        Right.D = D_SET;                      //d参数

        Right.Err = 0.0;                    //偏差值
        Right.Err_Prev = 0.0;               //定义上上个偏差值
        Right.Err_Last = 0.0;               //定义上一个偏差值
        Right.Set_Speed = 0;                //设定的速度
        Right.Actual_Speed = 0.0;           //定义实际速度
        Right.Out = 0.0;                    //电机输出
        Right.increment = 0.0;              //定义增量
        Right.proportion = 0.0;             //PID比例项
        Right.integration = 0.0;            //PID积分项
        Right.differential = 0.0;           //PID微分项

        Left.P = P_SET;                      //p参数
        Left.I = I_SET;                      //i参数
        Left.D = D_SET;                      //d参数

        Left.Err = 0.0;                    //偏差值
        Left.Err_Prev = 0.0;               //定义上上个偏差值
        Left.Err_Last = 0.0;               //定义上一个偏差值
        Left.Set_Speed = 0;                //设定的速度
        Left.Actual_Speed = 0.0;           //定义实际速度
        Left.Out = 0.0;                    //电机输出
        Left.increment = 0.0;              //定义增量
        Left.proportion = 0.0;             //PID比例项
        Left.integration = 0.0;            //PID积分项
        Left.differential = 0.0;           //PID微分项

    }

    //增量式PID中被控制量一直都是偏差error,并不是直接控制速度,控制的目的是让偏差趋近于0

    void Pid_Deal(Pid_Inc*pid)
    {
        pid->Err = pid->Set_Speed -pid->Actual_Speed;              //偏差 = 期望 - 实际

        pid->proportion = pid->P *(pid->Err - pid->Err_Last);                 //比例

        pid->integration = pid->I *pid->Err;                                //积分

        pid->differential = pid->D *(pid->Err - 2*pid->Err_Last + pid->Err_Prev);  //微分

        pid->increment = pid->proportion +pid->integration + pid->differential;   //增量 = 比例 + 积分 + 微分

        pid->Out += pid->increment;     //输出

        pid->Err_Prev = pid->Err_Last;   //上上次偏差赋值

        pid->Err_Last = pid->Err;        //上次偏差赋值
    }

    voidcamera_control()            //摄像头控制黑线循迹
                        {

                        if(cam_flag == 0)          //角度手动补偿
                        {
                         black_angle_temp[1]=black_angle[7]+err[1];
                         black_angle_temp[2]=black_angle[8]+err[2];//2
                         black_angle_temp[3]=black_angle[5]+err[3];//-2
                         black_angle_temp[4]=black_angle[6]+err[4];//2
                         black_angle_temp[5]=black_angle[3]+err[5];//-2
                         black_angle_temp[6]=black_angle[4]+err[6];//-2
                         black_angle_temp[7]=black_angle[1]+err[7];//2
                         black_angle_temp[8]=black_angle[2]+err[8];//-2

    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-4-28 21:59 , Processed in 0.087151 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表