Маяк NRF52832 считывает значение температуры / влажности с датчика SHT30 в сборе - PullRequest
0 голосов
/ 11 марта 2019

У меня есть микроконтроллер esp32, и я пытаюсь прочитать значение температуры / влажности с маяка NRF52832 с датчиком SHT30 (http://www.mouser.com/ds/2/682/Sensirion_Humidity_Sensors_SHT3x_Datasheet_digital-971521.pdf), но в рекламе BLE нет службы). Спустя долгое время я нашел «данные производителя», которые меняются после каждого подключения на сервере BLE. Я сомневаюсь, что считанные байты датчика находятся в «данных производителя» и как я могу их извлечь.

Пример вывода «Данные производителя»: 59000215fda5069300010002d8 0eee14362c196d66dfac1500 -> эта часть меняет каждое соединение

Я попытался преобразовать эти шестнадцатеричные значения в старшие порядковые номера uint16 и нашел несколько интересных значений, но ничего не получилось.

Спасибо:)

Изменить: Я поместил этот лист данных, потому что показывает, как SHT30 отправляет данные в этом формате (стр. 10): Формат отправки данных с датчика SHT30

Ссылка на маяк: здесь

1 Ответ

0 голосов
/ 13 марта 2019

Если вы хотите попытаться «перепроектировать» данные производителя в поисках показаний температуры, вам нужно знать, как температура кодируется / рассчитывается для этого датчика.Другими словами, как преобразовать необработанные данные / байты от датчика в фактическое значение.

Я нашел это в примерах кода для 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;
}

Имея это в виду, я бы попробовал что-то вроде этого:

  1. Попробуйте каждую последовательную пару байтов в данных производителя.

    • для 0eee14362c196d66dfac1500это будет 0e + ee, затем ee + 14 и т. д.
  2. Преобразование двух байтов в uint16.Поскольку мы не знаем порядка байтов, вам нужно попробовать MSB и LSB.

    • , например, для 0e + ee, попробуйте оба 0eee и ee0e
  3. Используйте uint16 в качестве rawValue для функции, указанной выше, чтобы получить температуру.

Тогда вы можете увидеть, есть ливыходной сигнал на самом деле напоминает показания температуры.

...