【问题标题】:Bluetooth Low Energy: Read/Write to sensors attached to RedBearLab Shield低功耗蓝牙:读取/写入连接到 RedBearLab Shield 的传感器
【发布时间】:2014-02-16 04:45:53
【问题描述】:

我将 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 上运行的 Java 中开发类似的(iOS/Android)。

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

char-write-cmd 0x000b 010100

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

char-write-cmd 0x000b A00100

我知道这行得通。我在 Arduino 串行监视器中看到了预期的输出。我很确定它正在读取传感器,但我在 RaspPi 提示中看不到它。我想我需要在 RaspPi 端启用广播读取功能。

有什么建议吗?

【问题讨论】:

  • 嗯,BLE Shield 库的问题在于它们在 GATT 上添加了一个抽象层。他们使用 GATT 来公开用作某种“虚拟 UART”的特性,因此他们可以在其中传递自己的汤。但是,我不太了解gatttool,因为我没有用它来处理BLE。我主要在 OSX 上使用LightBlue.app
  • 已解决并发布在我的lilyhack.wordpress.com/2014/02/03/…

标签: bluetooth arduino bluetooth-lowenergy bluez


【解决方案1】:

好吧,要开始使用 BLE,您必须了解整个 GATT 的工作原理。基本上,您需要在您的 arduino 上设置一些代码,在您的防护罩上的 nRF8001 组件中设置一个配置文件,该配置文件定义“管道”,这是无线电暴露的特征(并使用 gatttool 看到)和您可以从中读取数据或向其发送数据的函数。

要修改和处理gatt 配置文件,并定义那些pipes,您需要使用Nordic 分发的nrfgo 工具。它只是 Windows,但在 OSX 或 linux 上使用 wine 可以很好地工作(我每天都这样做)。

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

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

【讨论】:

    猜你喜欢
    • 2014-02-22
    • 2014-02-13
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多