/* SIJA IoT | Praktikum
Judul kegiatan : sensor suhu dan kelembaban
Mikrokontroler board : ESP32-DevKitC
modul sensor : DHT22 (DHT: Digital Humidity and Temperature )
Author : Sugiarto
08 Mei 2024
Sumber belajar : https://docs.wokwi.com/parts/wokwi-dht22
https://docs.espressif.com/projects/esp-idf/en/stable/esp32/hw-reference/esp32/get-started-devkitc.html
-------------------------------------------------------- */
// Mengakses library DHT22 untuk esp32
#include <DHTesp.h>
// Alias pin DHT
#define pinDHT 32 //SDA : Digital data pin (input/output)
// Membuat object DHT
// nama object dht, bertugas menangani aktivitas terkait dht
// Class DHTesp
DHTesp dht;
// Deklarasi untuk menyimpan data temperatur dan humidity
float temp = 0; // variabel menyimpan data temperature
float hum = 0; // variabel menyimpan data humidity
// LCD 16x2
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//LED
#define ledMerah 19
#define ledHijau 18
void setup() {
// mengaktifkan Serial monitor
Serial.begin(115200);
// object dht menjalankan method setup()
// tujuannya inisialiasi komunikasi dengan sensor dht22
// argumen pin yang digunakan sensor DHT, method DHT22 dari class DHTesp
dht.setup(pinDHT, DHTesp::DHT22);
// LCD
lcd.init();
lcd.backlight();
lcd.clear();
//buzzer
pinMode(23, OUTPUT);
//tone(23, 100, 1000);
//delay(2000);
//noTone(23);
// The above 'noTone' code will stop the tone playing on pin 7
//delay(1000);
//LED
pinMode(ledMerah, OUTPUT);
pinMode(ledHijau, OUTPUT);
}
void loop() {
// membaca data suhu dan temperatur
// membuat object data untuk menangani data temperatur dan humidity
// object dht menjalankan method getTempAndHumidity()
// class yang diakses TempAndHumidity
TempAndHumidity data = dht.getTempAndHumidity();
// mendambil data temperatur dari object data
// attribute temperature
// dikonversi ke tipe data string
// format 2 angka di belakang koma
String temp = String(data.temperature, 2);
// menampilkan data temperatur
Serial.print("Temperatur : ");
Serial.println(temp);
// mendambil data humidity dari object data
// attribute humidity
// dikonversi ke tipe data string
// format 1 angka di belakang koma
String hum = String(data.humidity, 1);
// menampilkan data humudity
Serial.print("Humidity : ");
Serial.println(hum);
lcd.setCursor(0,0);
lcd.print("Temperatur: ");
lcd.setCursor(11,0);
lcd.print(temp);
//LCD
lcd.setCursor(1,1);
lcd.print("Humidity : ");
lcd.setCursor(11,1);
lcd.print(hum);
// Buzzer nyala jika temp>=37
if(data.temperature>37.00){
tone(23, 100, 1000);
delay(2000);
noTone(23);
// The above 'noTone' code will stop the tone playing on pin 7
//delay(1000);
}
if(data.temperature>37.00){
digitalWrite(ledMerah, HIGH);
digitalWrite(ledHijau, LOW);
} else {
digitalWrite(ledMerah, LOW);
digitalWrite(ledHijau, HIGH);
}
//LED
//delay tampilan data]
delay(1000);
}