一、材料准备
1.小车底座
2.公对母,公对公,母对母杜邦线
3.l298n电机驱动芯片(想省事的话直接买模块)
4.一个51单片机最小系统(自己焊接或买成品,网上的成品大多很劣质,买回来后要好好检查)
5.蓝牙模块 (一般就是hc-05或者hc-06)
6. 直流电机2(一般在网上买小车套件会附赠)
7.四节电池盒和电池4
8.USB转TTL连接器
9.烙铁之类的焊接工具
二、L298n相关资料
输入1,2端口控制通道A,3,4端口控制通道b;通道a,b分别连接两个电机,电机正负极最好保持一致(这样你程序控制电机的方向就在逻辑上一致,不然会反向)
感兴趣可以自己焊一个出来
三、hc-06蓝牙设置
1.通过usb转ttl工具将hc-06和电脑连接
2.在网上下载一个stc-isp下载器(stc官网有免费软件)
使用串口助手,新买的hc-06的话默认连接是9600波特率,将串口助手波特率设置为9600就可以实现通讯了(如果不行试试其他的波特率,如38400等等)
输入AT然后发送,会接受到OK,证明通讯成功,就可以进行下一步了
根据这个指令集发送指令配置你的蓝牙,配置好以后就连接到单片机上
三、单片机代码
1.使用的是stc89c51单片机(11.0592MHZ)
#include "stc15F2k60s2.h" //此文件中定义了单片机的一些特殊功能寄存器
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
void UsartInit()
{
SCON=0X50; //设置为工作方式1
TMOD=0X20; //设置计数器工作方式2
PCON=0X80; //波特率加倍
// TH1=0XF3; //计数器初始值设置,波特率4800
// TL1=0XF3;
TH1=0XF4; //计数器初始值设置,波特率4800
TL1=0XF4;
ES=1; //打开接收中断
EA=1; //打开总中断
TR1=1; //打开计数器
}
void main()
{
UsartInit(); // 串口初始化
while(1);
}
void Usart() interrupt 4
{
u8 receiveData;
receiveData=SBUF;//出去接收到的数据
RI = 0;//清除接收中断标志位
if(receiveData=='1')
{
P10=0;
P11=1;
P12=0;
P13=1;
}
else if(receiveData=='2')
{
P10=1;
P11=0;
P12=1;
P13=0;
}
else if(receiveData=='3')
{
P10=0;
P11=0;
P12=0;
P13=1;
}
else if(receiveData=='4')
{
P10=0;
P11=1;
P12=0;
P13=0;
}
else
{
P10=0;
P11=0;
P12=0;
P13=0;
}
SBUF=receiveData;//将接收到的数据放入到发送寄存器
while(!TI); //等待发送数据完成
TI=0; //清除发送完成标志位
}
关于串口通讯,单片机的主频与计算出的波特率一定要与蓝牙你自己设置的波特率精准匹配!!一定要精准!!如上图代码中我注释掉的计数器初始值设置,计算波特率出现偏差会导致蓝牙与单片机无法正常通讯或通讯出现乱码!!
蓝牙与单片机通讯失败的影响因素主要有:
1.代码中波特率设置错误
2.单片机主频设置与配对的晶振不符
3.你的晶振质量有点差,波特率设置又有点偏差,也会导致乱码
4.其他硬件损坏
四、连线
1.P10接输入1,P11接输入2,P12接输入3,P13接输入4
2.电池正极和负极分别接在l298n主电源正负上,l298n驱动板上的5v输入连接到单片机的vcc上给单片机供电,单片机的vss端(及接地)连到主电源负极
五、实际测试
1.手机下载一个蓝牙串口软件
2.打开电源,手机连上你的蓝牙hc-06软件
3.发送1前进,2后退,3左转,4右转,其他停止
版权声明:本文为CSDN博主「大麒麟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45601654/article/details/119961718
暂无评论