基于STM32的多模态智能小车设计与实现

基于STM32的多模态智能小车设计与实现

本项目主要实现三个功能:蓝牙遥控、自动循迹、超声波智能避障。由于时间紧迫,只有三天,所以只完成了三个主要功能,后续可在此基础上相应添加所需的其他功能,如添加传感器实现对环境勘察,添加远程无线通信模块实现远距离通信等。

关注私信我或者评论留言获取源代码、接线图、测试视频等

智能小车效果是视频展示
灰二la的抖音 - 抖音

STM32蓝牙遥控循迹避障智能小车_哔哩哔哩_bilibili

STM32蓝牙遥控循迹避障智能小车

关注我,一起进步,获取更多资料!

  1. B站REN者无敌的个人空间-REN者无敌个人主页-哔哩哔哩视频

  2. CSDNREN者无敌-CSDN博客

  3. Gitee:仓库 - REN者无敌 (yin127ing) - Gitee.com

成品展示

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

一、说明

  1. 接线图是我根据小车组装各个阶段的版本拍的照片,并没有特意画电路图和仿真图,因为材料到手后我们只有3天时间组装完成,时间紧迫只完成了三个主要功能。

  2. 视频也是各个功能和阶段测试的视频,仅供参考。

  3. 源代码要根据芯片和实际接线来改动,不能一味地生搬硬套。

  4. PPT和实验报告仅供参考。

  5. 物料中稳压模块可以不用,直接用5v充电宝代替电池组供电更为强大有力,但注意电脑烧录时必须将接口接线改为3.3v(依情况而定)。

  6. 可以买OLED显示屏显示测距显示(也可以直接用蓝牙调试器接受数据),温湿度显示,还有其他OLED玩法都可以嫁接在小车上。由于时间原因我并没有去实现。

  7. 关于接电:

    我没有用降压模块,感觉用3.3伏的电池供电小车有点鸡肋,我是直接用那个stlink插到5伏或者电压较低但相对电池更高的充电宝上供电就非常有力。

    注意 Stlink插电脑烧录的时候可能要改一下第四根线的端口改为3.3v,具体根据你的电脑输出的电压看要不要改动。
    所有如果使用的stlink接充电宝供电的话又要将Stlink的输入接口改回充电宝的电压(一般是5v),即电脑烧录时3.3v,充电宝供电时是5v。

二、物料清单:

智能小车项目的各个组件及其价格:

序号 物品名称 价格(元)
1 智能小车底盘(4WD双层底盘) 23.90
2 面包板 7.79
3 STM32F106C8T6 41.26
4 电机驱动模块TB6612 27.00
5 蓝牙模块HC06 18.01
6 HC-SR04超声波测距模块 6.38
7 TCRT5000红外寻迹模块 2.68
8 SG90舵机 4.80
9 3.3V稳压模块 7.92
10 杜邦线若干 8.45
11 电源模块(电池盒和电池) 9.27
12 排母排针 3.51
13 工具:热熔胶 1.08
14 电工胶布 6.80
15 超声波测距模块云台 18.00
总计 186.85

物料和价格视具体情况而定

三、相关教程:

  1. 前面主要跟这个UP主买物料,前期准备等,他只教代码,不教接线:

智能小车制作教程(基于stm32)_哔哩哔哩_bilibili

(https://www.bilibili.com/video/BV1yM4y1J78r/?spm_id_from=333.337.search-card.all.click)

  1. 后面可以跟这个UP主,但是他只会教你电机驱动的代码和接线,天杀的后面要付费了所有没有看了:

STM32智能小车(蓝牙+自动避障+循迹+DHT11+语音识别)_哔哩哔哩_bilibili

(https://www.bilibili.com/video/BV1K1421y7Yk/?spm_id_from=333.337.search-card.all.click&vd_source=da0120964754bfb7548ad0d295601e82)

  1. 这个是嵌入式教程,入门看到,没基础可以看,但没什么用:

STM32入门教程-2023版 细致讲解 中文字幕_哔哩哔哩_bilibili

四、主要功能和代码说明介绍

我的代码完整,不用大幅度修改,若需要可只改动接口和main.c,接线根据芯片各接口实际功能接线,代码和硬件接口要相对应。

在这里插入图片描述

(1)、电机驱动

电机驱动代码:PWM.c

电机控制代码:Motor.c

电机转速控制代码:Smart.c

STM32F106C8T6 芯片上用GPIO4,5,6,7口接入电机驱动模块芯片控制电机

关于电机驱动的连线: 重点

电机驱动左边和右边两个电机都分别并连成一个电机,然后电机驱动模块上用 GPIOA口控制左边,GPIOB口控制右边,即左边两个轮子一起转动,右边亦是如此。接线根据驱动芯片各接口实际功能接,若型号相同可以直接照抄。

这个接线我是用两个马达导出来的线,把外面的皮给剪掉,然后拧在一起,再和另一个线拧在一起用电胶布胶起来。左边两个电机并联在一起,右边一样,具体就是同一侧的左前红线和左后红线拧在一起再用一根红接长,黑色线一样。电机驱动时可以用专门调试驱动的代码测试。
在这里插入图片描述

在这里插入图片描述

(2)、蓝牙模块

蓝牙调试器设置:
一般从30开始到39结束,可自由选择按钮控制
方向:前后停左右:30-34

循迹:35

避障:36

舵机右中左:37-39

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(3)、循迹

循迹接口代码:Track.c

循迹部分四个TCRT50000红外寻迹模块分别接STM32F106C8T6芯片的GPIO3,4,5,15口。TCRT50000的其余两个口接正和负。

循迹算法不用改。

在这里插入图片描述

(4)、超声波测距和自动避障

超声波测距代码:Ultrasound.c

芯片接口GPIOB12,13

测距函数:Test_Distance

超声波算法Obstacle_Avoidance(在main.c中),这里可能会出问题,具体可以询问AI。因为我的超声波测距模块硬件有点问题,所以代码算法中的数值和正常的不一样,但我的运行效果没有问题。

在这里插入图片描述

(5)、OLED显示屏

OLED代码:OLED.c

OLED可以直接插在面包板上,也可以接线固定在外面。使用STM32F106C8T6 芯片 的GPIO 8,9两个端口控制

五、其他代码

Serial.c:串口的初始化、数据发送、数据接收以及中断处理等功能。不用管!

Servo.c:舵机控制。不用管!

关注私信我或者评论留言获取源代码、接线图、测试视频等
关注我,一起进步,获取更多资料!