> 技术文档 > ESP32 BLE开发快速入门:用MicroPython实现手机与硬件通信

ESP32 BLE开发快速入门:用MicroPython实现手机与硬件通信


低功耗蓝牙(BLE):物联网时代的无线通信利器

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

传统蓝牙 vs BLE

ESP32 BLE开发快速入门:用MicroPython实现手机与硬件通信

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

BLE的广泛应用场景

ESP32 BLE开发快速入门:用MicroPython实现手机与硬件通信

从智能手环到工业监测,BLE技术已渗透到各个领域:

  • 健康监测设备(心率、步数传输)
  • 智能家居控制(灯光、窗帘遥控)
  • 资产追踪(物流标签、设备定位)
  • 近场交互(beacon广播、信息推送)

快速上手:ESP32 BLE开发步骤

1. 准备开发环境

  • ESP32开发板(推荐NodeMCU-32S)
  • 最新版MicroPython固件(v1.19.1及以上)
  • 手机APP:iOS使用LightBlue,Android使用nRF Connect

ESP32 BLE开发快速入门:用MicroPython实现手机与硬件通信

2. 核心代码实现

BLE服务初始化
import bluetoothfrom machine import Pin, Timerclass 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)
数据收发处理
 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灯闪烁表示未连接,常亮表示已连接

项目扩展建议

  1. 安全增强:添加BLE配对密码认证
  2. 数据加密:实现通信数据加密传输
  3. 服务扩展:增加多个特征值支持多通道通信
  4. 功耗优化:配置ESP32深度睡眠模式延长电池寿命

获取完整教程

本项目的详细实现步骤和代码注释可以参考官方教程:ESP32 BLE蓝牙开发详解

昭通新闻