当前位置: 首页 >应用方案 >技术应用 >

E104-BT02蓝牙模块实现BLE与UART双向透传教程

E104-BT02蓝牙模块快速上手教程:RP2040 + MicroPython实现BLE与UART双向透明传输

本文以亿佰特E104-BT02 BLE蓝牙模块为例,完整演示基于Raspberry Pi Pico(RP2040)+ MicroPython的手机BLE双向透传实战流程。蓝牙模块基于标准UART接口,支持AT指令配置与BLE/UART透明传输,可直接对接任何具备串口的MCU开发板。蓝牙模块快速运行步骤教程从硬件连接(GP16/GP17接模块MRX/MTX,3.3V供电共地)、驱动安装(mip工具安装e104bt02_driver库)、示例代码(AT参数查询+透传收发)到手机端配置(接收UUID设FFF1、发送UUID设FFF2)分步展开,全程30分钟即可跑通。

一、硬件连接

使用HY2.0-4P连接线将E104-BT02蓝牙模块连接到GraftPort-RP2040开发板的UART0接口。已验证的RP2040接线如下:

RP2040开发板引脚

E104-BT02模块引脚

信号说明

GP16(UART0 TX)

P05 / MRX(模块RX)

主控发送→ 模块接收

GP17(UART0 RX)

P04 / MTX(模块TX)

模块发送→ 主控接收

3.3V

VCC

模块电源(3.3V,禁止接5V)

GND

GND

共地

注意以下5点问题:

①GP16/GP17只是本教程的测试接线,不是驱动的强制GPIO配置。用户可根据实际硬件设计选择任意支持UART功能的GPIO引脚;

②模块VCC必须接3.3V,禁止直接接5V,否则可能损坏模块;

③UART需要交叉连接:主控TX接模块RX(P05/MRX),主控RX接模块TX(P04/MTX),不要接反;

④如果需要进入AT配置模式,还需要将P00/MOD引脚连接到主控GPIO或按键,通过拉低P00/MOD进入AT模式;

⑤如果需要低功耗控制,将P06/WKP连接到主控GPIO,通过下降沿唤醒、上升沿睡眠。

二、安装MicroPython驱动库

E104-BT02的MicroPython驱动库已发布到uPyPI(MicroPython包仓库),包名为e104bt02_driver。使用mpremote工具通过mip安装:

安装命令mpremote mip install https://upypi.net/pkgs/e104bt02_driver/1.3.1

该驱动库提供了以下核心功能:

①封装AT指令交互,自动处理配置模式进入/退出开发者不需要手动控制P00/MOD引脚和发送+++指令,驱动库自动处理;

②提供波特率、设备名、连接状态、MTU、角色、MAC地址等参数查询API直接调用方法即可获取参数,不需要手动拼接AT指令和解析返回值;

③提供透明传输模式下的数据发送(send)和接收(read)方法像普通串口一样读写数据,驱动库自动处理BLE透传;

④内置异常处理(E104BT02Error)和资源释放机制通信异常时抛出明确的异常信息,程序退出时自动释放UART资源。

安装完成后,在代码中使用"from e104bt02 import E104BT02, E104BT02Error"导入驱动类,即可开始使用。

三、完整示例代码解析

以下是完整的main.py示例代码,演示了AT参数查询和双向透明传输。代码适用于MicroPython v1.23.0及以上版本。

3.1 全局配置与初始化

代码开头定义了全局配置参数:UART_ID=0(使用UART0),UART_TX_PIN=16(GP16),UART_RX_PIN=17(GP17),UART_BAUDRATE=19200(与模块默认波特率匹配),UART_PARITY=None(无校验),UART_STOP_BITS=1(1停止位)。还有透传读取超时、循环延时、发送测试数据等配置。

初始化部分:

l time.sleep(3)上电延时3秒,确保模块完成初始化;

l 创建UART对象使用machine.UART配置UART0,波特率19200,8数据位,无校验,1停止位,TX=GP16,RX=GP17;

l 创建模块驱动实例E104BT02(uart0),构造过程不会发送AT指令,只是初始化驱动对象。

3.2 AT配置模式:查询模块参数

AT配置模式下,代码依次查询模块的以下参数:

① module.get_baudrate()查询当前UART波特率,返回如19200;

② module.get_module_name()查询蓝牙设备名,返回如"E104-BT02-V5.0";

③ module.get_state()查询BLE连接状态,返回如"DISCONNECTED"(未连接)或"CONNECTED"(已连接);

④ module.get_mtu()查询MTU大小,返回如100;

⑤ module.get_role()查询模块角色,返回如"SLAVER"(从机);

⑥ module.get_mac()查询蓝牙MAC地址,返回如"8E:02:00:B6:11:01"。

查询完成后,代码提示用户释放MODE按键(使P00/MOD恢复高电平),等待15秒后进入透明传输模式。这段等待时间给用户足够的时间释放按键和准备手机端连接。

3.3 透明传输模式:双向通信

进入透传模式后,代码执行以下操作:

l 发送测试数据module.send(b"Hello from RP2040"),将数据通过UART发送给模块,模块自动封装为BLE数据包发给已连接的手机;

l 循环读取while True循环中,module.read(timeout_ms=200)非阻塞读取BLE发来的数据,如果有数据则打印并回显(将收到的数据原样发回手机);

l 回显测试手机发送数据,RP2040收到后自动回显,手机能收到自己发的数据,说明双向通信正常。

异常处理

代码捕获了KeyboardInterrupt(用户中断)、OSError(硬件通信错误)、E104BT02Error(驱动错误)等异常,确保程序异常退出时能正确释放资源。finally块中调用module.close()和uart0.deinit()释放驱动和UART资源。

四、蓝牙模块实战通信运行步骤

4.1 蓝牙模块运行步骤教程

按照以下7个步骤操作,即可完成E104-BT02蓝牙模块的快速上手测试:

步骤1:保持P06/WKP为唤醒状态

确保蓝牙模块不处于睡眠模式。如果WKP引脚接了主控GPIO,确保输出正确的唤醒电平;如果WKP悬空,模块默认处于唤醒状态。

步骤2:按住MODE按键

使P00/MOD为低电平,模块进入AT配置模式。如果使用主控GPIO控制P00,将GPIO输出低电平即可。

步骤3:运行程序

main.py烧录到RP2040并运行,程序将自动读取模块的波特率、名称、状态、MTU、角色和MAC地址等参数,并在串口终端打印输出。

步骤4:释放MODE按键

使P00/MOD恢复高电平,模块进入透明传输模式。程序会倒计时15秒,给用户足够的操作时间。

步骤5:手机端连接

打开蓝牙串口助手APP(如微信小程序"蓝牙串口-江协科技"),扫描并连接E104-BT02设备。确保手机蓝牙已开启,且距离模块在10米以内。

步骤6:配置UUID

APP设置中,将接收UUID配置为0000FFF1-0000-1000-8000-00805F9B34FB(Notify),发送UUID配置为0000FFF2-0000-1000-8000-00805F9B34FB(Write)。这是E104-BT02蓝牙模块默认的GATT服务UUID,必须正确配置才能收发数据。

步骤7:双向通信测试

手机发送数据,RP2040串口将收到数据并自动回显;RP2040启动时发送的"Hello from RP2040"也将出现在手机接收区。如果两边都能收到数据,说明BLE与UART双向透明传输正常工作。

4.2 典型AT查询输出示例

程序运行后,串口终端输出的AT查询结果类似如下:

FreakStudio: E104-BT02 test

Keep P06/WKP in the verified awake state.

Hold MODE so P00/MOD is low for AT queries.

baudrate=19200

module_name=E104-BT02-V5.0

state=DISCONNECTED

mtu=100

role=SLAVER

mac=8E:02:00:B6:11:01

如果输出与上述类似,说明蓝牙模块硬件连接正常、AT指令通信正常、模块参数读取成功。如果某个参数读取失败或返回异常,检查对应的硬件连接和模块状态。

五、蓝牙模块实战应用FAQ常见问题

Q1:手机扫描不到设备?

A:按顺序排查:检查供电(VCC接3.3V、共地)→ 确认从机模式(P14/ROLE悬空或高电平,不能接低电平)→ 确认广播已开启(未执行过ADVOFF)→ 手机蓝牙已打开 → 距离5米内、避开金属遮挡 → 仍不行就恢复出厂或换模块。

Q2:连接上了但收不到数据?

A:重点检查UUID:接收UUID设为FFF1(Notify),发送UUID设为FFF2(Write),两者不能搞反。同时确认Notify已开启、模块处于透传模式(P00/MOD悬空或高电平)、UART交叉接线(TX接RX、RX接TX)。

Q3:AT指令无响应?

A:进入AT模式必须将P00/MOD拉低(高电平或悬空时AT指令会被当数据透传)。同时确认模块已唤醒(P06/WKP)、UART交叉接线、波特率19200匹配、指令格式正确。

Q4:没有RP2040能用其他开发板吗?

A:可以。E104-BT02是标准UART蓝牙模块,任何开发板都行:Arduino(5V需加电平转换)、ESP32/ESP8266(3.3V直接匹配)、STM32、树莓派,或最简单的USB转TTL模块配合串口助手。核心接线一致:VCC接3.3V、GND共地、TX接RX、RX接TX、P00/MOD控制AT模式。

总结

E104-BT02低功耗蓝牙模块快速上手四步骤如下所示

①硬件连接(3.3V供电、UART交叉、P00/MOD接按键);

②安装MicroPython驱动;

③运行代码(进AT模式查参数→进透传模式→手机连接收发);

④手机测试(接收UUID设FFF1、发送UUID设FFF2、开启Notify)。

蓝牙模块三大常见坑UART接反、UUID配置搞反、P00/MOD没拉低导致AT无响应。只要避开这三点,蓝牙模块基本上就可以实现数据双向透传功能


亿佰特作为物联网应用专家,提供LoRa模组、蓝牙模块、Zigbee模组、WiFi模块、UWB测距定位模块、LoRaWAN、无线音频传输模块、音频传输模块、串口服务器、数传电台、遥控开关、无线网关、4G DTU、CAN模组、以太网模块、远程IO模块、GNSS卫星定位模块、Profinet网关、毫米波雷达模块、嵌入式核心板、工业级单板机、工业工控机、传感探测器等产品线,为行业用户提供一站式无线数传解决方案,已在智慧农业、工业物联网、智慧城市等领域规模化落地

如需进一步了解无线数传模块和物联网通信设备产品选型或获取技术支持,亿佰特提供硬件选型、技术调试、定制化技术支持服务,欢迎通过以下方式联系:


相关阅读:

1、E104-BT02蓝牙高速透传模块AT指令集与串口配置指南

2、什么是蓝牙模块?蓝牙模块使用指南和常见问题解答

3、什么是低功耗蓝牙模块?BLE蓝牙技术特点详解

4、亿佰特BLE蓝牙模块选型应用指南及其FAQ常见问题

5、亿佰特蓝牙模块产品体系及蓝牙模块应用案例详解


点击拨打: 亿佰特官网 4000-330-990