esp32蓝牙 microPython
时间: 2025-03-06 13:49:10 浏览: 10
ESP32 使用 MicroPython 进行蓝牙开发
ESP32 支持通过 MicroPython 实现蓝牙功能,这使得开发者能够快速构建基于蓝牙的应用程序。MicroPython 是 Python 编程语言的一个轻量级实现版本,专为微控制器设计。
安装 MicroPython 固件到 ESP32
为了使 ESP32 能够运行 MicroPython 并支持蓝牙功能,首先需要安装带有 BLE 和 BT 协议栈支持的固件文件[^1]。可以通过 esptool.py 工具来刷写官方发布的二进制镜像至设备中。
初始化 WebREPL 或串口连接
一旦成功烧录好固件之后就可以利用 Web 浏览器访问 WebREPL 接口或者借助 USB-TTL 适配器建立 UART 通信链路来进行后续操作了。
配置并启动蓝牙服务
下面是一段简单的代码片段用于配置和激活 ESP32 的经典蓝牙(BT)模式:
from bluetooth import Bluetooth
bt = Bluetooth()
print('BT address:', bt.address())
对于低功耗蓝牙(Bluetooth Low Energy, BLE),可以创建自定义的服务端点和服务特性如下所示:
import ubluetooth as bt
from ble_advertising import advertising_payload
def demo():
name = 'MyESP32'
# 创建广播负载数据包
adv_data = advertising_payload(name=name, services=[0x181A])
ble = bt.BLE()
ble.active(True)
# 设置广告参数
ble.gap_advertise(interval_us=100_000, adv_data=adv_data)
demo()
上述脚本会设置一个名为"MyESP32"的可发现状态,并提供健康温度测量(HRM)服务给附近的客户端设备。
发布通知或读取特征值
当有中央节点连接时,还可以进一步处理来自远程设备的通知事件或是响应其对特定属性值的请求。
class HRMService:
UUID_HRS_SERVICE = bt.UUID(0x180D)
UUID_HRM_MEASUREMENT_CHAR = bt.UUID(0x2A37)
def __init__(self, ble):
self._ble = ble
((self._hrm,),) = ble.gatts_register_services((
(self.UUID_HRS_SERVICE,
(
(self.UUID_HRM_MEASUREMENT_CHAR,
bt.FLAG_READ | bt.FLAG_NOTIFY),
),
),
))
self._connections = set()
def notify(self, value):
if not self._connections:
return
data = bytes([value & 0xFF])
for conn_handle in list(self._connections):
try:
self._ble.gatts_notify(conn_handle, self._hrm, data)
except Exception as e:
print(e)
# 示例:每秒发送一次心跳速率更新消息
service = HRMService(ble)
while True:
service.notify(int(time.time()) % 100 + 60)
time.sleep_ms(1000)
这段代码展示了如何注册一个心率监测服务以及周期性的向已连接的客户机推送新的测量结果。
相关推荐


















