低功耗蓝牙(BLE):物联网时代的无线通信利器
蓝牙技术已从传统音频传输发展为物联网设备的核心通信方式之一。其中低功耗蓝牙(BLE)凭借其低功耗、短距离、快速连接的特点,成为可穿戴设备、智能家居和工业传感器的理想选择。
传统蓝牙 vs BLE

特性 | 传统蓝牙 | BLE低功耗蓝牙 |
---|---|---|
功耗 | 较高 | 极低(微安级) |
连接速度 | 较慢 | 快速(毫秒级建立连接) |
传输速率 | 较高(2-3Mbps) | 适中(1Mbps) |
主要应用 | 音频传输、数据同步 | 传感器数据、遥控指令 |
BLE的广泛应用场景

从智能手环到工业监测,BLE技术已渗透到各个领域:
- 健康监测设备(心率、步数传输)
- 智能家居控制(灯光、窗帘遥控)
- 资产追踪(物流标签、设备定位)
- 近场交互(beacon广播、信息推送)
快速上手:ESP32 BLE开发步骤
1. 准备开发环境
- ESP32开发板(推荐NodeMCU-32S)
- 最新版MicroPython固件(v1.19.1及以上)
- 手机APP:iOS使用LightBlue,Android使用nRF Connect

2. 核心代码实现
BLE服务初始化
python
import bluetooth
from machine import Pin, Timer
class ESP32_BLE:
def __init__(self, name):
self.ble = bluetooth.BLE()
self.ble.active(True)
self.ble.config(gap_name=name)
self.ble.irq(self.ble_irq)
self.register()
self.advertiser()
def register(self):
# 定义BLE服务UUID
service_uuid = '6E400001-B5A3-F393-E0A9-E50E24DCCA9E'
reader_uuid = '6E400002-B5A3-F393-E0A9-E50E24DCCA9E' # 接收通道
sender_uuid = '6E400003-B5A3-F393-E0A9-E50E24DCCA9E' # 发送通道
# 注册BLE服务
services = ((service_uuid, ((sender_uuid, bluetooth.FLAG_NOTIFY),
(reader_uuid, bluetooth.FLAG_WRITE),)),)
((self.tx, self.rx,),) = self.ble.gatts_register_services(services)
数据收发处理
python
def ble_irq(self, event, data):
if event == 3: # 收到手机发送的数据
buffer = self.ble.gatts_read(self.rx)
BLE_MSG = buffer.decode('UTF-8').strip()
if BLE_MSG == 'read_LED':
self.send('LED is ON' if led.value() else 'LED is OFF')
def send(self, data):
# 向手机发送数据
self.ble.gatts_notify(0, self.tx, data + '\\n')
3. 关键功能说明
- 设备发现:ESP32广播名为"ESP32BLE"的设备
- 数据接收:手机发送"read_LED"指令查询LED状态
- 数据发送:ESP32返回LED状态并在按键触发时主动推送
- 连接指示:LED灯闪烁表示未连接,常亮表示已连接
项目扩展建议
- 安全增强:添加BLE配对密码认证
- 数据加密:实现通信数据加密传输
- 服务扩展:增加多个特征值支持多通道通信
- 功耗优化:配置ESP32深度睡眠模式延长电池寿命
获取完整教程
本项目的详细实现步骤和代码注释可以参考官方教程:ESP32 BLE蓝牙开发详解