Anda di halaman 1dari 12

Laporan Praktikum

Mikrokontroller

Nama : Alina Frieda Wardani Sudibyo


NIM : 2331130005
Kelas : 1A
Prodi : D3 Teknik Telekomunikasi

D-III Teknik Telekomunikasi


Jurusan Teknik Elektro
Politeknik Negeri Malang
Tujuan
1. Memahami dasar-dasar penggunaan mikrokontroler ESP8266 dan
perangkat keras terkait seperti LED dan LCD1602
2. Memahami protokol komunikasi 12C dan cara menghubungkan
perangkat LCD1602 menggunakan antarmuka 12C
3. Belajar tentang penggunaan pin GPIO pada NodeMCU ESP8266 untuk
mengontrol LED
4. Mengimplementasikan kode program sederhana menggunakan Arduino
IDE untuk mengendalikan LED dan menampilkan informasi pada
LCD1602
5. Menyusun kode untuk mengatur teks dan posisi karakter pada LCD1602
6. Memahami cara menggunakan sensor DHT untuk membaca data suhu
dan kelembapan
7. Mengintegrasikan sensor DHT dengan NodeMCU ESP8266 dan
membaca data suhu dan kelembaban
8. Mengatur kode program menggunakan Arduino IDE untuk menampilkan
data suhu dan kelembapan yang dibaca dari sensor DHT pada LCD1602
9. Menggabungkan fungsionalitas kontrol LED dengan pembacaan sensor
DHT
10.Mengatur kode program menggunakan Arduino IDE untuk membaca data
suhu dan kelembaban dan sensor DHT
11.Menggunakan informasi suhu dan kelembapan yang dibaca untuk
mengontrol LED dan menampilkan data tersebut pada LCD1602

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

Alat dan Bahan


1. Protoboard 1 buah
2. NodeMCU ESP8266 1 buah
3. LED (3 warna berbeda) 3 buah
4. Resistor 3 buah
5. Sensor DHT 1 buah
6. Kabel Jumper secukupnya
7. Kabel data USB 1 buah
8. Laptop atau komputer dengan Arduino IDE dan juga Fritzing yang telah
terinstal

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

Berikut ketentuan penyambungan kabel jumper


- Hubungkan kabel dengan kode D7 di NodeMCU dengan lampu LED
ke-3
- Hubungkan kabel dengan kode D6 di NodeMCU dengan lampu LED
ke-2
- Hubungkan kabel dengan kode D3 di NodeMCU dengan lampu LED
ke-1
- Hubungkan kabel dengan kode D5 di NodeMCU dengan sensor
- Hubungkan kabel jumper dengan 3. 3v yang ada di NodeMCU dengan
protoboard di jalur positif
- Hubungkan kabel output dan input sensor ke protoboard bagian kutub
positif dan negatif (ground)
- Hubungkan kabel jumper GND (ground) dengan ground yang ada di
protoboard
- Hubungkan kabel dengan kode D1 di NodeMCU dengan LCD pada
bagian SCL
- Hubungkan kabel dengan kode D2 di NodeMCU dengan LCD pada
bagian SDA
- Hubungkan kabel dengan kode Vin di NodeMCU dengan LCD pada
bagian VCC
- Terakhir hubungkan kabel dengan kode GND di LED dengan ground
yang ada di protoboard
3. Hubungkan LED dan Resistor
a) Tempatkan LED merah, biru, dan putih di Protoboard dengan hati-
hati. Pastikan polaritasnya benar (anode ke GPIO NodeMCU
katode ke resistor)
b) Sambungkan resistor ke katode LED (kaki pendek)
c) Hubungkan kaki lain dari resistor ke jalur ground (GND) di
NodeMCU
4. Rangkai LCD1602 12C
a) Ketentuan kabel jumper LCD dengan protoboard sudah saya
cantumkan pada langkah-langkah no 2
5. Sambungkan kabel data
a) Gunakan kabel data untuk menghubungkan NodeMCU ke laptop
menggunakan port USB
b) Pastikan kabel data USB memiliki ujung yang sesuai dengan
NodeMCU
6. Buat dan Unggah program
a) Buat program dalam Arduino IDE
b) Periksa program untuk kesalahan sintaks
c) Klik tombol “upload” untuk mengunggah program ke NodeMCU
7. Amati hasilnya
a) Perhatikan LCD dan LED di protoboard. Jika semuanya berhasil,
LCD dan LED akan berperilaku sesuai dengan program yang telah
diunggah.

Hasil Coding Arduino IDE


#include <SimpleTimer.h>
#include <SimpleDHT.h>
#include <LiquidCrystal_I2C.h>

#define pinDHT11 14
#define pinLEDBiru 13
#define pinLEDMerah 12
#define pinLEDPutih 15

LiquidCrystal_I2C lcd(0x27, 16, 2);


SimpleDHT11 dht11(pinDHT11);
SimpleTimer waktuTunda;

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);
}

if (humidity <= 60) {


digitalWrite(pinLEDBiru, HIGH);
} else {
digitalWrite(pinLEDMerah, LOW);
}
}

#include <SimpleTimer.h>
#include <SimpleDHT.h>
#include <LiquidCrystal_I2C.h>

#define pinDHT11 14
#define pinLEDBiru 13
#define pinLEDMerah 12
#define pinLEDPutih 15

LiquidCrystal_I2C lcd(0x27, 16, 2);


SimpleDHT11 dht11(pinDHT11);
SimpleTimer waktuTunda;

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);
}

if (humidity <= 60) {


digitalWrite(pinLEDBiru, HIGH);
} else {
digitalWrite(pinLEDMerah, LOW);
}
}
Penjelasan 5
 Mengontrol LED berdasarkan nilai suhu dan kelembaban.
 Jika suhu <= 20°C, LED putih akan menyala dan LED merah akan
mati, sebaliknya LED biru akan menyala.
 Jika kelembaban <= 60%, LED biru akan menyala, jika tidak, akan
dimatikan.

Hasil Rangkaian
Percobaan 3 (Tugas)

1. Klasfikasi nilai suhu menjadi 2 bagian dengan ambang batas tengah 20


derajat celcius.
a) Jika suhu kurang dari sama dengan 20 derajat celicus maka LED
warna Hijau akan menyala, sedangkan LED warna biru akan mati.
b) Jika suhu lebih dari 20 derajat celcius maka LED warna biru akan
menyala, sedangkan LED warna hijau akan mati.
c) Kedua LED akan aktif secara bergantian.
2. Klasifikasi nilai kelembaban menjadi 2 bagian dengan ambang batas
tengah 60.
a) Jika kelembaban kurang dari sama dengan 60 maka LED warna
merah akan hidup.
b) Jika kelembaban lebih dari 60 maka LED warna merah akan mati.

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.

Anda mungkin juga menyukai