51单片机蓝牙小车(精要版)
实现:通过手机与小车的蓝牙通信,实现手机控制小车前后左右的移动。
这是博主学了51单片机第一次做的单片机项目,选择了许多人喜欢的蓝牙小车作为第一个项目。
准备材料:
1.小车亚克力底盘
2.减速电机4个(网上搜索有很多)
3.蓝牙 HC-06
4.L298N
5.7.2V电源(记得配好接口,我买的是大田宫的接口)
6.杜邦线若干(公对公,母对母,公对母)
8.89C52RC单片机最小系统板
7.必要的话要用电焊铁
第一:
首先说蓝牙模块,蓝牙模块是比较重要的模块,通过接收手机的信号,把数据传送给单片机,单片机控制电平,使L298N步进电机驱动小车轮子。蓝牙买了HC-06型号,配置非常简单,教程在汇承官网(官网)
具体步骤就不列举了,官网非常详细。单片机程序后面再列举出来。
第二:
说一下连线,连线的话呢单片机的TX,RX,5V,GND分别接蓝牙的 RX,TX,5V,GND
7.2V电源接口连接L298N步进电机的12V,电源GND连接L298N步进电机GND,然后关键的地方来了,L298N的一个5V输出口连接单片机给单片机供电,步进电机的GND连接单片机的GND.
(之前用电源连接单片机,单片机再输出供电给L298N,减速电机很难动起来,一直以为是程序错误或者是杜邦线连接错误,搞了很久,后来知道是单片机输出的电流是不够大的,所以正确的连接是 : 电源供电L298N,L298N供电给单片机,L298N供电给四个减速电机)
步进电机的左右两边分别有两个口,分别为output1,output2,output3,output4.
output1,output2分别连接减速电机的正负(一共连接两个减速电机)
output3,output4分别连接减速电机的正负(一共连接两个减速电机)
第三:
手机控制端就下载SPP蓝牙串口,然后选择按钮。定义按钮输入要发送的字符就OK了。
第四:
代码部分
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LF=P0^0;//左上
sbit LB=P0^1;//左下
sbit RF=P0^2;//右上
sbit RB=P0^3;//右下
/前进/
void forward()
{
LF=0;
LB=1;
RF=0;
RB=1;
}
/后退/
void back()
{
LF=1;
LB=0;
RF=1;
RB=0;
}
/左/
void left()
{
LF=0;
LB=0;
RF=0;
RB=1;
}
/右/
void right()
{
LF=0;
LB=1;
RF=0;
RB=0;
}
void UsartConfiguration();
void Delay_1ms(uint i);
void Com_Int(void) interrupt 4
{
uchar receive_data;
EA = 0;
if(RI == 1)
{
RI = 0;
LF=0;
RF=0;
LB=0;
RB=0;
receive_data = SBUF;
if(receive_data == '1')
{
forward();
}
else if(receive_data == '2')
{
back();
}
else if(receive_data == '3')
{
left();
}
else if(receive_data == '4')
{
right();
}
else if(receive_data == '0')
{
LF=0;
RF=0;
LB=0;
RB=0;
}
}
EA = 1;
}
void main()
{
UsartConfiguration();
while(1);
}
void UsartConfiguration()
{
SCON=0X50;
TMOD=0X20;
PCON=0X00;
TH1=0XFd;
TL1=0XFd;
TR1=1;
ES = 1;
EA = 1;
}
void Delay_1ms(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
第五:
这次的单片机蓝牙小车项目让我知道了许多东西都是要不断试错不断踩坑才能完成,多查查互联网,多问问朋友,有助于解决问题。下一个项目想要用STM32F407和openmv做一个跟着人运动的小车,朋友说用树莓派会更快,但是我STM32还没学好,就不跳跃这么快,先来STM32。学习时间大概为3个月(STM32&& openmv && python)。做好了会继续写博客。希望这个能对你有一点点帮助。感谢~