Praktikum Monitoring Suhu Multi-Titik dengan ESP32 dan DS18B20
Pelajari bus 1-Wire dengan ESP32 dan beberapa DS18B20: discovery alamat sensor, pembacaan multi-titik, identitas device, dan telemetry.
Artikel ini disusun sebagai panduan teknis Ruang IoT. Gunakan daftar isi untuk berpindah antarbagian dan ikuti langkah secara berurutan ketika artikel memuat praktik atau konfigurasi.
DS18B20 menggunakan bus 1-Wire sehingga beberapa sensor dapat berbagi satu pin data dan masing-masing mempunyai alamat unik. Ini cocok untuk praktikum monitoring suhu multi-titik, misalnya inlet–outlet, beberapa rak, atau beberapa titik eksperimen. Tujuan utama bukan sekadar membaca suhu, tetapi mempelajari discovery device dan validasi sensor.
Perangkat dan wiring
| Bagian | Koneksi |
|---|---|
| DATA DS18B20 | GPIO 4 |
| Pull-up | 4.7 kΩ antara DATA dan 3.3V |
| VDD | 3.3V |
| GND | GND |
Untuk praktikum awal gunakan mode catu normal tiga kabel. Jika memasang beberapa sensor, hubungkan DATA secara paralel pada bus yang sama dan pertahankan ground bersama.
Library
Instal OneWire dan DallasTemperature. Library DallasTemperature menyediakan discovery dan pembacaan temperatur di atas komunikasi 1-Wire.
Program membaca beberapa sensor
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void printAddress(DeviceAddress address) {
for (uint8_t i = 0; i < 8; i++) {
if (address[i] < 16) Serial.print('0');
Serial.print(address[i], HEX);
}
}
void setup() {
Serial.begin(115200);
sensors.begin();
Serial.printf("Jumlah sensor: %d\n", sensors.getDeviceCount());
DeviceAddress address;
for (int i = 0; i < sensors.getDeviceCount(); i++) {
if (sensors.getAddress(address, i)) {
Serial.printf("Sensor %d: ", i);
printAddress(address);
Serial.println();
}
}
}
void loop() {
sensors.requestTemperatures();
for (int i = 0; i < sensors.getDeviceCount(); i++) {
float c = sensors.getTempCByIndex(i);
Serial.printf("T%d = %.2f C\n", i, c);
}
Serial.println("---");
delay(3000);
}Mengapa alamat sensor penting?
Urutan index dapat berubah ketika topologi bus berubah. Untuk implementasi yang membutuhkan identitas tetap, simpan alamat 64-bit tiap sensor dan petakan ke nama logis, misalnya inlet, outlet, atau rack_1. Dengan demikian dashboard tidak tertukar bila sensor ditambah.
Telemetry multi-titik
Kirim payload yang menyertakan identitas sensor, bukan hanya nilai. Contoh konsep: {"sensor":"inlet","temperature":26.8}. Pada sistem dengan banyak titik, pertimbangkan satu payload berisi beberapa field agar timestamp pengukuran tetap sekelompok.
Validasi dan troubleshooting
- Jika jumlah sensor 0, periksa resistor pull-up, wiring, dan ground.
- Jika muncul nilai error/putus, jangan simpan sebagai suhu nyata.
- Bandingkan dua sensor pada lingkungan yang sama untuk melihat selisih.
- Gunakan kabel yang sesuai dan uji kestabilan jika bus semakin panjang.
Kriteria keberhasilan
Semua sensor terdeteksi, alamat dapat dicatat, suhu terbaca konsisten, dan identitas titik tidak hanya bergantung pada index. Ini menjadi dasar yang baik untuk monitoring multi-zona.
Referensi resmi dan bacaan lanjut
Gunakan dokumentasi resmi berikut untuk memeriksa API, kompatibilitas board, dan perubahan versi library:
Sudah memahami alurnya?
Praktikkan konsep yang baru dipelajari melalui project, perangkat ESP32, telemetry, dashboard, atau Virtual Lab di Ruang IoT.