所有模块介绍
小车的功能就是可以用蓝牙app遥控车移动。首先为了让小车跑起来,它需要两个电机让后轮转起来。其次为了让小车转弯,它需要一个舵机控制前轮转向。最后为了能控制小车移动,它需要一个蓝牙模块和手机完成通信。
三大模块确定好后,还需要考虑电源和主控芯片。主控芯片选经典的stm32f103c8t6,因为我只会这个。它需要3.3v供电。而电机大多是6v或12v供电。所以电源的选定需要降压,我选择了12v锂电池,通过多路输出降压模块,可以把12v直接输出,或者降到5v。
由于stm32f103c8t6最小系统板的引脚输出的电流很小,仅是毫安级别,如果靠gpio输出3.3v电压给电机,电机根本转不动,因为让电机转起来的电流至少需要零点几安。所以需要电机驱动模块,它可以为电机提供足够大的电流。
每一个模块设计到的知识点不同,这次先从蓝牙模块开始,原理是stm32的串口通信。此外,为了稳定电机转速,我用了pid闭环控制,为了看到电机转速和调节pid参数,也需要用到串口。
蓝牙模块讲解
这里大家直接去看
【【STM32入门教程-2023】应该是全B站最好的STM32教程了-哔哩哔哩】 https://b23.tv/8t987dq
看6-9集够了,学习串口通信三种方式中的前两种:轮询和中断。蓝牙这里采用中断的方式。在main函数里的while语句中调用函数HAL_UART_Receive_IT,开启串口接收中断,每当蓝牙模块接收到手机发送来的数据时就会触发中断,并调用中断回调函数HAL_UART_RxCpltCallback。我们重新定义这个函数,在里面可以用switch语句将手机发送来的指令和小车前后左右移动匹配起来。
另附一篇文章
【HAL库学习05---串口通信(三种方式轮询、中断、DMA) - CSDN App】http://t.csdnimg.cn/JK8Nt
蓝牙模块我买的是JDY-31,默认波特率为9600 Bits/s,可参考这两篇文章
【学习日志-04 - CSDN App】http://t.csdnimg.cn/K5Lor
【STM32系列——手把手教你蓝牙模块HC05、HC06的使用,重在“用起来”(HAL库) - CSDN App】http://t.csdnimg.cn/yc0Cr
我在cubemx上的配置
我在stm32cubeide的代码
可以参考框架,switch语句里的函数可以暂时不管,我后面会解释。另外需要安卓手机下载一个app,后续教程再告诉大家。