我有一个esp32微控制器,我试图从带有SHT30传感器(digital-971521.pdf)的NRF52832信标中读取温度/湿度值,但是在BLE广告中没有任何服务。很长一段时间后,我在BLE服务器上找到了“制造商数据”,这些数据在每次连接后都会发生变化。我怀疑传感器的读取字节是否在“制造商数据”上,以及我如何提取它。
输出“制造商数据”的示例: 59000215fda5069300010002d8 0eee14362c196d66dfac1500 ->此部分更改每个连接
我尝试将这个十六进制值转换为大端uint16,并发现了一些有趣的值,但没有正确的结果。
谢谢:)
编辑:我放置这个数据表是因为展示了SHT30如何以这种格式发送数据(第10页):来自SHT30传感器的数据发送格式
信标链接:这里
发布于 2019-03-13 08:39:47
如果您想要“反向工程”制造商的数据,以寻找温度读数,你将需要知道温度是如何编码/计算的传感器。换句话说,如何将传感器中的原始数据/字节转换为实际值。
我在SHT3x代码示例里发现了这个
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;
}考虑到这一点,我会尝试这样的方法:
- for `0eee14362c196d66dfac1500`, that'd be `0e` + `ee`, then `ee` + `14`, etc.
- for example, for `0e` + `ee`, try both `0eee` and `ee0e`
rawValue来得到温度。然后,你可以看到,你得到的任何输出实际上类似于温度读数。
https://stackoverflow.com/questions/55101355
复制相似问题