首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >信标NRF52832从组装的SHT30传感器读取温度/湿度值

信标NRF52832从组装的SHT30传感器读取温度/湿度值
EN

Stack Overflow用户
提问于 2019-03-11 11:57:02
回答 1查看 494关注 0票数 0

我有一个esp32微控制器,我试图从带有SHT30传感器(digital-971521.pdf)的NRF52832信标中读取温度/湿度值,但是在BLE广告中没有任何服务。很长一段时间后,我在BLE服务器上找到了“制造商数据”,这些数据在每次连接后都会发生变化。我怀疑传感器的读取字节是否在“制造商数据”上,以及我如何提取它。

输出“制造商数据”的示例: 59000215fda5069300010002d8 0eee14362c196d66dfac1500 ->此部分更改每个连接

我尝试将这个十六进制值转换为大端uint16,并发现了一些有趣的值,但没有正确的结果。

谢谢:)

编辑:我放置这个数据表是因为展示了SHT30如何以这种格式发送数据(第10页):来自SHT30传感器的数据发送格式

信标链接:这里

EN

回答 1

Stack Overflow用户

发布于 2019-03-13 08:39:47

如果您想要“反向工程”制造商的数据,以寻找温度读数,你将需要知道温度是如何编码/计算的传感器。换句话说,如何将传感器中的原始数据/字节转换为实际值。

我在SHT3x代码示例里发现了这个

代码语言:javascript
复制
static ft SHT3X_CalcTemperature(u16t rawValue)
{
  // calculate temperature [°C]
  // T = -45 + 175 * rawValue / (2^16-1)
  return 175.0f * (ft)rawValue / 65535.0f - 45.0f;
}

考虑到这一点,我会尝试这样的方法:

  1. 尝试制造商数据中的每一对连续字节。
代码语言:javascript
复制
- for `0eee14362c196d66dfac1500`, that'd be `0e` + `ee`, then `ee` + `14`, etc.

  1. 将这两个字节转换为uint16。因为我们不知道它的本质,所以你需要同时尝试MSB和LSB。
代码语言:javascript
复制
- for example, for `0e` + `ee`, try both `0eee` and `ee0e`

  1. 使用这个uint16作为上面函数的rawValue来得到温度。

然后,你可以看到,你得到的任何输出实际上类似于温度读数。

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

https://stackoverflow.com/questions/55101355

复制
相关文章

相似问题

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