它将复杂蓝牙通信协议直接变成了单片机上拥有的,我们也熟悉的RXD TXD串口通信。高兴了吧!
我们只需接3根线就行了——VCC GND就不说了。大家注意一下它的RXD要接51单片机的P3.0,也就是RXD.
为什么RXD接RXD,不是接TXD吗?有人会问。大家注意一下,这个模块上的RXD的意思是告诉你,外部的RXD接我这儿,不是说这个引脚就是RXD,它其实是TXD. TXD也是一样的,要注意一下。
我们只接3根线,TXD不接,因为我们用手机发送指令,蓝牙模块只负责接收就行。STATE EN这两引脚也不用管。
关于这个模块的其它用法,想更改设置波特率,更改设备名称等,网上都有相应资料,解决不了的可以加QQ:1399836578
到这儿,自己将上面几个模块组装一下,所有的硬件部分就完成了。
下面来看软件部分。软件部分又分为两个部分——下位机(单片机程序)和上位机(Android手机控制端);
由于下位机是根据上位机发送的指令来编程的,我们就先看看上位机部分
上位机截图上面已给出了。
由于上位机的编写涉及到Java语言编程知识和Android系统知识,不是十句八句能说清楚的,在这儿就不讨论它是怎样编写出来的。待会儿我会给出 它的APK安装包,下载到手机上直接安装就行。我们先对着上图说说它是怎么工作的。
当我们用手按下 前进 时,手机会通过蓝牙以ASCII码的形式发送一个字符“A”,释放时会发送一个字符“a”;
当我们用手按下 后退 时,手机会通过蓝牙以ASCII码的形式发送一个字符“D”,释放时会发送一个字符“d”;
当我们用手按下 左转 时,手机会通过蓝牙以ASCII码的形式发送一个字符“C”,释放时会发送一个字符“c”;
当我们用手按下 右转 时,手机会通过蓝牙以ASCII码的形式发送一个字符“B”,释放时会发送一个字符“b”;
当使用重力感应模式是,也是根据手机的状态来发送这几个字符的。
同时我们看他查询得ABCDabcd 八个字符的ASCII码值:A-65 a-97 B-66 b-98 C-67 c-99 D-68 d-100.
有了这些,我们就知道怎样写单片机程序了——使用51单片机的串口通信。打开串口中断,我们可以在串口中断服务函数中接收到字符后用 switch() 语句来判断接收到的字符。例如
case:65 break; 表示接收到的字符是A,也就是按 前进 时发送过来的,这时就可以在 break前写上小车前进的代码;
case:97 break;表示接收到的是a,即松开 前进 时发送出来的,既然松开了 前进 按钮 ,就可以再break前加上小车停止的语句。左转,右转也是一样的。至于小车前进后退左转右转的代码,要根据你自己的电机机驱动来写。
下面是我的下位机程序,电机驱动代码要自己写,这个只供参考
#include
#define uchar unsigned char
#define uint unsigned int
uchar a;
void init()
{
TMOD=0X20; //设置定时器1为方式2
TH1=0xfd ;
TL1=0xfd ; //装初值
TR1=1; //启动定时器1
REN=1; // 使能接收
SM0=0;
SM1=1; //设置串口为工作方式1
EA=1; // 打开总中断开关
ES=1; // 打开串口中断开关
}
void main()
{
init();
while(1);
}
void ser() interrupt 4
{
ES=0;
RI=0; //将接受中断标志位清0;
a=SBUF; //将接受到的数据赋值给a
switch(a)
{
case 65: P2=0X17; break; // 发送的是A 前进指令
case 66: P2=0X1B; break; // 发送的是B 右转指令
case 67: P2=0X27; break; // 发送的是C 左转指令
case 68: P2=0X2B; break; // 发送的是D 后退指令
case 97: P2=0X00; break; //发送的是a 停止指令
case 98: P2=0X00; break; //发送的是b 停止指令
case 99: P2=0X00; break; //发送的是c 停止指令
case 100: P2=0X00; break; //发送的是d 停止指令
//P2口是我的电机驱动的控制端
default: break;
}
ES=1;
}
整个过程讲解完毕,想DIY的赶快行动起来吧!(有问题可以加QQ:1399836578)
差点忘了,下面给出编写的安卓手机控制端(上位机)软件
先说一下手机(必须是安卓手机)控制端使用方法
先用手机的蓝牙设置搜索到你的小车的蓝牙,并完成配对。
在手机上打开控制端点击 开始 后会弹出已配对的蓝牙设备,如果是你的小车上的蓝牙模块,就点击 连接小车,完成连接,
在完成连接前,HC06蓝牙转串口模块上的LED等会不停的闪烁,连接完成后,LED灯长亮,停止闪烁。
下面是安卓手机控制端软件和一些文档的资料包
最近,部分网友反映买的蓝牙转串口模块买成了主机,结果不能用。在这里说明一下,这种模块有主从机之分,
我们要选购从机,主机与手机不能通信的。对于疏忽表示歉意。
最后祝想DIY的同学早日成功!