#define BLYNK_TEMPLATE_ID "TMPL6REco3TlW"
#define BLYNK_TEMPLATE_NAME "smart greenhouse"
#define BLYNK_AUTH_TOKEN "EMzsI_jedYqREi2jdEH5sOo-LImnWHHD"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal.h>
#include <OneWire.h>
#include <DallasTemperature.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// LCD
const int rs = 12, en = 13, d4 = 14, d5 = 27, d6 = 26, d7 = 25;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// Pin
#define SENSOR_PIN 4
#define RELAY_PIN 18
#define BUZZER_PIN 19
OneWire oneWire(SENSOR_PIN);
DallasTemperature sensors(&oneWire);
BlynkTimer timer;
void sendSensorData() {
sensors.requestTemperatures();
float suhu = sensors.getTempCByIndex(0);
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(suhu);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(0, 1);
if (suhu > 30.0) {
digitalWrite(RELAY_PIN, HIGH);
tone(BUZZER_PIN, 1000);
lcd.print("KIPAS: ON (HOT) ");
Blynk.virtualWrite(V1, 1);
} else {
digitalWrite(RELAY_PIN, LOW);
noTone(BUZZER_PIN);
lcd.print("STATUS: NORMAL ");
Blynk.virtualWrite(V1, 0);
}
Blynk.virtualWrite(V0, suhu);
Serial.println(suhu);
}
void setup() {
Serial.begin(115200);
// LCD INIT (PENTING)
lcd.begin(16, 2);
delay(100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("IOT GREENHOUSE");
lcd.setCursor(0, 1);
lcd.print("CONNECTING...");
sensors.begin();
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW);
noTone(BUZZER_PIN);
Blynk.begin(auth, ssid, pass);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CONNECTED BLYNK");
timer.setInterval(2000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}