基于STM32单片机的蓝牙遥控小车设计与实现
创作时间:
作者:
@小白创作中心
基于STM32单片机的蓝牙遥控小车设计与实现
引用
CSDN
1.
https://m.blog.csdn.net/2301_79003431/article/details/142352138
本文介绍了一个基于STM32单片机的蓝牙遥控小车项目,详细描述了系统的硬件组成、功能实现以及具体的程序代码。该项目通过两个L298N模块驱动四个电机,配合显示屏实时显示小车的状态信息。用户可以通过蓝牙发送特定指令来控制小车的运动,包括前进、后退、转向等操作。
一. 系统概述
本系统基于STM32单片机作为核心控制单元,利用两个L298N模块驱动四个电机。通过配备的显示屏,系统能够实时展示小车的速度、控制指令及其运动状态。用户可以通过不同的蓝牙指令来实现小车的前进、后退、左转、右转、加速和减速等功能。
二. 仿真概述
启动系统时,小车处于停止状态。此时,通过虚拟串口模拟蓝牙APP发送指令。连接成功后,虚拟串口助手会显示“ready”字样,表明已建立连接。以下是虚拟串口助手的界面:
当在虚拟串口助手中发送大写字符“A”时,小车将开始前进。
再次发送“A”后,小车将加速,每次发送指令速度增加1。
发送字符“B”将使小车减速,每次指令减速1。当速度减至负值时,小车将开始倒退,再继续减速则会加速倒退。
通过发送字符“C”可以使小车左转,而发送字符“D”则使小车右转。
- 发送字符“E”将使小车停车。
三.程序设计
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "OLED.h"
#include "Serial.h"
#include "Key.h"
#include "Motor.h"
#include "PWM.h"
int16_t Speed;
uint8_t RxData;
int main(void)
{
OLED_Init();
Serial_Init();
Motor_Init();
Key_Init();
PWM_Init();
OLED_ShowString(1, 1, "Speed:"); //1行1列显示字符串Speed:
OLED_ShowString(2, 1, "Cmd:0x");
OLED_ShowString(3, 1, "State:");
Serial_SendString("ready!");
while (1)
{
if (Serial_GetRxFlag() == 1) //检查串口接收数据的标志位
{
RxData = Serial_GetRxData(); //获取串口接收的数据
Serial_SendByte(RxData); //串口将收到的数据回传回去,用于测试
if (RxData =='A')
{
if (Speed < 20000)
{
Speed += 4000;
Motor_SetSpeed(Speed);
}
}
if (RxData == 'B')
{
if (Speed > -20000)
{
Speed -= 4000;
Motor_SetSpeed(Speed);
}
}
if (RxData =='C')
{
GPIO_SetBits(GPIOA, GPIO_Pin_5); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_4); //PA5置低电平,设置方向为正转
GPIO_SetBits(GPIOA, GPIO_Pin_6); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_7); //PA5置低电平,设置方向为正转
GPIO_SetBits(GPIOA, GPIO_Pin_12); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_11); //PA5置低电平,设置方向为正转
GPIO_SetBits(GPIOA, GPIO_Pin_13); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_14); //PA5置低电平,设置方向为正转
PWM_SetCompare3(Speed); //PWM设置为速度值
OLED_ShowString(3, 7, "left ");
}
if (RxData =='D')
{
GPIO_SetBits(GPIOA, GPIO_Pin_4); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_5); //PA5置低电平,设置方向为正转
GPIO_SetBits(GPIOA, GPIO_Pin_7); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_6); //PA5置低电平,设置方向为正转
GPIO_SetBits(GPIOA, GPIO_Pin_11); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_12); //PA5置低电平,设置方向为正转
GPIO_SetBits(GPIOA, GPIO_Pin_14); //PA4置高电平
GPIO_ResetBits(GPIOA, GPIO_Pin_13); //PA5置低电平,设置方向为正转
PWM_SetCompare3(Speed); //PWM设置为速度值
OLED_ShowString(3, 7, "right");
}
if (RxData =='E')
{
Speed=0;
Motor_SetSpeed(Speed);
}
}
//Motor_SetSpeed(Speed); //设置直流电机的速度为速度变量
OLED_ShowHexNum(2, 7, RxData, 2);
OLED_ShowSignedNum(1, 7, Speed/4000, 1); //OLED显示速度变量
if(RxData !='D'&&RxData !='C'&&Speed>0)
{
OLED_ShowString(3, 7, "forw ");
}
if(RxData !='D'&&RxData !='C'&&Speed<0)
{
OLED_ShowString(3, 7, "back ");
}
if(RxData !='D'&&RxData !='C'&&Speed==0)
{
OLED_ShowString(3, 7, "stop ");
}
}
}
热门推荐
新年新气象,如何调节焦虑情绪?
10个应对焦虑的实用方法,来自外国网友
吸烟会增加抑郁症风险,这项最新研究数据令人震惊
电子烟成瘾,青少年嗓音健康告急!
王源吸烟风波:揭秘吸烟对歌手嗓音的危害
《小城故事多》:当唢呐遇上策划,传统文化与现代思维的碰撞
苏州园林对联:文化与自然的完美融合
对联修辞大揭秘:从串对到反对,领略传统文化魅力
春节不想回家?原生家庭问题成主因
春节恐惧症来袭!职场人如何应对不想回家过年?
2025年春节期间交通安全提示:两公布一提示
殷桃:从军校学员到实力派,用演技赢得观众认可
殷桃《芈月传》:实力派演员的演技魅力
《小夫妻》收官:殷桃演技炸裂,齐溪抢戏
白龙王工作室揭秘:你的八字如何影响性格?
八字预测:财运与婚姻的传统智慧
此时更需要一个强大的肺,在家做做这2个动作
看似“一动不动”,其实内脏都锻炼到了!夏天练站桩,这些事你需要知道→
志愿者如何充分利用自己的专业知识和技能,为社会提供有价值的服务?
太行山大峡谷八泉峡景区:太行山脉的自然奇观
八泉峡风景区:美食与美景的完美结合之旅
黄瓜籽粉成补钙新宠!你真的了解吗?
秋冬补钙新选择:黄瓜籽粉的科学食用指南
机场闸机安检的重要性及相关措施
烟台市疾控中心开展高校幽门螺杆菌筛查,提升学生健康素养
CAST-R-HP:幽门螺杆菌诊疗迎来新突破
益生菌对抗幽门螺杆菌的秘密武器
创新疗法突破:声动力治疗与口腔喷剂挑战幽门螺杆菌感染
刮痧板的正确用法是什么
新婚夫妻矛盾解析:三大关键因素与解决策略