You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Arduino Nano 33 BLE蓝牙传值到树莓派 如何接收为数值类型

解决方案

问题核心原因

你当前拿到的{'rsp': ['wr']}是bluepy库中write()方法的正常返回值,代表写入特征值操作成功,并不是Arduino返回的业务数据。你的代码只实现了树莓派向Arduino写数据的逻辑,没有执行读取特征值或者监听BLE通知的操作,自然拿不到Arduino侧的数值,也完全不需要改用socket实现,BLE原生的特征值读写、通知机制足以满足需求。


代码修改方案

一、Arduino侧调整(按需选择)

如果只是需要树莓派主动读取当前特征值,你的现有代码已经满足BLERead权限要求,无需修改。如果需要Arduino主动向树莓派推送数值,可按如下调整特征值配置,增加通知权限:

// 将原来的BLEByteCharacteristic替换为以下配置,可根据传输数值的类型选择BLEIntCharacteristic、BLEFloatCharacteristic等
BLEByteCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite | BLENotify);

后续需要推送数值时,直接调用switchCharacteristic.writeValue(你的数值)即可自动推送给已连接的树莓派。


二、树莓派Python侧调整

场景1:树莓派主动读取当前特征值

import bluepy.btle as btle

p1 = btle.Peripheral("2D:20:48:59:8F:B4")
# 直接用固定UUID查找服务和特征值,不要依赖索引,避免顺序变动导致取错对象
s1 = p1.getServiceByUUID("19B10000-E8F2-537E-4F6C-D104768A1214")
c1 = s1.getCharacteristics("19B10001-E8F2-537E-4F6C-D104768A1214")[0]

# 写入操作,返回的就是你之前看到的写成功响应
write_resp = c1.write(bytes([1]))
print("写操作响应:", write_resp)

# 读取特征值并转成数字
raw_value = c1.read()
num_value = int.from_bytes(raw_value, byteorder='little', signed=False)
print("读取到的数值:", num_value)

p1.disconnect()

场景2:监听Arduino主动推送的数值

import bluepy.btle as btle

# 通知回调函数,收到Arduino推送数据时自动触发
def handle_notification(handle, data):
    num_value = int.from_bytes(data, byteorder='little', signed=False)
    print(f"收到Arduino推送的数值:{num_value}")

p1 = btle.Peripheral("2D:20:48:59:8F:B4")
s1 = p1.getServiceByUUID("19B10000-E8F2-537E-4F6C-D104768A1214")
c1 = s1.getCharacteristics("19B10001-E8F2-537E-4F6C-D104768A1214")[0]

# 绑定通知回调
p1.setDelegate( type('MyDelegate', (btle.DefaultDelegate,), {'handleNotification': handle_notification})() )
# 开启特征值通知
ccc_desc = c1.getDescriptors(forUUID=0x2902)[0]
ccc_desc.write(b'\x01\x00')

# 循环监听通知
while True:
    p1.waitForNotifications(1.0)

注意事项

  • 数值传输直接使用字节类型,不要转成字符串编码,可降低解析成本
  • 大小端配置根据你Arduino侧写入的数值规则调整即可,默认嵌入式设备一般用小端

内容的提问来源于stack exchange,提问作者jonghun lim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 23:27:02