arduino

51单片机蓝牙小车

2019-12-26  本文已影响0人  一颗小树___溥

这是是我大二做的一个课程设计,小菜鸟一个,欢迎大家指正和参考。

摘要  本次设计选择基于蓝牙遥控的多功能智能小车为对象。选用STC98C52RC单片机作为主控芯片,电机驱动采用L293N ,电源部分采用两节3.7V锂电池供电.采用C语言模块化编程,提高开发效率.蓝牙控制功能.用按键或遥控器来控制小车.


关键词  

51单片机,L293N_电机驱动。蓝牙遥控


目 录

1 前言   ( 系统研究背景 ,系统研究的意义和目的 ) 

2 系统概述  ( 系统的结构 ,系统的功能 ,开发环境 )

3 系统实现   ( 传感器技术 , 其它相关技术 ,硬件实现 ,软件实现 ,系统测试 )

4 系统使用说明 

5 总结 

6 参考文献 

1. 前言1.1.系统研究背景

        蓝牙属于短距离内进行无线控制和收发的通信技术,伴随着科技的飞跃性发展,也让蓝牙找到了发展的空间,它可以代替和取代落后的数字化硬件设备之间繁琐的电缆连接。在蓝牙创造的初期,没有人预料到蓝牙会有如此大的潜力和前景,而现在的发展也是完全超出了我们的预期,因为蓝牙的安全性高,制造成本低廉和所消耗的功率也是同类产品中最低的,所以被很多人使用,越来越受到了广大消费者的欢迎,基于蓝牙技术的产品也在不断的更新和投入市场。

       蓝牙技术是近年来出现的新技术是一种短距离无线通信和信息传输的新型通讯科技,它使数据线的硬件设备接收更方便快捷。它可以广泛应用于世界各地,是一个蓝牙设置一个通用的范围,频率调制技术的使用,以防止外部干扰和多一些。低成本,低功耗和小辐射,和加密设置,让蓝牙的安全性更高;应用范围广,这些特点使得蓝牙技术被广泛的应用在我们日常生活中的蓝牙也支持一对一和一对多传输的通信连接,和多个蓝牙成为微网,也有网络的特点。

     在现在的智能时代,小车智能控制,方便了人们的使用。在51单片机的基础下,通过蓝牙来控制小车的驾驶。


1.2. 系统研究的意义和目的

        因为无线技术的广泛使用,我们在研究无线和有线通信技术的方法中了解到蓝牙系统的小区域性有很大的技术突破,在国际上也得到了广泛的采纳,在市场上也有很大的需求。这也使蓝牙技术的发展成为了趋势之一,蓝牙可以发送和接受语音和数据,满足了大多数人的需求,它也融合了其他相关产品的特点,也是这样技术变得更多样性。然而,蓝牙的安全性不足,而且在小区域范围内的一点对多点的通信受到了很大的限制,这些都是其本身需要改进和完善的

      可以使人们更方便,更简单的控制小车。实现了无线控制小车,摆脱了有线控制的不方便,更智能。


2. 系统概述2.1.系统的结构

2.2.系统的功能

51单片机的基础下,通过蓝牙来控制驱动,此驱动能把5~12V的电压,一部分给小车轮子转动,一部分通过降压,稳压,最终降为5V来供给此驱动,单片机和传感器供电。


2.3.开发环境

AT89C5RC单片机开发环境。

          AT89C52是一种8位单片机,它是在MCS-51单片机系列上加强了一些功能后升级得到的产物。它的作用基本上就是把外界的数据和命令在中断和时钟的帮助下,在自身内部储存器上把使用者的数据进行处理。AT89C52 由8位的内部处理器,内部数据储存器(RAM,有256个字节)内部储存器有8K的大小,输入和输出双向口有32个,16位的定时器和5个两级中断,全双工串行通信口一个和时钟电路组成。

         AT89C52能够自主地执行给它的指令,也就是你把所需要的指令写在单片机的内部储存器上,它会一步步执行。AT89C52可以在功耗特别低的情况下工作,就是设置成空闲选择和掉电模式两种状态来实现低功耗。

       单片机与外界的通讯是依靠它自身的I/O 口进行的,对单片机I/O 口的控制就是对单片机的控制。I/O 口的存在不仅可以实现数据的传输,还可以改变电平和信号的性质,最重要的一点就是I/O 口可以实现与外部不同电路的连接来使单片机工作。

         AT89C52单片机上我们通常使用的是4个独立的双向通用I/O 口:P0口、P1口、P2和P3口。由于外部设备的工作速率比较慢或者很快的时候,我们可以采用同步传送的方式,而单片机存在的异步传送是为了更加简练的和硬件连接进行传出。也可以通过中断传送和DMA传送来完成。AT89C52单片机还可以实现外部接口单独的编址和外部端口和存储器的统一编制两种方式。AT89C52单片机上一共有32个I/O 口,不同的I/O 口实线的作用和运行的方式都有其自己的方式,我也要通过这次课程设计,更好地了解,更熟练的运用。


3.系统实现

3.1. 相关技术技术——蓝牙技术,驱动模块,

3.2.硬件实现

HC-06蓝牙模块

其TX接单片机的RX,RX接单片机的TX,VCC接5V(或3.3V),GND接单片机的地。HC-06蓝牙模块是通过一款手机APP(蓝牙串口助手)作为中间媒介,在蓝牙串口助手发送相关的数据到串口,串口再把相关信息送到蓝牙模块,蓝牙模块再把相关信号送到单片机中。

L298N电机驱动模块,

该该电机可以驱动2路直流电机,使能端ENA,ENB,为高电频有效,

通过单片机的输入信号给IN1和IN2来控制左轮,输入信号给IN3和IN4来控制右轮。

IN1和IN2,分别给0,1  :正转

 IN1和IN2,分别给1,0  :反转

IN1和IN2,分别给1,1 :停止

IN1和IN2,分别给0,0  :停止

IN3和IN4,分别给0,1  :正转

IN3和IN4,分别给1,0  :反转

IN3和IN4,分别给1,1 :停止

IN3和IN4,分别给0,0  :停止

L298N的主要引脚功能如下:

+5V:芯片电压5V;

VCC:电机电压,最大可接50V;

GND:共地接法;

Output1—Output2:输出端,接电机1;

Output3—Output4:输出端,接电机2;

EN1、EN2:高电平有效,EN1、EN2分别为 IN1和IN2、IN3和IN4的使能端;

Input1~ Input4:输入端,输入端电平和输出端电平是对应的;

3.3.软件实现

           程序流程图      

51单片机,源程序:

sbit in1 = P1^0;//左电机

sbit in2 = P1^1;//左电机

sbit in3 = P1^2;//右电机

sbit in4 = P1^3;//右电机

char i;

/*前进*/

void forward()

{

in1=1;

in2=0;

in3=1;

in4=0;

}

/*后退*/

void back()

{

in1=0;

in2=1;

in3=0;

in4=1;

}

/*左转*/

void left()

{

in1=1;

in2=1;

in3=1;

in4=0;

}

/*右转*/

void right()

{

in1=1;

in2=0;

in3=1;

in4=1;

}

/*停止*/

void stop()

{

in1=1;

in2=1;

in3=1;

in4=1;

}

void main (void)             

{

      TMOD=0x20;                        //设置T1为工作方式2

      TH1=0xfd;                        //装入初值,比特率为9600bps

      TL1=0xfd;

      TR1=1;                              //开启T1

      REN=1;                            //接收允许

      SM0=0;                            //方式1

      SM1=1;

      EA=1;                              //开全局中断

      ES=1;                                //开串口中断

while(1)

{i=SBUF;//SBUF为单片机接收到的数据,单片机接收到的数据都存放在SBUF里;

RI=0;

if (i==0x02){forward();}    //如果蓝牙助手发送0x02,小车前进

if (i==0x08){back();}        //如果蓝牙助手发送0x08,小车后退

if (i==0x01){left();}        //如果蓝牙助手发送0x01,小车左转

if (i==0x03){right();}        //如果蓝牙助手发送0x03,小车右转

if (i==0x05){stop();}        //如果蓝牙助手发送0x05,小车停止

}

}

3.4.系统测试

小车能实现基本功能,成功地用蓝牙控制小车。测试了一段时间,单片机工作稳定,蓝牙稳定的控制,小车较好的按照控制方向行走。

4.系统使用说明

1.      为小车装上两节锂电池,来供电。

2.     打开总开关,在手机端,打开一个蓝牙通讯助手(在手机应用商店可以找到下载),连接上此小车的蓝牙(HC-06),如图:

3.     然后就可以在手机端按相应的前进,后退,左转,右转,停止等,如图:

解析:前进,后退,左转,右转,停止,都对应着程序中相应的信息,如图;

当手机端发送 0x02 给蓝牙模块,就会执行 forward()函数; 小车会向前走

当手机端发送 0x08 给蓝牙模块,就会执行 back();函数;,小车会向后走

当手机端发送 0x01 给蓝牙模块,就会执行 left();函数;,小车会向左走

当手机端发送 0x03 给蓝牙模块,就会执行 right()函数;,小车会向右走

当手机端发送 0x05 给蓝牙模块,就会执行stop()函数;,小车会停止

具体的编辑如图:

最后这是小车的整体模型;

                                                                          整体模型

注:上面有个RC522读卡器的,哪个是方便后面的课设,在这里,大家可以忽略哈。


5.总结

     本设计采用的是STC89C52RC单片机,这主要是因为该单片机的稳定性比较好和执行指令的速度很快。还可以采用其它系列的单片机。电机驱动采用L293N ,稳定电压,充足地向直流电机供电和稳定控制;电源部分采用两节3.7V锂电池供电,电压稳定,电流充足,还可以循环充电,节能环保。采用C语言模块化编程,提高开发效率.蓝牙控制功能.用按键或遥控器来控制小车,简单方便经过自己不断的搜索努力以及老师的耐心指导和热情帮助,本设计已经基本完成。

        过这次课程设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学两年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练。但是我将在以后的工作和学习中继续努力、不断完善。这两个月的设计是对过去所学知识的系统提高和扩充的过程,为今后的发展打下了良好的基础。

       由于自身水平有限,设计中一定存在很多不足之处,敬请各位批评指正.


6.参考文献

C语言程序设计 :清华大学出版社作者:谭浩强

51单片机C语言教程:电子工业出版社 ,作者:郭天祥

感谢观看

上一篇下一篇

猜你喜欢

热点阅读