Sensor Suhu DS18B20 dengan Arduino, ESP32, dan Pico
Pengkabelan DS18B20 di Arduino: 1-Wire, pull-up 4,7 kΩ, probe tahan air, beberapa sensor di satu pin, kode OneWire dan DallasTemperature, plus contoh ESP32 dan Pico.
DS18B20 adalah sensor suhu digital dan salah satu cara paling akurat sekaligus fleksibel untuk mengukur suhu dengan Arduino. Sensor ini mengukur dari −55 °C sampai +125 °C, punya akurasi ±0,5 °C di antara −10 °C dan +85 °C, dan mengirim hasilnya sebagai angka digital, bukan tegangan analog, sehingga bacaannya tidak menurun meski kabelnya panjang. Kartu as terbesarnya adalah komunikasi 1-Wire: kamu bisa menghubungkan puluhan DS18B20 ke satu pin data dan membaca masing-masing secara terpisah lewat alamat uniknya sendiri.
Di artikel ini kamu akan mempelajari cara kerja DS18B20, logika bus 1-Wire, kenapa sensor ini selalu butuh resistor pull-up 4,7 kΩ, versi probe tahan air, dan warna kabelnya. Setelah itu kita bahas langkah demi langkah kode untuk satu sensor dan banyak sensor dengan library OneWire dan DallasTemperature, pembacaan non-blocking di ESP32, dan pemakaiannya dengan MicroPython di Raspberry Pi Pico. Di bagian akhir ada penyebab dan solusi untuk error −127 °C dan 85 °C yang sering muncul.

Apa itu DS18B20 dan bagaimana cara kerjanya?
Di dalam DS18B20 ada elemen pengindra suhu, pengubah analog ke digital, memori kecil (scratchpad), dan nomor seri 64-bit yang unik yang ditulis di pabrik. Ketika mikrokontroler mengirim perintah konversi, sensor mengukur suhu, menulis hasilnya ke memorinya sebagai angka dua byte, lalu menunggu untuk dibaca. Karena pengukurannya dilakukan oleh sensor itu sendiri, tidak ada galat dari input analog Arduino, tegangan referensinya, atau hambatan kabel. Berbeda dengan termistor NTC, kamu juga tidak butuh tabel atau rumus kalibrasi: nilai yang kamu baca langsung dalam derajat Celsius.
| Fitur | Nilai |
|---|---|
| Rentang ukur | −55 °C … +125 °C |
| Akurasi | ±0,5 °C (di antara −10 °C dan +85 °C) |
| Resolusi | Bisa dipilih dari 9 sampai 12 bit (0,5 °C … 0,0625 °C) |
| Tegangan catu | 3,0–5,5 V (bekerja dengan Arduino, ESP32, dan Pico) |
| Arus | Sekitar 1 mA selama konversi, di bawah 1 µA dalam mode siaga |
| Antarmuka | 1-Wire (satu jalur data + GND) |
| Alamat | Kode ROM 64-bit; kode keluarga 0x28 |
| Kemasan | TO-92 (3 kaki) atau probe tahan air dari baja tahan karat |
Resolusi sensor bisa kamu pilih lewat software. Resolusi lebih tinggi memberi langkah lebih halus, tetapi waktu konversinya lebih lama. Bawaannya 12 bit, pilihan yang tepat untuk sebagian besar proyek; kalau butuh pembacaan yang sangat cepat, kamu bisa turun ke 9 atau 10 bit.
| Resolusi | Langkah | Waktu konversi maksimum |
|---|---|---|
| 9 bit | 0,5 °C | 93,75 ms |
| 10 bit | 0,25 °C | 187,5 ms |
| 11 bit | 0,125 °C | 375 ms |
| 12 bit (bawaan) | 0,0625 °C | 750 ms |
Apa itu 1-Wire? Komunikasi lewat satu kabel
Sesuai namanya, 1-Wire adalah protokol yang membawa data lewat satu jalur, dengan ground (GND) dipakai bersama. Di bus ada satu master (Arduino) dan satu atau beberapa perangkat slave (DS18B20). Ketika bus sedang diam, resistor pull-up menahannya di HIGH. Siapa pun yang ingin bicara menarik jalur ke LOW dalam waktu singkat; bit-bitnya dikodekan dalam panjang pulsa LOW ini, yang diukur dalam mikrodetik. Setiap pertukaran data diawali pulsa reset, dan sensor menjawab dengan pulsa kehadiran yang berarti “aku di sini”.
Karena tidak ada perangkat yang memaksa jalur ke HIGH (desain open-drain), kamu bisa memasang sensor sebanyak apa pun di bus yang sama tanpa bentrok. Master pertama-tama memakai perintah pencarian untuk menemukan semua alamat 64-bit di bus, lalu memilih sensor yang diinginkan berdasarkan alamatnya dan berbicara dengannya. Dengan begitu, mengukur suhu di lima titik berbeda hanya memakai satu pin, bukan lima.
DS18B20 vs DHT11 vs DHT22 vs NTC
| Fitur | DS18B20 | DHT11 | DHT22 | Termistor NTC |
|---|---|---|---|---|
| Rentang suhu | −55 … +125 °C | 0 … 50 °C | −40 … +80 °C | Sekitar −40 … +125 °C (tergantung model) |
| Akurasi | ±0,5 °C | ±2 °C | ±0,5 °C | Tergantung kalibrasi |
| Output | Digital (1-Wire) | Digital (satu jalur) | Digital (satu jalur) | Analog (hambatan berubah) |
| Kelembapan | Tidak | Ya | Ya | Tidak |
| Versi tahan air | Ya (probe baja tahan karat) | Tidak | Tidak | Ya (probe) |
| Beberapa sensor di satu pin | Ya | Tidak | Tidak | Tidak |
Singkatnya, kalau kamu juga butuh kelembapan, DHT11 atau DHT22 adalah pilihan yang tepat. Kalau kamu mengukur suhu air, tanah, pipa, atau freezer, ingin memantau beberapa titik dengan satu pin, atau bekerja dengan suhu di bawah nol, DS18B20 tidak ada tandingannya.
Pinout DS18B20 dan warna kabelnya
| Pin | TO-92 (sisi datar menghadapmu) | Kabel probe tahan air | Fungsi |
|---|---|---|---|
| GND | 1 (kiri) | Hitam | Ground |
| DQ | 2 (tengah) | Kuning (putih di beberapa probe) | Jalur data 1-Wire |
| VDD | 3 (kanan) | Merah | Catu 3,0–5,5 V |
Pengkabelan DS18B20: Arduino Uno, ESP32, dan Pico
| DS18B20 | Arduino Uno | ESP32 | Raspberry Pi Pico |
|---|---|---|---|
| VDD (merah) | 5V | 3V3 | 3V3(OUT), pin 36 |
| GND (hitam) | GND | GND | GND, pin 38 |
| DQ (kuning) | D2 | GPIO 4 | GP22, pin 29 |
| Pull-up 4,7 kΩ | Di antara DQ dan 5V | Di antara DQ dan 3V3 | Di antara DQ dan 3V3 |
Resistor pull-up wajib ada di rangkaian ini. Perangkat di bus 1-Wire hanya bisa menarik jalur ke LOW; resistor inilah yang mengembalikannya ke HIGH. Tanpanya, jalur mengambang, sensor tidak ditemukan, dan library mengembalikan −127 °C. Nilai 4,7 kΩ menarik jalur ke atas cukup cepat sambil menjaga arusnya tetap kecil: ketika jalur LOW, hukum Ohm memberikan I = 5 V / 4700 Ω ≈ 1,06 mA. Warna resistor 4,7 kΩ empat gelang adalah kuning, ungu, merah, dan emas; supaya yakin, pakai alat kode warna. Beberapa modul DS18B20 (sensor di board kecil dengan resistor dan LED) sudah terpasang resistor ini, jadi kamu tidak perlu menambahkannya.
Menginstal library
- Di Arduino IDE, buka Tools > Manage Libraries.
- Ketik DallasTemperature di kotak pencarian dan instal library buatan Miles Burton.
- Ketika ditanya soal dependensi, pilih Install all supaya library OneWire buatan Paul Stoffregen ikut terinstal. Kalau tidak ditanya, cari OneWire dan instal secara terpisah.
- Kalau mau, buka File > Examples > DallasTemperature > Simple, sesuaikan nomor pinnya dengan rangkaianmu, lalu coba.
Sketch pertama: membaca satu DS18B20
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4#define ONE_WIRE_BUS 2 // DS18B20 veri pini (DQ) / data pin (DQ)
5
6OneWire oneWire(ONE_WIRE_BUS); // 1-Wire hattı / 1-Wire bus
7DallasTemperature sensors(&oneWire); // sensör kütüphanesi / sensor library
8
9void setup() {
10 Serial.begin(9600);
11 sensors.begin(); // hattaki sensörleri bul / find sensors on the bus
12 Serial.print(F("Sensor sayisi / Sensor count: "));
13 Serial.println(sensors.getDeviceCount());
14}
15
16void loop() {
17 sensors.requestTemperatures(); // ölçümü başlat, bitmesini bekle / start conversion and wait
18 float tempC = sensors.getTempCByIndex(0); // ilk sensörün sıcaklığı / first sensor's temperature
19
20 if (tempC == DEVICE_DISCONNECTED_C) { // -127: sensör yanıt vermedi / sensor did not respond
21 Serial.println(F("Hata: sensor yok / Error: no sensor"));
22 } else {
23 Serial.print(F("Sicaklik / Temperature: "));
24 Serial.print(tempC, 2);
25 Serial.println(F(" C"));
26 }
27 delay(1000);
28}| Fungsi | Kegunaannya |
|---|---|
| sensors.begin() | Memindai bus 1-Wire dan mendaftarkan sensor yang ditemukan |
| sensors.getDeviceCount() | Mengembalikan jumlah sensor di bus |
| sensors.requestTemperatures() | Mengirim perintah konversi ke semua sensor di bus dan, secara bawaan, menunggu sampai selesai |
| sensors.getTempCByIndex(0) | Mengembalikan suhu sensor pertama di daftar, dalam Celsius |
| sensors.getTempFByIndex(0) | Mengembalikan nilai yang sama dalam Fahrenheit |
| sensors.setResolution(12) | Mengatur resolusi di antara 9 dan 12 bit |
| DEVICE_DISCONNECTED_C | Nilai yang dikembalikan ketika sensor tidak merespons: −127 |
Dengan Serial Monitor di 9600 baud, kamu akan melihat baris seperti “Sicaklik / Temperature: 23.44 C” setiap detik. Kamu akan memperhatikan bahwa digit terakhir berubah dalam kelipatan 0,0625, yaitu besar langkah resolusi 12 bit. Pegang sensornya di antara jari, dan suhunya seharusnya naik dalam beberapa detik. Kalau Serial Monitor menampilkan −127, sensornya sama sekali tidak ditemukan; kalau menampilkan 85, sensornya ditemukan tetapi dibaca sebelum konversi selesai. Solusi keduanya ada di tabel di akhir artikel ini.
Memakai beberapa DS18B20 di pin yang sama
Untuk menghubungkan beberapa sensor, cukup sambungkan semua pin VDD, GND, dan DQ secara paralel; seluruh bus hanya memakai satu resistor pull-up 4,7 kΩ. Membaca dengan getTempCByIndex() memang mudah, tetapi urutannya ditentukan oleh alamat sensor, bukan oleh urutan kamu memasangnya. Ganti satu sensor, urutannya bisa berubah. Karena itu, proyek permanen sebaiknya membaca setiap sensor lewat alamatnya sendiri. Sketch di bawah menemukan semua sensor di bus, mencetak alamatnya, dan membaca suhu masing-masing berdasarkan alamat:
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4#define ONE_WIRE_BUS 2 // tüm sensörler aynı pinde / all sensors on the same pin
5
6OneWire oneWire(ONE_WIRE_BUS);
7DallasTemperature sensors(&oneWire);
8DeviceAddress addr; // 8 baytlık sensör adresi / 8-byte sensor address
9int count = 0;
10
11void printAddress(const DeviceAddress a) {
12 for (uint8_t i = 0; i < 8; i++) {
13 Serial.print(F("0x"));
14 if (a[i] < 0x10) Serial.print('0'); // tek haneyi sıfırla tamamla / pad single digit
15 Serial.print(a[i], HEX);
16 if (i < 7) Serial.print(F(", "));
17 }
18}
19
20void setup() {
21 Serial.begin(9600);
22 sensors.begin();
23 count = sensors.getDeviceCount(); // hatta kaç sensör var? / how many sensors on the bus?
24 Serial.print(F("Sensor sayisi / Sensor count: "));
25 Serial.println(count);
26 sensors.setResolution(12); // hepsi 12 bit (0,0625 C) / all 12-bit (0.0625 C)
27}
28
29void loop() {
30 sensors.requestTemperatures(); // tüm sensörler aynı anda ölçer / all sensors convert at once
31 for (int i = 0; i < count; i++) {
32 if (!sensors.getAddress(addr, i)) continue; // adresi al / get the address
33 Serial.print(F("Sensor "));
34 Serial.print(i);
35 Serial.print(F(" { "));
36 printAddress(addr);
37 Serial.print(F(" }: "));
38 Serial.print(sensors.getTempC(addr), 2); // adrese göre oku / read by address
39 Serial.println(F(" C"));
40 }
41 Serial.println();
42 delay(2000);
43}Jalankan sketch ini sekali dan hangatkan tiap sensor secara bergantian (misalnya dengan menggenggamnya) untuk mengetahui alamat mana milik titik mana. Setelah itu tulis langsung alamat yang kamu lihat di Serial Monitor ke dalam kode: tambahkan baris seperti DeviceAddress waterSensor = {0x28, 0xFF, 0x64, 0x1E, 0x0F, 0x16, 0x03, 0x90}; lalu baca dengan sensors.getTempC(waterSensor). Di DS18B20, byte pertama alamat selalu 0x28, dan byte terakhirnya adalah CRC yang memeriksa apakah alamat itu valid. Dengan begitu, apa pun urutan sensornya, nilai “air”, “luar ruangan”, atau “boiler” selalu datang dari tempat yang benar.
DS18B20 dengan ESP32: pembacaan non-blocking
DS18B20 bekerja di ESP32 dengan library OneWire dan DallasTemperature yang sama. GPIO 4 adalah pilihan yang bagus untuk jalur data. Jangan pakai GPIO 34–39, karena pin-pin itu hanya untuk input dan tidak bisa menarik jalur 1-Wire ke LOW; hindari juga GPIO 0, 2, 12, dan 15, yang levelnya berpengaruh ketika boot. Selalu hubungkan sensor dan resistor pull-up ke 3V3: kalau pull-up kamu sambungkan ke 5 V, berarti kamu memberi 5 V ke pin ESP32.
Secara bawaan, requestTemperatures() menunggu 750 ms di 12 bit. Selama waktu itu board tidak bisa mengerjakan hal lain; web server, tombol, atau layar jadi macet. Solusinya, matikan penantian itu dengan setWaitForConversion(false) lalu baca hasilnya 750 ms kemudian dengan millis(). Di sketch ESP32 di bawah, LED tetap berkedip mulus bahkan ketika suhu sedang diukur:
1#include <OneWire.h>
2#include <DallasTemperature.h>
3
4const int ONE_WIRE_PIN = 4; // ESP32 GPIO 4 (DQ)
5const int LED_PIN = 2; // dahili LED (çoğu kartta) / onboard LED (most boards)
6
7OneWire oneWire(ONE_WIRE_PIN);
8DallasTemperature sensors(&oneWire);
9
10unsigned long requestTime = 0;
11unsigned long lastBlink = 0;
12bool converting = false;
13
14void setup() {
15 Serial.begin(115200);
16 pinMode(LED_PIN, OUTPUT);
17 sensors.begin();
18 sensors.setResolution(12);
19 sensors.setWaitForConversion(false); // requestTemperatures() beklemesin / do not block
20}
21
22void loop() {
23 unsigned long now = millis();
24
25 if (!converting) {
26 sensors.requestTemperatures(); // ölçümü başlat, hemen dön / start and return at once
27 requestTime = now;
28 converting = true;
29 }
30
31 if (converting && now - requestTime >= 750) { // 12 bit için 750 ms / 750 ms for 12-bit
32 float t = sensors.getTempCByIndex(0);
33 if (t == DEVICE_DISCONNECTED_C) {
34 Serial.println("Sensor yok / No sensor");
35 } else {
36 Serial.printf("Sicaklik / Temperature: %.2f C\n", t);
37 }
38 converting = false; // bir sonraki ölçüme geç / move to the next reading
39 }
40
41 if (now - lastBlink >= 250) { // bu arada LED yanıp söner / meanwhile the LED blinks
42 lastBlink = now;
43 digitalWrite(LED_PIN, !digitalRead(LED_PIN));
44 }
45}Pola ini sangat penting di proyek Wi-Fi: ESP32 bisa mengukur suhu sambil menyajikan halaman web, mengirim data ke internet, atau memperbarui layar. Kalau kamu baru mengenal ESP32, baca Apa Itu ESP32? untuk pemilihan pin dan pengaturannya; peta pin board-mu juga ada di alat pinout.
DS18B20 dengan Raspberry Pi Pico dan MicroPython
Modul onewire dan ds18x20 sudah tertanam di MicroPython untuk Raspberry Pi Pico, jadi tidak ada file tambahan yang perlu di-upload. Hubungkan sensor ke 3V3(OUT) dan GND, jalur data ke GP22, dan jangan lupa pull-up 4,7 kΩ di antara DQ dan 3V3. Resistor pull-up internal Pico terlalu lemah untuk 1-Wire.
1from machine import Pin
2import onewire, ds18x20, time, binascii
3
4ds_pin = Pin(22) # DQ -> GP22 (fiziksel pin 29 / physical pin 29)
5sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
6
7roms = sensor.scan() # hattaki sensör adresleri / sensor addresses on the bus
8print("Sensor sayisi / Sensor count:", len(roms))
9
10while True:
11 sensor.convert_temp() # hepsi aynı anda ölçer / all sensors convert at once
12 time.sleep_ms(750) # 12 bit dönüşüm süresi / 12-bit conversion time
13 for rom in roms:
14 t = sensor.read_temp(rom) # adrese göre oku / read by address
15 print(binascii.hexlify(rom).decode(), "{:.2f} C".format(t))
16 time.sleep(2)scan() mengembalikan daftar alamat 8 byte dari semua sensor di bus. convert_temp() mengirim perintah konversi ke semua sensor sekaligus, karena itu kamu menunggu 750 ms setelahnya. read_temp(rom) membaca suhu sensor dengan alamat itu, dalam Celsius. Kalau daftarnya kosong, periksa dulu resistor pull-up dan nomor pinnya. Kalau kamu baru mengenal Pico, baca Apa Itu Raspberry Pi Pico? untuk menyiapkan MicroPython.
Probe DS18B20 tahan air
Bentuk DS18B20 yang paling populer adalah probe tahan air, yaitu chip yang ditaruh di dalam tabung baja tahan karat lalu ditutup resin. Biasanya terdiri dari ujung berdiameter 6 mm dengan panjang 50 mm dan kabel tiga inti sepanjang 1 meter (ada juga versi 2, 3, dan 5 meter). Probe ini ideal untuk akuarium, tangki air, boiler air panas, tanah, kulkas, dan freezer. Ujung bajanya boleh dicelupkan sebentar ke air mendidih, tetapi karena kabelnya biasanya PVC, jangan biarkan kabel dan sambungannya lama berada di atas 85–100 °C. Selubung probe memperlambat panas yang sampai ke sensor, jadi setelah perubahan suhu yang mendadak, bacaannya butuh beberapa detik sampai beberapa puluh detik untuk stabil.
Ada banyak DS18B20 tiruan di pasaran. Sebagian tidak memenuhi akurasi yang dijanjikan atau tidak bisa bekerja di mode parasite power. Mencelupkan dua sensor ke gelas air yang sama lalu membandingkan bacaannya adalah cara sederhana untuk mengetahui apakah sensormu bisa dipercaya. Kalau selisihnya lebih dari 0,5 °C, kamu bisa menerapkan nilai koreksi kecil (offset) di kode.
Ide proyek DS18B20
- Termostat akuarium: Nyalakan dan matikan pemanas dengan probe tahan air dan modul relay; pakai histeresis untuk menjaga air di antara 25 dan 26 °C.
- Pemantauan suhu banyak titik: Hubungkan lima sensor ke satu pin dan pantau ruangan, luar ruangan, kulkas, serta air masuk dan air balik boiler sekaligus.
- Termometer OLED: Tampilkan suhu dengan angka besar di layar OLED, bersama nilai minimum dan maksimum hari itu.
- Tampilan suhu di LCD: Cetak bacaan dua sensor di dua baris layar LCD I2C.
- Halaman suhu Wi-Fi: Pantau suhu yang diukur ESP32 secara langsung di halaman web yang dibuka dari ponselmu.
- Kontrol rumah kaca: Ukur suhu tanah dengan DS18B20 dan kelembapan tanah dengan sensor kelembapan tanah untuk memutuskan kapan harus menyiram.
Masalah umum dan solusinya
| Gejala | Kemungkinan penyebab | Solusi |
|---|---|---|
| Suhu −127 °C | Sensor tidak ditemukan: tidak ada pull-up, kabel putus, pin salah, atau VDD dan GND tertukar | Periksa resistor 4,7 kΩ dan pengkabelannya; lihat apakah getDeviceCount() mengembalikan 0 |
| Suhu selalu 85 °C | Dibaca sebelum konversi selesai, atau dayanya kurang (85 °C adalah nilai awal ketika dinyalakan) | Tunggu selama waktu konversi setelah requestTemperatures(); beri daya langsung ke VDD |
| Jumlah sensor 0 | Tidak ada pull-up di DQ, atau nomor pin di kode salah | Periksa nomor pin dan resistornya, buat kabelnya pendek |
| Sensor menjadi sangat panas | VDD dan GND tertukar | Segera putus dayanya dan perbaiki urutan pin |
| Bacaan sesekali jatuh ke −127 | Kabel panjang, pull-up lemah, atau gangguan | Turunkan pull-up ke 2,2–3,3 kΩ, pakai kabel twisted pair, lewati bacaan buruk di kode |
| Urutan sensor berubah | Urutan indeks berdasarkan alamat, bukan cara pemasangannya | Baca tiap sensor lewat alamatnya: getTempC(address) |
| Program tersendat, tombol lambat merespons | requestTemperatures() memblokir 750 ms di setiap pembacaan | Pakai setWaitForConversion(false) dan millis() |
Berkat ketangguhannya, probe tahan airnya, dan kemampuannya menaruh banyak sensor di satu pin, DS18B20 adalah salah satu sensor suhu paling berguna di elektronika hobi. Kamu bisa menampilkan suhu di layar, mengendalikan pemanas atau kipas dengan relay, atau membawanya online dengan ESP32. Di aplikasi BlueGrays ada proyek suhu dengan DHT11 dan NTC, layar LCD I2C, pencatat suhu ESP32, dan penyiraman pintar untuk Arduino dan ESP32, lengkap dengan skema rangkaian dan kode langkah demi langkah.
Pertanyaan umum
Resistor apa yang dibutuhkan DS18B20?
Resistor pull-up 4,7 kΩ dipasang di antara jalur data (DQ) DS18B20 dan catu daya (VDD). Satu resistor sudah cukup, berapa pun jumlah sensor yang berbagi bus. Kalau kabelnya lebih dari sekitar 10 meter, menurunkannya ke 2,2–3,3 kΩ membuat komunikasi lebih andal.
Kenapa DS18B20-ku membaca −127 derajat?
−127 adalah nilai error yang dikembalikan library DallasTemperature ketika tidak ada respons dari sensor. Penyebab paling umum adalah resistor pull-up yang tidak dipasang, nomor pin yang salah, kabel putus atau longgar, dan VDD serta GND yang tertukar. Pertama, cek dengan getDeviceCount() apakah sensornya ditemukan sama sekali.
Kenapa DS18B20-ku membaca 85 derajat?
85 °C adalah nilai memori bawaan DS18B20 ketika dinyalakan. Nilai ini muncul ketika suhu dibaca sebelum konversi selesai, atau ketika sensor tidak mendapat daya yang cukup selama konversi. Menunggu selama waktu konversi setelah perintah konversi dan memberi daya langsung dari pin VDD akan memperbaikinya.
Berapa banyak sensor DS18B20 yang bisa dihubungkan ke satu pin Arduino?
Karena setiap DS18B20 punya alamat 64-bit yang unik, secara teori banyak sensor bisa berbagi satu pin. Dalam praktiknya, sampai 10–20 sensor bekerja tanpa masalah; lebih dari itu, panjang kabel, nilai pull-up, dan catu daya perlu dipilih dengan cermat. Semua sensor berbagi jalur data yang sama dan satu resistor pull-up.
Apakah DS18B20 tahan air?
DS18B20 polos dalam kemasan TO-92 tidak tahan air. Namun versi probe di dalam tabung baja tahan karat bisa direndam di air dan cairan lain atau dikubur di tanah. Karena kabel probe biasanya PVC, jaga agar kabel dan sambungannya tidak lama berada di suhu tinggi.
Mana yang lebih baik, DS18B20 atau DHT22?
Keduanya menawarkan akurasi ±0,5 °C, tetapi dirancang untuk pekerjaan yang berbeda. DHT22 mengukur kelembapan selain suhu dan ideal untuk kondisi ruangan. DS18B20 tidak mengukur kelembapan, tetapi bisa turun sampai −55 °C, tersedia sebagai probe tahan air, dan memungkinkanmu menghubungkan beberapa sensor ke satu pin.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
Suhu dan Kelembapan dengan DHT11
Seberapa hangat kamarmu, dan apakah udaranya lembap atau kering? Sensor DHT11 mengukur suhu dan kelembapan, dan Arduino menulis nilainya di layar LCD dua baris, diperbarui setiap beberapa detik. Jika

Mengukur Suhu dengan NTC dan Layar LCD 2x16
Ukur suhu di sekitarmu dengan sensor yang mirip manik-manik kecil. Komponen bernama NTC ini makin mudah dilewati listrik ketika makin hangat; Arduino membaca perubahan itu, mengubahnya menjadi derajat

Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)
Proyek ini mengukur suhu dan kelembapan sekitar dengan sensor DHT22 dan menampilkan datanya secara real-time di LCD I2C 16x2. Data dibaca dari sensor dengan protokol satu kabel lewat library Adafruit DHT. Proyek ini menjadi dasar untuk stasiun cuaca IoT, otomasi rumah pintar, atau sistem pemantauan lingkungan di rumah kaca. Komunikasi dengan DHT22 dilakukan lewat pin GPIO 4 ESP32.

Pencatat Data Suhu ESP32 (DHT22 + RTC DS1307 + microSD + OLED)
Buat pencatat suhu bercap waktu dengan ESP32! Baca suhu/kelembapan DHT22 setiap menit, ambil waktu sebenarnya dari RTC DS1307, dan catat ke kartu microSD sebagai CSV. OLED menampilkan suhu langsung (font besar), kelembapan, cap waktu, dan penghitung catatan. File /temp_log.csv bisa dibuka di Excel, Google Sheets, atau Python pandas; cocok untuk rumah kaca, suhu kamar, data laboratorium, penyimpanan makanan, atau sarang lebah.

Menggunakan Layar LCD dengan I2C
Beri Arduino-mu layar sendiri dan buat ia menulis pesan pertamanya. Layar LCD dua baris tersambung hanya dengan beberapa kabel; sapaan muncul di baris atas, lalu pesan kedua di baris bawah, layar dibe

Layar LCD I2C ESP32 (16x2)
Di proyek ini, kita menampilkan teks dengan menyambungkan layar LCD karakter 16x2 ke ESP32 lewat protokol I2C. Berkat I2C, kita bisa mengendalikan layar hanya dengan dua pin data (SDA dan SCL), sehingga tidak perlu memboroskan 6+ pin seperti pada sambungan paralel klasik. Kode mencetak pesan tetap di baris pertama dan penghitung yang naik setiap detik di baris kedua. Selain itu, kita menjalankan pemindai I2C di awal untuk mencetak alamat layar ke Serial Monitor (biasanya 0x27).

Jam, Kalender, dan Stasiun Cuaca Dot Matrix (MAX7219, DS1307)
Papan teks berjalan untuk meja atau dinding yang menampilkan waktu, tanggal, dan cuaca ruangan secara bergantian. Di layar LED 8x32, kamu pertama melihat suhu dalam Celsius dan Fahrenheit, lalu kelemb
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

