首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蓝鳍金枪鱼NRF52最大连接间隔速度(connInterval)

蓝鳍金枪鱼NRF52最大连接间隔速度(connInterval)
EN

Stack Overflow用户
提问于 2019-01-01 15:20:02
回答 1查看 485关注 0票数 1

我有一个Adafruit NRF52连接到Adafruit BNO055 9轴方向传感器,收集3轴的绝对方向加上3轴的加速度(总共6漂浮),并通过漂白发送蓝牙。我需要bleuart每7.5毫秒更新一次新的值行,但是当我运行它时,它不会每秒钟打印超过20行的新值行。本质上,我需要的价值观,以尽快更新,因为我正在测量非常高速,高保真度的运动。

在每一行的开头,我也有三位数,表示IMU上每个传感器的校准状态。每一行打印的内容如下:

代码语言:javascript
复制
303 68.69   4.19    -2.19   -0.12   0.14    -0.40

目前,我正在用最新的iOs版本访问我的iphone,理论上它可以处理7.5ms的间隔。

我已经读过,解决方案可能是缓冲这些值,并在更大的连接间隔内发送更大的块,但我不确定如何做到这一点。

我的相关Arduino代码如下:

代码语言:javascript
复制
Bluefruit.setConnIntervalMS(7.5, 20);

void loop()
{
    imu::Vector<3> accel = 
    bno.getVector(Adafruit_BNO055::VECTOR_LINEARACCEL);

    /* Get a new sensor event */
    sensors_event_t event;
    bno.getEvent(&event);

    /* Display the floating point data */
    bleuart.print(event.orientation.x);
    bleuart.print("\t");
    bleuart.print(event.orientation.y);
    bleuart.print("\t");
    bleuart.print(event.orientation.z);
    bleuart.print("\t");

    /* Display the floating point data for Linear Acceleration */
    bleuart.print(accel.x());
    bleuart.print("\t");
    bleuart.print(accel.y());
    bleuart.print("\t");
    bleuart.print(accel.z());
    bleuart.print("\n");
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-03 09:58:52

iOS实际上不支持7.5ms连接间隔。检查苹果开发者指南中的连接参数部分(11.6)。仅仅因为你指定的CI低并不意味着你真的会得到它。在这个场景中,nRF52是从服务器,并且只请求主机(您的手机)的较低间隔。如果主人愿意的话,他可以完全无视你的请求。

您会更好,正如您已经回避的那样,缓冲您的数据并通过自定义特性发送数据。计算出您需要多少字节,也许您可以将几个读数打包到一个BLE写入中。如果您确实在处理吞吐量问题,那么您将需要一个具有多个特性的自定义服务。我最近在一个项目中工作,该项目在BLE上流8通道数据(~125 the /16位),具有三个特性,这接近您可以达到的最大吞吐量。

顺便说一句:根据每秒打印的行数来判断数据吞吐量是一个很大的否定。打印功能通常有巨大的开销,并将极大地影响您的测量吞吐量,以一种负面的方式。

如果我还能帮上忙的话请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53996602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档