• 082226375801
  • alfianmaarif@ee.uad.ac.id
  • Yogyakarta
Materi
Tutorial ESP32: Cara Koneksi Blynk Mode Online dan Offline IoT di Simulator Wokwi #wokwi #iot #blynk

Tutorial ESP32: Cara Koneksi Blynk Mode Online dan Offline IoT di Simulator Wokwi #wokwi #iot #blynk



Tutorial ESP32: Cara Koneksi Blynk Mode Online dan Offline IoT di Simulator Wokwi
#wokwi #iot #blynk

Pada bagian ini akan dibahas pembuatan dan pengujian sistem IoT berbasis mikrokontroler ESP32 yang mendukung dua mode operasional, yaitu mode online terhubung dengan server Blynk IoT dan mode offline saat koneksi internet terputus, menggunakan software simulasi WOKWI. Skematik rangkaian ditunjukkan pada Gambar 1, program Arduino pada Kode 1, dan video pembuatan pada tautan Video 1. Sistem dirancang agar ESP32 tetap dapat menjalankan logika kontrol lokal seperti membaca sensor dan mengendalikan perangkat indikator secara mandiri tanpa mengalami penundaan (blocking code) ketika sinyal Wi-Fi hilang. Begitu koneksi internet kembali stabil, status perangkat dan data telemetry akan disinkronisasikan kembali secara otomatis ke dashboard aplikasi Blynk IoT.

Gambar 1. Skematik rangkaian sistem

Pemetaan PIN:
* LED
GND => GND
VCC => 18
* BUTTON
GND – GND
OUT – 19

Kode Arduino 1. Kode Program

// =============================
// ALFIAN CENTER
// SUBSCRIBE
// Membuat Koneksi Hybrid Mode Online dan Offline IoT Blynk ESP32
// PROGRAM BAKAL DI SHARE KALO LIKE TEMBUS 50 DAN KOMEN 20
// ATAU BISA KIRIM EMAIL VIA KOMENTAR
// =============================

#define BLYNK_TEMPLATE_ID "MASUKKAN_ID_DISINI"
#define BLYNK_TEMPLATE_NAME "Smart LED Offline Mode"
#define BLYNK_AUTH_TOKEN "MASUKKAN_TOKEN_DISINI"

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>

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

const int ledPin = 18;
const int btnManual = 19; // Tombol fisik tambahan untuk mode offline

unsigned long waktuTerakhirCek = 0;
const unsigned long intervalCek = 5000; // Cek WiFi setiap 5 detik

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  pinMode(btnManual, INPUT_PULLUP);

  Serial.println("Memulai Sistem...");
  
  // Inisialisasi konfigurasi Blynk tanpa memblokir program
  WiFi.begin(ssid, pass);
  Blynk.config(auth);
}

// Kontrol dari aplikasi Blynk (Online)
BLYNK_WRITE(V0) {
  int statusTombol = param.asInt();
  digitalWrite(ledPin, statusTombol);
  Serial.println(statusTombol ? "Kontrol Online: NYALA" : "Kontrol Online: MATI");
}

void loop() {
  // 1. Jalankan Blynk hanya jika WiFi terhubung
  if (WiFi.status() == WL_CONNECTED) {
    Blynk.run();
  }

  // 2. Logika Offline Mode (Tombol Fisik tetap harus bekerja)
  logikaManualLokal();

  // 3. Sistem Re-koneksi Otomatis setiap 5 detik
  unsigned long waktuSekarang = millis();
  if (waktuSekarang - waktuTerakhirCek >= intervalCek) {
    waktuTerakhirCek = waktuSekarang;
    
    if (WiFi.status() != WL_CONNECTED) {
      Serial.println("Mode Offline: Mencoba menyambung WiFi...");
      WiFi.begin(ssid, pass); 
    } else {
      if (!Blynk.connected()) {
        Blynk.connect();
        Serial.println("WiFi OK: Menghubungkan ke Server Blynk...");
      }
    }
  }
}

// Fungsi agar tombol fisik tetap bisa dipakai walau WiFi mati
void logikaManualLokal() {
  if (digitalRead(btnManual) == LOW) { // Jika tombol fisik ditekan
    delay(200); // Debounce sederhana
    digitalWrite(ledPin, !digitalRead(ledPin)); // Toggle lampu
    Serial.println("Kontrol Manual Lokal Digunakan");
    while(digitalRead(btnManual) == LOW); // Tunggu tombol dilepas
  }
}

Video 1. Video tutorial pembuatan simulasi di WOKWI

Leave a Reply

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