资源描述
手把手教你做Android手机遥控车
安卓手机遥控小车,顾名思义就是用安卓手机来控制小车前后左右运动。给大家展示一个既可触摸按键控制又可重力感应控制的Android手机软件和DIY小车,废话少说,上图:
Android上位机软件运行界面截图 触摸按键控制模式
重力感应控制模式 更改背景
在手机上的运行图
以上是手机控制端的电路图,下面再看小车部分——
看完图片还不过瘾,上视频:
视频地址:
看完了,感觉还行吧! 不要羡慕,你也可以,下面来一起DIY。
第一步 ——车体
既然是小车,底盘车轮也就少不了了。下面是这辆车的底盘
这些东西淘宝上都可以买到的,这个自己不容易做出来。
第二步——控制系统
除了小车底盘,我们还得有一个单片机最小系统来控制吧
这板子做的够简洁吧
需要说明一下的是,别以为它没有晶振,没有电容——它们都在单片机下面藏起来了。但这的确是一个“最小系统”,除了I/O口引出了外,什么都没有扩展。
51单片机最小系统的电路图大家应该都知道——
第三部——电机驱动
底盘和最小系统搞好了,小车还是跑不起来——缺少电机驱动。
单片机的I/O是驱动不了电机的,我选用的是L298N电机专用驱动芯片。下面是我的电机驱动模块PCB
在PCB底板上涂了一层绿油,但没有涂匀,以致成了这个样子。
这个电机模块是根据下面这张原理图做出来的
有兴趣的可以根据这图画一块PCB,若嫌麻烦,对驱动电流的要求又不高时,可以试试ULN2003驱动芯片。
第四步——HC06蓝牙转串口模块
既然使用手机蓝牙控制,那小车上必须要有一个蓝牙模块与手机蓝牙通信。在这里选用了HC06蓝牙转串口模块。
HC06蓝牙转串口模块的作用是将从手机蓝牙发送过来的指令接收到后转换成串口的形式通过单片机的串口传给单片机。只需将该模块的RXD接上51单片机的RXD引脚就行(当然还有电源),TXD不用接,因为我们只用它接收手机蓝牙信号,不发送数据。它出厂默认设置的波特率9600 ,不重新设置它的波特率的话,在写单片机串口程序时,也要将波特率设置为9600。
第五步——电源
你可以根据实际情况选择电源,用电池组或小型蓄电池,我用的是两块手机电池串联
串联后可达到八点几伏,一路直接给电机驱动供电,一路经7805降压后给单片机和蓝牙模块供电。
第六步——程序
这一步很重要,很核心。既然是遥控,写程序的话必须先了解上
机是发送的什么指令。从上面的手机截图可以看到,在控制端界面上有四个用来控制小车运动的按钮——前进,后退,左转,右转。
当我们用手按下前进时,手机会通过蓝牙以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单片机的串口通信来接收发送过来的ASCII码。打开串口中断,我们可以在串口中断服务函数中接收到字符后用 switch()语句来判断接收到的字符。例如
case:65 break; 表示接收到的字符是A,也就是按 前进 时发送过来的,这时就可以在 break前写上小车前进的代码;
case:97 break;表示接收到的是a,即松开 前进 时发送出来的,既然松开了 前进 按钮 ,就可以再break前加上小车停止的语句。 左转,右转,后退 也是一样的。
至于小车前进后退左转右转的代码,要根据你自己的电机机驱动来写。下面给出一个程序例子:
#include<reg52.h>
#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;
}
需要注意的是,这个程序的P2口,是我这个小车上电机驱动的控制端口,这个地方大家要根据自己的驱动来写。若用其它类型单片机像AVR MSP430,等都只需在串口中断服务函数中进行上面的处理即可。
至此,整个制作过程结束,说明一下,这种写程序的方法只针对下面给出的手机控制端软件,对其他的遥控小车软件无效。遇到问题的可以加QQ:1399836578
最后讲一下手机(必须是安卓手机)控制端软件的使用方法。
1,在安卓手机上安装本遥控软件
2,给小车上的蓝牙模块通电,在手机系统的蓝 牙设置 里打开蓝牙搜索蓝牙设备,搜索到小车上的蓝牙后,完成配对(只需首次使用时配对,第一次配对完成后系统会有配对蓝牙设备的纪录)如下图
3,运行手机上的控制端,进入界面时蓝牙若没打开会提示请求打开蓝牙。进入界面后,点击 开始,这是会弹出一个对话框,显示已配对的蓝牙设备。若显示的是你的小车上的蓝牙,就点击“连接小车”
该软件就会连接小车,这时你就可以随心所欲的遥控你的小车了(当然遥控距离有限制)。如果你的手机里有多个蓝牙配对纪录,这时对话框中显示的可能不是你的小车蓝牙,点击取消后,对话框中会显示出另外一个已配对的蓝牙,知道显示出你小车上的蓝牙时,点击连接小车就可以连接了。
4,完成连接后,触摸屏幕上的 前进 后退 左转 右转 就可以控制小 车了,若要使用重力感应控制功能,点击中间按钮“重力感应”后,
该按钮会变成红颜色,表示重力感应功能开启了,此时按钮控制会失效,晃一晃你手中的手机,就可以看到重力感应控制的神奇了。想关闭时,按一下变红了的按钮,这时“重力感应”变成灰色,表示重力感应功能关闭,同时 按钮控制生效。
最近不少网友通过QQ向我反馈了在DIY过程中常遇到的两个问题
一 电机驱动做不好或 做出来后驱动不了
二 购买的蓝牙模块和手机配对不了或连接不了,或可以配对却不能连接等问题。
对于第一个问题,我表示只要你是按上面给出的图来做的话,一定错不了。对于第二个问题,有可能是你手机的原因(有些手机的蓝牙驱动本身就有一定的问题,多见于山寨手机)也可能是购买的蓝牙模块
有问题,现在蓝牙模块质量参差不齐。还有就是可能你的蓝牙模块买成了主机,我们要的是从机。怕买错了的可以点下面的淘宝链接购买,
该模块已测试通过。
为此,本人通过正规渠道购回了一些相关模块,通过实物测试全部通过。想购买小车底板或相关模块的可以进入下面的淘宝链接购买,或者联系QQ: 1399836578我们将给购买者提供一个纯净版(没有广告也不需激活)的安卓手机控制端软件。
淘宝店地址——
介绍完毕,祝想DIY的同学早日成功。
展开阅读全文