麦轮小车项目总结

发布时间 2023-05-24 17:12:58作者: FBshark

麦轮小车项目概括

项目简介:使用遥控器控制麦轮小车,通讯方式为2.4G无线信号,控制方式为通过遥控器上的摇杆或者陀螺仪,控制小车的方向和速度。

项目难点:

  • 用NRF24L01实现无线通讯,编码解码的实现。
  • DRV8833的驱动实现。
  • 摇杆控制、重力模式控制小车的算法的实现。

项目时间历程:

第一阶段:4月9日~4月17日 编写遥控器的LED、OLED、JDY-23、MPU6050、摇杆的驱动。

  1.  4月9日:编写LED和OLED的驱动测试。
  2. 4月11日~12日:测试JDY-23,开始学习NRF24L01的通讯知识。
  3. 4月13日~17日:编写摇杆 、MPU6050的驱动

第二阶段:4月18日~4月25日 进行遥控器NRF24L01发送接收消息的测试

    并同步开始编写小车的电机等驱动,尝试编写避障、跟随模式以及 2.4G 通讯的编码和解码

  1. 4月18日:完成小车的LED、JDY23、HC-SR04的驱动。
  2. 4月20日~23日:NRF24L01发送消息的测试,完成DRV8833, WS2812B驱动的初步编写。
  3. 4月24日:测试麦轮的前进与后退。编写小车避障模式、跟随模式程序。并测试遥控板的编码和解码。
这里的编码和解码:指的是模式的数字和代码之间的转换。在遥控板中,模式的切换是通过一个 mode 的整型变量,通过摇杆改变的;在通讯的时候,发送的是这种模式的代码(例如:避障模式取 'B' 'Z' 两个字母作为代码),而不是模式的数字序号。在接收端(小车)接收的时候,再将这种代码转换为数字(或者宏定义)。
另外,在传输摇杆数据和陀螺仪的数据也需要编码和解码。即数字与 ASCII 码之间的转化。这样是方便调试的(如果通讯不转为ASCII码,那么在蓝牙终端看到的是乱码)。

第三阶段:4月26日到5月6日 完成小车的无线、重力模式,调试模式切换功能;编写遥控器贪吃蛇的程序。

  1. 4月28日~5月1日:实现摇杆控制小车,陀螺仪控制小车。
  2. 5月2日:实现 OLED 的UI设计。
  3. 5月4日:测试完善小车模式切换的功能,并进行调试。
  4. 5月6日:编写贪吃蛇的程序。

学习软件外的收获

另外,在第三阶段也学习到了一些软件之外的知识,比如:

  • 麦轮小车的排布(仰视看为X型更合理),
  • 锂电池的选型
  • 电机接线硅橡胶和PCB上插座的使用(比原来做过的面包板平衡小车好用不少)
  • 提升了对于 STM32F103C8T6 这个 MCU 的认识(5大最小系统:时钟、BOOT、电源、复位、下载调试)

电源模块简介:https://www.htxw-tech.com/post/39400.html

拿STM32F103C8T6这个型号来说,总共有5个接电源正极和4个接地引脚,分别给内部不用的模块供电。

VDD:单片机的数字电源正极,共有5个VDD引脚

VSS: 数字电源负极,共有5个VSS引脚。

VDDA:VDD后面有个A,A=Analog,表示模拟的意思,就是芯片内部模拟器件的工作电压正极。

VSSA:表示模拟器件的公共端地(模拟电源负极)。

VBAT:给后备区域供电,维持RTC/BKP寄存器这些数据掉电保存,一般是接纽扣电池,如果不需要可以直接接电源。

VREF+是参考电压输入引脚正极,VREF-是参考电压输入引脚负极。

 

上一段提到了ADC和DAC模块,这两种模块是数字与模拟的结合,负责数字信号和模拟信号的转换。在某些应用中,对信号的噪声要求很高,这就需要把数字信号和模拟信号分开,采取一定的措施连接,避免相互影响。所以单片机会有数字电源和模拟电源引脚。由于模拟电源需要一个很标准的电压信号。所以就有了VREF引脚。但是,作为开发板,只是用来学习单片机用的,所以对噪声要求不高,我们就只需要做一个简单的隔离措施:在VDD和VDDA之间接一个0欧姆的电阻,同理,在VSS和VSSA之间接一个0欧姆的电阻。

把VREF+与VDDA连接,把VREF-与VSSA连接。(在实际应用中,VREF+用来连接标准的电压输出,比如REF3133,可以产生标准的3.300V。前面说到,开发板是用来学习的,没有必要给VREF连接一个标准的3.3V,如果你非要连一个,我也不拦着。)

软技能上:

是学习到了驱动和应用分层的思想:增加了APP层以及文件夹(原来只有 HARDWARD,SYSTEM都是应用和驱动混合在一起)。