STM32智能多功能小车1.0总结

前言

流动的艺术,学会学习,快速成长

光说不练假把式,项目驱动学习,直接上车,出发!

结合个人兴趣,在评估了一下自己目前的水平之后,我选了智能小车的项目。

一、设计方案

小车总体的设计方案如下:

小车设计方案.png

方案整体逻辑清晰,功能还算丰富,用到了一些基本的常用的stm32功能。 作为上手项目,比较合适。

二、项目目的

  1. 练手,熟悉一下嵌入式开发的流程;
  2. 以项目为驱动,对于目前掌握的嵌入式开发知识进行一下梳理;
  3. 为下一阶段深入做准备。

三、项目原理图

小车的硬件配置都是一些资源丰富、常用的、淘宝上可以买到的配件。一句话适合练手的。

此项目重点关注软件部分,以原理图为硬件部分的成果而直接开始后续流程,硬件设计考虑暂不展开。(硬件设计这部分考虑在有了更多经验后再进行深入与拓展)

小车原理图.png

四、小车组装

组装部分,按部就班,没有碰到什么问题,很快完成。

小车组装半成品.jpg

五、系统软件

STM32F103c8t6最小系统板.png

主控采用STM32F103c8t6最小系统板。

1. 点灯

常规操作,从点灯开始,查看原理图,查芯片手册,修改配置,调试,重复至通过为止。 每个模块都是相同的套路相同,要不断重复这个过程,不断点灯,所以才叫点灯工程师,懂了。

2. 电机驱动 + 电机

采用TB6612FNG电机驱动模块。 主控芯片通过IO口,连接TB6612模块的AIN1、AIN2、BIN1、BIN2,TB6612根据AIN1、AIN2、BIN1、BIN2的信号,通过AOx,BOx口,控制电机。

用到了PWMA的知识,通过调节PWM波的占空比来调节电机转速。 尽快知道结果,但在调速时候还是会感叹这个设计的精妙。

电机驱动电机 1.png

电机驱动电机 2.png

3. 舵机控制

采用SG90 9g舵机 ,用PWM控制角度。 使用PA6口。

舵机控制.png

4. 红外对管

寻迹传感器 TCRT5000红外反射传感器。

红外对管.png

一句话,当按键处理。

5. 串口 蓝牙

HC-05 主从机一体蓝牙串口透传模块

蓝牙模块1.png

蓝牙串口计算机.png

蓝牙单片机.png

分三部走:

  1. 蓝牙模块通过串口转usb 连接电脑;
  2. 蓝牙模块连接手机蓝牙,通过蓝牙模块的TTL转USB实现手机与计算机通信;
  3. 手机通过蓝牙与模块连接从而控制片上的小灯,控制小灯也就可以与单片机通信,从而控制小车了。

6. OLED显示 I2C

OLED显示屏模块 0.96寸 IIC/SPI ,简单成熟。

OLED.png

厂家提供Demo,API函数都已经写好了,直接拿来改改就能用。 这块着重研究了驱动里面软件实现的I2C协议,基本也就掌握了。

7. ADC测量电池电压

通过分压电路,IO口ADC功能直接读电压,再换算为实际电压。

ADC测量电池电压.png

8. 超声波测距

HC-SR04 超声波测距模块

超声波测距.png

通过超声波的硬件介绍我们知道 MCU给Trig脚一个大于10us的高电平脉冲;然后读取Echo脚的高电平信号时间,通过公式:距离 = Tx声速/2 就可以算出来距离。

软件方面:10us高电平脉冲通过GPIO输出实现,高电平信号时间我们通过定时器的输入捕获来计算的。

9. 模块功能整合

功能:

  • 小车具有红外对管循迹、蓝牙遥控、定距离跟随、避障运动模式;
  • 可以通过小车按键和APP进行切换小车的运动模式;
  • APP与OLED显示小车所处模式和超声波测量值、电池电压。

六、总结

项目总体比较顺利,硬件材料到齐之后,用了一周不到的业余时间的就基本完成了小车项目。

小车配件.jpg

真正动手做起来以后,从硬件组装,系统移植,驱动移植修改,模块测试,代码编写,整机调试,测试。 这个整个过程,基本都是水到渠成。

中间也是碰到了一些问题:

  1. 红外对管无法循迹问题,通过阅读产品说明书,调整红外对管灵敏度直,问题解决。
  2. 串口蓝牙设置问题,通过产品手册,试了几次以后解决;
  3. 手机与蓝牙模块无法连接的问题,经过试验是android 蓝牙调试app本身的问题,经测试同一个手机换了一个蓝牙app 就可以与小车蓝牙模块顺利连接,最终是换了一个手机按照蓝牙调试助手app与小车蓝牙模块连接成功,但这个蓝牙模块还是不太问题,在某些情况下还是会掉线。

stm32这部分知识新鲜出炉,在弄懂了原理之后,移植的过程都是类似的套路,查手册,修改配置,调试,点灯 ... 这些对于有点经验的程序员来说驾轻就熟了。

I小车成品.jpg

目前项目整个流程已经走通,小车的基础的功能都已经实现,小车已经是一个可以完整地运行起来的版本,虽然目前还显得比较粗糙。

经过此工程,大概了解了裸机开发的整个流程,达到了项目的目的。

七、扩展升级

其实小车1.0完成已经有一些时间了,目前正在研究扩展升级。 主要考虑以下几个方面:

  1. 目前的裸机采用前后台模式对小车进行控制,比较简陋呆板,所以肯定要上RTOS,FreeRTOS走起。
  2. 小车1.0 使用了标准库,但ST公司已经不再更新标准库,HAL是趋势,考虑用HAL重构。
  3. 关于小车的操控功能部分,这方面肯定有一套成熟的体系与理论,这是一个方向,但这不是目前阶段的重点,暂不深入,目前仅考虑加入减速、加速功能;
  4. 小车硬件方面留有一定的扩展,这部分暂时保留。
  5. 觉得有些步骤是可以编写脚本来完成的,在更加熟悉流程之后可以尝试。

继续出发

--

猜你喜欢

转载自juejin.im/post/7112239216871866382