Схема подключения ESP32 ↔ DS18B20
Назначение
Подробная pin-by-pin проводка для температурного датчика. Используйте эту страницу, когда подключаете водонепроницаемый зонд DS18B20 к ESP32.
1-Wire соединения DS18B20
flowchart LR
subgraph ESP["ESP32 DevKit"]
GPIO4[GPIO 4<br/>1-Wire data line]
VCC_3V3[3.3V power rail]
GND[GND]
end
subgraph PULLUP["Pull-up resistor"]
R4K7[4.7 kOhm resistor]
end
subgraph DS18B20_PROBE["DS18B20 waterproof probe<br/>(3-wire version)"]
DATA[Data / DQ - Brown or Yellow wire]
VCC[VCC / VDD - Red wire]
GND[GND / GND - Black wire]
end
ESP -- "GPIO 4" --> DATA
VCC_3V3 -- "3.3V" --> VCC
GND -- "GND" --> GND
VCC_3V3 -- "Connect here" --> R4K7
R4K7 -- "Connect here" --> DATA
style ESP fill:#fff3e0,stroke:#ef6c00
style PULLUP fill:#fce4ec,stroke:#c2185b
style DS18B20_PROBE fill:#e8f5e9,stroke:#2e7d32
Таблица pin allocation
| DS18B20 wire colour | Function | ESP32 connection | Notes |
|---|---|---|---|
| Red | VCC (power) | 3.3V on ESP32 | Не подключайте к 5V - на этой плате DS18B20 работает как 3.3V device |
| Black | GND (ground) | GND on ESP32 | Должна иметь общую землю с ESP32 |
| Brown or Yellow | Data / DQ | GPIO 4 через 4.7 kOhm pull-up | Pull-up обязателен для корректной 1-Wire работы |
Почему pull-up resistor важен
DS18B20 использует 1-Wire protocol, которому нужен pull-up resistor на data line, чтобы удерживать её в logic high, когда ни одно устройство ей не управляет. Без этого resistor:
- probe может появляться в firmware scans только периодически;
- temperature readings будут ненадёжными или полностью отсутствовать;
- отладка станет запутанной, потому что симптомы похожи на dead sensor.
flowchart LR
subgraph WITHOUT_PULLUP["❌ Without pull-up"]
DATA_LINE[Data line floating]
ESP_NO_DATA[ESP32 reads garbage<br/>or no device found]
end
subgraph WITH_PULLUP["✅ With 4.7 kOhm pull-up"]
DATA_STABLE[Data line held at 3.3V idle]
ESP_OK[ESP32 reads correctly]
end
style WITHOUT_PULLUP fill:#ffebee,stroke:#c62828
style WITH_PULLUP fill:#e8f5e9,stroke:#2e7d32
Firmware config
Прошивка использует эти constants для DS18B20 connection:
DS18B20_PIN = 4- GPIO pin для 1-Wire data line.- 4.7 kOhm pull-up - это hardware component, он не настраивается в software.
Физическая проводка на breadboard
flowchart TB
subgraph BREADBOARD["Breadboard layout"]
ESP[(ESP32 DevKit)]
RESISTOR[4.7 kOhm resistor]
DS18B20_PROBE[DS18B20 probe connector]
end
ESP -- "GPIO 4 → Data wire" --> DS18B20_PROBE
ESP -- "3.3V → VCC wire" --> DS18B20_PROBE
ESP -- "GND → GND wire" --> DS18B20_PROBE
ESP -- "3.3V rail" --> RESISTOR
RESISTOR -- "Other end to Data line" --> DS18B20_PROBE
style BREADBOARD fill:#fafafa,stroke:#9e9e9e,stroke-dasharray: 5 5
Шаги подключения
- Подключите красный wire (VCC) от DS18B20 к 3.3V rail на breadboard, затем к ESP32 3.3V pin.
- Подключите чёрный wire (GND) от DS18B20 к GND rail на breadboard, затем к ESP32 GND pin.
- Подключите один конец 4.7 kOhm resistor к 3.3V rail.
- Подключите другой конец 4.7 kOhm resistor к data line (brown or yellow wire).
- Подключите data line от DS18B20 к GPIO 4 на ESP32.
Проверка соединения
После подключения можно проверить соединение сканированием 1-Wire devices:
// In setup(), after initializing the OneWire library:
auto devices = oneWire->search();
if (devices.empty()) {
Serial.println("No DS18B20 found! Check pull-up resistor and wiring.");
} else {
Serial.printf("Found DS18B20 with address: %s
", devices[0].toString().c_str());
}
Если устройство не найдено:
- убедитесь, что 4.7 kOhm resistor подключен между 3.3V и data line;
- проверьте, что все провода надёжно вставлены в breadboard rows;
- попробуйте поменять data wire (brown/yellow) с VCC - возможно, провода определены неверно;
- измерьте напряжение на data line мультиметром - в idle оно должно быть около 3.3V.
Частые проблемы
| Симптом | Что проверить |
|---|---|
| No device found during scan | Убедитесь, что pull-up resistor подключен между 3.3V и data line |
| Intermittent readings | Проверьте все breadboard connections - loose wires дают intermittent contact |
| Показания -127°C или 85°C | Sensor не отвечает - снова проверьте проводку, особенно pull-up |
| Показания стабильные, но неправильные | Probe может быть повреждён или измерять не то, что вы ожидаете |