智能小车对于初学者而言还是有点挑战性的,由于本人一直以来都在专注于学业绩点,很少有时间来学习stm32,但这学期开始课慢慢的变少,所以又开始学习32顺便做一些小项目,本文将以stm32为核心制作蓝牙遥控小车。之后我也会继续发一些其他的小项目资料和经验总结。
所需材料:
12v的电源
3.3v的DC-DC稳压模块
电机驱动两个(本人用的是TB6612)
直流减速电机4个
智能小车的轮胎4个(可以和电机配套买)
HC-08蓝牙模块(HC-05应该也可以,根据自己需求来)
小车底盘(某宝上随便搜一下都可以找到)
杜邦线若干
接线图:
HC-08蓝牙模块:
HC-08 | |
Vcc | 3.3v稳压模块的正极输出 |
GND | 3.3v稳压模块的负极输出 |
TXD | stm32的B11 |
RXD | stm32的B10 |
TB6612(驱动后轮)
VM | 12v电源输入 |
VCC | 3.3v稳压模块输出正极 |
GND | 3.3v稳压模块输出负极 |
AO1 | 电机(左后) |
AO2 | 电机(左后) |
BO1 | 电机(右后) |
BO2 | 电机(右后) |
PWMA | stm32的A10 |
AIN2 | stm32的B7 |
AIN1 | stm32的B6 |
SETBY(使能) | 3.3v |
BIN1 | stm32的B8 |
BIN2 | stm32的B9 |
PWMB | stm32的A11 |
TB6612(驱动前轮)
VM | 12v电源输入 |
VCC | 3.3v稳压模块输出正极 |
GND | 3.3v稳压模块输出负极 |
AO1 | 电机(左前) |
AO2 | 电机(左前) |
BO1 | 电机(右前) |
BO2 | 电机(右前) |
PWMA | stm32的A8 |
AIN2 | stm32的B13 |
AIN1 | stm32的B12 |
SETBY(使能) | 3.3v |
BIN1 | stm32的B14 |
BIN2 | stm32的B15 |
PWMB | stm32的A9 |
tb6612真值表:
部分代码:
1.main.c
#include "stm32f10x.h"
#include "bsp_tb6612.h"
#include "bsp_motor.h"
#include "bsp_usart.h"
#include "car_ctrl.h"
int main(void)
{
TB6612_FR_Init();
MotorAllOFF();
USART3_Config();
while(1)
{
RUN_Prg();
}
2.bsp_usart.c
#include "bsp_usart.h"
static void USART3_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
void USART3_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
USART_InitTypeDef USART_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
/*TX_GPIO*/
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_TX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART3_GPIO_TX_PORT, &GPIO_InitStructure);
/*RX_GPIO*/
GPIO_InitStructure.GPIO_Pin = USART3_GPIO_RX_PIN;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(USART3_GPIO_RX_PORT, &GPIO_InitStructure);
/*USART3*/
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART3, &USART_InitStructure);
USART3_NVIC_Config();
USART_ITConfig(USART3, USART_IT_RXNE, ENABLE);
USART_Cmd(USART3, ENABLE);
bsp_usart.h
#ifndef __BSP_USART_H
#define __BSP_USART_H
#include "stm32f10x.h"
#define USART3_GPIO_TX_PIN GPIO_Pin_10
#define USART3_GPIO_TX_PORT GPIOB
#define USART3_GPIO_TX_CLK RCC_APB2Periph_GPIOB
#define USART3_GPIO_RX_PIN GPIO_Pin_11
#define USART3_GPIO_RX_PORT GPIOB
#define USART3_GPIO_RX_CLK RCC_APB2Periph_GPIOB
#define DEBUG_USARTx_CLK RCC_APB1Periph_USART3
void USART3_Config(void);
void USART3_Prg(void);
#endif /*__BSP_USART_H*/
其余代码包括(电机部分,蓝牙部分,控制部分在文章末尾)
注:手机端需要下载蓝牙调试助手(带有按键功能的),本人安卓手机下载的是蓝牙调试助手,在浏览器上搜一下就有。
http://通过网盘分享的文件:蓝牙小车 链接: https://pan.baidu.com/s/1_GO0Ju9mz1s83P7ZUGtLyQ?pwd=cn27 提取码: cn27
标签:USART,遥控,蓝牙,NVIC,InitStructure,stm32f103c8t6,GPIO,USART3,void From: https://blog.csdn.net/qq_74267366/article/details/141606209