发 帖  
原厂入驻New

[经验] 手把手教你做Android手机遥控小车

2012-12-2 11:41:33  163832 Android
分享
167
本帖最后由 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





看完图片还不过瘾,上视频:



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

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

底盘正面
IMG_20121201_100415.jpg


底盘反面

IMG_20121201_100431.jpg


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

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



PCB底板,铜线都氧化了
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<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;
}

整个过程讲解完毕,想DIY的赶快行动起来吧!(有问题可以加QQ:1399836578)

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

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



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

20121130151104.png



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

下面是安卓手机控制端软件和一些文档的资料包
手把手教你做Android手机遥控车.zip (5.62 MB, 下载次数: 12529)


手机遥控车DIY.pdf (4.69 MB, 下载次数: 9868)



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



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

6699.tv 2012-12-2 11:46:33
建议去亚马逊买一本吧,也不贵,2折
1回复

举报

1576380808 2012-12-2 12:25:41
看看
1回复

举报

jia家189 2012-12-3 16:32:23
请问做这些推荐买那些书做?
回复

举报

忧伤b小调 2012-12-3 16:45:07
这玩意好,收藏了,想DIY一个看看
1回复

举报

zhujingzhj87123 2012-12-3 17:27:02
很好的创意
回复

举报

demon003 2012-12-3 18:24:47
顶个
回复

举报

@~飛过烏雲~@ 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
楼主牛人!
回复

举报

tkasliu1123 2012-12-4 07:31:29
好好厉害啊
回复

举报

wzs250969747 2012-12-4 11:40:07
牛人
回复

举报

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

举报

smileqcl 2012-12-4 19:46:19
看看~
回复

举报

644595049 2012-12-4 21:09:36
顶个
回复

举报

lamhrc 2012-12-4 22:07:16
不错
回复

举报

蔚光 2012-12-4 22:09:37
强大的人类啊
回复

举报

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /7 下一条

快速回复 返回顶部 返回列表