安卓手机控制小车(自己做成功了,有全套资料)

来源:互联网 发布:java权限框架哪个好 编辑:程序博客网 时间:2024/04/30 09:49

注:图片不知道怎么显示,可以去我空间的相册里查看图片。

小车分几部分组成:1、安卓手机控制软件:该软件可以通过蓝牙发送前进、后退、左转、右转指令(ASCII码)。2、蓝牙模块:通过与手机连接后,可以接收到手机发送的指令,采用HC_06模块。3、单片机最小系统:蓝牙模块将收到的指令发给单片机,单片机将其解码为二进制数。4、驱动模块:单片机将二进制指令通过IO口发送给驱动模块,驱动小车运动。5、小车底座:具有四个减速电机和轮子的底座。

1、手机控制软件

网上下载的,想要无插件的可以留邮箱。

当我们用手按下前进时,手机会通过蓝牙以ASCII码的形式发送一个字符A”,释放时会发送一个字符“a”;

按下 后退 时,手机会通过蓝牙以ASCII码的形式发送一个字符“D”,释放时会发送一个字符d”;

按下 左转 时,手机会通过蓝牙以ASCII码的形式发送一个字符“C”,释放时会发送一个字符c”;

按下 右转 时,手机会通过蓝牙以ASCII码的形式发送一个字符“B”,释放时会发送一个字符b”;

2、蓝牙模块时HC-05/06。

此模块使用3个管脚,VCC和GND分别接电源高、低电平,TXD管脚接单片机的RXD管脚。蓝牙模块与手机连接后,可以通过手机发送ASCII,蓝牙模块接收到后,发送给单片机的RXD脚,通过程序将数据以二进制的形式发送给驱动模块,供小车驱动。发送波特率为9600。八位数据位,无奇偶校验。

3、最小系统。



板子是自己焊的,5个1.5v的电池供电,一方面7.5v给驱动芯片L298N供电,令一方面经7805降压后给单片机和蓝牙模块供电(此时驱动效果不明显,可以在另用一个9V电源,为L298n供电)。其中所有管脚已经引出,令PO管脚接了10K的上拉电阻。晶振旁边的电容在板子另一面,是两个贴片电容。虽说线路简单,可也是双面板,呵呵。L298N资料网上有很多。。。

程序:

#include<reg52.h>
#define uchar unsigned char


uchar a;

//串口初始化
void Serial_Init()
{
 TMOD=0x20; //方式2,8位自动载入
 TH1=0xfd;
 TL1=0xfd;//初值,9600波特率
 TR1=1;
 SCON=0x50;//8位异步收发,波特率可变
 EA=1;//开总中断
 ES=1; //开串行中断
}
void Serial() interrupt 4
{
 ES=0;
 RI=0;
 a=SBUF;
 switch(a)
 {
 case 'A':   //前进
 P0=0xf5;//P0的低四位控制驱动芯片,当接收到0101时,两个轮子正转,故向前,以下同。
 break;
 case  'B':   //右转
 P0=0xf9;
 break;
 case 'C':  //左转
 P0=0xf6;
 break;
 case 'D': //后退
 P0=0xfa;
 break;
 case 'a':
 P0=0x00;
 break;
 case 'b':
 P0=0x00;
 break;
 case 'c':
 P0=0x00;
 break;
 case 'd':
 P0=0x00;
 break;
 default: 
 P0=0xff; 
 }
 ES=1; 
}
void main()
{
 P0=0xff;
 Serial_Init();
 while(1);
}

程序很简单,利用串口发送数据。

4、驱动模块:



左边的四根线是输出,要连接到下车的马达上,右边的四根线是输入,连接单片机的对应管脚。

5、底座


左边的两个电机并联,右边的两个电极并联。

遇到的问题:

1、在做最小系统的板子时,自己焊的是12M的晶振,但是程序用的是11.0592M晶振写的,所以当蓝牙模块连接上后,单片机却不能收到指令,后来换成11.0592M晶振才得以解决这个问题。

2、开始所有的供电包括驱动芯片L98NVS管脚用的也是5V供电,连接好后发现不能带动电机。用万用表测量输出管脚电压可以达到4点几伏,但是当连接上电机后,电压为0,当用7.5V的电源给VS管脚供电后,问题得以解决。

原创粉丝点击