2021/04/28-更新工具的连接
-----------------------------------------
前几天弄了个基于51芯片的蓝牙红外小车,因为是新手也没有人教,网上的资料也不够齐全(很多都是跳过新手那一步,比如说接线),做的过程中遇到很多问题,做的比较艰难,因而写一篇记录整个过程的文章,希望能够给新手提供一些帮助同时也做一个总结。
组装完成的小车,比较丑。
效果图
1.材料(可以在淘宝上买得到)
1.4wd小车一台,包含马达,两个底盘,和螺丝等(要自己组装,)
2. L298N电机驱动模块两个,用来控制马达的转速,方向,停止与否。
3. 51单片机最小系统板一个和STC89C52RC芯片一个
4.HC-05蓝牙模块一个(蓝牙遥控)和usb转TTL转接模块一个(用于设置和调试蓝牙模块)
5. 4路红外循迹模块(黑白循迹)
6. 18650电池四个和18650电池盒和杜邦线若干。
我用的材料就是以上这些。
2. 组装
第二个难点就是组装,难在如何接线。
1.先把四个马达和车轮装在一起,组装成一个小车框架。
2.L298N电机的接线
一个L298N有四个输出口(out1,out2,out3,out4)接马达,每两个输出口控制一个马达,因此可以控制两个马达,12v接口接电源正极,5v接口是给最小系统板供电,所以5v接系统板5v口。四个IO输入口(in1,in2,in3,in4)通过芯片控制输出口。两个使能端口(A,B),只有高电平时电机才有有效,低电平时电机不转
转。因为有两个电机只有一个供电源所以两个电机要并联连接在一起。
下面是电机的控制表,当使能端位低电平(0)时电机处于停止状态,当输出口为(00或11)时处于制动状态,阻止电机转动。
代码如下
#include
#include
sbit LEA=P1^0;//左边轮的使能端A
sbit LEB=P1^1;//左边轮的使能端B
//左前轮
sbit LIN1=P1^2;//
sbit LIN2=P1^3;//
//左后轮
sbit LIN3=P1^4;
sbit LIN4=P1^5;
sbit REA=P3^2;//右边轮使能端A
sbit REB=P3^3;//右边轮使能端B
//右前轮
sbit RIN1=P3^4;
sbit RIN2=P3^5;
//右后轮
sbit RIN3=P3^6;
sbit RIN4=P3^7;
//方向控制
void delay(int time);//延时函数
void forward();//前进
void back();//后退
void stop();//停止
void start();//启动
void turnLeft();//左转
void turnRight();//右转
//蓝牙模块
//定时器1用作串口发生器,用于与蓝牙通信
void time1Init();//定时器1的初始化
void processMsg();//处理蓝牙接收到的信息
//红外模块
//从右到左
//in1是最右边的红外灯
sbit in1=P2^0;
sbit in2=P2^1;
sbit in3=P2^2;
sbit in4=P2^3;
int isTrace=0;//是否开启循迹功能
void trace();//红外循迹
//PWM调速
//通过控制使能端高低电平输出的时间从而控制速度
int count=0; //用于计数
int pwm=20; //表示启动的时间,20表示启动20ms
void time0Init();//定时器0的初始化.
//用于控制高低电平的时间
//定时器比较准确
void go();//启动 使能端为高电平 1
void pause();//停止 使能端为低电平 0
void time0Fun();//定时器0的中断函数
int main()
{
EA=1;//打开总中断
time1Init();//定时器1初始化
time0Init();//定时器0初始化
start();//使车的方向一开始向前
while(1)
{
if(isTrace)
trace();
if(count>=100) //100ms一个周期
count=0;
if(count=pwm)
pause();
}
return 0;
}
void delay(int time)//延时函数
{
int i;
for(i=0;i
L298N无效,无法驱动马达的原因(1.电压不够,起码要7v以上。2.使能端没有处于高电平状态 。3.L298N或马达坏了).
3.蓝牙的接线
蓝牙接在最小系统板,蓝牙的TXD(发送口)口接系统板的RXD(接收口)口,RXD口接TXD口也就是交叉连接,发送口对接收口。
在接在系统板之前,要对蓝牙进行一些设置(名称,密码,波特率),这时就要用到usb转TTL模块。
接在电脑上,打开串口调试助手(软件在后面的链接),进入AT模式 (进入方法,蓝牙模块上面有个按钮,在usb口插入电脑前,长按不放,插入电脑即可,如果看到蓝牙模块上的灯在快速闪烁,说明已经进入AT模式,慢闪是工作模式)。
比如设置名字hello,密码123456
AT+NAME=hello
AT+PSWD=123456
发送以上两个命令即可,之后打开手机的蓝牙试试能不能连接成功。
4.红外的接线
红外模块的接线很简单,按照引脚上的说明,一一对应接在系统板上即可。
3.代码
代码大概分成三个模块,蓝牙遥控模块,红外循迹模块,PWM调速模块。
1.蓝牙那部分还需要在手机下载一个蓝牙助手用来控制小车,我的是在小米商城下载的,有广告,并不是很好用,但又找不到好的,只好将就一下。如果会android编程的,可以自己写一个。下面那些命令都是自定义,你可以根据需要,自己定制,写代码的时候对应就行。
下面是要用到的软件,包括 串口调试助手,代码编写工具KEil, 烧录软件TCICP_V6.87
链接:https://pan.baidu.com/s/1NyjX8BkccG__643gwCKSTQ
提取码:fwzr
有任何问题可以找我