51单片机智能蓝牙小车

article/2025/8/3 14:25:31

作为大一电子小趴菜,在和队友学习制作蓝牙小车过程中遇到了许多困难。本文既为大家避坑,也作为团队总结。


这篇文章分为两部分

1,组装篇

2,代码篇


思维导图:


                               组装篇


         先准备好一块电源拓展板,用于为电机驱动模块和降压模块连接电源

         小车底盘可淘宝定制亚克力板(我们是直接上铜板)

 

(具体组装情况如图) 

 注意事项:

        接线:1.蓝牙模块RXD对单片机的TXD, TXD 对单片机的RXD 。千万别接反,会烧坏!!心急之人常接错!!

                   2. 降压模块和单片机VCC和GND相连,调节降压模块上的螺丝旋钮,用万用表测量输出端电压调至5V

                   3.一个电机驱动模块与两个电机相连(需学习H桥路原理 ,文章最后资源奉上)

       晶振:单片机上的晶振尽量用11.0592Mhz的,通信误差小

       电源:1.充电时一定要在旁守着,充满就拔,不然会炸!

                  2.不要等完全没电才充,会损坏电源寿命


                                代码篇


        在组装完毕后,先不要着急直接上蓝牙,可先烧录小车“前后左右”行驶程序检查有无硬件问题

源码如下:

#include<AT89X52.H>		  //包含51单片机头文件,内部有各种寄存器定义//定义小车驱动模块输入IO口 
sbit ENA=P1^0;      //右下使能
sbit IN1=P1^1;      // 右下轮
sbit IN2=P1^2;
sbit IN3=P1^3;      //左下轮
sbit IN4=P1^4;
sbit ENB=P1^5;      //左下使能
sbit ena=P2^2;      //左上使能
sbit in1=P2^3;      //左上轮
sbit in2=P2^4;
sbit in3=P2^5;      //右上轮
sbit in4=P2^6;
sbit enb=P2^7;      //右上使能//延时函数	void delay(unsigned int k)
{    unsigned int x,y;for(x=0;x<k;x++) for(y=0;y<2000;y++);
}
/************************************************************************/
//全速前进函数 void  run(void)
{    in1=1;	 	 in2=0;	 in3=1;	 in4=0; IN3=1;	 	 IN4=0;	 IN1=1;	 IN2=0;//P1=0X55;
}
/*********************************************************************/		 
/************************************************************************/
//全速后退函数 void  backrun(void)
{in1=0;	 	 in2=1;	 in3=0;	 in4=1; IN3=0;	 	 IN4=1;	 IN1=0;	 IN2=1;
}
/*********************************************************************/	
/************************************************************************/
//全速左转函数 void  leftrun(void)
{in1=0;	 	 in2=1;	 in3=1;	 in4=0; IN3=0;	 	 IN4=1;	 IN1=1;	 IN2=0;
}
/*********************************************************************/	
/************************************************************************/
//全速右转函数 void  rightrun(void)
{in1=1;	 	 in2=0;	 in3=0;	 in4=1; IN3=1;	 	 IN4=0;	 IN1=0;	 IN2=1;
}
/*********************************************************************/	
/************************************************************************/
//电机停止转动函数 void  stop(void)
{in1=0;	 	 in2=0;	 in3=0;	 in4=0; IN3=0;	 	 IN4=0;	 IN1=0;	 IN2=0;//P1=0X00;
}
/*********************************************************************/	
//主函数void main(void)
{	 delay(400);run();		 //调用前进函数	前进后再进入 无限循环 前进再后退运动delay(100);while(1)	//无限循环{ run();		//调用前进函数delay(200);backrun();	 //调用后退函数delay(200);leftrun();	 //调用左转函数delay(200);rightrun();	//调用右转函数delay(200);stop();		 //调用停止转动函数delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);delay(800);				 }
}

小车可正常抽风,开始蓝牙!!

        我们用的是HC-05蓝牙模块,该模块好在稳定,不易断联,推荐大家食用

        首先让HC-05蓝牙模块通过USB转TTL与电脑连接

 设置波特率为9600,点击打开串口 (下图并未连接蓝牙,仅作演示用)

这里我们稍微科普一下串口通信知识:主机(如手机发送蓝牙信号)与从机(单片机小车接送蓝牙信号)之间的正常通信需要一致的波特率,HC-05蓝牙模块初始波特率为9600,所以串口助手也需设置9600波特率,写代码和烧录程序时也需设置9600波特率。

串口通信知识是蓝牙小车的重中之重,需要大家自行找资源着重理解。(当时学习和配置串口通信弄了两三天555,小趴菜差点崩溃)

 手机上网搜索下载“蓝牙串口SPP”,与蓝牙模块连接(连接密码为1234)

 通过聊天端发送数字,若电脑串口程序接受缓冲区可正常接收数据。恭喜你,已经成功90%了。

        接下来就是“实车测试”了

先奉上源代码:

#include<AT89x51.H>//小车驱动接线定义
sbit ENA=P1^0;      //右下使能
sbit IN1=P1^1;      // 右下轮
sbit IN2=P1^2;
sbit IN3=P1^3;      //左下轮
sbit IN4=P1^4;
sbit ENB=P1^5;      //左下使能
sbit ena=P2^2;      //左上使能
sbit in1=P2^3;      //左上轮
sbit in2=P2^4;
sbit in3=P2^5;      //右上轮
sbit in4=P2^6;
sbit enb=P2^7;      //右上使能#define Left_moto_go    {in1=1,in2=0,IN3=1,IN4=0;}    //左边两个电机向前走
#define Left_moto_back    {in1=0,in2=1,IN3=0,IN4=1;}    //左边两个电机向后转
#define Left_moto_Stop    {in1=0,in2=0,IN3=0,IN4=0;}   //左边两个电机停转                     
#define Right_moto_go     {in3=1,in4=0,IN1=1,IN2=0;}	//右边两个电机向前走
#define Right_moto_back   {in3=0,in4=1,IN1=0,IN2=1;}	//右边两个电机向后走
#define Right_moto_Stop   {in3=0,in4=0,IN1=0,IN2=0;}	//右边两个电机停转    #define left     'C'#define right    'D'#define up       'A'#define down     'B'#define stop     'F'bit  flag_REC=0; bit  flag    =0;  unsigned char  i=0;unsigned char  dat=0;unsigned char  buff[5]=0; //接收缓冲字节/************************************************************************/
//前速前进void  run(void)
{Left_moto_go ;   //左电机往前走Right_moto_go ;  //右电机往前走
}//前速后退void  backrun(void)
{Left_moto_back ;   //左电机往前走Right_moto_back ;  //右电机往前走
}//左转void  leftrun(void)
{Left_moto_back ;   //左电机往前走Right_moto_go ;  //右电机往前走
}//右转void  rightrun(void)
{Left_moto_go ;   //左电机往前走Right_moto_back ;  //右电机往前走
}
//STOPvoid  stoprun(void)
{Left_moto_Stop ;   //左电机往前走Right_moto_Stop ;  //右电机往前走
}
/************************************************************************/
void sint() interrupt 4	  //中断接收3个字节  串行口中断
{ if(RI)	                 //是否接收中断{RI=0;dat=SBUF;if(dat=='O'&&(i==0)) //接收数据第一帧{buff[i]=dat;flag=1;        //开始接收数据}elseif(flag==1){i++;buff[i]=dat;if(i>=2){i=0;flag=0;flag_REC=1 ;}  // 停止接收}}
}
/*********************************************************************/		 
/*--主函数--*/void main(void)
{TMOD=0x20;        //计数器工作方式2TH1=0xFd;  		   //11.0592晶振,9600波特率TL1=0xFd;SCON=0x50;      //设置为方式2PCON=0x00; TR1=1;ES=1;   EA=1;   while(1)							/*无限循环*/{ if(flag_REC==1)				    //{flag_REC=0;if(buff[0]=='O'&&buff[1]=='N')	//第一个字节为O,第二个字节为N,第三个字节为控制码switch(buff[2]){case up :						    // 前进run();break;case down:						// 后退backrun();break;case left:						// 左转leftrun();break;case right:						// 右转rightrun();break;case stop:						// 停止stoprun();break;}}}
}	

注意,烧录程序时也需设置波特率为9600欧~ 


到了我们都爱的实机演示阶段了:(在文章末尾资源中下载慧净蓝牙app)

蓝牙小车演示

文章最后,还奉上了相关学习资源和蓝牙软件喔,要个赞不过分吧~ 

链接:https://pan.baidu.com/s/1nSN66OBecVOPCmuwfg-pZQ 
提取码:BCAR

                  


http://chatgpt.dhexx.cn/article/G3ghjALG.shtml

相关文章

浅谈51单片机简易循迹小车制作方案

目录 省流助手&#xff08;方案清单&#xff09; 前言 一、小车模型 二、电机 三、电源 1、电池&#xff1a; 2、PCB电源选择&#xff1a; 3、MCU供电方案&#xff1a; 4、MCU和电机的供电方案&#xff1a; 四、主控MCU最小系统 五、电机驱动 1、让电机动起来&#xff1a;&…

基于51单片机制作的蓝牙小车

基于51单片机制作的蓝牙小车 这是本人&#xff08;小菜鸡一枚&#xff09;于大一寒假所做的小玩意&#xff0c;以展现我这几月所学&#xff0c;这也是我发的第一篇博客&#xff0c;准确来说这可能是我搞51单片机的巅峰所做了&#xff0c;因为部长说以后要学stm32开发板了&…

【项目实战】基于STM32单片机的智能小车设计(有代码)

【1】背景意义 近些年随着国民生活水平的提升&#xff0c;以小车为载体的轮式机器人进入了我们的生活&#xff0c;尤其是在一些布线复杂困难的安全生活区和需要监控的施工作业场合都必须依赖轮式机器人的视频监控技术。因此&#xff0c;基于嵌入式技术的无线通信视频监控轮式机…

51单片机小车(附源码)

算是做的第一个比较完整的序幕项目&#xff0c;用到的模块不多&#xff0c;更多时间花在调试硬件封方面&#xff0c;比如电池带不动电机导致51单片机重启。 项目框图 项目流程图 通过蓝牙发送指令控制小车的前进、后退、转向、调速等功能。 在小车运动过程中黄灯亮起&#xff…

单片机智能小车

单片机智能小车&#xff1a; 基于单片机控制的自主寻迹电动小车的设计&#xff1a; 摘 要:针对小车在行驶过程中的寻迹要求&#xff0c;设计了以AT89C51单片机为核心的控制电路&#xff0c;采用模块化的设计方案&#xff0c;运用色标传感器、金属探测传感器、超声波传感器、霍尔…

51单片机寻迹小车

# 基于51单片机的循迹小车(详细讲解源码) 作为一名学生&#xff0c;这里我就简单谈谈我们小组做这个循迹小车的一个过程。主要是实现小车寻黑线行驶的这样一个功能&#xff0c;速度可以调节(定时器中断模拟PWM波实现) 一丶硬件部分 小车的主体框架是一个三轮的外在形态 电源…

【51单片机实例】智能小车(一)--------小车的前进、后退和停止

51智能小车系列 智能小车&#xff08;二&#xff09;-------- 小车的红外遥控调速 智能小车&#xff08;三&#xff09;-------- 小车的红外循迹 文章目录 前言一、硬件选择1.1 小车底盘1.2 电机1.3 51单片机最小系统板1.4 L298N双路电机驱动模块1.5 电源1.6 杜邦线 二、硬件连…

51单片机蓝牙小车(精要版)

51单片机蓝牙小车&#xff08;精要版&#xff09; 实现&#xff1a;通过手机与小车的蓝牙通信&#xff0c;实现手机控制小车前后左右的移动。 这是博主学了51单片机第一次做的单片机项目&#xff0c;选择了许多人喜欢的蓝牙小车作为第一个项目。 准备材料&#xff1a; 1.小…

51单片机项目设计:51单片机蓝牙小车制作教程,新手必做!(手机控制前后左右行走)

哔哩哔哩项目展示视频&#xff1a;https://www.bilibili.com/video/BV1Wy4y1z7a5 QQ交流群1&#xff1a;981140834 QQ交流群2&#xff1a;473982062 QQ交流群3&#xff1a;718245727 QQ交流群4&#xff1a;598455837 csdn资料链接&#xff1a;https://download.csdn.net/downl…

51单片机智能小车

最近学校举办了一个智能小车比赛&#xff0c;比赛内容为用手机蓝牙控制小车拥有5个功能&#xff0c;分别是超声波舵机避障&#xff0c;测距&#xff08;显示在LCD1602上&#xff09;&#xff0c;红外跟随&#xff0c;循迹还有蓝牙控制小车前进后退左转又转以及停止。 文章目录 …

51单片机智能循迹小车的通俗易懂讲解

. . 从上面导航图&#xff0c;我们可以看到&#xff0c;智能小车&#xff0c;共分为三步 外部检测&#xff0c;控制中心&#xff0c;轮子输出控制。 等于人的 . . 因为单片机控制中心和轮子输出控制是一样的&#xff0c;只有前面的外部检测&#xff0c;换个模块工作而已。 . …

基于51单片机四路循迹小车

文章目录 一. 任务要求二. 系统原理三. 整体方案1. 控制模块最小系统去除AD网格线 2. 电机驱动模块3. 电源模块4. 循迹模块5. 超声波测距模块 四. 车体实物图五. 软件实现 这学期开设的51单片机课程的课程设计即将验收&#xff0c;今天开始正式着手做循迹小车~ 一. 任务要求 二…

51单片机循迹小车

一.材料 1.51单片机开发板 2.L298N电机 3.红外循迹模块 4.直流电机 5.电池&#xff08;提供电源&#xff0c;选用的是三节18650锂电池&#xff09; 6.杜邦线 7.两个主动轮&#xff0c;一个万向轮 8.小车底板&#xff08;亚克力板&#xff09; 二.实现效果 使小车在两…

【51单片机实例教程】智能小车(一)让你的小车跑起来

文章目录 前言 一、硬件 1.小车底盘 2.51单片机最小系统板 3.L298N双路电机驱动板 二、仿真模拟图 三、代码部分 1.直行 2.后退 3.左转圈 4.右转圈 总结 前言 智能小车的项目非常多&#xff0c;比如说循迹避障、蓝牙遥控、视觉控制&#xff08;这一块用51单片机比较…

基于51单片机的循迹小车(初学者必备!!!)

基于51单片机的循迹小车 文章目录 基于51单片机的循迹小车 前言一、系统概述1.工作原理2.控制系统结构框图 二、循迹小车硬件1.电机驱动模块2.循迹模块 三、循迹小车软件四、源码&#xff08;仅供参考&#xff09; 前言 该小车采用单片机STC89C52作为主控制核心&#xff0c;通过…

单片机小车

*## 单片机小车 本周作为单片机新手的我制作了我的第一个作品—单片机小车 一 元件&#xff1a;1.单片机最小系统板 2.杜邦线 3.USB转TTL CH340模块STC单片机下载线刷机板USB转串口 4.智能小车配件 红外寻迹 5.智能小车51单片机套件底盘组装寻迹避障开发板编程循迹机器人配件 …

51单片机之智能小车(避障、跟随、循迹)

目录 基本概述 硬件组成 功能 关键字 模块介绍 电机模块L9110S 循迹模块&#xff08;TCRT5000传感器&#xff09; 红外避障模块 测速模块 小车 移动小车&#xff08;控制电机转动&#xff0c;使小车前进、后退、左转、右转 &#xff09; 遥控小车&#xff08; 使…

详细介绍如何从零开始制作51单片机控制的智能小车(一)———让小车动起来

从本文开始&#xff0c;在之后的一段时间里&#xff0c;我会通过本系列文章&#xff0c;详细介绍如何从零开始用51单片机去实现智能小车的控制&#xff0c;本文作为本系列的第一篇文章&#xff0c;主要介绍如何让小车动起来。 本系列文章链接&#xff1a; ------------------…

乐观锁-基于CAS原理

乐观锁理论基础 乐观锁的操作过程中其实没有没有任何锁的参与&#xff0c;乐观锁只是和悲观锁相对&#xff0c;严格的说乐观锁不能称之为锁。下面我们就通过乐观锁与悲观锁的对比来更好的理解乐观锁。 乐观锁与悲观锁的概念 乐观锁&#xff1a;总是假设最好的情况…

JAVA CAS原理深度分析

CAS CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronouse同步锁的一种乐观锁。 本文先从CAS的应用说起&#xff0c;再深入原理解析。 CAS应用 CAS有3个操作数&#xff0c;内存值V&#xff0c;旧的预期值A&#xff0c;要修…