1、实物图
2、原理图
3、简介
ECB02 蓝牙模块是一款支持低功耗蓝牙协议的串口透传模块;模块具有小体积、高性能、高性价比、低功耗、平台兼容性强等优点;可以帮助用户快速掌握蓝牙技术,加速产品开发。模块已兼容的软件平台包括:IOS 应用程序、 Android 应用程序、PC 电脑应用程序、微信支付宝小程序等。MCU通过串口连接模块,可与手机、平板、PC 电脑进行数据通讯,轻松实现智能无线控制和数据采集。模块广泛应用在智能家居、医疗设备、共享售货机等领域。
4、注意事项
①每次发送的数据包长度最大为244字节
②传输距离:蓝牙传输距离受发射功率、电源质量、天线类型、天线方向、周围环境等因素影响,范围十几米到几十米。如果希望增加蓝牙传输距离,可以增加发射功率,使用电源质量比较好的 LDO 电源,选择大尺寸的 PCB 天线或外置的天线,在空旷的地方测试。如果希望蓝牙传输距离尽量很短,可以减小发射功率,使用最小体积的贴片陶瓷天线。
③蓝牙默认的波特率是115200,如果需要更改,需要使用AT指令。
5、引脚介绍
名称 | 注释 |
STA | 蓝牙已连接,输出高电平(3.3V)
蓝牙未连接,输出低电平 |
RXD | 串口接收,连单片机的发送引脚 |
TXD | 串口发送,连单片机的接收引脚 |
GND | 地 |
VCC | 3.6V – 6V |
EN | 睡眠引脚,3.3V 电平
高电平或悬空:模块进入睡眠模式 低电平:模块退出睡眠模式 如果不需要低功耗,可以直接接地 在睡眠模式下,模块串口只能发数据,不能收数据 MCU 可以通过 GPIO 控制模块进入或退出睡眠模式 |
注意:
蓝光 LED 指示灯
蓝牙未连接:2 秒闪烁一次
蓝牙已连接,notify 关闭:1 秒闪烁一次
蓝牙已连接,notify 开启:200 毫秒闪烁一次
6、通信方式(串口通信)
串口全称叫做串行接口,通常也叫做 COM 接口,在串行通信中,数据在1位宽的单条线路上进行传输,一个字节的数据要分为8次,由低位到高位按顺序一位一位的进行传送。串行通信的数据是逐位传输的,发送方发送的每一位都具有固定的时间间隔,这就要求接收方也要按照发送方同样的时间间隔来接收每一位。不仅如此,接收方还必须能够确定一个信息组的开始和结束。MCU和蓝牙模块就是通过串口进行通信的,通过RXD和TXD交叉相连进行数据传输,当然,要保证有一个共同的参考电平,也就是GND相连。MCU自带一路UART,UART外设就是串口的一种,UART 全称是 Universal Asynchronous Receiver/Trasmitter,也就是异步串行收发器。
在异步通信中,收发双方取得同步是通过在字符格式中设置起始位和停止位的方法来实现的。具体来说就是,在一个有效字符正式发送之前,发送器先发送一个起始位,然后发送有效字符位,在字符结束时再发送一个停止位,起始位至停止位构成一帧。停止位至下一个起始位之间是不定长的空闲位,并且规定起始位为低电平(逻辑值为0),停止位和空闲位都是高电平(逻辑值为1),这样就保证了起始位开始处一定会有一个下跳沿,由此就可以标志一个字符传输的起始。而根据起始位和停止位也就很容易的实现了字符的界定和同步。
异步通信规定传输的数据格式由起始位(start bit)、数据位(data bit)、奇偶校验位(parity bit)和停止位(stop bit)组成,异步通信数据格式如下图所示(该图中未画出奇偶校验位,因为奇偶检验位不是必须有的,如果有奇偶检验位,则奇偶检验位应该在数据位之后,停止位之前)。
空闲位:数据线在空闲状态的时候为逻辑“1”状态,也就是高电平,表示数据线空闲,没有数据传输。
起始位:当要传输数据的时候先传输一个逻辑“0”,也就是将数据线拉低,表示开始数据传输。
数据位: 数据位就是实际要传输的数据,数据位数可选择 5~8 位,我们一般都是按照字节传输数据的,一个字节 8 位,因此数据位通常是 8 位的。低位在前,先传输,高位最后传输。
奇偶校验位: 这是对数据中“1”的位数进行奇偶校验用的,可以不使用奇偶校验功能。
停止位:数据传输完成标志位,停止位的位数可以选择 1 位、 1.5 位或 2 位高电平,一般都选择 1 位停止位。
波特率:波特率就是 UART 数据传输的速率,也就是每秒传输的数据位数,一般选择 9600、115200 等。
7、常用AT指令
①波特率:默认波特率是115200
查询波特率:AT+UART?rn
设置波特率:AT+UART=2rn ——设置成9600
AT+UART=4rn ——设置成115200
②连接状态通知:默认开启
查询连接状态通知:AT+CONNOTIFY?rn
设置连接状态通知:AT+CONNOTIFY=0rn ——关闭
AT+CONNOTIFY=1rn ——开启
注:蓝牙连接状态发送改变时,默认会有提示,包括”CONNECT OK”、“CONNECT FAIL”、“DISCONNECT”和“SCANNING……”;其中“SCANNING……”只有在主机模式并绑定了从机后才会出现
③两个蓝牙进行连接通信
方法一:连接序列号
AT+ROLEMODE?rn ——查询主从机配置(1:始终是主机模式 2:始终是从机模式)
AT+ROLE=1rn ——设置主机模式
AT+ROLE=2rn ——设置从机模式
将一个蓝牙设置成主机模式,另一个设置成从机模式
设置成主机的蓝牙通过
AT+SCANrn ——查看从机设备信息
注:+SCAN:X,X是搜索到的设备数量,最大值是30。” 0,@22021626B8,2022021626B8,-23 “,第一个参数是序列号,第二个参数是蓝牙的名字,第三个参数是蓝牙的MAC地址,第四个参数是蓝牙的信号强度。(以@开头的蓝牙名字就是从机蓝牙)
AT+CONNECT=Xrn ——连接设备(X是设备在列表中的序列号,这条命令仅主机模式有效)
注意:这种连接方式无法实现重新上电后自动连接
方法二:绑定蓝牙名称
AT+ROLEMODE?rn ——查询主从机配置(1:始终是主机模式 2:始终是从机模式)
AT+ROLE=1rn ——设置主机模式
AT+ROLE=2rn ——设置从机模式
将一个蓝牙设置成主机模式,另一个设置成从机模式
设置成从机的蓝牙通过
AT+NAME? rn ——查询蓝牙名字(默认以@开头)(这条命令仅从机模式有效)
设置成主机的蓝牙通过
AT+BONDNAME=Xrn ——设置绑定从机蓝牙名字(这条命令仅主机模式有效)
注意:这种连接方式可以实现重新上电后自动连接
方法三:绑定MAC地址
AT+ROLEMODE?rn ——查询主从机配置(1:始终是主机模式 2:始终是从机模式)
AT+ROLE=1rn ——设置主机模式
AT+ROLE=2rn ——设置从机模式
将一个蓝牙设置成主机模式,另一个设置成从机模式
设置成从机的蓝牙通过
AT+MAC?rn ——查询MAC地址(这条命令仅从机模式有效)
设置成主机的蓝牙通过
AT+BONDMAC=Xrn ——设置绑定从机蓝牙MAC地址(这条命令仅主机模式有效)
注意:这种连接方式可以实现重新上电后自动连接
8、程序解析
/**********************************
函数定义
**********************************/
/****
*******串口初始化函数,11.0592MHz bps:9600
*****/
void Uart_Init(void)
{
TMOD&=0x0F; //清零 T1 的控制位
TMOD|=0x20; //配置 T1 为模式 2
SCON=0x50; //配置串口为模式 1
TH1=0xFD; //配置 T1 重载值
TL1=0xFD; //初值等于重载值
TR1=1; //启动 T1
ES=1; //打开串口中断
EA=1; //打开总中断
}
9、流程设计
首先配置定时器1,先清除定时器1的控制位,设置定时器1为模式2,即8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1。然后配置串口为模式1,即8位UART,波特率可变。接下来配置定时器1的重装载值,使得最终的波特率为9600。最后启动定时器1,打开串口中断以及打开总中断。串口初始化完成后,如果接收到数据,则触发串口中断,从SBUF寄存器中获取接收值,清除接收中断标志位,等待下次接收。如果需要发送数据,则调用发送数据函数,只需将数据赋值到SBUF中即可,然后清除发送中断标志位。