Подключение DS18B20 к ESP32
Цифровой термометр 1-Wire
DS18B20 к ESP32 — три провода: VDD на 3,3 В, GND и DQ на любой GPIO. На линию данных между DQ и питанием ставят подтяжку 4,7 кОм. Датчик работает от 3,0 до 5,5 В, поэтому с ESP32 совместим без делителей.
Схема подключения DS18B20 к ESP32
| DS18B20 | ESP32 |
|---|---|
| DQ | GPIO4 |
| VDD | 3V3 |
| GND | GND |
Схема из примера «DS18B20: цифровой термометр на шине 1-Wire».
Выводы DS18B20
| Вывод | Назначение |
|---|---|
| DQ | линия данных 1-Wire, подтяжка 4,7 кОм к VDD |
| VDD | питание 3,0–5,5 В |
| GND | общий провод |
Код для ESP32
#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);
}
Скетч можно править и запускать в симуляторе без платы и установки среды.
Что учесть на ESP32
- Шину 1-Wire формирует программа, поэтому подойдёт любой GPIO, кроме входных 34–39.
- На длинной линии (десятки метров) подтяжку уменьшают до 2,2–3,3 кОм, лучше брать витую пару.
В железе
У платы-модуля подтяжка 4,7 кОм обычно уже распаяна, а у корпуса TO-92 и водонепроницаемого зонда её ставят самостоятельно между DQ и VDD. Провода зонда: красный — питание, чёрный — земля, жёлтый или белый — данные.
Частые ошибки при подключении к ESP32
- DQ на GPIO34–39: эти выводы только входные, а шине 1-Wire нужно и управлять линией.
- Перепутать выводы корпуса TO-92 (плоской стороной к себе: GND, DQ, VDD слева направо): обратная полярность греет датчик за секунды.
- Нет подтяжки 4,7 кОм на линии данных: библиотека возвращает
-127вместо температуры. - Перепутаны выводы корпуса TO-92: при обратной полярности датчик за секунды нагревается и выходит из строя.
- Показание 85,0 °C: это значение датчика до первого измерения. Вызывайте
requestTemperatures()и дождитесь окончания преобразования. - Отключить ожидание (
setWaitForConversion(false)) и читать значение сразу: преобразование занимает до 750 мс, и возвращается старое показание.
Ещё по теме
Другие детали для ESP32
HC-SR04DHT22 (AM2302)BME280DS3231SSD1306 OLED 0,96″LCD 1602 с I2CMAX7219TM1637MPU6050 (GY-521)Модуль релеWS2812B (NeoPixel)KY-040Клавиатура 4×4HX711ФоторезисторМодуль microSDRGB-светодиодСервопривод SG9074HC595ИК-приёмник (VS1838B)TFT ST7735 1,8″Шаговый двигательКнопкаПотенциометрПьезопищалкаСветодиодПолзунковый переключательHC-SR501TTP223Датчик влажности почвыMQ-2LM35Джойстик KY-023DHT11HTU21DSN65HVD230