蓝牙低功耗:读取/写入连接到RedBearLab Shield的传感器

时间:2014-01-25 01:30:48

标签: bluetooth arduino bluetooth-lowenergy bluez

我将RedBearLab BLE屏蔽连接到Arduino UNO R3。我可以使用Rasp-Pi(附带的CSR4.0加密狗)中的gatttool连接到它。我有一些传感器(FSR)连接到模拟引脚,LED连接到Arduino中的数字引脚。我的目标是读取/写入通过BLE连接到Arduino的任何东西。

作为一个样本,我正在研究这个link。看来我需要知道传感器的手柄,配置寄存器#等来读/写。但我不知道如何找到与连接到屏蔽的传感器相关的手柄/ uuid。

例如我在下面看到。

[xx:xx:xx:xx:xx:xx][LE]> char-desc
handle: 0x0001, uuid: 2800
handle: 0x0002, uuid: 2803
handle: 0x0003, uuid: 2a00
handle: 0x0004, uuid: 2803
handle: 0x0005, uuid: 2a01
handle: 0x0006, uuid: 2803
handle: 0x0007, uuid: 2a04
handle: 0x0008, uuid: 2800
handle: 0x0009, uuid: 2800
handle: 0x000a, uuid: 2803
handle: 0x000b, uuid: 713d0003-503e-4c75-ba94-3148f18d941e
handle: 0x000c, uuid: 2803
handle: 0x000d, uuid: 713d0002-503e-4c75-ba94-3148f18d941e
handle: 0x000e, uuid: 2902
handle: 0x000f, uuid: 2800
handle: 0x0010, uuid: 2803
handle: 0x0011, uuid: 2a27    
Discover descriptors finished: No attribute found within the given range
[xx:xx:xx:xx:xx:xx][LE]> char-read-hnd 0x0001
Characteristic value/descriptor: 00 18
[xx:xx:xx:xx:xx:xx][LE]> char-read-hnd 0x000b
Error: Characteristic value/descriptor read failed: Attribute can't be read

我怎么知道它们中的哪一个是我附在盾牌上的FSR?

更新

我正在使用RedBearLab示例 - simplecontrol

所以Arduino和iOS / Android代码都在那里。我的目标是从gatttool的角度理解,这样我就可以在Raspberry Pi中运行类似的(iOS / Android)类似的东西。

从代码中,我可以找出要写的地址。例如 - 打开连接到数字输出引脚的LED,工作

char-write-cmd 0x000b 010100

同样,要打开传感器读取功能,我需要在下面写下

char-write-cmd 0x000b A00100

我知道这很有效。我看到Arduino串口监视器的预期输出。我很确定它正在读取传感器,但我无法在RaspPi提示中看到它。我想我需要在RaspPi端启用广播阅读功能。

有什么建议吗?

1 个答案:

答案 0 :(得分:6)

好吧,为了与BLE合作,您必须了解整个GATT的工作原理。基本上,你需要在arduino上设置一些代码,在你的盾牌上的nRF8001组件中设置一个配置文件,它定义了“管道”,它是无线电所暴露的特征之间的链接(并且使用gatttool看到)以及可以从中读取数据或向其发送数据的函数。

要修改和处理gatt个人资料并定义pipes,您需要使用Nordic分发的nrfgo工具。它只是Windows,但它在OSX或Linux上使用葡萄酒完全正常(我每天都这样做)。

您可以加载配置文件并对其进行修改或创建新配置文件,这取决于您。我还建议您查看nordic examples中关于如何为nrf8001 + Arduino设置配置文件的devzone,这些示例非常清楚。

然后,一旦你完成了所有特征,你就只能读/写你正在处理的特征。具有可用特征并不意味着它可以被读/写,您可能需要订阅它或它可能总是返回错误。请记住,您列出的大多数特征都是gatt用于使整个gatt系统工作的特性,并且通常被抽象BLE内容的库隐藏。