Cara Memprogram Sensor Suhu DS18B20 Pada ESP32

Cara Memprogram Sensor Suhu DS18B20 Pada ESP32

Sensor DS18B20 adalah sensor suhu digital yang sangat populer dan banyak digunakan di berbagai proyek elektronik dan IoT.Berikut adalah cara memprogramnya :

#include <Arduino.h>

#include <OneWire.h>
#include <DallasTemperature.h>

const int oneWireBus_DS18B20 = A0;
OneWire oneWire_DS18B20(oneWireBus_DS18B20);
DallasTemperature DS18B20(&oneWire_DS18B20);


float baca_DS18B20() {
  DS18B20.requestTemperatures();
  delay(100);
  float temperatureC = DS18B20.getTempCByIndex(0);
  return temperatureC;
}


void setup()
{
Serial.begin(9600);
DS18B20.begin();

}
void loop(){
 float nilai_DS18B20 = baca_DS18B20();
  if ( nilai_DS18B20 != DEVICE_DISCONNECTED_C) {
    Serial.print("Temperature: ");
    Serial.print( nilai_DS18B20);
    Serial.println(" °C");
  } else {
    Serial.println("Error: Could not read temperature data");
  }


}

Berikut ini adalah penjelasan dari kode di atas :

Penjelasan Kode

1. Import Library

#include <Arduino.h>
#include <OneWire.h>
#include <DallasTemperature.h>
  • Arduino.h: Library dasar Arduino.
  • OneWire.h: Library untuk komunikasi dengan perangkat 1-Wire seperti DS18B20.
  • DallasTemperature.h: Library yang memudahkan interaksi dengan sensor suhu DS18B20.

2. Definisi Pin dan Objek Sensor

const int oneWireBus_DS18B20 = A0;
OneWire oneWire_DS18B20(oneWireBus_DS18B20);
DallasTemperature DS18B20(&oneWire_DS18B20);
  • oneWireBus_DS18B20 adalah pin analog A0 yang digunakan sebagai jalur komunikasi 1-Wire ke sensor DS18B20.
  • Membuat objek oneWire_DS18B20 dari kelas OneWire yang mengelola komunikasi 1-Wire pada pin A0.
  • Membuat objek DS18B20 dari kelas DallasTemperature yang menggunakan oneWire_DS18B20 untuk berinteraksi dengan sensor.

3. Fungsi Membaca Suhu

float baca_DS18B20() {
  DS18B20.requestTemperatures();    // Meminta sensor untuk mengukur suhu sekarang
  delay(100);                       // Beri waktu 100 ms untuk pengukuran
  float temperatureC = DS18B20.getTempCByIndex(0);  // Ambil suhu dari sensor pertama (index 0)
  return temperatureC;              // Kembalikan nilai suhu (°C)
}
  • Fungsi ini meminta sensor melakukan pembacaan suhu.
  • Menunggu 100 ms agar sensor selesai mengukur.
  • Mengambil suhu dari sensor dengan indeks 0 (bila ada lebih dari satu sensor di jalur 1-Wire).
  • Mengembalikan nilai suhu dalam Celsius.

4. Fungsi Setup

void setup()
{
  Serial.begin(9600);  // Mulai komunikasi serial dengan baud rate 9600
  DS18B20.begin();     // Inisialisasi sensor DS18B20
}
  • Setup komunikasi serial.
  • Inisialisasi sensor DS18B20 agar siap membaca data.

5. Loop Utama

void loop(){
  float nilai_DS18B20 = baca_DS18B20();  // Membaca suhu sensor
  if ( nilai_DS18B20 != DEVICE_DISCONNECTED_C) {  // Cek apakah sensor terhubung
    Serial.print("Temperature: ");
    Serial.print(nilai_DS18B20);
    Serial.println(" °C");
  } else {
    Serial.println("Error: Could not read temperature data");  // Jika sensor tidak terbaca
  }
}
  • Memanggil fungsi pembacaan suhu.
  • Memeriksa apakah pembacaan berhasil (nilai tidak sama dengan DEVICE_DISCONNECTED_C, yaitu nilai error default saat sensor tidak terhubung).
  • Jika berhasil, menampilkan suhu ke Serial Monitor.
  • Jika gagal, menampilkan pesan error.

Ringkasan

Kode ini:

  • Menghubungkan Arduino ke sensor suhu DS18B20 lewat jalur 1-Wire di pin A0.
  • Meminta sensor mengukur suhu, menunggu hasilnya, lalu membaca suhu dalam derajat Celsius.
  • Menampilkan suhu tersebut ke Serial Monitor secara berulang-ulang.
  • Menangani kasus kegagalan pembacaan sensor dengan menampilkan pesan error.

untuk diskusi bisa kontak dibawah ini :

Sosial media :

Apa itu ESP32?