/* NAMA : MUHAMMAD IKHWAN
NPM : 203510389
*/
/*
Program sederhana ini adalah sensor suhu dan kelembaban.
mengirimkannya ke server Blynk, dan menampilkan informasi tersebut pada LCD
Sensor ini menggunakan ESP32, DHT22 dan LCD
*/
#include "DHTesp.h" //import library DHTesp, digunakan untuk berinteraksi dengan sensor suhu dan kelembaban DHT
#include <LiquidCrystal_I2C.h> //import library LiquidCrystal_I2C, digunakan untuk mengendalikan LCD dengan protokol I2C.
LiquidCrystal_I2C lcd(0x27, 20, 4); //Membuat objek lcd dengan alamat I2C 0x27 dengan ukuran 20 kolom dan 4 baris.
//Blynk
#define BLYNK_TEMPLATE_ID "TMPL6p_w82ImQ"
#define BLYNK_TEMPLATE_NAME "DHT22"
#define BLYNK_AUTH_TOKEN "VZUnu70efTwP7EYkR0Rodu78ZXFLtwDX"
const int DHT_PIN = 15; //Pin DHT yang disambungkan ke ESP32.
DHTesp dhtSensor; //Membuat objek dari kelas DHTesp untuk menghubungkan sensor DHT
int suhu; //Mendeklarasikan variabel untuk menyimpan nilai suhu.
int kelembaban; //Mendeklarasikan variabel untuk menyimpan nilai kelembaban.
#define BLYNK_PRINT Serial //Mengonfigurasi library Blynk agar menggunakan objek Serial untuk output debug.
//Mengimpor library yang diperlukan untuk koneksi WiFi dan Blynk.
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//Mengatur nama dan kata sandi jaringan WiFi.
char ssid[] = "sunisentani";
char pass[] = "2024";
// interval pengiriman data ke server Blynk.
BlynkTimer timer;
/*membaca suhu dan kelembaban dari sensor DHT,
mengirim data ke server Blynk, dan menampilkan informasi di Serial dan LCD. */
void myTimerEvent()
{
TempAndHumidity data = dhtSensor.getTempAndHumidity();
suhu=data.temperature;
kelembaban=data.humidity;
Blynk.virtualWrite(V0, suhu);
Blynk.virtualWrite(V1, kelembaban);
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Kelembaban: " + String(data.humidity, 2) + "%");
Serial.println("============");
lcd.setCursor(0,0);
lcd.print("Temp= " + String(data.temperature, 2) + " C");
lcd.setCursor(0,1);
lcd.print("kelembaban= " + String(data.humidity, 1) + "%");
delay(1000);
}
void setup() {
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, myTimerEvent);
lcd.init();
lcd.backlight();
}
/*memanggil Blynk.run() dan timer.run() untuk menjaga koneksi Blynk dan
menjalankan timer. */
void loop() {
Blynk.run();
timer.run();
}