--AutoLeaders&开放原子--2023控制组&硬件部学习路线(其一)

你好,请问你想加入我们AutoLeaders俱乐部吗?

你想加入哪个部门?按照所学技术的侧重点,我们俱乐部分为:控制组、算法组、全栈组和运营组

太好了,你说你希望加入控制组而不是全栈组!

自我介绍一下,我是2022届AL控制组组长,szu_gexu。为了帮助控制组针对性的学习技术,我决定将从大一上至今的学习路线告诉大家。

一、什么是控制

"控制"通常指的是对系统或过程的实时监测和调节,以使其达到预期的状态或行为。自动化控制系统使用传感器执行器控制算法等组件,通过测量和反馈机制来监测系统状态,并根据预定的规则和目标调节系统的输出或行为。当然控制组学习的方向也是跟机电与控制工程学院学习最贴合的方向,提前接触到课程学习中的专业课程,对大家未来的发展也是大有裨益。

二、控制组在AL

在 AutoLeaders俱乐部,控制组是非常重要的部门,几乎 每一个项目都有控制组的参与。在我们俱乐部主打的物联网大赛中,控制组成员主要负责硬件平台的搭建,包括使用传感器收集数据反馈调控、完成各种电机(总线舵机、减速电机、步进电机、无刷电机等)的驱动、单片机将数据上云或者发送上位机等等任务。进入AL学习提升,经历比赛的洗礼,你将逐渐掌握手搓平衡小车、机械臂、机器狗的所需的能力。。在控制组会从学习C语言开始,并逐步接触C51,STM32,DSP等单片机,也会带领控制组成员们开发一些有创意的项目,如智能循迹小车,智能车锁,无人机等;同时,会定期给成员们组织一些常用的控制算法的学习,比如PID控制算法等。
在这里插入图片描述
在这里插入图片描述请添加图片描述

控制组成员在2023年物联网大赛中的分工
IKnowISee:搭建AR眼镜实体。对主控树莓派进行开发,实现对棱镜屏幕、摄像头等设备的控制
碳测者:使用ESP32对环境参数进行采集并通过MQTT将数据上传至华为云
文墨流光:使用STM32对传感器数据进行采集并与树莓派进行通信
朝气蓬勃:使用STM32进行电机进行闭环控制,并于Jetson进行通信

三、为什么要加入控制组

1.提升自身技术

  • 前期控制组副组长会每隔一段时间发布任务,副组长跟副会长会带着大家,而在完成这些任务的过程中同学们会逐渐精进自己的技术;
  • 中期由于项目需要持续推进,抑或是完成项目所需功能需要学习前置技能后厚积薄发,在项目立项、推进、完善的过程中,同学们能了解到更多技术栈,并不断提升自己的技术;
  • 后期在清楚自己感兴趣的方向之后,就可以自己兴趣为导向不断探索,甚至打破科学的边界。

2.收获志同道合的伙伴

在控制组大家在该学习的时候可以一起学习,在适当放松的时候也可以一起玩耍。相比于其他主打玩乐的社团,收获的友情是更加深刻和珍贵的,控制组或者说AL的成员能一起学习提升工程能力,而相较于其他学校不好好刷题不能完成任务就会被踢出去的社团来说,AL更加包容开放,学习任务更加自由,我们不会强制同学们学习,更希望同学们能自己对所学知识感兴趣然后自行探索。
请添加图片描述
请添加图片描述

3.参加竞赛(公费旅游/保研加分)

在AL控制组经过一年的学习,同学们就拥有外出打比赛的能力。这个时候就能顺理成章的公费旅游。请添加图片描述
而竞赛拿到好奖也会获得保研加分
AL主打的物联网大赛与嵌入式大赛都是学校的二类竞赛,只要担任队长豪夺国二及以上,保研分就能加满。
在这里插入图片描述

四、学在控制组

1.C语言

首先,大家应该在二面之前的学习了C语言的数据类型、输入输出、循环控制结构等等。接下来需要继续学习C语言的字符串、指针与结构体。尤其是指针结构体会在今后的单片机开发中派上大用场。在C语言的基础打好之后,就可以开始51单片机的学习。
浙江大学翁恺教你C语言程序设计!C语言基础入门!

2.51单片机

(1)简介(废话

51单片机是指基于Intel 8051架构的单片机,它是一种广泛应用于嵌入式系统开发的微控制器。 51单片机具有高性价比、易于学习、易于开发和广泛的应用领域等优点,因此在电子产品开发中得到了广泛的应用。51单片机通常包括片内FLASH存储器、RAM存储器、输入输出接口、定时器、串行通信接口等多种功能模块。它的指令集简单易学,同时支持C语言编程,因此易于开发。 51单片机的应用范围非常广泛,包括家电、汽车电子、医疗设备、工业自动化等领域。
当然上面那一段关于51的简介是我问GPT的[doge]。51是每一个电子类专业同学的初恋(也有可能是Arduino,反正我不管我的初恋就是51),足可见她的地位不可撼动。大家需通过江科大自化协的视频学习51单片机。
视频链接🔗:51单片机入门教程-2020版 程序全程纯手打 从零开始入门
在这里插入图片描述

(2)如何学习

  • 首先大家需要通过视频简介的百度网盘下载安装keil,stc-isp和程序源码。在开始某一模块的学习之前,可以先把当前模块的源码烧录进单片机内,看看程序实现的效果。这样做一方面可以有积极即时的反馈,避免枯燥乏味的学习逐渐磨灭了学习的热情;另一方面也可以先看看程序实现的结果了解接下来学习的内容。这样从河岸两侧往河中心搭桥的方式我以为是不错的。
  • 其次,大家在前期学习的过程中,可以跟着江科大自化协的老哥打打代码并做好学习笔记(学习笔记建议写出来之后发在CSDN上,不要想着把笔记写成注释放在程序中,你会发现之后很少会看之前的程序,而且你是不会喜欢对着那个绿绿的软件复习回顾的),在后期可以看着代码学提高效率。你也可以自己开发学习方法,但是要保证的是每一行代码都要看懂,每一行代码都要明白他背后的逻辑。
  • 在51的学习过程中可以学到很多寄存器操作,深入理解单片机运作背后的逻辑。江科大的视频是我看过最务实、最系统的入门视频,大家一定要好好学习为之后的嵌入式开发打下基础。

3.STM32

STM32的入门推荐大家可以自己购买STM32最小系统板STM32F103C8T6,和一些诸如LED灯、按键、STlink和杜邦线等配件。一方面可以体会到自己组装外设的乐趣[doge],一方面相较于野火、正点原子的开发板真的便宜了很多。STM32的代码可以是寄存器层、标准库层和HAL库层的。这里我推荐使用HAL库进行开发。HAL库(Hardware Abstraction Layer)中文叫作硬件抽象层,这是由于HAL库的代码里面封装了许多标准库和寄存器的操作。一方面确实使用的时候没能像51一样理解得那么深刻,一方面开发的速度也会比51快很多。
如何学习

因为接下来要介绍的正点原子虽然是使用HAL库进行开发,但是全程没有使用STM32CubeMX,而在实际的项目开发中,我们是需要先使用STM32CubeMX进行工程的配置,这就产生了矛盾。所以需要通过上面那个视频安装并熟悉STM32CubeMX的使用。

  • 接下来,需要通过正点原子的视频深入学习STM32片上资源的使用。
    视频链接🔗:正点原子HAL库
    在这里插入图片描述

在学习的过程中可以参考我站博主Z小旋的文章
视频链接🔗:Z小旋
在这里插入图片描述

在学习的过程中可以先照着Z小旋的博客把外设的使用做出来,然后再把照着正点原子的视频深入理解底层原理。如果只是照着Z小旋的博客倒也可以做出来,但是就会学的很不扎实。需要注意的是正点原子的前40个视频,比较emmmmmm,可以自己体会一下,我的建议是看一下时钟树、系统滴答定时器看一下,其他全部跳掉。还有就是记得去正点原子的资料下载中心下载程序源码and课程ppt
资料下载中心链接🔗:正点原子的资料下载中心

4.电机

  • 接下来就开始电机部分的学习
    视频链接🔗:基于STM32电机驱动教程
    电机的学习部分包括但不限于减速电机、步进电机、舵机。
    在这里插入图片描述

未完待续…

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用STM32 HAL库控制舵机的步骤: 1. 配置PWM输出引脚 首先,需要在GPIO初始化时将目标引脚设置为PWM输出。例如,如果我们要使用PB4引脚控制舵机,则需要将PB4设置为PWM输出模式。 ```c GPIO_InitTypeDef GPIO_InitStruct; TIM_OC_InitTypeDef sConfigOC; // 初始化GPIO结构体 GPIO_InitStruct.Pin = GPIO_PIN_4; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); // 配置PWM输出模式 sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = 1500; // 设置初始占空比 sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(&htim3, &sConfigOC, TIM_CHANNEL_1); ``` 2. 启动PWM输出 接下来,需要启动PWM输出。可以使用以下代码启动PWM输出: ```c HAL_TIM_PWM_Start(&htim3, TIM_CHANNEL_1); // 启动PWM输出 ``` 3. 设置舵机角度 舵机的角度和PWM信号的占空比之间有一个线性关系。通常情况下,舵机的中心位置对应的占空比为1500,左右转动的极限位置对应的占空比分别为1000和2000。因此,我们可以通过改变PWM信号的占空比来控制舵机的角度。 以下是一个简单的函数,可以将舵机转动到指定的角度: ```c void setServoAngle(TIM_HandleTypeDef *htim, uint32_t channel, uint16_t angle) { uint16_t pulse = 0; pulse = 500 + (angle * 10); // 将角度转换为占空比 TIM_OC_InitTypeDef sConfigOC; sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.Pulse = pulse; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; HAL_TIM_PWM_ConfigChannel(htim, &sConfigOC, channel); HAL_TIM_PWM_Start(htim, channel); // 启动PWM输出 } ``` 在上面的代码中,我们将角度转换为占空比,然后将新的占空比设置给PWM输出通道。最后,我们启动PWM输出。 现在,我们可以通过调用`setServoAngle()`函数来控制舵机的角度了: ```c setServoAngle(&htim3, TIM_CHANNEL_1, 90); // 将舵机转动到90度位置 ``` 注意:舵机的旋转范围可能会因型号和制造商而异,因此需要根据具体情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值