#define BLYNK_TEMPLATE_ID "TMPL6AmhA05AH"
#define BLYNK_TEMPLATE_NAME "Instrumen Sensor proteus"
#define BLYNK_AUTH_TOKEN "yG3iq0YId6V_YL1bZQe6o1QjqlZ_0S3k"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
#define FLOW_SENSOR_PIN 32
#define PRESSURE_SENSOR_PIN 33
LiquidCrystal_I2C lcd(0x27, 20, 4);
unsigned long lastUpdate = 0;
const unsigned long interval = 100; // 1 detik
void setup() {
Serial.begin(115200);
Blynk.begin(auth, ssid, pass);
dht.begin();
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Monitoring Sensor");
}
void loop() {
Blynk.run();
if (millis() - lastUpdate >= interval) {
lastUpdate = millis();
float h = dht.readHumidity();
float t = dht.readTemperature();
int flowADC = analogRead(FLOW_SENSOR_PIN);
float flow_lpm = (flowADC / 4095.0) * 30.0;
int pressureADC = analogRead(PRESSURE_SENSOR_PIN);
float pressure_atm = (pressureADC / 4095.0) * 6.8;
if (!isnan(h) && !isnan(t)) {
Blynk.virtualWrite(V3, t);
Blynk.virtualWrite(V4, h);
}
Blynk.virtualWrite(V2, flow_lpm);
Blynk.virtualWrite(V1, pressure_atm);
// Tampilkan ke LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp : ");
lcd.print(t, 1);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("Humid: ");
lcd.print(h, 1);
lcd.print(" %");
lcd.setCursor(0, 2);
lcd.print("Flow : ");
lcd.print(flow_lpm, 1);
lcd.print(" L/m");
lcd.setCursor(0, 3);
lcd.print("Press: ");
lcd.print(pressure_atm, 2);
lcd.print(" atm");
// Debug ke Serial
Serial.printf("Temp: %.2f C | Humid: %.2f %% | Flow: %.2f L/m | Pressure: %.2f atm\n", t, h, flow_lpm, pressure_atm);
}
}
Sensor Tekanan
Sensor Flow Rate