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

低功耗蓝牙(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灯闪烁表示未连接,常亮表示已连接

项目扩展建议

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

获取完整教程

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

相关推荐
EatFan8 天前
全栈自造 Status Deck(四):硬件终于到了,从点亮屏幕到跑通第一个 Demo
单片机·物联网·esp32
攸尔的笔记本~12 天前
ESP32-C3的WIFI信号飘忽不定、连接不了
esp32·射频·硬件设计
乐鑫科技 Espressif14 天前
案例研究:基于 ESP32-C5 与 ESP RainMaker 构建符合 EN 18031 标准的 IoT 解决方案
esp32·乐鑫科技·rainmaker
jianqiang.xue15 天前
ESP-IDF保姆级入门41|产品级故障排查与稳定性优化全解:死机复位排查/内存泄漏定位/性能瓶颈分析/长期稳定性测试,掌握量产运维问题定位方法论
单片机·mcu·物联网·esp32
jianqiang.xue16 天前
ESP-IDF保姆级入门40|量产烧录与产线测试全解:批量烧录方案/校准流程/功能测试/不良分拣/产线追溯,掌握工业级量产交付全流程
单片机·物联网·esp32
jianqiang.xue16 天前
ESP-IDF保姆级入门39|固件安全与安全启动全解:签名校验/Flash加密/防回滚/OTP密钥/知识产权保护,掌握工业级固件安全防护体系
单片机·物联网·esp32
jianqiang.xue18 天前
ESP-IDF保姆级入门38|电源管理与锂电池充电全解:充电拓扑/电源路径控制/充放电保护/电量检测/低功耗策略,掌握嵌入式电池供电系统设计
单片机·嵌入式·esp32
jianqiang.xue19 天前
ESP-IDF保姆级入门35|SDMMC高速SD卡全解:SDIO接口/4位高速模式/FATFS文件系统/热插拔检测/磨损均衡,掌握嵌入式大容量存储扩展
单片机·esp32
国产化创客19 天前
创客开发入门(五)Arduino IDE 编程基础
单片机·嵌入式硬件·物联网·esp32
智码看视界20 天前
Edge AI 与 IoT 全栈系列:Edge AI 全栈 2:ESP32 + MQTT + Flink 实时 IoT 数据管道
物联网·flink·esp32·全栈开发·iot平台·实时流处理·edgeai