• 082226375801
  • alfianmaarif@ee.uad.ac.id
  • Yogyakarta
Materi
Monitoring Suhu dan Kelembaban Coffe Storage | Penyimpanan Kopi DHT22 ESP32 Blynk IoT Wokwi

Monitoring Suhu dan Kelembaban Coffe Storage | Penyimpanan Kopi DHT22 ESP32 Blynk IoT Wokwi

Monitoring Suhu dan Kelembaban Coffe Storage | Penyimpanan Kopi DHT22 ESP32 Blynk IoT Wokwi

Pada bagian ini akan dibahas pembuatan sistem monitoring suhu dan kelembapan ruang penyimpanan kopi (coffee storage) menggunakan mikrokontroler ESP32, sensor DHT22, dan sistem Internet of Things (IoT) dengan Blynk IoT, serta software simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1. Suhu dan kelembapan ideal area penyimpanan akan diukur secara akurat dan ditampilkan pada LCD. Data pengkondisian udara tersebut dikirim secara real-time ke aplikasi Blynk IoT untuk mencegah kerusakan biji kopi akibat kelembapan berlebih.

Gambar 1. Skematik rangkaian sistem

Pemetaan PIN:
* LCD 16×2 I2C
GND => GND
VCC => 5V
SDA => 21
SCL => 22
* DHT22
VCC => 5V
SDA => 15
GND => GND
* LED RED
R => 4
GND => GND
* LED GREEN
G => 2
GND => GND
* BUZZER
GND => GND
OUT => 13

// ============================= 
// ALFIAN CENTER 
// SUBSCRIBE 
// Monitoring Suhu dan Kelembaban Coffe Storage | Penyimpanan Kopi DHT22 ESP32 Blynk IoT Wokwi
// PROGRAM BAKAL AKU KIRIM DENGAN SYARAT DIBAWAH 
// LIKE 50, KOMEN 30 DAN * WAJIB SUBSCRIBE *
// PROGRAM DIKIRIM VIA KOMENTAR 
// =============================

#define BLYNK_TEMPLATE_ID "TMPLxxxxxx"
#define BLYNK_TEMPLATE_NAME "Coffee Storage"
#define BLYNK_AUTH_TOKEN "Your_Auth_Token"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"

#define DHTPIN 15
#define DHTTYPE DHT22

#define LED_GREEN 2
#define LED_RED 4
#define BUZZER_PIN 13

char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
BlynkTimer timer;

void checkCoffeeStorage() {
  float hum = dht.readHumidity();
  float temp = dht.readTemperature();

  if (isnan(hum) || isnan(temp)) {
    lcd.setCursor(0, 0);
    lcd.print("Sensor Error!!  ");
    return;
  }

  String coffeeStatus = "";
  bool isWarning = false;

  // LOGIKA AMBANG BATAS KELEMBAPAN KOPI
  if (hum > 60.0) {
    // TERLALU LEMBAB / SEGAL BOCOR (>60%)
    digitalWrite(LED_RED, HIGH);
    digitalWrite(LED_GREEN, LOW);
    tone(BUZZER_PIN, 1000, 200); // Alarm Suara
    coffeeStatus = "WADAH BOCOR!";
    isWarning = true;
    
    // Kirim Notifikasi ke Smartphone via Blynk
    Blynk.logEvent("coffee_alert", "⚠️ PERINGATAN! Kelembapan Wadah Kopi Tembus " + String(hum, 1) + "%. Segel Bocor/Berpotensi Berjamur!");
  } 
  else if (hum <= 55.0) {
    // AMAN / OPTIMAL (<=55%)
    digitalWrite(LED_RED, LOW);
    digitalWrite(LED_GREEN, HIGH);
    noTone(BUZZER_PIN);
    coffeeStatus = "KOPI AMAN";
    isWarning = false;
  } 
  else {
    // RENTANG WASPADA (55.1% - 60.0%)
    digitalWrite(LED_RED, LOW);
    digitalWrite(LED_GREEN, LOW);
    noTone(BUZZER_PIN);
    coffeeStatus = "WASPADA LEMBAB";
    isWarning = false;
  }

  // UPDATE DATA KE BLYNK IOT
  Blynk.virtualWrite(V0, hum);            // Double / Float
  Blynk.virtualWrite(V1, temp);           // Double / Float
  Blynk.virtualWrite(V2, coffeeStatus);   // String
  Blynk.virtualWrite(V3, isWarning ? 255 : 0); // Integer (LED Widget)

  // UPDATE LCD DISPLAY 16x2
  lcd.setCursor(0, 0);
  lcd.print("H:"); lcd.print(hum, 1); lcd.print("% T:"); lcd.print(temp, 1); lcd.print("C  ");

  lcd.setCursor(0, 1);
  lcd.print("ST:"); lcd.print(coffeeStatus); lcd.print("        ");
}

void setup() {
  Serial.begin(115200);

  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_RED, OUTPUT);
  pinMode(BUZZER_PIN, OUTPUT);

  dht.begin();
  lcd.init();
  lcd.backlight();

  lcd.print("Smart Coffee");
  lcd.setCursor(0, 1);
  lcd.print("Beans Storage");
  delay(1500);

  Blynk.begin(auth, ssid, pass);
  lcd.clear();

  // Evaluasi kondisi wadah setiap 2 detik
  timer.setInterval(2000L, checkCoffeeStorage);
}

void loop() {
  Blynk.run();
  timer.run();
}

Video 1. Video tutorial pembuatan simulasi di WOKWI

Leave a Reply

Your email address will not be published. Required fields are marked *