关于两个HC05通讯的实际操作流程

news/2024/11/8 0:38:18/

市场上HC05模块有好几种,一般都是带有按键的。像下边这种(6只引脚的)(这个是从优信电子那搞过来的,他的模块的按键有点问题,不用摁照样能进入AT模式)

要使模块之间交互数据,必须要能够进入AT模式,像下边这蓝牙总共有6个腿就可以进入AT模式,具体接线如下:
VCC---------------> (接USB转串口模块的5V)
GND---------------> (接USB转串口模块的GND)
EN -----------------> (接USB转串口模块的3V3)
TXD----------------> (接USB转串口模块的RXD)
RXD----------------> (接USB转串口模块的TXD)
STATE-------------> (空,不用接)

还有种是四只腿的,如果要进入AT模式,那么你需要自己加加按键(他给你留好了位置在旁边了,找个按键焊接上去就行了)
在这里插入图片描述在这里插入图片描述
一般情况下,蓝牙默认是从机模式,波特率为38400,停止位1,数据位8,无奇偶校验
那么,该怎么进入AT模式呢?

1、如果模块是跟我那上面的图的一样(6个引脚)(那个优信电子的,按键没用),那就直接跟上边的接线一致就行了(AT模式下,LED会慢闪,否则,没有进入AT模式);

2、如果是另外一种情况(不是在优信淘宝买的),你就需要先 “摁住按键” ,然后再(EN / KEY引脚)接上3V3的电压。

然后呢,开始一系列操作,我要开始了,呀-咚-啪。
材料:
两个USB转TTL模块
两个蓝牙模块
两个单片机(51的为例)
杜邦线等

电脑上准备两个串口助手(到时候方便通讯,推荐用孙大明写的或者原子的,自己找吧,我懒得弄上来了)

一、主机接线如下:
A模块(将这个作为主机吧)
在串口助手上发送(当然,你先得配置好串口助手,波特率那些的设置都在上面)
1–>恢复默认设置: AT+ORGL\r\n 【\r\n即回车、换行,在串口调试助手上敲一个回车即可】
2–>设置模块匹配密码: AT+PSWD=1234\r\n
3–>设置从模式:串口调试助手上,将蓝牙A配置为主机模式: AT+ROLE=1\r\n
4–>设置波特率: AT+UART=9600,0,0\r\n(这个波特率看自己需要设置,我这里设置9600,方便与单片机对接)*
5–>可以检查一下模块设置是否成功: AT+PSWD? AT+ROLE? AT+UART
6–>模块A绑定模块B:串口调试助手A,模块A绑定模块B地址:AT+BIND=896db,2,0758\r\n【注意把地址的冒号换成逗号】

在这里插入图片描述
二、从机接线如下
B模块(将这个作为从机吧)
1–>恢复默认设置:AT+ORGL\r\n【\r\n即回车、换行,在串口调试助手上敲一个回车即可】
2–>设置模块匹配密码:AT+PSWD=1234\r\n(密码必须跟模块A的一致)
3–>设置从模式:串口调试助手上,将蓝牙B配置为从机模式:AT+ROLE=0\r\n
4–>设置波特率:AT+UART=9600,0,0\r\n
5–>可以检查一下模块设置是否成功:AT+PSWD? AT+ROLE? AT+UART

这样就算设置完了,两个模块重新上电一下,退出AT模式
然后就可以通过串口交互数据了,看
A--------->B
在这里插入图片描述
B---------------->A
在这里插入图片描述
接下来就看与单片机接线交互数据了。正在写代码,别着急,改天上传。。。

接下来继续写,首先,要想单片机之间通过蓝牙相互发送数据(其实就相当于两个单片机之间传输数据一样的)看,这是两个单片机之间的数据交互,蓝牙的话,不就相当于将有线转化成了无线,对吧!
在这里插入图片描述
在这里插入图片描述
图有些丑,但是能看的懂的(上面AT模式退出后,就不需要再次进入了,不用连接那根线了(EN / KEY ------->>>> AT模式使能脚))

那么,要实现功能该怎么做呢?
**1、**是不是先得让单片机(只要单片机就行)发送数据到串口(单片机通过串口发送数据就相当于单片机通过串口发送数据给蓝牙,蓝牙再发送过去)?
那我们就先写个简单的程序,让单片机打印数据到串口

#include<reg52.h>  
#include<stdio.h>  #define uint unsigned int   
#define uchar unsigned char 
sbit KEY = P3^3; void uart(void)                 //串口通信初始化  
{  SCON=0x40;                  //串口通信工作方式1  REN=1;                      //允许接收  TMOD=0x20;                  //定时器1的工作方式2  TH1=0xFD,TL1=0xFD;        TI=1;                       //这里一定要注意  TR1=1;                      //打开定时器  
}                                 
void main(void)  
{ uint i;uchar a;a = 1; uart();  while(1)  {  if(KEY == 0)//按键按下一次,发送一次数据{i++;if(i > 20000)//相当于延时消抖{printf("a=%bd",a);//打印a=1;到串口;**注意:%前面加b**i = 0;}				}            }  
}//打印效果如下

为什么要这么做?(%d中间加b)
看博主的: https://blog.csdn.net/guanjianhe/article/details/84332773

在这里插入图片描述
**2、**测试没问题,串口输出 “a=1” 后, 再将蓝牙A(主机)接至单片机,接法如下
在这里插入图片描述
3、将蓝牙B(从机)接至USB转TTL,如下图
在这里插入图片描述
再次打开串口助手,看看从机B是否输出 “a=1",效果如下
在这里插入图片描述
那么就差最后一步了,明天接着写
又是新的一天,发现自己变帅了哈哈!!!!(废话不多说,来看看接下来的调试过程)
4、将从机模块B改成与单片机B连接的形式(在这就不说怎么接线了,自己看上边吧,还是四根线),此时的将下边的程序烧录到单片机B,单片机B就可以接收到数据 “a=1”
然后将这接收到的完整的数据发送回串口,并打印到电脑。

#include <reg52.h>#define uchar unsigned char
#define uint  unsigned intuchar num;void UART_init()
{TMOD = 0x20;  	//T1工作模式2  8位自动重装TH1 = 0xfd;TL1 = 0xfd; 	//比特率9600TR1 = 1;		//启动T1定时器SM0 = 0;SM1 = 1; 		//串口工作方式1 10位异步REN = 1;		//串口允许接收EA  = 1;		//开总中断ES  = 1;		//串口中断打开
}
void main()
{UART_init(); //串口初始化while(1);	
}void UART() interrupt 4
{if(RI)	//检测是否接收完成{num = SBUF;	  //num 取出接收缓存器的值P1 = SBUF;	 	 //为了直观,加了LED(方便判断单片机是否收到数据)RI = 0;SBUF = num;	//接收的数据直接发送回串口while(!TI);TI = 0;}
}

在这里插入图片描述
好了,要想实现温湿度等数据交互,就看你自己的了,嘿嘿!!看完文字,你也变帅了不是?


http://www.ppmy.cn/news/719644.html

相关文章

74HC595实验

74HC595实验 实验现象 利用74HC595芯片实现LED流水灯的效果 理论学习 实现穿行数据转换为并行数据的控制模式 原理图 代码编写 #define latchpin 8 #define clockpin 12 #define datapin 11 //定义三个引脚 unsigned char table[8] {0x01,0x02,0x04,0x08,0x10,0x20,0x40…

hc sr04流程图_超声波测距模块工作原理_HC-SR04模块详解

超声波测距模块有好多种类型,目前比较常用的有URM37超声波传感器默认是232接口,可以调为TTL接口,URM05大功率超声波传感器测试距离能到10米,算是目前来说测试距离比较远的一款了,另外还有比较常用的国外的几款SRF系列的超声波模块,目前的超声波模块精度能到1cm。本文主要…

hc 05 蓝牙c语言程序,ATK-HC05 运用在STM32平台上的HC05蓝牙通信代码用C语言编写 - 下载 - 搜珍网...

1&#xff0c;ATK-HC05蓝牙串口模块/1&#xff0c;ATK-HC05蓝牙串口模块原理图/ATK-HC05-V11_SCH.pdf 1&#xff0c;ATK-HC05蓝牙串口模块/1&#xff0c;ATK-HC05蓝牙串口模块原理图/封装库/99SE/ATK-HC05-V1.3_PCB.lib 1&#xff0c;ATK-HC05蓝牙串口模块/1&#xff0c;ATK-HC…

SM74HC595D电路级联教程

SM74HC595D电路级联教程 1简述 SM74HC595D 是一种具有8 位锁存、8 位串行输入、 8 位串/并行输出、 串—并移位寄存器和三态输出功能的通用LED 驱动芯片。具有8 位移位寄存器和一个存储器&#xff0c;三态输出功能。 该设备具有串行输入&#xff08;SER&#xff09;和串行输出…

bert中 [CLS] 和 [SEP]怎么使用

BERT&#xff08;Bidirectional Encoder Representations from Transformers&#xff09;是一种基于Transformer的预训练语言模型。在BERT中&#xff0c;[CLS] 和 [SEP] 是特殊的标记&#xff08;tokens&#xff09;&#xff0c;用于表示句子的开始和结束&#xff0c;或者在处理…

串口控制74HC164C语言,51单片机74HC164串口控制数码管显示

一般数码管需要接7个脚才能显示,如果用单片机本身的I/O口,虽然可以但是浪费宝贵的i/O口资源。本例用移位寄存器74HC164作为数码管驱动进行控制。 74HC164特性 是一种8位串转并口的控制芯片,用于数码管和液晶显示等. 工作电压2--6V 管脚定义: …

11、超声波传感器HC-SR04使用

目录 1、简介 2、使用例子 正文 1、简介 超声波传感器可以通过使用超声波来测量距离。它通过发出特定频率的声波来测量距离,并等待该声波反弹。通过记录在产生的声波和声波反弹之间所花费的时间,可以计算传感器和物体之间的距离。 HC-SR04规格 电源:5v DC 测距距离:2…

HC32 flash 读写操作

flash 读写操作 HC32 flash 简介HC32 flash 操作和时钟之间的关系Flash 的读写操作解锁寄存器单次编程无回读功能单编程有回读连续编程擦除功能全擦除功能 综合应用demo HC32 flash 简介 HC32F4A0 的flash是两块独立 FLASH 构成 dual bank。容量高2Mbytes&#xff0c;由两块 1…