首页 > 其他分享 >基于stm32f103c8t6的智能蓝牙遥控小车(有代码)

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

时间:2024-08-28 14:22:14浏览次数:6  
标签:USART 遥控 蓝牙 NVIC InitStructure stm32f103c8t6 GPIO USART3 void

智能小车对于初学者而言还是有点挑战性的,由于本人一直以来都在专注于学业绩点,很少有时间来学习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

标签:USART,遥控,蓝牙,NVIC,InitStructure,stm32f103c8t6,GPIO,USART3,void
From: https://blog.csdn.net/qq_74267366/article/details/141606209

相关文章

  • stm32f103c8t6 程序编译后的 Program Size: Code=xxx RO-data=xxx RW-data=xxx ZI-dat
            之前在裸机跑一些简单的项目内存完全够用,就不会涉及到内存方面的问题。最近在学FreeRTOS时,将大容量的stm32f103rct6代码移植到小容量的stm32f103c8t6上时,就遇到了内存不足的问题,所以才注意到这些东西。    那么在我们编译后看到的这些东西到底......
  • 遥控链路应用行业行业详解!!!
    遥控链路,即遥控器和接收机之间的信号传输链路,其应用行业广泛且多样。1.家电行业传统家电控制:如电视、空调、音响等设备,通过遥控器实现远程控制,极大地方便了用户的日常生活。这些遥控器通过红外线信号或无线电波将控制指令传输给设备,设备内部的接收器接收并解码信号,从而执行......
  • Android开发 - BluetoothDevice 类蓝牙连接、通信以及获取设备信息解析
    BluetoothDevice是什么BluetoothDevice是用于表示远程蓝牙设备的类。它提供了与设备进行连接、通信以及获取设备信息的功能。在蓝牙通信中,BluetoothDevice对象代表一个实际的物理设备,比如蓝牙耳机、智能手表、蓝牙音箱等BluetoothDevice的主要作用获取蓝牙设备的信息通......
  • 无人机遥控器显示屏的重要性!!!
    无人机遥控器的显示屏在无人机操作中扮演着至关重要的角色,它提供了无人机状态、飞行参数、设置选项以及实时图像(对于带屏遥控器)等重要信息显示飞行参数:显示屏上可以实时显示无人机的高度、距离、坐标、速度、方向等关键飞行参数,帮助操作者了解无人机的飞行状态。电池电量监......
  • RM遥控&键鼠控制总结
    硬件&通信介绍RM比赛中各个参赛队伍使用的都是大疆官方提供的遥控器套装,包括遥控器和接收机,接收机上共三个引脚:VCC,GND,DBUS(数据通道),首次使用需要进行遥控器和接收机配对,在两者都上电的情况下短按接收机上的对频按键即可(位于指示灯旁边)。在官方更新了遥控器的固件版本之后,遥控器......
  • Android开发 - (适配器)Adapter类中(蓝牙适配器)BluetoothAdapter实现类解析
    什么是BluetoothAdapterBluetoothAdapter是一个重要的类,用于管理和操作蓝牙功能。它提供了与蓝牙设备进行交互的能力,它代表了本地蓝牙适配器的功能。简单来说,它是你与设备上的蓝牙硬件进行交互的接口。通过BluetoothAdapter,你可以控制蓝牙的开启和关闭,发现附近的蓝牙设备,管理......
  • 无线遥控技术研究433MHZ
    1.主流的有433MHZ的,主要用在遥控玩具上,使用芯片EV1527,其中1527是数据的编码格式,OOK是无线发射数据的通信方式,433M是载波频率。原理图如下,其中根据4个按键的组合,在TXD输出组合波形 TXD的输出波形如下: 方波需要发恶化电路发射出去,发射电路如下,那么理论上可以用单片机替代E......
  • 通过队列通信实现红外遥控、旋转编码器和MPU6050数据处理的打砖块游戏开发
     声明:项目源码参考韦东山老师百问网嵌入式专家-韦东山嵌入式专注于嵌入式课程及硬件研发(100ask.net)        在本项目中,打砖块游戏的核心逻辑在一个单独的任务中实现,同时系统还需要处理来自红外遥控、旋转编码器和MPU6050传感器的数据输入。为此,使用FreeRTOS的队列......
  • Android车载蓝牙音乐实例(附Demo源码):实现手机播放音乐后车机应用显示音乐名称,歌手,专辑
    一、功能需求功能需求是在Android10以上设备上实现蓝牙音乐功能,细分为两个功能点:1、手机和车载设备实现蓝牙连接(本Demo文只做监听蓝牙连接状态,需手动到设置中连接蓝牙)2、连接蓝牙成功后手机播放音乐时车载设备也能播放音乐,并且在车机应用上显示音乐名称,歌手,专辑名。可在车......
  • Android开发 - BluetoothGattCallback 类处理蓝牙 (BLE) 设备的连接和通信解析
    BluetoothGattCallback是什么BluetoothGattCallback是一个抽象类,用于接收BLE设备的各种回调事件。这些事件包括连接状态的变化、服务的发现、特性的读取和写入等BluetoothGattCallback的主要方法onConnectionStateChange(BluetoothGattgatt,intstatus,intnewStat......