51单片机与HC-05蓝牙通讯通过手机App控制灯亮灭

本文介绍了如何利用51单片机和HC-05蓝牙模块建立连接,通过手机App控制灯的亮灭。详细讲解了HC-05的AT命令模式、波特率设置以及单片机与蓝牙模块的接线方法,最终实现了手机与单片机的数据通讯,从而达到远程控制硬件的目的。
摘要由CSDN通过智能技术生成

一,认识蓝牙模块HC-05

 模块是淘宝购买的,有6个PIN脚,如图,依次为STSTE--RXD--TXD--GND--VCC--EN.
 state——蓝牙连接状态,未连接输出低,连接后输出高

TX——信号发

RX——信号收

GND——地

+5V------板上有电压转换LDO,所以供电可以是5V

EN——使能端,需要进入AT模式时接3.3V,接单片机i/o引脚即可,高电平

hc05
在这里插入图片描述

AT模式操作方式

 HC-05 蓝牙串口主从一体 AT 命令详解

要使用 AT 命令,首先要知道 HC-05 的波特率,然后要进入 AT 命令模式。
使用串口一定要知道三要素,一是波特率,二是串口号,三是数据格式,
HC-05只支持一种数据格式: 数据位8 位,停止位1 位,无校验位,无流控制.后面对数据格
式不对描述。
进入 AT 命令有二种方法:(建议直接把EN脚直接接到3.3v,不要去按按键,容易抖动。)
1,按住按键或EN脚拉高,此时灯是慢闪, SPP-05进入AT命令模式,默认波特率是38400;
此模式我们叫原始模式。原始模式下一直处于AT命令模式状态。
2, HC-05上电开机,红灯快闪,按住按键或EN拉高, HC-05进入AT命令模式,默认波特率
是9600;此模式我们叫正常模式。正常模式下只有按住按键或拉高EN才处于AT命令模式状
态。
注意:如果波特率没有设备正确, AT命令是执行无效的。
可以使用我们专用配置的测试软件,直观简单。如果下图。
在这里插入图片描述
一,如何让AT命令可以执行
A:看上图,正确的串口号要打开, ,点搜索端口,软件会依次打开电脑
上的端口.B:在波特率要选择正确, 原始模式是38400和正常模式是9600。
C: AT命令后面需要换行,然后点发送命令才有效,如果没有换行,发送命令,软件只
会把它们当作是字符。参考上图, AT命令下一行有光标符号。

二,基本操作方法
1, AT+ROLE设置主从模式: AT+ROLE?是查询主从状态;AT+ROLE=1是设成主, AT+ROLE=0
是设成从, AT+ROLE=2设成回环角色(Slave-Loop(回环角色)——被动连接,接收远
程蓝牙主设备数据并将数据原样返回给远程蓝牙)。
2, AT+RESET:HC-05复位
3, AT+VERSION?:获取HC-05的软件版本号,只能获取,不能修改。
4, AT+ORGL:恢复出厂默认设置,当把模块设置乱了,使用此命令进行恢复默认值。
5, AT+ADDR?:获取HC-05的蓝牙地址码,只能获取,不能修改。
6, AT+NAME? :获取HC-05的名字,AT+NAME=BSP-06,修改模块的名字为BSP-06,具体
名字自行修改。
7, AT+CLASS?:设置查询设备的类型,尽量不要去修改此参数。默认是1F00。
8, AT+IAC?:查询设置查询访问码,默认是9E8B33,尽量不要去修改此参数。
9, AT+PSWD? :查询设置配对密码,AT+PSWD=”0000”,密码要有双引号,密码是四位数字.
10, AT+UART: AT+UART?是查询当前模块的波特率, AT+UART=波特率是设置.
11, AT+CMODE: AT+CMODE?是查询当前连接模式。 AT+CMODE=0, 1, 2(0——指
定蓝牙地址连接模式(指定蓝牙地址由绑定指令设置) 1——任意蓝牙地址连接模
式(不受绑定指令设置地址的约束) 2——回环角色(Slave-Loop) 默认连接模式:
0)。
12, AT+BIND:AT+BIND?查询当前绑定地址,AT+BIND=NAP, UAP, LAP(用逗号隔开)。
13, AT+RMADD:从蓝牙配对列表中删除所有认证设备.
14, AT+STATE? :获取蓝牙模块工作状态.
15, AT+LINK=NAP,UAP,LAP:与远程设备建立连接。
16, AT+DISC:断开连接.
17, AT+RNAME? NAP, UAP, LAP:获取远程蓝牙设备名称.
18, AT+ADCN?:获取蓝牙配对列表中认证设备数。
19, AT+MRAD?获取最近使用过的蓝牙认证设备地址。
20, AT+INQM:设置查询模式,AT+INQM=1, 9, 48(1-带RSSI信号强度指示,9-超过9个
蓝牙设备响应则终止查询,48-设定超时为48*1.28=61.44秒)

APP与pc端相互连接方法

在这里插入图片描述
连接串口,在电脑端查看数据,实现手机和PC端数据互传,但是这里要注意,接线RX–RX,TX—TX,这个跟单片机通讯的脚位反着来,我开始就是RX–TX,tx–rx,怎么都连接不上,搞不懂。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
连接好之后,PC和手机端APP都可以正常通讯,接发收据。注意波特率正常模式是9600,AT模式是38400.在这里插入图片描述
在这里插入图片描述

单片机与hc-05建立连接通讯

#include <reg52.h>

typedef unsigned char u8;
typedef unsigned int u16;

u8 R_buf; //?????????????
sbit led1 = P1^0; 
sbit led2 = P1^1; 
sbit led3 = P1^2; 
sbit led4 = P1^3; 
sbit state = P3^6; 

void delay(u16 z) //
{  
		u16 x,y;  
		for(x=z;x>0;x--)   
		for(y=125;y>0;y--); 
} 
void InitUART() //9600
{
//9600
		TMOD = 0x20;
		PCON = 0x00;
		SCON = 0x50;   
	  TH1 = 0xFD;
	  TL1 = 0xFD;
		TR1 = 1;
		ES = 1;
		EA = 1;
}
void SendOneByte(unsigned char dat) 
{
    SBUF = dat;
    while(!TI);
    TI = 0;
}
void main(void)
{
    InitUART();
		led1 = 1;
		led2 = 1;
		led3 = 1;  
		led4 = 1;
		while(1)
		{
				if(state == 1)// 
				{
				  led4 = 0;    //
				}
				else
				{
				  led4 = 1;    //
				}
		}
}
		void UARTInterrupt(void) interrupt 4 //??????
		{
				if(RI)
				{
						RI = 0;
						//add your code here!
						R_buf = SBUF;
						if(R_buf == '0')//
						{
							led1 = 0;
							delay(1000);
							led1 = 1;
						}
						if(R_buf == '1')//
						{
							led2 = 0;
							delay(1000);
							led2 = 1;
						}

					   SendOneByte(R_buf);//
					}
		}



实验效果:把蓝牙的state脚接P3.6,然后rx–tx,,tx–rx,一定要注意通讯脚调换回来。
state——接任意单片机i/o

rx——接单片机的tx端,P3^1,与命令相应模式相反

tx——接单片机的rx端,P3^0

gnd——接地

5v——接5V电

en——可不接

1、不需要接通en

2、通信线路:手机蓝牙控制端–>hc05蓝牙模块–>单片机

3、单片机开发板上电,蓝牙模块指示灯进入快闪状态,说明进入自动连接工作模式

4、手机开蓝牙,即可搜到蓝牙模块,连接

5、打开手机端蓝牙串口工具,连接成功,蓝牙模块指示灯进入双闪状态

6、至此连接成功,准备发送数据
在这里插入图片描述
手机端未连接,LED4不亮,连接成功,LED4亮。
在这里插入图片描述
手机端发送0,LED1亮,1秒后灭;手机端发送1,LED2亮,1秒后灭。

  • 5
    点赞
  • 76
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
51单片机与ATK-HC05蓝牙通讯是一种常见的通信方式,用来实现单片机蓝牙设备之间的数据传输。通常使用串口通讯的方式实现数据的收发。 首先,需要通过51单片机的串口与ATK-HC05蓝牙模块进行连接。将单片机的TX引脚连接到蓝牙模块的RX引脚,将单片机的RX引脚连接到蓝牙模块的TX引脚,并为蓝牙模块和单片机提供电源。 其次,需要在单片机的程序中编写相应的代码,使其能够通过串口与蓝牙模块进行通信。具体的通信过程如下: 1. 初始化串口:设置串口的波特率、数据位数、停止位等参数。 2. 发送AT指令:ATK-HC05蓝牙模块使用AT指令进行配置和控制,可以通过单片机发送AT指令给蓝牙模块来实现相应的功能。 3. 接收AT指令响应:蓝牙模块接收到AT指令后会返回相应的响应信息,单片机需要接收并解析这些响应信息。 4. 发送数据:单片机可以通过串口向蓝牙模块发送需要传输的数据,蓝牙模块会将数据发送给远程蓝牙设备。 5. 接收数据:单片机可以通过串口接收蓝牙模块发送过来的数据,进行相应的处理。 通过以上步骤,就能实现51单片机与ATK-HC05蓝牙模块之间的通信了。 需要注意的是,通信的具体实现会涉及到具体的硬件连接和编程细节,因此可以根据具体的硬件和需求进行相应的调试和优化。另外,要保证程序的稳定性和可靠性,可以添加错误处理和异常情况的处理等功能。 总之,51单片机与ATK-HC05蓝牙通讯例程是一种常见的通信方式,通过串口来实现单片机蓝牙设备之间的数据传输,具有简单、可靠的特点,可以应用于各种需要远程数据传输的场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

i只喝怡宝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值