2024全国大学生电子设计大赛H题,m0代码开源,不能用直接喷我,附赠22年双车跟随开源

        随着2024年全国大学生电子设计大赛落下帷幕,博主也是和队友仪器取得了省二的成绩,在第三天下午m0板子烧了,不然的话其实省一是稳的hhh,不过问题不大,也算是没有辜负博主和队友一年以来的努力。

        一句话,这篇文章再加上博主的1对1辅导教不会,你直接喷我

一、思路确定

        言归正传,我们首先来分析一下题目:

            可以看出,此次考察的是m0循迹小车,并且小车需要能够在空白区域,按照固定角度巡线 ,这就需要角度传感器返回 航向角。下面有几种合适的模块,相关的代码博主也会进行开源:①jy61p,也就是博主最后使用的,但是有风险,因为jy61p其实是带mcu的,他自己进行了滤波,本质就是mpu6050 

②mpu6050,最经典的角度传感器,但是有可能会出现零点漂移,尤其是当你的小车没做pid的情况下,他巡线的时候是“一冲一冲,一抽一抽”的情况,瞬时加速度大,会严重影响他的零点漂移,如果用mpu6050,一定要做pid,其实是因为mpu6050的角度是通过加速度,自己换算出来的,你加速度短时间内变化太大,他的误差肯定就会很大,而且很随机

③磁力计,也是博主最先使用的硬件,很稳定,检测地磁,但是害怕有人带含有磁性的东西进去,会严重影响偏航角,所以被舍弃了,但是磁力计的.c .h 博主也是会放出来的,希望对大家有用    

二、硬件搭建

1.选用电机

        选用MG513X的大扭矩电机,这样可以确保无论在什么赛道都可以正常巡线,还能保证爬坡能力

2.板子推荐

        有的板子使用keil5环境,一次烧录需要五分钟,不好评价;官方板最好提前买,很好用,也不容易烧;国内很多自己研发的板子真的很容易烧,3.3v供电都能跑着跑着烧了的那种,我记得甚至有一款黑色的板子,最大电压不能超过3.3v,很离谱

3.灰度传感器推荐

        很遗憾,感为的八路灰度被ban了,但是他真的很好用,灰度每个传感器之间的间距尽量小一点

3.一个小窍门

        大家可以在后面看到,我的代码里只有两个pwm,可是我用的是四驱小车,其实这是因为我把pwm信号线,AIN1.........DIN2使能端都先接到面包板上,然后再在联通的那一路引两根线出来,毕竟左边两个电机的信号都是一样的,右边两个也是一样的,这样可以极大程度上简化gpio口的配置

三、相关代码分析

在本篇文章中,博主只进行代码中所有疑难问题的讲解,后续应该还会出视频讲解,需要各位加博主的微信,微信我会留在文章末端,博主是个高频率网上冲浪的人,半天之内我肯定能回你信息,不必担心博主人间蒸发

1.main.c代码

        followline_normal是正常的小车巡线代码,可以在此基础上调换if和else if各个语句的顺序,对左右半圈不同的巡线会有不小的区别

        题目中,每次黑白交界处就是一个需要识别的特征点,通过last_flag检测flag变化,可以实现计数

        这是对于车子当前究竟是处于黑线,还是白线上的实时检测代码,需要注意,博主采用了八路灰度,为的就是减小灰度传感器之间的距离,防止比如你在寻黑线的时候,突然间,黑线跑到了两个灰度的缝隙之间,正好识别不到,哇,识别到了全白,那就全都乱套了,还是那句话,软件问题硬件解决最方便,换更好的硬件能解决很多问题

        这是模式三代码,一和二比较简单,就不做讲解了,四就是三的升级版,只需要在num==16的时候停下来就好了

        小车在全白区域的时候,big_turncomplete标志位就会置0,代表下一次识别到黑线了,就不能用普通巡线了,第一次需要是大转弯,如果是进右边的圈,第一次大转弯是左转,如果是进左边的圈,第一次大转弯是右转,这个大家把小车摆一下就能看出来是这样啦

        对了,还有一个很重要的小技巧,在绕八字,在白色区域调整角度的时候,最好设置一个轮子反转一个正转,因为这样子车就不会往前跑产生误差,不会走曲线过去,你要是设置了一个反转,他就是在原地调整完角度然后走直线,对应的也就是我的mode3中写的Set_speed(-10,10)

        主函数里面,可以自己添加按键,反正每个模式都是一个自己的函数,分别跑都能跑,先用一个while循环不断检测按键,检测到了再跑就行了。 然后if判断是哪个按键,然后跑哪个模式

        下面的oled显示是为了实时监测偏航角,记录的特征点有无问题

        JY61P在博主的车子上接的是串口,刚刚也说了,他有mcu,可以通过串口发信息,具体的对JY61P初始化的软件,可以去问维特的客服要,江苏省今年看的比较松,所以这个能让用了,但是有的部分省份是不给用的,但是对于各位来讲,这个也是一次宝贵的训练题,也不必太苛刻啦

2.motor.c代码

        为了方便控制小车的启动和停止,最好要给小车的使能端连gpio口控制,最好不要直接连3.3v,当然了,连3.3不会有什么大问题

通过这样的函数,就可以实时调整电机的占空比,很方便,AIN1,AIN2..........DIN1,DIN2都是连的gpio口

3.JY61P.c代码

        主函数中,只需要调用Serial_JY61P_Zero_Yaw函数就好了,Pitch,Roll,Yaw都是全局变量,直接就可以用了

四、一些杂谈

1.大家最关心的开源

        博主的qq 1062325236@qq.com,博主的微信号Vencnt_fangao,高频率冲浪,经常在线,一看到就回,最好在好友申请加上“csdn”

        博主的qq 1062325236@qq.com,博主的微信号Vencnt_fangao,高频率冲浪,经常在线,一看到就回,最好在好友申请加上“csdn”

        博主的qq 1062325236@qq.com,博主的微信号Vencnt_fangao,高频率冲浪,经常在线,一看到就回,最好在好友申请加上“csdn”

        重要的事情说三遍

        这些代码当中,有msp430,msp432,m0g3507的很多基础性文件,大家都可以基于这个做二次开发,msp430,432的代码是双车跟随那年的,100%能用,并且博主和队友们对这些代码进行了优化升级,所有初始化全都打通了,m0g3507是今年刚用的,比赛代码没改,肯定能跑,这些文件夹都是我们整个实验室一整个暑假的结晶,找起来真的很不容易,也希望大家理解

        同时,很多openmv可以使用的代码,也会一同以.txt文件的形式送给大家

      上述所说的所有的开源加在一起,20RMB,实在是有点不好意思,但是毕竟都是大学生,项目组里经费也经常需要我垫着然后等报销,但是20RMB可以买到我们两支省赛年省一队伍的实时答疑解惑,其中有一支队伍也是被保送进邀请赛了,后续可能做成教程,得看这次的反响,也许会在b站开设教程,做成长期

2.对于大家的一些寄语

        全国大学生电子设计大赛确实是在自动化领域内认可度较高的比赛,但是这也从侧面说明了它的难度,他对参赛选手对于控制类项目的熟练度,以及处理应急故障事件的能力,有着极高,可以说是非常高的要求(除非你运气好,哈哈哈哈哈),但是打电赛的四天三夜,绝对是一次终身难忘的回忆,如果你真的热爱控制类,并且想要证明自己,把自己放在全国的领域和其他学校的学生比拼,电赛就是你最好的选择,加油!

五、一些CCS最新版和老版移植工程的介绍

1.红色CCS的使用教程

直接把GO.zip解压之后拖到ccs工作空间也就是worspace当中,就可以直接在软件中打开并且使用

2.蓝色ccs的使用

蓝色ccs的路径配置较为繁琐,有可能会因为.launch文件的不同,会报无法编译的错误,解决方法就是,你把我的工程里所有要用的.c .h文件复制粘贴到你的工程里,就可以正常使用了

蓝色CCS的工作空间在C盘,和红色CCS不一样,大家需要注意哦

2024电赛H的软件设计流程通常包括以下几个步骤: 1. **需求分析**:首先明确软件的需求,这包括功能需求、性能需求以及用户界面等方面。团队需要理解比赛的具体目标,确定预期的功能和系统特性。 2. **设计规划**:根据需求文档,制定详细的设计方案,包括系统架构设计、模块划分、数据库设计等。这个阶段也涉及到技术选型,选择合适的编程语言、框架和技术栈。 3. **设计文档编写**:创建详细的规格说明书、数据流图、类图和序列图等,以记录设计决策和各个组件之间的交互。 4. **编码实现**:按照设计方案,开始编写源代码。这是一个迭代过程,可能会有需求变更,需及时调整代码。 5. **单元测试**:对每个模块单独进行测试,保证每个部分都能正常工作。测试结果应该有覆盖率报告。 6. **集成测试**:将所有模块组合起来,进行整体功能测试,检查它们能否协同工作。 7. **系统调试**:发现并修复程序中的错误,优化性能,直到满足比赛的要求。 8. **用户反馈及优化**:获取用户或评委的反馈,根据反馈进行必要的修改和完善。 9. **文档撰写**:准备项目文档,包括使用手册、安装指南和提交的源代码注释等。 10. **版本控制与提交**:在整个过程中,持续使用版本控制系统如Git进行管理,并按照比赛规定提交最终的软件包。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值