蓝牙遥控
至此,小车的基本部分搭建完毕。下面看一下重量级部分——蓝牙。 说道蓝牙,大家可能觉得很高深,害怕。的确,蓝牙技术是一门高深的技术,蓝牙的通信协议 让人头疼。 但不要害怕,我们是不接触蓝牙底层协议的,况且现在的模块技术是很发达的, HC06——蓝牙 转串口模块 看图 它将复杂蓝牙通信协议直接变成了单片机上拥有的,我们也熟悉的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:65break; 表示接收到的字符是A,也就是按 前进 时发送过来的,这时就可以 在 break 前写上小车前进的代码; case:97break;表示接收到的是a,即松开 前进 时发送出来的,既然松开了 前进 按钮 , 就可以再 break 前加上小车停止的语句。左转,右转也是一样的。至于小车前进后退左转右转 的代码,要根据你自己的电机机驱动来写。 下面是我的下位机程序,电机驱动代码要自己写,这个只供参考 #include #define uchar unsigned char #define uint unsigned int uchar a; void init() { TMOD=0X20; //设置定时器 1 为方式 2 TH1=0 xfd ; TL1=0 xfd ; //装初值 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 灯长亮, 停止闪烁。 下面是安卓手机控制端软件和一些文档的资料包 手把手教你做 Android 手机遥控车.zip(5.62 MB, 手机遥控车 DIY.pdf(4.69 MB, 下载次数: 8989) 蓝牙模块从机状态 下载次数: 10587)