分享

如何做一台自己的手机蓝牙遥控车

 共同成长888 2015-07-19

如何做一台自己的手机蓝牙遥控车 

       最近很多人问我有关蓝牙遥控车的事情,就在这里统一写一个日志详细说说怎么做吧。采用模块搭建的方法比较简单。不费事儿~
       材料清单:
普通遥控车一辆  30元 (遥控坏不坏的都行只要电机没问题)
蓝牙串口模块一个 25元 (淘宝有卖)
电烙铁一把  价格略,买一把够用好多年(焊锡、松香少量) 
STC的单片机一个 4元 (推荐用个STC89C52RC,虽然大点)
安卓手机一台带蓝牙  价格略
L298N电机驱动模块  14元(淘宝有卖)
18650锂电池2节   15元(淘宝,最好连电池盒也一起买了。当然买14500电池更好,跟5号电池一样大,直接放在车子的电池盒。注意电压是3.7V的)
TTL下载线  15元(用来下载程序到单片机中,算是很常见的一个东西了,没有的话就淘宝吧)
电阻电容之类的若干 (主要是给单片机做最小系统,不想费劲的话就买个STC89C52RC的最小系统板10元)
导线若干

先上张完成图:

动力比较足,用电池压住后轮,不然打滑严重。

思路:
手机发送控制指令
经蓝牙发送至蓝牙串口模块
串口模块把数据通过单片机串口送入单片机
单片机处理数据,作出反应,是该前进还是后退


 

介绍下电机驱动模块

                         
我们使用的是AB/CD两组直流电机驱动口。无视图上的步进电机。
在本次制作中AB口驱动后轮的电机,控制小车前后动作;
CD口驱动前轮方向电机,控制小车左右动作。
 信号输入端口inA/inB/inC/inD,给一个高电平+5,就可以驱动相应的电机正反转

稍微介绍下STC89C52RC

P1.4接inA,P1.5接inB,P1.6接inC,P1.7接inD。单片机最小系统要么买个小板子,要么找STC官网的PDF看,这里就不贴了。
P3.0和P3.1作为下载口与蓝牙串口的通讯口。
单片机晶振使用11. 0592M的。
 P3.2接LED正极,LED负极接地,这个LED的作用是判断单片机是否正常运行,在程序里设定LED一亮一灭,正常运行的话,LED会一亮一灭。
程序结构如下 :

drive.c
#include "drive.h"
   
void Wleft()
{
    W_1 = 1;
    B_1 = 0;
    L_1 = 1;
    R_1 = 0;
}

void Wright()
{
    W_1 = 1;
    B_1 = 0;
    L_1 = 0;
    R_1 = 1;
}

void Bleft()
{
    W_1 = 0;
    B_1 = 1;
    L_1 = 1;
    R_1 = 0;
}

void Bright()
{
    W_1 = 0;
    B_1 = 1;
    L_1 = 0;
    R_1 = 1;
}

void Forward()
{
    W_1 = 1;
    B_1 = 0;
    L_1 = 0;
    R_1 = 0;   
}

void Backward()
{
    W_1 = 0;
    B_1 = 1;
    L_1 = 0;
    R_1 = 0;    
}

void Stop()
{
    W_1 = 0;
    B_1 = 0;
    L_1 = 0;
    R_1 = 0;   
}

main.c
#include<reg52.h>
#include "drive.h"

#define uchar unsigned char

sbit led_pin = P3^2;    //定义led所接的引脚

uchar k;
uchar rxcode[1];

void led() interrupt 1    //led闪烁函数,由定时器T0产生中断,大约1.5秒闪烁一下
{
    uchar i;
    i++;
    if(i==15)
    {
        led_pin = !led_pin;
        i=0;
    }
    TH0 = (65536-50000)/256;
    TL0 = (65536-50000)%256;
}

void com() interrupt 4    //串口中断函数,当蓝牙传命令过来的时候执行
{
    RI = 0;
    rxcode[k]=SBUF;        //把收到的命令放到全局变量里面
    k++;
    if(k==1)
        k=0;
}
   
void com_init()            //串口初始化函数,波特率9600bps
{
    TMOD = 0x21;
    TH1  = 0xfd;
    TL1  = 0xfd;
    TR1  = 1;
       
    REN  = 1;
    SM0  = 0;
    SM1  = 1;
   
    ES   = 1;
    EA   = 1;
}

void led_init()            //定时器0初始化函数,用于led闪烁
{
    TH0  = (65536-50000)/256;
    TL0  = (65536-50000)%256;
    ET0  = 1;
    TR0  = 1;
}

void main()                //主函数
{
    Stop();
    com_init();            //串口初始化
    led_init();            //led闪烁定时器初始化
    while(1)            //死循环,等待蓝牙传命令过来
        {
        switch(rxcode[0])    //判断收到的命令是干嘛的
            {
            case 2:Forward();break;        //前进
            case 1:Backward();break;    //后退
            case 4:Wright();break;        //前右
            case 3:Wleft();break;        //前左
            case 5:Bright();break;         //后右
            case 6:Bleft();break;         //    后左
            case 0:Stop();break;        //停止
            }
           }
}

drive.h
#ifndef __DRIVE_H__
#define __DRIVE_H__

#include <reg52.h>

//定义L298N所接的引脚
sbit R_1 = P1^7;
sbit L_1 = P1^6;
sbit B_1 = P1^5;
sbit W_1 = P1^4;

void Wleft();
void Wright();
void Bleft();
void Bright();
void Forward();
void Backward();
void Stop();

#endif

编译生成HEX文件

 
打开 STC-ISP,准备把程序写入到单片机
+5接在单片机供电,gnd接地,RX,TX对应P3.0 P3.1 
TTL下载器就是这个

 

选择好固件,串口号,点击下载,再给单片机上电
如果用最小系统板的话 大概是这个样子

如果没有错误的话会出现这个
Chinese:正在尝试与 MCU/单片机 握手连接 ...
MCU Type is: STC89C52RC
MCU Firmware Version: 4.3C
Chinese:MCU 固件版本号: 4.3C
Double speed / 双倍速:          12T/单倍速
振荡放大器增益:                  full gain
下次下载时 P1.0/P1.1 与下载无关
内部扩展AUX-RAM:        允许访问(强烈推荐)
下次下载用户应用程序时将数据Flash区擦除: NO
用户软件启动内部看门狗后:     复位关看门狗
ALE pin 仍为 ALE
内部时钟频率:11.049428M.
外部时钟频率:11.049428M.
Chinese:正在重新连接 ...
Current Baud is: / 当前波特率为: 19200 bps.
We are erasing MCU flash...
正在擦除应用程序区... ( 00:01 )
正在下载... ( 开始时间: 14:40:06 )
Program OK / 下载 OK
Verify  OK / 校验 OK
erase times/擦除时间 :  00:01
program times/下载时间: 00:01
Encrypt OK/ 已加密

这样就可以了。把硬件都装上

最好在驱动模块的输出串个5欧姆的水泥电阻,不然动力太足。

这样就OK了。只要使用蓝牙串口发送1就可以前进,2就可以后退。3、4、5、6.安卓的程序需要的话可以喊我,这里传不上来。

大体上就是这样的思路。具体做的话,元件的安装、电路板的安放都需要根据小车的实际情况来。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多