蓝牙BLE透传模块怎么用?手把手教你实现无线串口通信

发布时间:2026-03-27 · 阅读时长:6分钟

先说结论

蓝牙透传就是让蓝牙模块当"无线串口线"用——你往TX/RX引脚丢什么数据,它就原封不动地传给另一端,不需要懂蓝牙协议,5分钟就能跑通。


一、透传到底是什么?

透传 = 透明传输,就是数据从A点进去,原样从B点出来,蓝牙层完全不处理你的数据。

对比一下就清楚了:


有线上:PC(USB) ────(线)──── 单片机
                 物理层传输

蓝牙透传:PC(USB) ──(蓝牙无线)── 蓝牙模块 ──(串口线)── 单片机
                   无线透传          有线串口

简单理解:蓝牙模块就是一条无线串口线,你原来怎么用有线串口的,现在就怎么用蓝牙。


二、三种常见透传实现方式

方案一:模块自带AT指令(最简单)

以HC-05为例,这是最经典的透传模块,配对后直接透传,不需要写代码:


// AT指令配置(通过串口发送给HC-05)
AT+NAME=BLE_UART    // 设置蓝牙名称
AT+BAUD=115200       // 设置波特率(要和单片机一致!)
AT+PSWD=123456       // 配对密码
AT+ROLE=0            // 0=从机,1=主机(传感器一般用从机)

配置好后,手机连上HC-05,往蓝牙发数据,单片机串口就能收到,反过来也一样。

注意:HC-05是蓝牙2.1,功耗较高,但价格便宜、兼容性好,不追求低功耗的场景用HC-05完全够

方案二:BLE串口服务(Nordic NUS)

如果你用的是BLE4.0以上模块(如CC2541、nRF52832、ESP32-C3),蓝牙端要走GATT服务,最通用的就是Nordic的UART Service(NUS):

参数
服务UUID 6E400001-B5A3-F393-E0A9-E50E24DCCA9E
TX特征(通知) 6E400002-B5A3...(模块→手机方向)
RX特征(写入) 6E400003-B5A3...(手机→模块方向)

手机端用nRF Connect APP就能连接BLE模块、发现这个服务,然后读写特征值收发数据。

代码示例(nRF52832上的Nordic NUS):


// BLE收到手机发来的数据,透传到单片机串口
void nus_data_handler(uint8_t *data, uint16_t len) {
    uart_send(data, len);  // 透传到串口TX引脚
}

// 单片机串口收到数据,发送到手机
void send_to_phone(uint8_t *data, uint16_t len) {
    ble_nus_send(notify_handle, data, len);  // BLE通知手机
}

方案三:自定义透传协议

如果你的数据需要校验、分包、加帧头,用这个结构最稳:


// 自定义数据包结构
typedef struct {
    uint8_t header;      // 帧头 0xAA(固定)
    uint8_t len;         // 数据长度
    uint8_t data[256];   // 有效载荷
    uint8_t checksum;    // 校验和(header^len^data累加)
    uint8_t tail;        // 帧尾 0x55(固定)
} packet_t;

// 发送
void transmit_packet(uint8_t *data, uint16_t len) {
    packet_t pkt;
    pkt.header = 0xAA;
    pkt.len = len;
    memcpy(pkt.data, data, len);
    pkt.checksum = calc_checksum(data, len);
    pkt.tail = 0x55;
    
    uart_send((uint8_t*)&pkt, sizeof(pkt));
}

建议:项目里尽量加上帧头帧尾和校验和,调试时能快速定位丢包问题。


三、常用透传模块横向对比

模块型号 芯片方案 蓝牙版本 透传方式 适用场景
HC-05 CSR BC417 BT2.1+EDR AT指令 经典场景,不要求低功耗
HC-06 CSR BC417 BT2.1+EDR 从机AT 只做从机,更便宜
JDY-31 CC2541 BLE4.0 串口透传 低功耗,性价比高
BLK-MD-BK CC2541 BLE4.0 串口透传 稳定,兼容性好
DSD TECH SH-A8 CC2640 BLE4.2 串口透传 低功耗升级方案
HM-10 CC2541 BLE4.0 串口透传 经典模块,资料多
nRF52832模块 nRF52832 BLE5.0 NUS服务 高端场景,稳定性要求高
ESP32-C3 ESP32-C3 BLE5.0 串口透传 WiFi+BLE兼顾,低成本

四、硬件接线:就4根线


蓝牙模块          单片机(STM32/51/Arduino等)
────────────────────────────────────────────────
TXD     ────────►  RXD(模块发→单片机收)
RXD     ◄───────  TXD(单片机发→模块收)
VCC     ────────  3.3V 或 5V(看模块手册)
GND     ────────  GND(必须共地!)
STATE   ────────  状态指示灯(可选,不接也行)
KEY     ────────  AT模式触发(HC-05才需要)

电平匹配注意:如果你的单片机是5V(比如标准Arduino),而蓝牙模块是3.3V(如ESP32-C3),中间要加电平转换:


5V单片机TX ──► TXS0108E电平转换 ──► 3.3V模块RX

五、配置步骤

HC-05配置流程(带AT模式)

1. 进入AT模式:按住模块上的KEY引脚,再上电,LED慢闪表示进入AT模式

2. 发送AT指令(115200波特率,8N1):


   AT+NAME=MyDevice    // 设备名称
   AT+BAUD=115200      // 波特率
   AT+PSWD=123456      // 配对密码
   AT+ROLE=0           // 从机模式
   AT+CMODE=0          // 指定蓝牙地址连接

3. 手机连接:下载"蓝牙串口助手"APP,搜索设备、配对、连接

4. 开始透传:连接成功后,发什么收什么

BLE模块配置(以JDY-31为例)

1. 手机端:下载nRF Connect,扫描"JY"开头的设备

2. 连接后:找到"Unknown Service",里面有两个特征值

3. 收发数据


六、三大经典应用场景

场景1:单片机无线调试


电脑(串口助手) ──► USB转TTL ──► 蓝牙模块 ──► 手机/另一台电脑
                                              ↑
                                     无线查看日志,不用守着设备

场景2:传感器数据无线上报


温湿度传感器 ──► MCU ──► BLE透传模块 ──► 手机APP/网关 ──► 云端

BLE低功耗特性特别适合这类场景,用CR2032电池能用1-2年。

场景3:手机APP控制设备


手机APP ──► BLE ──► 蓝牙模块 ──► MCU ──► 继电器/电机/灯

七、数据传输优化

坑1:丢包

原因:数据发太快,单片机处理不过来。

解法


// 加个缓冲区分包发送
#define BUF_SIZE 512
uint8_t tx_buf[BUF_SIZE];
uint16_t tx_len = 0;

void tx_push(uint8_t *data, uint16_t len) {
    if (tx_len + len > BUF_SIZE) {
        ble_send(tx_buf, tx_len);  // 缓冲区满了就发
        tx_len = 0;
    }
    memcpy(tx_buf + tx_len, data, len);
    tx_len += len;
}

// 定时清空缓冲区(50ms调用一次)
void tx_flush() {
    if (tx_len > 0) {
        ble_send(tx_buf, tx_len);
        tx_len = 0;
    }
}

坑2:延迟高

解法

坑3:容易断开

原因和对策


八、常见问题Q&A

Q1:BLE和蓝牙2.1透传哪个好?

看场景。BLE功耗极低(μA级待机),蓝牙2.1功耗高(mA级)。但BLE需要手机APP支持(nRF Connect等),蓝牙2.1所有手机都能连。不追求低功耗就选HC-05,简单省事。

Q2:波特率设置多少合适?

大多数BLE透传模块最高支持115200bps,HC-05可以到1382400bps。如果是高速数据(视频、音频流),不建议用透传,考虑蓝牙音频方案。

Q3:可以同时连接多个从机吗?

BLE中心设备(主机)可以连接多个从机,但BLE透传模块通常是点对点的。一对多需要用nRF52840这类带多连接的方案。

Q4:透传能传多远?

无遮挡室内5-15米,空旷地带30-50米。选配SMA天线的模块可以到50-100米。穿墙效果差,BLE信号对墙衰减大。

Q5:数据安全性怎么样?

透传是明文传输!敏感数据记得在应用层做加密(AES等)。BLE4.2以上支持Secure Connections配对,安全性好很多。


总结

蓝牙透传就是无线串口线,选对模块、调对波特率、加校验位,基本就稳了。

新手入门的最佳路径

1. 买一个JDY-31(CC2541)+ 一个USB转TTL

2. 照着上面的接线图接好

3. 手机装nRF Connect,连上模块试试

4. 没问题了再接单片机开发

搞通了这一套,你后面做蓝牙项目就心里有数了。


相关阅读:

技术问题?查看更多 开发教程文章