单片机/MCU论坛
直播中

bingo

12年用户 125经验值
擅长:嵌入式技术 EDA/IC设计 接口/总线/驱动 控制/MCU
私信 关注
[文章]

手把手教你做Android手机遥控小车

本帖最后由 cwbwss 于 2013-1-9 18:29 编辑

安卓手机遥控小车,顾名思义就是用安卓手机来控制小车前后左右运动。给大家展示一个既可触摸按键控制又可重力感应控制的Android手机软件和DIY小车,废话少说,上图:

Android上位机软件运行界面截图

20121125165625.png


触摸按键控制模式
20121125165703.png



重力感应控制模式
20121125170555.png


更换背景
20121125165742.png

在手机上的运行图

IMG_20121201_214350.jpg






上DIY小车图片


XC.jpg

IMG_20121201_103257.jpg


IMG_20121201_103241.jpg





看完图片还不过瘾,上视频:
[media]http://v.youku.com/v_show/id_XNDgyNDU2NDI4.html[/media]


看完了,感觉还行吧!{:soso_e104:} 不要羡慕,你也可以,下面来一起DIY。

先来看一看下位机也就是小车部分。既然是小车,底盘车轮也就少不了了。
下面是这辆车的底盘

底盘正面
IMG_20121201_100415.jpg


底盘反面

IMG_20121201_100431.jpg


除了小车底盘,我们还得有一个单片机最小系统来控制吧

正面
IMG_20121201_100117.jpg
需要说明一下的是,别以为它没有晶振,没有电容等——它们都在单片机下面藏起来了。
但这的确是一个“最小系统”,除了I/O口引出了外,什么都没有扩展。



PCB底板,铜线都氧化了{:soso_e115:}
IMG_20121201_100132.jpg



最小系统的电路应该都知道
最小系统.jpg


底盘和最小系统搞好了,小车还是跑不起来——缺少电机驱动。
单片机的I/O是驱动不了电机的,我选用的是L298N电机专用驱动芯片。
下面是我的电机驱动模块PCB

IMG_20121130_161712.jpg


时间有点长了,看起来不是很好看。但PCB布线排版还可以吧!
IMG_20121130_161727.jpg
底面涂了一层绿油,但没有涂匀。

下面是这个模块的电路图

298.jpg


L298用起来蛮简单,网上的资料很多。但若嫌电路麻烦,
对驱动能力要求又不高的情况下你可以试一下ULN2003驱动芯片
很简单。

再就是电源部分,我用的是两块手机电池,串联起来用的,一路经7805降压后供
单片机用,一路直接给电机驱动模块供电。
IMG_20121201_101604.jpg

至此,小车的基本部分搭建完毕。下面看一下重量级部分——蓝牙。
说道蓝牙,大家可能觉得很高深,害怕。的确,蓝牙技术是一门高深的技术,蓝牙的通信协议让人头疼。
但不要害怕,我们是不接触蓝牙底层协议的,况且现在的模块技术是很发达的,HC06——蓝牙转串口模块
看图

HC06.jpg

它将复杂蓝牙通信协议直接变成了单片机上拥有的,我们也熟悉的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)

差点忘了,下面给出编写的安卓手机控制端(上位机)软件

先说一下手机(必须是安卓手机)控制端使用方法



先用手机的蓝牙设置搜索到你的小车的蓝牙,并完成配对。

20121130151104.png



在手机上打开控制端点击 开始 后会弹出已配对的蓝牙设备,如果是你的小车上的蓝牙模块,就点击 连接小车,完成连接,
在完成连接前,HC06蓝牙转串口模块上的LED等会不停的闪烁,连接完成后,LED灯长亮,停止闪烁。
20121130151223.png

下面是安卓手机控制端软件和一些文档的资料包
手把手教你做Android手机遥控车.zip (5.62 MB)
(下载次数: 12561, 2013-1-2 15:55 上传)


手机遥控车DIY.pdf (4.69 MB)
(下载次数: 9892, 2013-1-9 18:28 上传)



最近,部分网友反映买的蓝牙转串口模块买成了主机,结果不能用。在这里说明一下,这种模块有主从机之分,
我们要选购从机,主机与手机不能通信的。对于疏忽表示歉意。



最后祝想DIY的同学早日成功!

回帖(902)

6699.tv

2012-12-2 11:46:33
建议去亚马逊买一本吧,也不贵,2折
1 举报

白留伟

2012-12-2 12:25:41
看看
1 举报

jia家189

2012-12-3 16:32:23
请问做这些推荐买那些书做?
举报

忧伤b小调

2012-12-3 16:45:07
这玩意好,收藏了,想DIY一个看看
1 举报

朱靖

2012-12-3 17:27:02
很好的创意
举报

吴昊

2012-12-3 18:24:47
顶个
举报

harry

2012-12-3 18:40:15
很好,mark一下!!
1 举报

dickmao

2012-12-3 20:41:42
很牛
举报

fupinggui

2012-12-3 20:54:35
收藏了
举报

wan920322

2012-12-3 21:02:05
举报

葛超

2012-12-4 00:02:50
不错
举报

万劫不复

2012-12-4 01:58:55
楼主牛人!
举报

刘志

2012-12-4 07:31:29
好好厉害啊
举报

王再尚

2012-12-4 11:40:07
牛人
举报

zxq1988

2012-12-4 11:49:21
https://bbs.elecfans.com/?fromuid=620258
PCB打样找华强 http://www.hqpcb.com 样板2天出货
举报

smileqcl

2012-12-4 19:46:19
看看~
举报

高明旭

2012-12-4 21:09:36
顶个
举报

hrcan

2012-12-4 22:07:16
不错
举报

蔚光

2012-12-4 22:09:37
强大的人类啊
举报

更多回帖

发帖
×
20
完善资料,
赚取积分