基于stm32f103c8t6的智能蓝牙遥控小车(有代码)

智能小车对于初学者而言还是有点挑战性的,由于本人一直以来都在专注于学业绩点,很少有时间来学习stm32,但这学期开始课慢慢的变少,所以又开始学习32顺便做一些小项目,本文将以stm32为核心制作蓝牙遥控小车。之后我也会继续发一些其他的小项目资料和经验总结。

所需材料:

12v的电源

3.3v的DC-DC稳压模块

电机驱动两个(本人用的是TB6612)

直流减速电机4个

智能小车的轮胎4个(可以和电机配套买)

HC-08蓝牙模块(HC-05应该也可以,根据自己需求来)

小车底盘(某宝上随便搜一下都可以找到)

杜邦线若干

接线图:

HC-08蓝牙模块:

HC-08
Vcc3.3v稳压模块的正极输出
GND3.3v稳压模块的负极输出
TXDstm32的B11
RXDstm32的B10

TB6612(驱动后轮)

VM12v电源输入
VCC3.3v稳压模块输出正极
GND3.3v稳压模块输出负极
AO1电机(左后)
AO2电机(左后)
BO1电机(右后)
BO2电机(右后)
PWMAstm32的A10
AIN2stm32的B7
AIN1stm32的B6
SETBY(使能)3.3v
BIN1stm32的B8
BIN2

stm32的B9

PWMBstm32的A11

TB6612(驱动前轮)

VM12v电源输入
VCC3.3v稳压模块输出正极
GND3.3v稳压模块输出负极
AO1电机(左前)
AO2电机(左前)
BO1电机(右前)
BO2电机(右前)
PWMAstm32的A8
AIN2stm32的B13
AIN1stm32的B12
SETBY(使能)3.3v
BIN1stm32的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

  • 22
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值