JDY-31蓝牙传输模块是一款基于蓝牙3.0 SPP设计的无线通信模块,支持Windows、Linux、Android数据透传。它工作在2.4GHz频段,采用GFSK调制方式,最大发射功率为8dBm,最大发射距离可达30米。该模块支持通过AT命令修改设备名、波特率等设置,使用灵活方便。
模块参数
- 型号:JDY-31
- 工作频段:2.4GHz
- 通信接口:UART
- 工作电压:1.8-3.6V(建议3.3V)
- 工作温度:-40℃ - 80℃
- 天线:内置PCB天线
- 传输距离:30米
- 主从支持:从机
- 模块尺寸:19.6 * 14.94 * 1.8 mm(长宽高)
- 蓝牙版本:Bluetooth 3.0 SPP
- STM焊接温度:<260℃
- 工作电流:7.5mA
- 发射功率:8dBm(最大)
- 接收灵敏度:-97dBm SPP
- 最大吞吐量:16K bytes/s(Android、Windows)
引脚功能
- VCC:供电引脚,连接到正极电源(通常是3.3V或5V)。
- GND:地引脚,连接到负极地。
- TXD:串行数据发送引脚,用于将数据从模块发送到外部设备。
- RXD:串行数据接收引脚,用于接收外部设备发送的数据。
- EN:使能引脚,用于控制模块的工作状态。
- STATE:状态引脚,用于提供模块的状态信息。
AT指令
AT指令用于与设备进行交互,包括配置、控制和查询。以下是常用的AT指令:
- AT+VERSION:查询版本号
- AT+RESET:软复位
- AT+DISC:断开连接(连接状态下有效)
- AT+LADDR:查询模块的MAC地址
- AT+PIN:连接密码设置与查询,默认为1234
- AT+BAUD:波特率设置与查询,默认为9600
- AT+NAME:广播名设置与查询,默认为JDY-31-SPP
- AT+DEFAULT:恢复出厂设置
- AT+ENLOG:串口状态输出使能,默认为1
使用UART通信协议实现JDY-31与STM32连接通信
要使用JDY-31模块,首先需要将其与STM32开发板通过UART接口连接。以下是连接步骤和示例代码:
- 将JDY-31的VCC和GND分别连接到STM32的3.3V电源和地。
- 将JDY-31的TXD连接到STM32的RXD(例如PA10)。
- 将JDY-31的RXD连接到STM32的TXD(例如PA9)。
示例代码:
#include "stm32f10x.h"
#include "stdio.h"
// 重定向printf函数到UART
int fputc(int ch, FILE *f) {
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
USART_SendData(USART1, (uint16_t) ch);
return ch;
}
void USART_Configuration(void) {
USART_InitTypeDef USART_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9 | GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Even;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART1, &USART_InitStructure);
USART_Cmd(USART1, ENABLE);
}
int main(void) {
USART_Configuration();
printf("AT+VERSION\r\n");
while (1) {
// 循环中可以添加其他操作
}
}
通过上述步骤,可以实现JDY-31蓝牙模块与STM32开发板的通信。通过发送AT指令,可以控制模块的配置和行为。在实际应用中,可以根据具体需求发送不同的AT指令来实现所需的功能。
✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进
❤欢迎关注我的知乎:对error视而不见
代码获取、问题探讨及文章转载可私信。
☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。
🍎获取更多嵌入式资料可点击链接进群领取,谢谢支持!👇