STM32 蓝牙串口 JDY-31

蓝牙串口 JDY-31

在进行单片机开发过程中难免会用到串口传输一些数据,本文介绍如何在 Windows 环境中连接蓝牙串口进行数据传输。


  • 首先用串口工具(TTL)查看蓝牙模块是否正常工作(可以略过)

    在这里插入图片描述

  • 通过 AT 指令查看版本号(默认波特率为9600)

    在这里插入图片描述

  • 打开电脑蓝牙设置

    在这里插入图片描述

    按照如图顺序依次进行

  • 选择相应的蓝牙模块

    注意:电脑的 COM 端口需要作为传出,因为要求电脑启动连接。 蓝牙模块无法主动发动连接请求

    在这里插入图片描述

  • 操作后如下图

    在这里插入图片描述

  • 接着打开串口助手(这里使用 vofa+)

    在这里插入图片描述

    1:端口选择电脑的蓝牙端口,波特率为9600(根据自己的设定)

    2:点击连接后会跳出 2 处的卡片,点击卡片输入 pin 码连接(pin码可通过 AT 指令配置和读取)

    连接成功后蓝牙模块上闪烁的红灯会常亮


到此,蓝牙串口的配置就完成了。

接下来简单演示一下 STM32 配合蓝牙模块做串口使用。

  • 首先连接模块到单片机的串口上

    在这里插入图片描述

  • 正常使用串口发送数据即可

    while(1)
    {
        UART_printf(&huart1, "JDY-31-TEST\r\n");
        HAL_Delay(500);
    }
    
    // 串口封装
    #if 0
    int UART_printf(UART_HandleTypeDef *huart, const char *fmt, ...)
    {
        va_list ap;
        va_start(ap, fmt);
        int length;
        char buffer[128];
        length = vsnprintf(buffer, 128, fmt, ap);
        HAL_UART_Transmit(huart, (uint8_t *)buffer, length, HAL_MAX_DELAY);
        va_end(ap);
        return length;
    }
    #endif
    
  • 在电脑端打开蓝牙串口即可接收到数据

    在这里插入图片描述


以上是蓝牙串口的简单应用,有时做开发时可以少连几根线,或者远程传输一些数据,具有很强的实用性,使用起来也很简单。通过蓝牙串口也可以连接手机的蓝牙串口工具,方便调试。


此处附上 AT 指令,方便查阅:

在这里插入图片描述


BB两句:树莓派的蓝牙串口功能貌似不能和蓝牙模块共同使用,具体原因好像是树莓派连接蓝牙后若要启动蓝牙串口还需蓝牙设备向树莓派发送连接请求,而蓝牙模块不能发起请求,导致虽然树莓派连到了蓝牙模块,但无法使用蓝牙串口功能。而手机的蓝牙串口软件可以与树莓派建立起正常串口连接。

### JDY-31蓝牙模块初始化与配置 JDY-31蓝牙模块基于蓝牙3.0 SPP设计,能够提供稳定的串口透传功能[^1]。为了使该模块正常工作并与其他设备建立连接,需按照特定的方法进行初始化和配置。 #### 初始化设置 通常情况下,JDY-31出厂默认已设置了常用的参数,如波特率设为9600bps等标准值。如果需要自定义这些参数,则可以通过发送AT指令来完成。以下是几个重要的初始化命令: - **查询当前状态**:`AT` ——用于确认模块处于在线模式。 - **恢复出厂设置**:`AT&F`——这会将所有设置重置回初始状态,适用于初次使用或遇到异常情况时。 - **设定本地名称**:`AT+NAME=yourname`——替换“yourname”为你想要的名字字符串,以便更容易识别此蓝牙设备。 - **调整传输速率**:例如要改变成115200 bps可输入 `AT+UART=115200,8,1,0,0` 对于更详细的参数调节和其他高级特性,请参阅官方文档获取完整的AT指令列表[^3]。 #### 连接测试 一旦完成了上述基本配置之后,就可以尝试让JDY-31进入配对模式并与另一台支持SPP协议的蓝牙装置相连。一般而言,在成功匹配后,双方之间就能建立起透明的数据通道了。 ```python import serial ser = serial.Serial('/dev/ttyUSB0', baudrate=9600, timeout=1) def send_at_command(command): ser.write((command + '\r\n').encode()) response = '' while True: char = ser.read().decode() if not char or char == '\n': break response += char return response.strip() print(send_at_command('AT')) # 测试是否可以收到OK回复表示模块正常工作 ``` 这段Python脚本展示了如何利用PySerial库向JDY-31发送简单的AT命令,并读取返回的结果来进行初步的功能验证。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值