Sistem Embedded Project 6: DHT11 Temperature and Humidity Sensor
Pada project kali ini dalam mengoperasikan ESP32, saya menampilkan suhu dan kelembapan sekitar pada Serial Monitor dengan sensor DHT11. Referensi yang saya gunakan untuk project ini dapat dilihat di website berikut.
DHT11 merupakan sensor untuk membaca suhu dan kelembapan sekitarnya. Sensor tersebut memiliki chip yang mengkonversikon sinyal analog ke digital dengan suhu dan kelembapan. Spesifikasi DHT11 dapat dilihat pada gambar dibawah:
Alat-alat yang dibutuhkan untuk project ini antara lain sebagai berikut:
1. ESP32 (30 pin/38 pin, saya menggunakan yang 38 untuk project ini)
2. Breadboard
3. Laptop dengan Arduino IDE
4. Kabel USB
5. 1 buah resistor 10K ohm
7. DHT11 Sensor
8. Kabel-kabel jumper (Male to Male)
Setelah mempersiapkan barang-barang diatas, buatlah rangkaian project ini dengan mengikuti skema berikut dengan gambar dibawahnya sebagai skema referensi pins pada ESP32 yang saya gunakan.
Rangkaiannya tidak harus sama persis, setiap komponen nya dapat diubah lokasinya sesuai keinginan Anda asalkan lokasi resistor dan kabel jumper nya tetap sejajar dengan komponen tersebut. Pada gambar diatas. Ada garis-garis hijau yang menandakan arus listrik yang mengalir pada Breadboard jika menyala. GPIO yang digunakan juga dapat diubah sesuai keinginan Anda, Anda hanya perlu mengubah value pada kode yang digunakan sesuai GPIO yang digunakan. (Misal Anda menggunakan GPIO 14, maka di kodenya gunakan value 14 untuk komponen yang disambungkan.)
Untuk membaca sensor DHT11, Anda butuh menambahkan library DHT library from Adafruit. Untuk menggunakan library tersebut, Anda juga butuh install library Adafruit Unified Sensor Library. Cara men-install nya ke dalam Arduino IDE sebagai berikut: Buka aplikasi Arduino IDE kemudian ke kolom Sketch → Include Library → Add .ZIP Library… dan masukkan kedua file .ZIP diatas yang telah di-download.
Setelah merangkai alat-alat dan men-download library yang diperlukan, saya melakukan langkah-langkah berikut agar sensor dapat membaca suhu dan kelembapan:
1. Sambungkan kabel USB ke ESP32.
2. Masukkan kode di bawah ini ke Arduino IDE.
// 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 4 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11
// Initialize DHT sensor.
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"));
}
3. Pilih board dan port yang sesuai dengan ke kolom Tools → Board dan Tools → Port kemudian tekan Upload.
4. Bersamaan dengan proses Upload, tekan tombol BOOT pada ESP32.
5. Setelah proses Upload selesai, bukalah Serial Monitor pada Baud yang sesuai (untuk kode ini saya menggunakan Baud 9600) dan amati kelembapan dan suhu sekitar sensor!
Jika setelah melakukan semua langkah-langkah diatas tetapi pada Serial Monitor tidak menampilkan apa-apa, maka coba tekan tombol RESET pada ESP32. Tombol tersebut terletak di seberang tombol BOOT. Jika setelah melakukan langkah tersebut tetapi pada Serial Monitor menampilkan “Failed to read from DHT sensor!”, maka coba pastikan kembali bahwa rangkaian sudah sesuai dengan skema yang ditunjukkan. Hal tersebut dapat terjadi ketika Anda tidak sesuai dalam merangkai kabel-kabel nya.
Project ini dapat saya bilang cukup mudah asalkan merangkai kabel-kabel nya sesuai dengan skema. Saya sempat mengalami kendala pada Serial Monitor menampilkan “Failed to read from DHT sensor!” yang berarti sensor tidak dapaat membaca sinyal apapun. Kemudian setelah saya perika kembali rangkaian saya ternyata saya sempat menyambungkan pin yang salah. Project ini juga dapat dikembangkan dengan layar LCD agar menampilkan suhu dan kelembapan pada layar LCD tersebut.
18221016 - Justin Yusuf Abidjoko