`

蓝牙小车总结

 
阅读更多

基于蓝牙的遥控小车设计

1 引言

图片附件里有

最近几年,基于单片机和传感器的开发不断升温,加上智能手机的快速普及,各种智能设备逐渐走进了人们的和视野。因此,为了迎合时代的发展,我们从最简单的蓝牙无线模块开始,一步步打造一台智能小车。我们的车架是采用市面上常见的双层圆形车架,配合硬件电路,最终实现了一辆在开阔的场地上,能响应智能手机发出的蓝牙指令,执行前进,后退,左转,右转,停止等多项动作的遥控小车。实测30米外隔三堵墙仍能有效控制。

小车的控制器是以单片机STC89C52RC为核心,配有蓝牙模块,电机,电池,以及相应的驱动电路。蓝牙小车全图如图1所示:

 

我们的小车主要有分为单片机模块,蓝牙模块,电机与驱动模块,电源模块四部分构成。其中以单片机为核心,电机与驱动电路构成了系统的硬件,信息处理由运行在单片机上的控制软件完成。因此,小车的控制器设计可以分为硬件电路设计和控制软件两部分。

硬件电路是整个设计的基础。系统结构由图2所示。

 

2

硬件电路设计至少分为以下四个部分:

1 STC89C52RC单片机最小系统:主要包括STC89C52R,,C单片机,12MHz晶振以及引出的必要的I/O口,负责系统的总体控制。

2 蓝牙模块:主由蓝牙接收芯片与蓝牙转串口芯片构成,负责接收智能手机端发来蓝牙的信号,转换后送入单片机进一步处理。

3 后轮电机与驱动电路:主要由两个小型直流电机与L298N驱动电路两部分构成,负责响应单片机输出的控制信号,执行相应的操(前进后退等)

4 电源电路:主要由四节1.2V镍氢电池构成,负责为各个模块供电

3 硬件设计

3.1单片机STC89C52RC最小系统

国产51系列单片机,价格低廉,应用广泛,也是市面上采用最多的单片机系列。因此,我们采用了比较常见的STC89C52RC单片机,配合外部晶振,实现了一个单片机运行的最小系统,作为小车系统的控制核心。电路全貌如图3所示:

 

3

除了单片机之外,这个最小系统板的外围电路主要由四部分构成:

1 12MHz晶振X1,两个33PF电容C1C2以及单片机XTAL1XTAL2引脚构成的时钟电路

2 1K电阻R1,发光二极管D1以及VCCGND构成的电源指示灯回路

3 RXDTXD引脚连接的蓝牙模块

4 P0—P3引脚连接的电机驱动模块

 

 

3.2.1蓝牙模块

小车的蓝牙模块,我们采用了市面上常见的HC-06蓝牙串口模块,它的核心由两片芯片构成:

1 CSR BC417143b 蓝牙芯片

2 AL008D70BF102 芯片

其参考电路图见图4

 

4

它可以实现两个功能:

1 其他蓝牙设备发来的数据转化为串口信号,然后通过TXD引脚传出

2 通过RXD引脚接收单片机发出的串口信号,化为蓝牙信号无线发射到其他蓝牙装置

因此,通过RXDTXD引脚,我们可以实现蓝牙与51单片机的通信。于是,我们将蓝牙模块的RXD引脚与单片机的TXD引脚相连,TXD引脚与单片机的RXD引脚相连,再连接电源供电,蓝牙部分的电路就搭建好了。

3.3电机与驱动电路

我们采用两个小型直流电机与车轮作为动力输出,L298N驱动模块为驱动电路,构成了电机与驱动模块。实物见图5 :

 

电路图见图6

 

6

将电机引线接入对应的端口,使用驱动电路的IN1-IN4,以及ENAENB六个接口,就可以实现对两个电机的控制。其中,ENAENB分别为左右电机的使能端,接VCC有效;IN1IN2控制左电机,IN3IN4控制右电机。对于单个电机,以左电机为例,控制效果见表1

IN1

IN2

操作

0

0

不动

0

1

逆时针转

1

0

顺时针转

1

1

不动

1

对于小车来说,通过控制两个轮不同的转向,就可达到控制前进方向的目的,其中两轮转向相反时(一个顺时针一个逆时针转时),小车前进或后退;相同时,则实现左转或者右转。因此,具体控制功能表见表2

 

IN1

IN2

IN3

IN4

前进

0

1

1

0

后退

1

0

0

1

左转

0

1

0

1

右转

1

0

1

0

停止

0

0

0

0

2

3.4电源电路

电源电路主要由41.2v镍氢充电电池构成,直接给单片机模块,电机与驱动模块,蓝牙模块供电。其中单片机模块电压要求为5V,电机驱动模块电压要求为5V,蓝牙模块电压要求为3.3V——6V,经实际测试,四节充电电池4.8V电源可以满足各模块需要。

4 软件设计

软件部分,主要涉及单片机控制的两个基本操作:I/O口的输出控制和串口通信。

4.1 通用I/O口控制部分

我们使用了STC89C52RC单片机的六个通用I/O,对应的连接见表:

I/O

连接端

I/O

连接端

P1.0

驱动模块IN1

P1.3

驱动模块IN4

P1.1

驱动模块IN2

P3.0RXD

蓝牙模块TXD

P1.2

驱动模块IN3

P3.1TXD

蓝牙模块RXD

3

其中,P1.0-P1.3连接电机驱动模块的IN1-IN4,通过不同的输出组合实现表2的功能,因此,其功能表见表4

 

P1.0

P1.1

P1.2

P1.3

前进

0

1

1

0

后退

1

0

0

1

左转

0

1

0

1

右转

1

0

1

0

停止

0

0

0

0

4

对应的程序实现如下:

sbit CHE1 = P1 ^ 0;

sbit CHE2 = P1 ^ 1;

sbit CHE3 = P1 ^ 2;

sbit CHE4 = P1 ^ 3;

//前进

void ahead(){

CHE1 = 0;

CHE2 = 1;

CHE3 = 1;

CHE4 = 0;

}

//后退

void back(){

CHE1 = 1;

CHE2 = 0;

CHE3 = 0;

CHE4 = 1;

}

//左转

void left(){

CHE1 = 0;

CHE2 = 1;

CHE3 = 0;

CHE4 = 1;

}

//右转

void right(){

CHE1 = 1;

CHE2 = 0;

CHE3 = 1;

CHE4 = 0;

}

//停止

void stop(){

CHE1 = 0;

CHE2 = 0;

CHE3 = 0;

CHE4 = 0;

}

4.2串口通信与控制部分

通过蓝牙模块,我们实现串口通信功能,控制信号流向见图7

 

根据不同的控制信号执行不同的操作,具体程序流程如下:

1 首先,进行端口初始化:

void init(){

    TMOD = 0x20;//定时器1设定为方式2 8位数据自动从装

    TH1 = 0xfd;//对定时器赋值,高8位与低低8位相同

    TL1 = 0xfd;//波特率设为9600

    TR1 = 1;//打开定时器1

    SM0 = 0;//设置串口的工作方式1

    SM1 = 1;

    REN = 1;//允许串口

    EA = 1;//开总中断

    ES = 1;//打开串口中断

}

2 外界发来信息时,执行串口中断函数,接收信号:

void communication() interrupt 4

{

    RI = 0;//取消本次串口的响应

    a = SBUF;//接受缓冲区的数据

    flag = 1;//接收标记置1

 

}

先取消串口响应的目的是只处理当前信号,不再接受新的信号。用a变量储存缓存区中接收到的数据,同时把flag1,方便后续的工作。

3 根据收到的信号,控制小车的动作。这里我们指定0为前进,1 为后退,2为左转,3为右转,4为停止:

while (1){

       if (flag == 1){

 

           ES = 0;//关闭串口

          

           if (a == 0x00){

              ahead();

           }

           if (a == 0x01){

              back();

           }

           if (a == 0x02){

              left();

           }

           if (a == 0x03){

              right();

           }

           if (a == 0x04){

              stop();

           }

           flag = 0;//清除标志位

           ES = 1;//打开串口中断

       }

    }

所有的程序如下:

#include<REG52.h>

//设置4个输出位分别控制小车2轮驱动

sbit CHE1 = P1 ^ 0;

sbit CHE2 = P1 ^ 1;

sbit CHE3 = P1 ^ 2;

sbit CHE4 = P1 ^ 3;

 

char flag = 0;//设置标志位,通过该标志位判断单片机是否接受到外部中断信号。

char a;//缓冲接受字符

 

void init();//初始化程序

void ahead();

void back();

void left();

void right();

void stop();

void main(){

    init();//初始化中断器

    while (1){

        if (flag == 1){

 

            ES = 0;//关闭串口

           

            if (a == 0x00){

                ahead();

            }

            if (a == 0x01){

                back();

            }

            if (a == 0x02){

                left();

            }

            if (a == 0x03){

                right();

            }

            if (a == 0x04){

                stop();

            }

 

            flag = 0;//清除标志位

            ES = 1;//打开串口中断

        }

    }

 

}

//前进

void ahead(){

    CHE1 = 0;

    CHE2 = 1;

    CHE3 = 1;

    CHE4 = 0;

}

//后退

void back(){

    CHE1 = 1;

    CHE2 = 0;

    CHE3 = 0;

    CHE4 = 1;

}

//左转

void left(){

    CHE1 = 0;

    CHE2 = 1;

    CHE3 = 0;

    CHE4 = 1;

}

//右转

void right(){

    CHE1 = 1;

    CHE2 = 0;

    CHE3 = 1;

    CHE4 = 0;

}

//停止

void stop(){

    CHE1 = 0;

    CHE2 = 0;

    CHE3 = 0;

    CHE4 = 0;

}

设置串口中断的工作方式

void communication() interrupt 4

{

    RI = 0;//取消本次串口的响应

    a = SBUF;//接受缓冲区的数据

    flag = 1;//标记位

 

}

void init(){

    TMOD = 0x20;//定时器1设定为方式2 8位数据自动从装

    TH1 = 0xfd;//对定时器赋值,高8位与低低8位相同

    TL1 = 0xfd;//波特率设为9600

    TR1 = 1;//打开定时器1

    SM0 = 0;//设置串口的工作方式1

    SM1 = 1;

    REN = 1;//允许串口

    EA = 1;//开总中断

    ES = 1;//打开串口中断

}

5 不足和展望

        作为我们的第一款产品,这辆小车有以下几点不足:

1 车体设计不合理

2 电池电压较低,车速不够

3 控制效果单一,没有加速效果

4 手机端控制软件有待开发

后期我们计划为增加以下几点功能:

1 改进车架设计,如使用四驱车型外壳

2 使用电压更高的电源,并提高车速

3 改进控制程序,实现多种车速以及加速、制动等效果。

4 拓展wifi+摄像头功能,配合Kinect控制

Wifi模块

 

 

6 总结

第一次自己设计电子产品,历时十天左右,感觉还是有收获很大的。总结以下几点收获:

1 要注意连线细节,如蓝牙的RXD要连单片机的TXD,蓝牙的TXD要连单片机的RXD

2 烧录程序是避免RXDTXD引脚连接其他元件(如蓝牙),否则可能烧毁该元件(-.-血的教训)

3 设计硬件不能心急,应该认真阅读芯片的DataSheet,了解后再使用

4 硬件也可以像软件一样模块化,搞懂了每部分后可以灵活组合

分享到:
评论

相关推荐

    慧净蓝牙小车HJ-E教程

    总结,慧净蓝牙小车HJ-E教程涵盖了蓝牙小车的基础知识、Android设备的配合使用、源码解析和编程实践,以及进阶的项目挑战。通过深入学习和实践,用户不仅可以操控小车,还能培养编程思维和技术应用能力。

    基于51单片机控制的蓝牙小车

    《基于51单片机控制的蓝牙小车详解》 51单片机,作为微控制器领域的经典之作,因其结构简单、易于上手而广泛应用于各类电子设备中。本项目中,51单片机被用于构建一个智能蓝牙小车,通过蓝牙通信技术实现远程控制。...

    arduino的蓝牙小车程序

    根据提供的Arduino蓝牙小车程序的信息,我们可以详细地探讨与该程序相关的知识点,包括硬件配置、软件编程逻辑以及蓝牙通信的基本原理。 ### Arduino蓝牙小车硬件配置 #### L298N电机驱动模块 在该程序中,可以...

    蓝牙小车APP

    总结起来,蓝牙小车APP的实现涉及了蓝牙通信协议、单片机编程、APP开发等多个领域,是一个融合了硬件与软件的综合项目。通过这样的实践,不仅可以提升开发者的技术能力,也能让他们体验到创新的乐趣,进一步推动科技...

    stm32蓝牙小车.rar

    总结来说,STM32蓝牙小车项目是一个涵盖嵌入式系统设计、无线通信、电机控制等多个方面的实践案例。通过这个项目,你可以深入了解STM32的开发流程,掌握蓝牙模块和电机驱动器的应用,并锻炼编程和调试能力。同时,它...

    蓝牙控制小车(QT on Android)源码

    标题 "蓝牙控制小车(QT on Android)源码" 描述了一个使用QT框架在Android平台上实现的通过蓝牙技术控制小型车辆的应用程序。这个项目的核心在于利用QT的跨平台能力,结合Android系统的蓝牙API,实现了一个用户界面,...

    蓝牙小车代码.txt

    ### 蓝牙小车代码解析与51单片机应用 #### 一、概述 本文档主要介绍了基于STC51单片机的蓝牙小车控制程序的设计思路与实现方法。蓝牙小车通过智能手机APP与HC-02蓝牙芯片进行串口通信,并通过单片机来控制小车的...

    手机蓝牙控制小车Android源码

    总结,这个"手机蓝牙控制小车Android源码"项目涉及到Android蓝牙API的使用、设备连接与数据传输、用户界面设计、安全性和用户体验等多个方面。对于想要学习Android硬件交互或物联网应用开发的程序员来说,这是一个很...

    蓝牙小车程序

    ### 蓝牙小车程序:手机电脑实时控制解析 #### 核心概念与功能 在探讨蓝牙小车程序之前,我们首先理解其核心概念。蓝牙小车是一种通过蓝牙技术进行无线控制的小型机器人,主要由微控制器、电机驱动电路、蓝牙模块...

    蓝牙小车.rar

    《蓝牙小车技术详解》 ...总结来说,蓝牙小车的运作涉及了无线通信、微控制器编程、电机控制等多个领域的知识。通过理解并掌握这些技术,我们可以自行设计和制作蓝牙小车,既锻炼了动手能力,又深化了对科技的理解。

    89C52蓝牙小车程序(PWM调速)

    ### 89C52蓝牙小车程序(PWM调速) #### 一、概述 本文档将详细介绍一个基于89C52单片机的蓝牙小车程序,该程序利用了脉冲宽度调制(PWM)技术来实现对小车速度的精确控制。通过蓝牙接收指令,可以远程控制小车的...

    基于STM32蓝牙控制小车系统设计(硬件+源代码+论文).zip

    论文文档“基于stm32f4的蓝牙控制小车_论文.doc”通常会详细阐述项目的背景、目标、系统架构、硬件选型理由、软件设计思路、实验结果和分析等,是整个项目的重要总结和理论支撑。 这个项目不仅涵盖了电子工程的基本...

    MSP430 四驱PID速度调节 蓝牙小车代码程序.rar

    【MSP430 单片机四驱PID速度调节与蓝牙小车代码程序详解】 在电子工程领域,MSP430系列单片机由德州仪器(TI)开发,以其低功耗、高性能和丰富的功能集而备受青睐。本项目中,我们探讨的是基于MSP430的四驱PID速度...

    Android蓝牙遥控小车

    总结,这个项目不仅展示了Android应用开发的基本流程,还涵盖了蓝牙通信技术及嵌入式系统控制,对于学习移动设备与硬件交互的开发者来说具有很高的参考价值。通过实践这样的项目,不仅可以提升编程技能,还能加深对...

    蓝牙小车控制《走你》安卓APP

    总结来说,《蓝牙小车控制《走你》安卓APP》是利用蓝牙技术实现对小型蓝牙驱动车辆的无线遥控,通过提供直观的控制界面和多种功能,为用户提供便捷的操控体验。安装并使用这款APP,可以将用户的智能手机转变为一款...

    8.蓝牙小车 - 副本.zip

    《基于E4A的蓝牙小车控制应用详解》 在当今科技日新月异的时代,无线通信技术的应用已经深入到我们生活的方方面面。其中,蓝牙技术以其低功耗、短距离传输的特点,在物联网设备中占据了一席之地。本文将详细介绍一...

    蓝牙小车@@@@@@@

    总结来说,蓝牙小车结合了蓝牙通信、微控制器技术、电子硬件和软件编程,提供了一个有趣且富有挑战性的学习平台,适合电子爱好者和初学者探索物联网和自动化控制领域的知识。通过深入理解和实践,不仅可以掌握蓝牙...

    蓝牙小车资料-全部软硬件

    总结来说,【蓝牙小车资料-全部软硬件】涵盖了蓝牙通信技术、移动应用开发、嵌入式系统编程、电源管理及硬件设计等多个领域。无论是软件工程师还是硬件工程师,都能从中学习到丰富的知识,并通过实践提升自己的技能...

Global site tag (gtag.js) - Google Analytics