Humidity & Temperature Test Menggunakan ESP32 & DHT11

Shafa Amarsya Madyaratri
4 min readFeb 10, 2020

--

Hello readers!

Kali ini aku mau berbagi pengalamanku dalam menggunakan sensor humiditas dan suhu DHT11 dengan mikrokontroler ESP32 beserta Arduino IDE.

Sensor DHT11

Alat yang Dibutuhkan

Sebelum memulai, berikut adalah alat-alat yang disiapkan:

  1. ESP32 Development Board
  2. Sensor DHT11
  3. Resistor 4.7 kΩ
  4. Breadboard
  5. 4 Kabel jumper male to male
  6. Kable USB 2.0/3.0 to microUSB

Sebelum memulai, pastikan sudah melakukan pemasangan (instalasi) library DHT Sensor dan Adafruit Unified Sensor Driver. Berikut langkahnya:

  1. Buka Arduino IDE
  2. Buka Library Manager dengan mengakses menu bar : Sketch > Include Library > Manage Libraries…
  3. Lakukan pencarian pada field Search terhadap DHT sensor dan Adafruit Unified Sensor Driver
  4. Lakukan instalasi dengan klik tombol install
Adafruit Unified Sensor Library
DHT Sensor Library

Merangkai Skema

Langkah selanjutnya adalah merangkai skema board ESP32, breadboard, dan sensor DHT 11 seperti gambar berikut:

Sumber: randomnerdtutorials.com

Pada gambar tersebut, data pin yang digunakan adalah GPIO 27, namun dalam percobaan ini aku menggunakan GPIO 17

Kode Program

Karena sebelumnya kita telah melakukan instalasi library sensor DHT, maka kita dapat langsung mengakses kode untuk membaca data temperatur dan kelembapan dari sensor DHT 11. Pada menu bar Arduino IDE, buka File > Examples, di bagian paling bawah terdapat daftar contoh-contoh sketch yang diperoleh dari library custom yang telah diunduh sebelumnya. Pilih DHT sensor library > DHTtester sehingga akan terbuka kode berikut:

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"#define DHTPIN 17 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.
// Uncomment whatever type you're using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
}

Sebelum melakukan upload ke ESP32, pastikan untuk mengkonfigurasikan tipe DHT yang bersesuaian dengan yang digunakan. Aku menggunakan DHT 11, maka kode “#define” yang bukan diperuntukkan DHT 11 diubah sebagai komentar. Pastikan juga pin yang ditulis pada kode sesuai dengan pin yang digunakan pada skema.

Langkah selanjutnya adalah lakukan upload kode ke ESP32. Untuk melihat pembacaan, buka serial monitor pada Arduino IDE.

Hasil Pembacaan Sensor DHT11

Sekian cerita pengalamanku kali ini, semoga bermanfaat.

--

--

Shafa Amarsya Madyaratri

Information System & Technology Student at Institut Teknologi Bandung