Mikrokontroller
Teori Dasar
Sensor DHT: digunakan untuk mengukur suhu dan kelembaban dalam
lingkungan ini memberikan data digital yang dapat dibaca oleh
mikrokontroler
NodeMCU ESP8266: merupakan mikrokontroler berbasis WiFi yang
digunakan untuk mengontrol perangkat elektronik dan berkomunikasi
dengan internet. Ini dapat digunakan untuk membaca data dari sensor
DHT dan mengontrol LED
LCD1602 12C: merupakan LCD yang dapat menampilkan teks. Versi
12C dari LCD1602 memungkinkan komunikasi yang lebih efisien dengan
menggunakan hanya dua pin
Arduino IDE: merupakan lingkungan pengembangn terintegrasi yang
digunakan untuk menulis kode dan mengunggahnya ke mikrokontroler.
Dalam percobaan ini, Arduino IDE digunakan untuk menulis kode untuk
membaca data dari sensor DHT, mengendalikan LED, dan menampilkan
data suhu dan kelembaban pada layar LCD1602
Komunikasi 12C: digunakan untuk menghubungkan NodeMCU
ESP8266 dengan LCD1602 ini adalah protokol komunikasi serial yang
memungkinkan penggunaan kabel yang sedikit
Prosedur Percobaan
1. Persiapan Perangkat Lunak:
a) Pastikan Arduino IDE dan Fritzing telah terinstal di laptop atau
komputer.
b) Buka Arduino IDE dan pilih New Sketch
c) Lakukan pengaturan board target (setelah merakit proyek dengan
kabel data tersambung pada NodeMCU) pada system Arduino
IDE, dalam hal ini kita menggunakan board NodeMCU dengan
cara berikut ini: Menu Tools > Board > esp8266 > NodeMCU 1.0
(ESP- 12E Module):
d) Kemudian, dengan cara yang sama sebelumnya (Sketch > Include
Library), tambahkan 3 library berikut SimpleDHT, SimpleTimer,
LiquidCrystal_I2C.
e) Tuliskan kode program berikut pada sketch baru tersebut pada
Arduino IDE
2. Hubungkan NodeMCU di Protoboard
a) Letakkan NodeMCU di Protoboard
b) Hubungkan kaki-kaki NodeMCU ke jalur protoboard
menggunakan kabel jumper
#define pinDHT11 14
#define pinLEDBiru 13
#define pinLEDMerah 12
#define pinLEDPutih 15
byte temperature = 0;
byte humidity = 0;
bool ledStatus = false;
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(pinLEDBiru, OUTPUT);
pinMode(pinLEDMerah, OUTPUT);
pinMode(pinLEDPutih, OUTPUT);
waktuTunda.setInterval(1500);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hallo Semua");
lcd.setCursor(0, 1);
lcd.print("Micro Controller");
delay(3000);
}
void loop() {
if (waktuTunda.isReady()) {
bacaSensorDHT();
kontrolLED();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: " + String((int)temperature) + "*C");
lcd.setCursor(0, 1);
lcd.print("Humi: " + String((int)humidity) + "%H");
waktuTunda.reset();
}
}
void bacaSensorDHT() {
temperature = 0;
humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(&temperature, &humidity, NULL)) !=
SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err=");
Serial.print(SimpleDHTErrCode(err));
Serial.print(",");
Serial.println(SimpleDHTErrDuration(err));
delay(1000);
return;
}
Serial.print("Suhu: ");
Serial.print((int)temperature);
Serial.println(" *C, ");
Serial.print("Kelembaban: ");
Serial.print((int)humidity);
Serial.println(" H");
}
void kontrolLED() {
if (temperature <= 20) {
digitalWrite(pinLEDPutih, HIGH);
digitalWrite(pinLEDBiru, LOW);
} else {
digitalWrite(pinLEDPutih, LOW);
digitalWrite(pinLEDMerah, HIGH);
}
#include <SimpleTimer.h>
#include <SimpleDHT.h>
#include <LiquidCrystal_I2C.h>
#define pinDHT11 14
#define pinLEDBiru 13
#define pinLEDMerah 12
#define pinLEDPutih 15
byte temperature = 0;
byte humidity = 0;
bool ledStatus = false;
Penjelasan 1
Header libraries digunakan untuk memuat library yang diperlukan
untuk proyek ini.
Definisi pin-pin yang akan digunakan untuk sensor DHT11 dan LED.
Deklarasi objek-objek dari kelas LiquidCrystal_I2C, SimpleDHT11,
dan SimpleTimer.
Deklarasi variabel global untuk suhu, kelembaban, dan status LED
void setup() {
Serial.begin(115200);
lcd.init();
lcd.backlight();
pinMode(pinLEDBiru, OUTPUT);
pinMode(pinLEDMerah, OUTPUT);
pinMode(pinLEDPutih, OUTPUT);
waktuTunda.setInterval(1500);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hallo Semua");
lcd.setCursor(0, 1);
lcd.print("Micro Controller");
delay(3000);
}
Penjelasan 2
Inisialisasi LCD dan backlight.
Set pin-pin LED sebagai output.
Set interval waktu untuk timer.
Menampilkan pesan selamat datang di LCD selama 3 detik.
void loop() {
if (waktuTunda.isReady()) {
bacaSensorDHT();
kontrolLED();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Suhu: " + String((int)temperature) + "*C");
lcd.setCursor(0, 1);
lcd.print("Humi: " + String((int)humidity) + "%H");
waktuTunda.reset();
}
}
Penjelasan 3
Memeriksa apakah timer telah mencapai waktu yang diatur.
Jika iya, membaca sensor DHT11 dan mengontrol LED.
Membersihkan layar LCD dan menampilkan suhu dan kelembaban.
void bacaSensorDHT() {
temperature = 0;
humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(&temperature, &humidity, NULL)) !=
SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err=");
Serial.print(SimpleDHTErrCode(err));
Serial.print(",");
Serial.println(SimpleDHTErrDuration(err));
delay(1000);
return;
}
Serial.print("Suhu: ");
Serial.print((int)temperature);
Serial.println(" *C, ");
Serial.print("Kelembaban: ");
Serial.print((int)humidity);
Serial.println(" H");
}
Penjelasan 4
Menginisialisasi variabel suhu dan kelembaban.
Membaca nilai suhu dan kelembaban dari sensor DHT11.
Memeriksa kegagalan pembacaan dan mencetak pesan kesalahan jika
ada.
void kontrolLED() {
if (temperature <= 20) {
digitalWrite(pinLEDPutih, HIGH);
digitalWrite(pinLEDMerah, LOW);
} else {
digitalWrite(pinLEDPutih, LOW);
digitalWrite(pinLEDMerah, HIGH);
}
Hasil Rangkaian
Percobaan 3 (Tugas)
Kesimpulan
a) Suhu lebih dari 20°C
- Karena suhu lebih besar dari 20°C (27°C), maka LED merah (Urutan
LED kita biru, merah, putih. Sedangkan urutan di file jobsheet 5
adalah hijau, biru, merah) akan menyala.
b) Kelembaban lebih dari 60%
- Karena kelembaban lebih besar dari 60% (86%), maka LED biru akan
dimatikan.
- Tidak ada LED yang di kontrol berdasarkan kelembaban <=60%,
sehingga kondisi LED biru tidak berubah
Jadi, dengan suhu 27°C dan kelembaban 86%, hasilnya adalah LED merah
akan menyala, sementara LED putih dan biru akan mati.
Hasil Fritzing
Percobaan 3 (Tugas)
Kesimpulan
a) Suhu lebih dari 20°C
- Karena suhu lebih besar dari 20°C (27°C), maka LED merah (Urutan
LED kita biru, merah, putih. Sedangkan urutan di file jobsheet 5 adalah
hijau, biru, merah) akan menyala.
b) Kelembaban lebih dari 60%
- Karena kelembaban lebih besar dari 60% (86%), maka LED biru akan
dimatikan.
- Tidak ada LED yang di kontrol berdasarkan kelembaban <=60%,
sehingga kondisi LED biru tidak berubah
Jadi, dengan suhu 27°C dan kelembaban 86%, hasilnya adalah LED merah akan
menyala, sementara LED putih dan biru akan mati.
Penggunaan kombinasi NodeMCU ESP8266, sensor DHT, dan LCD1602
I2C memberikan solusi yang efisien dan terjangkau untuk memantau kondisi
lingkungan seperti suhu dan kelembapan. Pengontrolan LED sebagai tambahan
memberikan indikasi visual yang berguna untuk memberikan informasi
tambahan secara langsung kepada pengguna. Setelah melakukan ketiga
percobaan tersebut, menunjukkan bahwa pengembangan teknologi seperti ini
dapat digunakan dalam berbagai aplikasi, termasuk pemantauan rumah pintar,
pertanian cerdas, atau sistem otomatisasi lainnya. Ini menyoroti potensi besar
dari penggunaan mikrokontroler dalam memecahkan masalah di dunia nyata.