我有一个esp32微控制器,我试图从带有SHT30传感器(http://www.mouser.com/ds/2/682/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital-971521.pdf)的NRF52832信标读取温度/湿度值,但是在BLE广告中没有服务。很长一段时间后,我发现“制造商数据”在BLE服务器上的每次连接后都会发生变化。我怀疑的是传感器的读取字节是否在“制造商数据”上,以及我如何提取它。
输出“制造商数据”的示例:59000215fda5069300010002d8 0eee14362c196d66dfac1500 - >此部分更改每个连接
我尝试将这个十六进制值转换为big endian uint16,并发现了一些有趣的值,但没有任何正确的。
谢谢 :)
编辑:我把这个数据表放在一起,因为它显示了SHT30以这种格式发送数据的方式(第10页):Data send format from the SHT30 sensor
灯塔链接:here
如果您想尝试“反向工程”制造商数据以搜索温度读数,您需要知道如何为该传感器编码/计算温度。换句话说,如何将传感器中的原始数据/字节转换为实际值。
我在code samples for 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;
}
考虑到这一点,我会尝试这样的事情:
0eee14362c196d66dfac1500
,那将是0e
+ ee
,然后是ee
+ 14
等。0e
+ ee
,尝试0eee
和ee0e
rawValue
来获取温度。然后你可以看到你得到的任何输出是否实际上类似于温度读数。