一、项目时间:2023.7.24~11.26
二、实现效果:通过蓝牙控制小车运动与模式转换
模式一:循迹模式
模式二:跟踪模式
模式三:音乐模式
模式四:控制运动模式
三、使用模块:
- STM32F103C8T6核心板 * 1
- L298N电机驱动模块 * 1
- TCRT5000L五路红外循迹传感器模块 * 1
- DC3V-6V黄色直流减速电机-TT * 4
- 锂电池组电源 6V * 1
- OLED屏幕-四针 * 1
- DC - DC 12V装3.3v 5v 12v 电源模块
- HC-SR04超声波模块
- 光敏模块+热敏模块
- 八个灯
- 蓝牙模块
下面是超级蓝牙小车实物图:
需要用到的资源如下:
1,车轮:TIM2-CH1,CH2 => PA0,PA1 + PB0,PB1,PB2,PB10,PB11
2,蓝牙:USART-TX,RX => PA9 PA10
3,超声波:TIM-CH1,CH2 => PA6 PA7
4,OLED: PB8,PB9
5,ADC+DMA: PA3,PA4(采集两个数据:温度与光强)
6,舵机:TIM4-CH2 => PB7
7,循迹模块: PA15,PB3~6
8,炫灯
9:蜂鸣器
下面的表格是引脚使用的直观表格
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | |
PA | 1 | 1 | X | 5 | 5 | 9 | 3 | 3 | 8 | 2 | 2 | 8 | 8 | / | / | 7 |
PB | 1 | 1 | / | 7 | 7 | 7 | 7 | 6 | 4 | 4 | 1 | 1 | 8 | 8 | 8 | 8 |
四、代码
因为使用到的模块很多,一些基础配置的代码就不放出来了,下面是一些重要部分的代码
1,循迹模块代码 Trailing.c
#include "stm32f10x.h" // Device header
#include "delay.h"
#include "Trailing.h"
#include "Motor.h"
#include "PID.h"
int Speed_Begin = 50; //extern 后面需要加上->变量以及变量的类型
/*====================================
函数 :五路循迹模块加权函数
参数 :无
返回值 :返回五路加权的结果
描述 :通过对五路循迹情况进行加权,输出
到PID函数作为误差参数,即将数字情
况转变为误差。
====================================*/
int Trailing_Speed(void)
{
// int Flag;
int Sum,Speed_1;
Sum = 0;
// Flag = 0;
if(LED1==1) Sum=Sum-20;
if(LED2==1) Sum=Sum-10;
if(LED3==1) Sum=Sum ;
if(LED4==1) Sum=Sum+10;
if(LED5=