/*************************************************************
This is a simple demo of sending and receiving some data.
Be sure to check out other examples!
*************************************************************/
// Template ID, Device Name and Auth Token are provided by the Blynk.Cloud
// See the Device Info tab, or Template settings
#define BLYNK_TEMPLATE_ID "TMPLF-9RE88u"
#define BLYNK_DEVICE_NAME "Monitoring Suhu Ruangan"
#define BLYNK_AUTH_TOKEN "0ICLs2dZoVZJ3C9ZmQv8CXuOgy5awJdI"
#define BLYNK_PRINT Serial
#define ledBiru D4
#define ledMerah D5
#define BUZZERPIN D18
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h> //Library untuk DHT
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
char auth[] = BLYNK_AUTH_TOKEN;
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void sendSensor()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
//buzzer + LED
if ( t > 40) {
digitalWrite(ledMerah, HIGH);
digitalWrite(ledBiru, LOW);
digitalWrite(BUZZERPIN, HIGH);
tone(BUZZERPIN, 150);
} else {
digitalWrite(ledMerah, LOW);
digitalWrite(ledBiru, HIGH);
digitalWrite(BUZZERPIN, LOW);
noTone(BUZZERPIN);
}
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(f);
Serial.print(F("°F Heat index: "));
Serial.print(hic);
Serial.print(F("°C "));
Serial.print(hif);
Serial.println(F("°F"));
Blynk.virtualWrite(V0, h); //mengirimkan data temperatur ke Virtual pin VO di Blynk Cloud
Blynk.virtualWrite(V1, t); //mengirimkan data kelemaban ke Virtual pin V1 di Blynk Cloud
}
void setup() {
pinMode(BUZZERPIN, OUTPUT);
pinMode(ledMerah, OUTPUT);
pinMode(ledBiru, OUTPUT);
Serial.begin(9600);
Serial.println(F("DHTxx test!"));
dht.begin();
timer.setInterval(1000L, sendSensor); //Mengaktifkan timer untuk pengiriman data 1000ms
}
void loop() {
Blynk.run(); //menjalankan blynk
timer.run(); //menjalankan timer
}