Alat Pengatur Suhu dan Kelembaban Otomatis Sensor DHT11, LCD, dan Relay!
Baik, kali ini kita akan membuat Alat Pengatur Suhu dan Kelembaban Otomatis menggunakan Arduino dan sensor DHT11. Sistem ini dapat membaca suhu dan kelembaban ruangan, menampilkannya pada LCD, serta mengendalikan relay secara otomatis berdasarkan kondisi yang sudah kita tentukan.
Sebelum mengikuti tutorial ini, ada baiknya kamu membaca tutorial sebelumnya mengenai Sensor Kelembaban dan Suhu DHT11.
Alat pengatur suhu otomatis ini bisa digunakan untuk berbagai macam kebutuhan. Misalnya untuk membuat penetas telur ayam otomatis, penghangat ruangan otomatis, pengatur suhu dan kelembaban untuk green house, dan berbagai kebutuhan lainnya yang berhubungan dengan pengaturan suhu dan kelembaban.
Daftar Isi
- Cara Kerja Alat Pengatur Suhu Otomatis
- Komponen yang Dibutuhkan
- Rangkaian Arduino, DHT11, LCD dan Relay
- Program Arduino
- Pengujian Alat
- Pengembangan Alat
Cara Kerja Alat Pengatur Suhu Otomatis
Inti dari alat ini adalah membaca suhu dan kelembaban dalam ruangan, kemudian menampilkan datanya ke LCD.
Setelah mendapatkan nilai suhu dan kelembaban, Arduino dapat menentukan kondisi tertentu untuk menyalakan atau mematikan relay.
Misalnya, ketika suhu lebih dari 30 derajat Celsius, Arduino akan mengaktifkan relay. Relay tersebut dapat digunakan sebagai saklar otomatis untuk menyalakan berbagai perangkat seperti lampu pijar, kipas, AC, atau perangkat lainnya.
Perangkat yang terhubung ke relay akan tetap menyala sampai kondisi suhu atau kelembaban kembali sesuai dengan batas yang sudah ditentukan dalam program.
Jadi secara sederhana alurnya adalah:
- Sensor DHT11 membaca suhu dan kelembaban.
- Arduino menerima data dari sensor.
- Data suhu dan kelembaban ditampilkan pada LCD.
- Arduino membandingkan data sensor dengan kondisi yang sudah ditentukan.
- Relay dinyalakan atau dimatikan sesuai kondisi tersebut.
Komponen yang Dibutuhkan
Oke! Sekarang kita langsung saja. Sebelumnya, pastikan kamu sudah menyiapkan komponen berikut:
- 1x Arduino Uno
- 1x LCD 16x2
- 1x Sensor Suhu DHT11 atau DHT22 / DHT21 (AM2301)
- 1x Breadboard
- 1x Potensiometer
- 1x Relay 1 Channel
- 1x Resistor 220 Ohm
- Beberapa kabel jumper
Rangkaian Arduino, DHT11, LCD dan Relay
Jika semua komponen sudah siap, silakan rangkai seperti gambar berikut.
Catatan Rangkaian
Pastikan setiap komponen terhubung sesuai dengan rangkaian pada gambar. Pada program yang digunakan, sensor DHT terhubung ke pin 8 Arduino, sedangkan relay menggunakan pin 9.
Untuk LCD 16x2, koneksi yang digunakan adalah:
- RS → pin 12 Arduino
- EN → pin 11 Arduino
- D4 → pin 5 Arduino
- D5 → pin 4 Arduino
- D6 → pin 3 Arduino
- D7 → pin 2 Arduino
Program Arduino
Jika sudah dirangkai, sekarang kita masuk ke programnya. Silakan salin atau ketik ulang program berikut.
Sebelum melakukan upload, pastikan library DHT sudah terpasang pada Arduino IDE.
Penjelasan Program
Pada bagian awal program kita memasukkan library DHT dan menentukan pin yang digunakan oleh sensor.
Pada program tersebut sensor DHT terhubung ke pin 8 Arduino. Jika menggunakan DHT22 atau DHT21, bagian DHTTYPE dapat disesuaikan dengan jenis sensor yang digunakan.
Selanjutnya kita menentukan koneksi LCD 16x2:
Relay menggunakan pin 9 Arduino:
Pada fungsi loop(), Arduino membaca nilai kelembaban dan suhu dari sensor DHT.
Nilai tersebut kemudian ditampilkan pada LCD dan Serial Monitor.
Bagian paling penting terdapat pada kondisi if. Pada program ini relay akan aktif jika kelembaban lebih dari 80.10% atau suhu lebih dari 30.10°C.
Nilai batas tersebut tentu saja bisa kamu ubah sesuai kebutuhan. Misalnya jika ingin relay aktif ketika suhu lebih dari 28°C, tinggal mengubah nilai 30.10 menjadi 28.
Pengujian Alat
Setelah program selesai ditulis, klik Upload pada Arduino IDE.
Jika proses upload berhasil, buka Serial Monitor dengan baud rate 9600. Kamu akan melihat nilai suhu dan kelembaban yang dibaca oleh sensor DHT.
Pada LCD juga akan ditampilkan nilai kelembaban dan suhu secara realtime.
Kalau kamu penasaran dengan hasil jadinya, silakan lihat video berikut:
Pengembangan Alat
Setelah berhasil membuat alat pengatur suhu dan kelembaban otomatis, kamu bisa mengembangkan sistem ini menjadi lebih kompleks.
Misalnya:
- Menambahkan kipas otomatis.
- Menggunakan AC sebagai perangkat yang dikendalikan relay.
- Membuat penetas telur otomatis.
- Membuat penghangat ruangan otomatis.
- Membuat sistem kontrol suhu dan kelembaban untuk greenhouse.
- Menambahkan sensor DHT22 agar pembacaan suhu dan kelembaban lebih baik.
- Menghubungkan Arduino dengan IoT agar data dapat dipantau melalui internet.
Intinya, sensor DHT digunakan untuk membaca kondisi lingkungan, Arduino melakukan pengolahan data, LCD menampilkan informasi, dan relay digunakan sebagai saklar untuk mengendalikan perangkat secara otomatis.
Selamat mencoba!

#define DHTPIN 1 //kita pasang sensor pada pin 1
#define DHTTYPE DHT11 //kita menggunakan jenis sensor DHT11,
DHT dht(DHTPIN, DHTTYPE); //deklarasi pin sensor dengan jenis
#include //menyertakan library LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //pin yang dipadakai LCD
int relaykipas = 7; //kita menggunakan pin 7 untuk relay
int relaypemanas = 8;
//blink withot delay untuk menyalakan motor pemutar rak
const int relaymotor = 9; // pin 9 untuk relay motor penggerak rak
int relaymotorState = LOW;
long previousMillis = 2700000;
long interval = 1000;
void setup() {
lcd.begin(16, 2); //mengatur ukuran lcd yang dipakai
dht.begin(); //program komunikasi atau setup untuk sensor DHT
pinMode(relaykipas, OUTPUT); //mengatur relay sebagai OUTPUT
pinMode(relaypemanas, OUTPUT);
pinMode(relaymotor, OUTPUT);
Serial.begin(9600); }
void loop() {
float kelembaban = dht.readHumidity(); //menyimpan nilai kelemb
float suhu = dht.readTemperature(); //menyimpan nilai suhu pada
delay(200); //mengatur jeda waktu pembacaan sensor selama 20
Serial.print(kelembaban); //menampilkan nilai kelembaban pada
Serial.print(" "); //menambahkan spasi
Serial.println(suhu); //menampilkan nilai suhu pada Serial Monitor
//menampilkan nilai kelembaban pada LCD
lcd.setCursor(0, 0); //
lcd.print("Kelembaban.: ");
lcd.print((int) kelembaban);
lcd.print("%");
//menampilkan nilai suhu pada LCD
lcd.setCursor(0, 1);
lcd.print("Suhu.: ");
lcd.print((int) suhu);
lcd.println("*C ");
//kondisi if dibawah ini, silahkan di atur sesuai dengan kebutuh
if (kelembaban > 55.00) {
digitalWrite(relaykipas, HIGH);
}
else {
digitalWrite(relaykipas,LOW);
}
if (suhu > 38.00) {
digitalWrite(relaypemanas, LOW);
}
else {
digitalWrite(relaypemanas,HIGH);
}
unsigned long currentMillis = millis();
if(currentMillis - previousMillis > interval) {
previousMillis = currentMillis;
if (relaymotorState == LOW)
relaymotorState = HIGH;
else
relaymotorState = LOW;
digitalWrite(relaymotor, relaymotorState);
}
}
mohon koreksinya
Arduino: 1.8.3 (Windows 10), Board: "Arduino/Genuino Uno"
The sketch name had to be modified. Sketch names can only consist
of ASCII characters and numbers (but cannot start with a number).
They should also be less than 64 characters long.
C:\Users\User\Documents\Arduino\pengatur_suhu\pengatur_suhu.ino:1:60: fatal error: DHT.h: No such file or directory
#include //menyertakan library DHT kedalam program
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Wisnu\Documents\Arduino\libraries -fqbn=arduino:avr:megaADK -ide-version=10804 -build-path C:\Users\Wisnu\AppData\Local\Temp\arduino_build_929766 -warnings=none -build-cache C:\Users\Wisnu\AppData\Local\Temp\arduino_cache_539713 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Wisnu\Documents\Arduino\lalu_lintas_timer\green_house_project\green_house_project.ino
C:\Program Files (x86)\Arduino\arduino-builder -compile -logger=machine -hardware C:\Program Files (x86)\Arduino\hardware -tools C:\Program Files (x86)\Arduino\tools-builder -tools C:\Program Files (x86)\Arduino\hardware\tools\avr -built-in-libraries C:\Program Files (x86)\Arduino\libraries -libraries C:\Users\Wisnu\Documents\Arduino\libraries -fqbn=arduino:avr:megaADK -ide-version=10804 -build-path C:\Users\Wisnu\AppData\Local\Temp\arduino_build_929766 -warnings=none -build-cache C:\Users\Wisnu\AppData\Local\Temp\arduino_cache_539713 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.arduinoOTA.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avr-gcc.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -prefs=runtime.tools.avrdude.path=C:\Program Files (x86)\Arduino\hardware\tools\avr -verbose C:\Users\Wisnu\Documents\Arduino\lalu_lintas_timer\green_house_project\green_house_project.ino
Using board 'megaADK' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Using core 'arduino' from platform in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr
Detecting libraries used...
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10804 -DARDUINO_AVR_ADK -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\Wisnu\AppData\Local\Temp\arduino_build_929766\sketch\green_house_project.ino.cpp" -o "nul"
"C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++" -c -g -Os -w -std=gnu++11 -fpermissive -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -flto -w -x c++ -E -CC -mmcu=atmega2560 -DF_CPU=16000000L -DARDUINO=10804 -DARDUINO_AVR_ADK -DARDUINO_ARCH_AVR "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino" "-IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\mega" "C:\Users\Wisnu\AppData\Local\Temp\arduino_build_929766\sketch\green_house_project.ino.cpp" -o "C:\Users\Wisnu\AppData\Local\Temp\arduino_build_929766\preproc\ctags_target_for_gcc_minus_e.cpp"
C:\Users\Wisnu\Documents\Arduino\lalu_lintas_timer\green_house_project\green_house_project.ino:1:57: fatal error: DHT: No such file or directory
#include //menyertakan library DHT kedalam program
^
compilation terminated.
exit status 1
Error compiling for board Arduino Mega ADK.
DHTnya kok selalu error ya?