DS18B20: подключение к ESP32 и Arduino

Цифровой термометр 1-Wire

Цифровой термометр от −55 до +125 °C с точностью ±0,5 °C. Один сигнальный провод, у каждого датчика свой адрес, поэтому на одной линии можно держать десяток термометров.

Как работает

DS18B20 общается по шине 1-Wire: один провод данных (DQ) с подтяжкой к питанию резистором 4,7 кОм. Каждый датчик имеет уникальный 64-битный адрес, поэтому на одну линию можно повесить много термометров и читать их по адресам. Температура измеряется с разрешением до 12 бит (шаг 0,0625 °C), преобразование занимает до 750 мс.

В скетче используются библиотеки OneWire и DallasTemperature: requestTemperatures() запускает измерение, getTempCByIndex(0) читает первый датчик. Значение -127 (DEVICE_DISCONNECTED_C) означает, что датчик не отвечает.

Выводы

ВыводНазначение
DQлиния данных 1-Wire, подтяжка 4,7 кОм к VDD
VDDпитание 3,0–5,5 В
GNDобщий провод

Подключение к ESP32

DS18B20ESP32
DQGPIO4
VDD3V3
GNDGND

Схема из примера «DS18B20: цифровой термометр на шине 1-Wire».

DS18B20: цифровой термометр на шине 1-Wire

Открыть пример целиком
Код скетча
#include <OneWire.h>
#include <DallasTemperature.h>

// Данные DS18B20 — на GPIO4. На настоящей плате между этим выводом и 3V3
// ставят резистор 4,7 кОм; в симуляторе подтяжка на линии есть всегда.
#define ONE_WIRE_PIN 4

OneWire oneWire(ONE_WIRE_PIN);
DallasTemperature sensors(&oneWire);

void setup() {
  Serial.begin(115200);
  sensors.begin();
  Serial.printf("датчиков на шине: %d\n", sensors.getDeviceCount());
}

void loop() {
  sensors.requestTemperatures();             // запустить измерение и дождаться его
  float t = sensors.getTempCByIndex(0);      // первый датчик на шине

  if (t == DEVICE_DISCONNECTED_C) {
    Serial.println("датчик не отвечает");
  } else {
    Serial.printf("%.2f °C\n", t);
  }
  delay(1000);
}

В железе

У платы-модуля подтяжка 4,7 кОм обычно уже распаяна, а у корпуса TO-92 и водонепроницаемого зонда её ставят самостоятельно между DQ и VDD. Провода зонда: красный — питание, чёрный — земля, жёлтый или белый — данные.

Частые ошибки

Другие детали