Panduan · 15 mnt baca

Tutorial Blynk ESP32: Mengendalikan LED, Relay, dan Sensor dari Ponsel

Tutorial Blynk ESP32: buat template dan datastream (V0, V1), ambil auth token, kendalikan LED dan relay, tampilkan grafik data sensor, kirim peringatan, dan pakai BlynkTimer.

Blynk dan ESP32 adalah cara tercepat untuk mengendalikan sebuah board dari mana saja di dunia tanpa harus membuat aplikasi ponsel sendiri. Blynk IoT memberimu server cloud tempat ESP32 terhubung (Blynk.Cloud), aplikasi ponsel tempat kamu menyusun dashboard dengan drag and drop, dan dashboard web. Ketika kamu mengetuk sakelar di ponsel, perintahnya lebih dulu pergi ke cloud, lalu dari sana ke ESP32; suhu yang diukur ESP32 kembali lewat jalur yang sama dan muncul di ponselmu sebagai angka dan grafik. Ponsel dan board-mu tidak harus berada di rumah yang sama: semuanya tetap jalan meski ponselmu memakai data seluler.

Di panduan ini kamu akan membuat proyek yang berfungsi dari nol: membuka akun Blynk.Cloud, mendefinisikan template dan datastream (V0, V1, V2, V3), mengambil auth token perangkat, menginstal library, mengendalikan LED dan relay dari ponsel, menampilkan grafik data sensor DHT11, dan menerima notifikasi di ponsel ketika suhu naik. Kamu juga akan belajar kenapa sebaiknya tidak memakai delay() dan apa yang dilakukan BlynkTimer sebagai gantinya, cara menghitung batas pesan paket gratis, kenapa kode peninggalan Blynk lama tidak bisa dikompilasi, dan cara mengatasi error koneksi yang paling sering muncul.

Board pengembangan ESP32 yang dikendalikan dari ponsel dengan Blynk IoT
Berkat Wi-Fi bawaannya, ESP32 terhubung langsung ke Blynk.Cloud; tidak perlu modul nirkabel tambahan.

Apa itu Blynk IoT dan bagaimana cara kerjanya?

Dengan Blynk, ESP32 dan ponselmu tidak pernah terhubung langsung satu sama lain; keduanya terhubung ke Blynk.Cloud dan server-lah yang mengantar pesannya. Ketika ESP32 menyala, ia bergabung ke Wi-Fi, lalu terhubung ke server Blynk dan memperkenalkan diri dengan auth token-nya. Data mengalir lewat virtual pin (V0–V255): virtual pin bukan kaki sungguhan di ESP32, melainkan saluran data bernomor antara kodemu dan aplikasi. Sakelar di aplikasi menulis 1 ke V1, fungsi BLYNK_WRITE(V1) di kodemu menangkapnya lalu mengaktifkan relay; ketika kodemu menjalankan Blynk.virtualWrite(V2, 24.5), gauge di ponselmu ikut diperbarui. Inilah bagian-bagian dasarnya:

KonsepFungsinyaContoh di panduan ini
TemplateResep bersama untuk perangkat sejenis: datastream, dashboard, dan eventESP32 Home
DatastreamSaluran data yang terikat ke sebuah virtual pin, dengan tipe dan rentang tetapV2: Suhu, Double, 0–50 °C
Perangkat (Device)Board sungguhan yang dibuat dari template; masing-masing punya datanya sendiriESP32 di ruang tamu
Auth tokenKunci identitas rahasia perangkat; kodemu memakainya untuk terhubung ke cloudBaris BLYNK_AUTH_TOKEN
WidgetElemen dashboard seperti sakelar, gauge, dan grafikButton, Gauge, SuperChart
EventPeringatan yang mengirim notifikasi dan dicatat di timelineyuksek_sicaklik

Perbedaan Blynk lama dan Blynk IoT yang baru

Sebagian besar video dan sketch Blynk di internet dibuat untuk versi lama (Blynk Legacy), yang sudah tidak berfungsi. Platform baru diluncurkan pada Mei 2021; aplikasi lama ditarik dari toko aplikasi pada Juni 2022, dan server cloud lama dimatikan untuk selamanya pada 31 Desember 2022. Jadi token dari proyek lama, poin energi yang dulu kamu beli, atau alamat blynk-cloud.com tidak ada gunanya sekarang; kamu perlu membangun ulang proyeknya di platform baru. Kabar baiknya, sebagian besar kode ESP32 (BLYNK_WRITE, virtualWrite, BlynkTimer) tetap sama.

FiturBlynk lama (Legacy)Blynk IoT (baru)
Di mana proyek diatur?Semuanya dalam satu proyek di aplikasi ponselTemplate dan datastream di Blynk.Console (web), dashboard di ponsel dan web
Auth tokenSatu per proyek, dikirim lewat emailSatu per perangkat, ditampilkan di halaman perangkat
Model hargaWidget dibeli dengan poin energiPaket bulanan dengan batas perangkat, pesan, dan fitur
Bagian atas sketchCukup satu baris char auth[]BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN wajib ada
NotifikasiBlynk.notify() dan Blynk.email()Event didefinisikan di template dan dipicu dengan Blynk.logEvent()
Serverblynk-cloud.com, port 80 atau 8080 (sudah dimatikan)blynk.cloud, port 80, atau 443 dengan SSL
Dashboard webTidak adaAda (Blynk.Console)
Server lokalServer Java open source bisa di-host sendiriTidak ada server lokal pribadi; server lama sudah tidak diperbarui
Ketika kamu mengompilasi contoh lama dengan library baru, kamu akan menemui tiga masalah khas: sketch yang memakai BLYNK_DEVICE_NAME gagal dengan “Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME”, sketch yang berisi Blynk.notify() berhenti dengan “'class BlynkWifi' has no member named 'notify'”, dan sketch yang menyebut blynk-cloud.com (biasanya dengan port 8080) di Blynk.begin() mungkin bisa dikompilasi, tetapi tidak akan pernah terhubung.

Daftar komponen dan pengkabelan

Untuk proyek ini kamu akan memakai board pengembangan ESP32, modul relay 5 V, sensor suhu dan kelembapan DHT11, LED opsional dengan resistor 220 Ω, breadboard, dan kabel jumper. Untuk LED, LED biru bawaan board di GPIO 2 sudah cukup; kalau kamu menambahkan LED eksternal, nilai resistornya bisa dicari dengan kalkulator resistor LED. Cek juga susunan pin board-mu di alat diagram pin; di sebagian board pin 5 V berlabel VIN, di board lain 5V.

ESP32
ESP32
Modul relay
Modul relay
DHT11
DHT11
LED
LED
Breadboard
Breadboard
Kabel jumper
Kabel jumper
KomponenPin komponenPin ESP32Catatan
LED (opsional)Kaki panjang (+)GPIO 2Lewat resistor 220 Ω; kaki pendek ke GND
Modul relayVCCVIN / 5VPin ini berisi sekitar 5 V ketika diberi daya lewat USB
Modul relayGNDGNDGround bersama
Modul relayINGPIO 26Untuk modul aktif LOW, atur ROLE_AKTIF_LOW = true di kode
DHT11VCC3V3Bekerja pada 3,3–5,5 V
DHT11DATAGPIO 4Sensor tanpa modul butuh pull-up 10 kΩ; versi modul sudah memilikinya di board
DHT11GNDGNDGround bersama
Pin ESP32 mengeluarkan 3,3 V. Sebagian besar modul relay 5 V bisa terpicu dengan sinyal ini, tetapi pada modul aktif LOW, HIGH 3,3 V tidak selalu bisa melepas relay sepenuhnya; kalau relay tidak pernah mati, pakai modul dengan pemicu 3,3 V atau pasang transistor NPN di antaranya. Kalau kamu menyambungkan beban listrik 230 V (listrik PLN di Indonesia 220 V) lewat relay, selalu rangkai dengan steker dicabut, jangan biarkan ada konduktor terbuka, dan minta bantuan orang dewasa; detailnya ada di Apa Itu Modul Relay?

Langkah 1: Buat akun Blynk.Cloud dan template

  1. Di komputermu, buka blynk.cloud, daftar akun gratis dengan alamat emailmu, lalu atur kata sandimu lewat tautan di email yang kamu terima.
  2. Di menu kiri, buka Developer Zone > My Templates lalu klik + New Template.
  3. Beri nama template (misalnya ESP32 Home), pilih ESP32 sebagai hardware dan WiFi sebagai jenis koneksi, lalu buat template-nya.
  4. Nilai BLYNK_TEMPLATE_ID dan BLYNK_TEMPLATE_NAME yang tampil di halaman template akan dimasukkan ke kodemu; untuk sekarang cukup ingat letaknya.
  5. Kalau wizard Quickstart muncul ketika kamu mendaftar, kamu boleh melewatinya; di panduan ini kita mengerjakan setiap langkah secara manual supaya kamu tahu kegunaan setiap pengaturan.

Langkah 2: Definisikan datastream (V0, V1, V2, V3)

Datastream adalah kartu identitas sebuah virtual pin: menentukan pin yang mana, tipe datanya (Integer untuk bilangan bulat, Double untuk desimal, String untuk teks), nilai minimum dan maksimum, satuan, dan berapa angka desimal yang ditampilkan. Buka template dalam mode edit, masuk ke tab Datastreams, pilih + New Datastream > Virtual Pin, lalu buat empat saluran ini:

Virtual pinNamaTipe dataMin – MaksSatuan dan desimalWidget
V0LEDInteger0 – 1Tidak adaButton / Switch
V1RelayInteger0 – 1Tidak adaButton / Switch
V2SuhuDouble0 – 50°C, #.#Gauge, SuperChart
V3KelembapanDouble0 – 100%, #Gauge, SuperChart
Kolom Min dan Max bukan hiasan: Blynk memotong nilai di luar rentang ke batasnya. Kalau Max pada datastream suhu kamu biarkan 1, dashboard akan menampilkan 1 meskipun sensor membaca 24,5 °C. Kalau kamu ingin sakelar kembali ke keadaan terakhirnya ketika board restart, pakai Blynk.syncVirtual() di dalam BLYNK_CONNECTED() di kodemu; atau nyalakan Sync with latest server value di pengaturan lanjutan datastream lalu panggil Blynk.syncAll(). Jangan lupa klik Save di template setiap kali selesai mengubah sesuatu.

Langkah 3: Buat perangkat dan ambil auth token

Template adalah resep, perangkat adalah board sungguhan yang dibuat dari resep itu. Di menu kiri buka Devices, klik + New Device, pilih template ESP32 Home dengan From template, lalu beri nama perangkatnya. Setelah perangkat dibuat, muncul konfigurasi tiga baris: BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN. Salin baris-baris ini; kamu juga bisa menemukannya nanti di bagian Device Info di halaman perangkat (di sebagian versi antarmuka disebut Developer Tools).

Auth token adalah kata sandi perangkatmu. Jangan memposting kode yang berisi token di forum atau repositori GitHub publik; siapa pun yang mendapat token itu bisa menyalakan dan mematikan relay-mu. Kalau token bocor, hapus perangkatnya lalu buat lagi untuk mendapat token baru. Setiap board butuh perangkat dan token sendiri: kalau token yang sama kamu upload ke dua ESP32, keduanya akan terus saling menendang sampai offline.

Langkah 4: Instal library Blynk di Arduino IDE

  1. Kalau paket board ESP32 belum terinstal di Arduino IDE, instal dulu; langkah-langkahnya ada di Apa Itu ESP32?
  2. Buka Library Manager, ketik Blynk di kotak pencarian, lalu instal library resmi Blynk karya Volodymyr Shymanskyy. Kalau ditanya soal dependensi, pilih Install all.
  3. Untuk sensornya, instal DHT sensor library dari Adafruit dan library Adafruit Unified Sensor yang dibutuhkannya dari tempat yang sama. Kalau ada kendala, lihat panduan Cara Instal Library Arduino.
  4. Pilih ESP32 Dev Module di Tools > Board, sambungkan board dengan kabel USB yang bisa mengirim data, lalu pilih port yang benar.
  5. Library ini dilengkapi contoh siap pakai: File > Examples > Blynk > Boards_WiFi > ESP32_WiFi adalah bentuk paling sederhana dari sketch pertama di bawah.

Sketch pertama: menyalakan dan mematikan LED dari ponselmu (V0)

Di kode di bawah, ganti tiga baris teratas dengan baris yang kamu salin dari halaman perangkatmu, lalu ganti nama dan kata sandi Wi-Fi dengan milikmu. Tiga baris #define ini harus ada sebelum baris #include; library mencari nilai-nilai ini ketika kompilasi dan memunculkan error kompilasi kalau tidak menemukannya.

C++ (Arduino IDE)
1// Bu üç satırı Blynk.Console'daki cihaz sayfasından kopyala / copy these three lines from the device page in Blynk.Console
2#define BLYNK_TEMPLATE_ID   "TMPLxxxxxxxx"
3#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
4#define BLYNK_AUTH_TOKEN    "CihazTokeniniBurayaYapistir"
5
6#define BLYNK_PRINT Serial          // bağlantı günlüğünü Seri Monitör'e yaz / print the connection log to the Serial Monitor
7
8#include <WiFi.h>
9#include <WiFiClient.h>
10#include <BlynkSimpleEsp32.h>
11
12char ssid[] = "AgAdi";              // Wi-Fi adın (yalnız 2,4 GHz) / your Wi-Fi name (2.4 GHz only)
13char pass[] = "Sifre123";           // Wi-Fi şifren / your Wi-Fi password
14
15const int LED_PIN = 2;              // çoğu DevKit'te dahili LED / onboard LED on most DevKits
16
17// Uygulama V0'a her değer yazdığında çalışır / runs every time the app writes a value to V0
18BLYNK_WRITE(V0) {
19  int deger = param.asInt();        // anahtar: 0 ya da 1 / switch: 0 or 1
20  digitalWrite(LED_PIN, deger);
21  Serial.print("V0 = ");
22  Serial.println(deger);
23}
24
25// Buluta her bağlanışta son V0 değerini iste / ask for the last V0 value on every connection
26BLYNK_CONNECTED() {
27  Blynk.syncVirtual(V0);
28}
29
30void setup() {
31  Serial.begin(115200);
32  pinMode(LED_PIN, OUTPUT);
33  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);   // Wi-Fi'ye ve Blynk.Cloud'a bağlan / connect to Wi-Fi and Blynk.Cloud
34}
35
36void loop() {
37  Blynk.run();                      // gelen komutları işler, bağlantıyı canlı tutar / handles commands, keeps the link alive
38}
BarisFungsinya
BLYNK_PRINT SerialMembuat library mencetak langkah-langkah koneksinya ke Serial Monitor; sangat berguna ketika mencari masalah
BLYNK_WRITE(V0)Fungsi yang otomatis berjalan ketika aplikasi atau dashboard web mengirim nilai ke V0
param.asInt()Mengubah nilai yang masuk menjadi bilangan bulat; pakai asFloat() untuk desimal dan asStr() untuk teks
BLYNK_CONNECTED()Berjalan sekali setiap kali koneksi berhasil
Blynk.syncVirtual(V0)Meminta nilai terakhir V0 dari server, sehingga LED kembali ke keadaan sebelumnya meski board restart
Blynk.begin(...)Menghubungkan ke Wi-Fi dan Blynk.Cloud; menunggu sampai terhubung
Blynk.run()Memproses perintah yang masuk dan menjaga koneksi tetap hidup; harus dipanggil di loop tanpa jeda apa pun

Setelah meng-upload kode dan membuka Serial Monitor di 115200 baud, kamu akan melihat baris seperti “Connecting to AgAdi”, “Connected to WiFi”, alamat IP, “Connecting to blynk.cloud:80”, dan akhirnya “Ready (ping: 45ms).” secara berurutan. Begitu baris Ready muncul, perangkat tampil sebagai Online di Blynk.Console. Pada koneksi pertama kamu mungkin juga melihat baris yang diawali “Redirecting to”; library otomatis pindah ke server regional tempat akunmu berada, dan itu normal.

Menyiapkan dashboard ponsel dan web

Kodenya sudah siap, sekarang mari pasang tombol-tombolnya. Di Blynk, dashboard ponsel dan dashboard web dirancang terpisah; karena keduanya memakai datastream yang sama, perubahan yang kamu buat dari salah satunya langsung muncul di yang lain.

  1. Instal aplikasi Blynk IoT di ponselmu (bukan Blynk lama atau Blynk Legacy) dan masuk dengan akun yang sama.
  2. Nyalakan Developer Mode di halaman profilmu, lalu ketuk template ESP32 Home di Developer Zone.
  3. Ketuk kanvas kosong untuk menambahkan widget: masing-masing satu Button atau Switch untuk V0 dan V1, Gauge atau Labeled Value untuk V2 dan V3, dan SuperChart untuk riwayat.
  4. Ketuk setiap widget dan pilih datastream yang sesuai di pengaturannya; V2 dan V3 bisa dimasukkan bersamaan ke SuperChart. Perubahan tersimpan otomatis.
  5. Untuk dashboard web, edit template di Blynk.Console, seret dan lepas widget di tab Web Dashboard, pilih datastream dari ikon roda gigi setiap widget, lalu klik Save.
  6. Di aplikasi, ketuk nama perangkatmu dan coba sakelarnya: LED di GPIO 2 seharusnya langsung menyala dan Serial Monitor mencetak “V0 = 1”.
Widget Button punya dua mode: di mode Switch, nilainya berganti antara 1 dan 0 setiap kali diketuk; di mode Push, ia mengirim 1 selama ditahan dan 0 ketika dilepas. Pakai Switch untuk lampu dan stopkontak, dan Push untuk pekerjaan yang butuh pulsa singkat, seperti bel pintu atau pintu garasi.

Relay dan sensor: membaca tanpa delay() dengan BlynkTimer

Aturan emas Blynk: loop() hanya boleh berisi Blynk.run() dan timer.run(). Kalau kamu menaruh delay(2000) di loop, ESP32 tidak bisa melihat perintah dari ponselmu selama waktu itu dan sakelar merespons terlambat; jeda yang sangat lama membuat server menganggap perangkat offline. Lebih parah lagi, kalau Blynk.virtualWrite() langsung ditaruh di loop, ESP32 mencoba mengirim ratusan pesan per detik; server membatasi perangkat itu dan kuota pesan bulananmu cepat habis. Solusinya adalah BlynkTimer, yang bekerja dengan prinsip millis(): ia memanggil fungsi pilihanmu pada interval pilihanmu, dan loop tetap bebas di antaranya. Ide ini kami jelaskan lengkap di Arduino millis() vs delay().

Kode di bawah mengendalikan relay dengan V1, mengirim suhu yang dibaca DHT11 ke V2 dan kelembapan ke V3 setiap 60 detik, lalu memicu event notifikasi ketika suhu naik di atas 30 °C. Untuk cara kerja sensornya, lihat Sensor Suhu dan Kelembapan DHT11.

C++ (Arduino IDE)
1#define BLYNK_TEMPLATE_ID   "TMPLxxxxxxxx"
2#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
3#define BLYNK_AUTH_TOKEN    "CihazTokeniniBurayaYapistir"
4#define BLYNK_PRINT Serial
5
6#include <WiFi.h>
7#include <WiFiClient.h>
8#include <BlynkSimpleEsp32.h>
9#include <DHT.h>
10
11char ssid[] = "AgAdi";
12char pass[] = "Sifre123";
13
14const int ROLE_PIN = 26;            // röle modülünün IN pini / relay module IN pin
15const int DHT_PIN  = 4;             // DHT11 veri pini / DHT11 data pin
16const bool ROLE_AKTIF_LOW = true;   // çoğu modül LOW'da çeker / most modules switch on with LOW
17
18DHT dht(DHT_PIN, DHT11);            // DHT22 kullanıyorsan DHT22 yaz / write DHT22 if you use a DHT22
19BlynkTimer timer;                   // delay() yerine zamanlayıcı / a timer instead of delay()
20bool alarmGitti = false;            // aynı bildirimin tekrarını önler / stops the same alert repeating
21
22void roleYaz(bool acik) {
23  if (ROLE_AKTIF_LOW) digitalWrite(ROLE_PIN, acik ? LOW : HIGH);
24  else                digitalWrite(ROLE_PIN, acik ? HIGH : LOW);
25}
26
27// V1: uygulamadaki röle anahtarı / relay switch in the app
28BLYNK_WRITE(V1) {
29  roleYaz(param.asInt() == 1);
30}
31
32// Elektrik gidip gelince rölenin son durumunu geri al / restore the relay state after a power cut
33BLYNK_CONNECTED() {
34  Blynk.syncVirtual(V1);
35}
36
37// Zamanlayıcının çağırdığı fonksiyon / the function called by the timer
38void sensorGonder() {
39  float sicaklik = dht.readTemperature();
40  float nem = dht.readHumidity();
41  if (isnan(sicaklik) || isnan(nem)) {
42    Serial.println("DHT okunamadi / DHT read failed");
43    return;
44  }
45  Blynk.virtualWrite(V2, sicaklik);   // V2: sıcaklık (°C) / temperature (°C)
46  Blynk.virtualWrite(V3, nem);        // V3: nem (%) / humidity (%)
47
48  // 30 °C'yi geçince tek bildirim, 28 °C'nin altında yeniden kur / one alert above 30 °C, re-arm below 28 °C
49  if (sicaklik > 30.0 && !alarmGitti) {
50    Blynk.logEvent("yuksek_sicaklik", String("Sicaklik / Temp: ") + sicaklik + " C");
51    alarmGitti = true;
52  } else if (sicaklik < 28.0) {
53    alarmGitti = false;
54  }
55}
56
57void setup() {
58  Serial.begin(115200);
59  pinMode(ROLE_PIN, OUTPUT);
60  roleYaz(false);                   // açılışta röle kapalı / relay off at boot
61  dht.begin();
62  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
63  timer.setInterval(60000L, sensorGonder);   // 60 saniyede bir ölç ve gönder / measure and send every 60 seconds
64}
65
66void loop() {
67  Blynk.run();
68  timer.run();                      // loop'ta delay() ya da virtualWrite olmasın / no delay() or virtualWrite in loop
69}

Baris timer.setInterval(60000L, sensorGonder) memanggil fungsi itu setiap 60.000 milidetik; huruf L di ujungnya menandai angka itu sebagai long. Untuk pekerjaan sekali jalan, pakai timer.setTimeout(), misalnya untuk menyalakan relay lalu mematikannya 5 detik kemudian. Satu objek BlynkTimer menampung sampai 16 timer, lebih dari cukup untuk sebagian besar proyek. Pengecekan isnan() mencegah nilai NaN yang tidak bermakna sampai ke cloud ketika sensor gagal dibaca. Flag alarmGitti dan selisih antara ambang 30 dan 28 °C (histeresis) mencegah notifikasi baru di setiap pembacaan ketika suhu naik-turun di sekitar 30 °C.

Menampilkan data sensor di grafik

Ada dua syarat supaya grafik terisi: ESP32 harus mengirim data dengan virtualWrite, dan datastream harus menyimpan riwayat. Kalau Last Value dipilih untuk riwayat di pengaturan datastream, server hanya menyimpan nilai terakhir dan tidak ada grafik yang digambar; opsi rata-rata per menit (1 Minute AVG) sudah cukup untuk grafik. Di paket gratis, riwayat disimpan selama 1 minggu, dan penyimpanan data mentah (RAW) hanya untuk paket berbayar. Di SuperChart kamu bisa berpindah rentang waktu seperti jam, hari, dan minggu, serta melihat suhu dan kelembapan dalam dua warna di grafik yang sama. Karena data datang setiap 60 detik, titik-titik pertama butuh beberapa menit untuk muncul; jangan buru-buru menurunkan intervalnya ke 1 detik, alasannya akan kamu lihat di bagian paket gratis.

Mengirim notifikasi: event dan Blynk.logEvent()

Di Blynk baru, notifikasi bekerja lewat event. Kamu mendefinisikan event-nya dulu di template, lalu memicunya di kode dengan Blynk.logEvent(); Blynk mencatat event itu di timeline perangkat dan, tergantung pengaturannya, mengirim notifikasi push atau email ke ponselmu. Deskripsi event boleh sampai 300 karakter, tetapi karena buffer kirim library kecil, sebaiknya buat singkat saja.

  1. Buka template dalam mode edit dan pindah ke tab Events & Notifications.
  2. Klik + Create Event, beri nama event seperti “Suhu tinggi”, dan atur kode event-nya menjadi yuksek_sicaklik. Kode ini hanya boleh berisi huruf, angka, dan garis bawah, dan harus sama persis dengan teks di sketch-mu.
  3. Pilih Warning sebagai jenis event; Info, Warning, dan Critical menentukan seberapa serius peringatannya. Pastikan opsi timeline menyala supaya event muncul di aplikasi.
  4. Di tab Notifications, nyalakan notifikasi, pilih akunmu sendiri sebagai penerima, serta push dan email sebagai saluran; kalau mau, batasi notifikasi menjadi satu per jam.
  5. Klik Save di template dan konfirmasi pembaruan perangkat. Jangan lupa mengizinkan notifikasi untuk aplikasi Blynk IoT di ponselmu.
BatasNilai
Event per perangkat per hari (logEvent)100
Jeda antara dua event dengan jenis yang samaMinimal 1 detik
Jeda antara dua notifikasi (push, email)Minimal 5 detik
Deskripsi eventSampai 300 karakter
Laju permintaan per perangkatSampai 50 per detik
Panjang nilai StringSampai 1024 byte
Jangan pernah menaruh Blynk.logEvent() di dalam loop() atau di dalam kondisi tanpa flag yang dijalankan di setiap pembacaan. Kode yang mengirim event setiap 60 detik selama suhu di atas ambang akan menghabiskan batas 100 event per hari dalam sekitar 100 menit, dan kamu tidak akan menerima notifikasi lain hari itu. Pakai flag seperti di kode di atas, atau nyalakan opsi pembatasan di tab Notifications.

Batas paket gratis: cara menghitung jumlah pesan

Paket gratis Blynk cukup untuk belajar dan proyek kecil, tetapi proyek yang dibuat tanpa memahami batasnya bisa mendadak diam di tengah bulan. Per Oktober 2026, halaman harga Blynk mencantumkan nilai berikut untuk paket gratis: 5 perangkat, 1 pengguna, 100.000 pesan perangkat per bulan, riwayat data 1 minggu, 10 template, 5 event per template, 1 webhook, dan 5 otomatisasi. Batas-batas ini sudah beberapa kali berubah dalam beberapa tahun terakhir; sebelum membuat proyek jangka panjang, cek nilai terbarunya di halaman harga Blynk atau di pengaturan paket akunmu. Yang paling banyak memakan kuota adalah perintah virtualWrite, syncVirtual, dan logEvent yang dikirim perangkatmu, dan setiap satu virtualWrite dihitung satu pesan. Satu bulan berisi sekitar 2.592.000 detik, jadi hitungannya sederhana:

Interval kirim1 datastream (30 hari)2 datastream (30 hari)Muat dalam batas 100.000?
2 detik1.296.0002.592.000Tidak
10 detik259.200518.400Tidak
30 detik86.400172.800Satu nilai muat, dua tidak
60 detik43.20086.400Muat, tetapi dengan dua nilai cadangannya tipis
5 menit8.64017.280Muat dengan mudah
Ada tiga cara menghemat pesan: buat interval pengukuran selama yang benar-benar kamu butuhkan (mengecek suhu ruangan setiap 5 menit sudah cukup), kirim nilai hanya ketika berubah sebesar jumlah tertentu (misalnya ketika suhu berubah 0,5 °C), dan jangan kirim data ke datastream yang tidak kamu pakai. Contoh bawaan library juga menyarankan untuk tidak mengirim lebih dari 10 nilai per detik.

Koneksi yang tidak macet ketika Wi-Fi tidak ada

Blynk.begin() memang mudah, tetapi punya kelemahan: kalau koneksi Wi-Fi atau Blynk gagal dibuat, ia menunggu selamanya di dalam setup() dan bagian lain board tidak pernah berjalan. Di proyek yang harus tetap bekerja ketika internet putus, seperti termostat atau sistem penyiraman, kamu sebaiknya mengelola koneksinya sendiri. Kerangka di bawah memulai Wi-Fi tanpa menunggu, hanya menerapkan pengaturan dengan Blynk.config(), dan mengecek koneksi setiap 10 detik; sementara itu pekerjaan lokal yang kamu tambahkan ke timer tetap berjalan tanpa bergantung pada internet.

C++ (Arduino IDE)
1#define BLYNK_TEMPLATE_ID   "TMPLxxxxxxxx"
2#define BLYNK_TEMPLATE_NAME "ESP32 Ev"
3#define BLYNK_AUTH_TOKEN    "CihazTokeniniBurayaYapistir"
4#define BLYNK_PRINT Serial
5
6#include <WiFi.h>
7#include <WiFiClient.h>
8#include <BlynkSimpleEsp32.h>
9
10char ssid[] = "AgAdi";
11char pass[] = "Sifre123";
12
13BlynkTimer timer;
14
15// Wi-Fi varsa ama Blynk bağlı değilse yeniden dene / retry Blynk when Wi-Fi is up but Blynk is not
16void baglantiKontrol() {
17  if (WiFi.status() == WL_CONNECTED && !Blynk.connected()) {
18    Serial.println("Blynk'e yeniden baglaniliyor / reconnecting to Blynk");
19    Blynk.connect(3000);            // en fazla 3 saniye bekle / wait at most 3 seconds
20  }
21}
22
23void setup() {
24  Serial.begin(115200);
25  WiFi.mode(WIFI_STA);
26  WiFi.begin(ssid, pass);           // beklemeden başlat / start without waiting
27  Blynk.config(BLYNK_AUTH_TOKEN);   // yalnız ayarla, bağlanmayı bekleme / configure only, don't block
28  timer.setInterval(10000L, baglantiKontrol);   // 10 saniyede bir kontrol / check every 10 seconds
29}
30
31void loop() {
32  if (Blynk.connected()) {
33    Blynk.run();
34  }
35  timer.run();                      // yerel işler internet yokken de çalışır / local tasks keep running offline
36}

ESP32 mencoba tersambung ulang ke Wi-Fi sendiri ketika koneksinya putus; kode hanya menyambung ulang ke Blynk setelah Wi-Fi kembali. Kalau kamu ingin datamu terenkripsi, cukup sertakan BlynkSimpleEsp32_SSL.h sebagai ganti BlynkSimpleEsp32.h; koneksinya lalu memakai TLS di port 443, bukan 80, dan juga bisa menembus blokir port di sebagian jaringan sekolah atau kantor. Kalau kamu tidak mau menulis detail Wi-Fi langsung di kode, contoh Blynk.Edgent > Edgent_ESP32 dari library memungkinkanmu memasukkan nama jaringan dan kata sandi dari aplikasi Blynk IoT di ponsel; dengan cara ini auth token diberikan otomatis ketika perangkat ditambahkan, dan kode bisa diperbarui lewat udara (OTA). Kode yang sama juga berjalan di board ESP8266: untuk NodeMCU, cukup pakai ESP8266WiFi.h dan BlynkSimpleEsp8266.h.

Blynk dengan Raspberry Pi Pico W dan MicroPython

Blynk bukan hanya untuk ESP32. Kalau kamu memakai MicroPython di Raspberry Pi Pico W, kamu cukup menyalin file tunggal BlynkLib.py dari library Python Blynk ke Pico dengan Thonny. Perlu diingat, library ini sudah tidak dikembangkan aktif dan Blynk menyarankan API MQTT-nya untuk proyek baru; meski begitu, library ini tetap bisa diandalkan untuk belajar dan proyek sederhana. Kode di bawah mengendalikan LED bawaan Pico W dengan V0 dan mengirim pembacaan sensor suhu internal chip ke V2 sekali per menit. Buat perangkat terpisah untuk Pico W di Blynk.Console dan pakai token-nya. Kalau kamu baru mengenal MicroPython, Dasar-Dasar MicroPython adalah tempat yang bagus untuk mulai.

MicroPython
1import network, time
2from machine import Pin, ADC
3import BlynkLib                      # BlynkLib.py Pico'da olmalı / BlynkLib.py must be on the Pico
4
5WIFI_SSID = "AgAdi"
6WIFI_PASS = "Sifre123"
7BLYNK_AUTH = "PicoTokeniniBurayaYapistir"
8
9led = Pin("LED", Pin.OUT)            # Pico W dahili LED / Pico W onboard LED
10sensor = ADC(4)                      # yongadaki sıcaklık sensörü / on-chip temperature sensor
11
12wlan = network.WLAN(network.STA_IF)
13wlan.active(True)
14wlan.connect(WIFI_SSID, WIFI_PASS)
15while not wlan.isconnected():
16    time.sleep(0.5)
17print("IP:", wlan.ifconfig()[0])
18
19blynk = BlynkLib.Blynk(BLYNK_AUTH, insecure=True)   # 80 portu, TLS'siz / port 80, no TLS
20
21@blynk.on("V0")
22def v0_yazildi(value):               # uygulamadaki anahtar / switch in the app
23    led.value(int(value[0]))
24
25@blynk.on("connected")
26def baglandi(ping):
27    print("Blynk hazir / ready, ping:", ping, "ms")
28    blynk.sync_virtual(0)            # son V0 değerini iste / ask for the last V0 value
29
30son = time.ticks_ms()
31while True:
32    blynk.run()
33    if time.ticks_diff(time.ticks_ms(), son) >= 60000:   # 60 saniyede bir / every 60 seconds
34        son = time.ticks_ms()
35        volt = sensor.read_u16() * 3.3 / 65535
36        sicaklik = 27 - (volt - 0.706) / 0.001721
37        blynk.virtual_write(2, round(sicaklik, 1))      # V2: sıcaklık / temperature

Di contoh ini koneksi dibuat tanpa enkripsi di port 80 dengan insecure=True; ini opsi yang paling hemat memori dan setara dengan BlynkSimpleEsp32.h di ESP32. Kalau parameter ini dihapus, library mencoba memakai TLS di port 443. Alasan kita mengukur waktu dengan ticks_ms di loop, bukan dengan time.sleep(), sama seperti di sisi Arduino: kalau blynk.run() tidak sering dipanggil, perintah jadi terlambat dan koneksinya putus. Sensor suhu internal chip bisa meleset beberapa derajat dari suhu ruangan; sambungkan DHT11 atau DS18B20 untuk pengukuran sungguhan.

Ide proyek dengan Blynk

  • Colokan pintar: nyalakan dan matikan lampu meja atau kipas dari mana saja di dunia dengan relay; untuk pengkabelan relay, lihat Apa Itu Modul Relay?
  • Penyiraman tanaman jarak jauh: jalankan pompa ketika sensor kelembapan tanah melaporkan tanah kering, dan pantau tingkat kelembapannya di grafik.
  • Rumah kaca pintar: nyalakan kipas ketika suhu dan kelembapan naik dan terima notifikasi ketika nilainya melewati ambang; detailnya di Proyek Rumah Kaca Pintar.
  • Alarm maling: kirim notifikasi kritis ke ponselmu dengan logEvent ketika sensor gerak PIR mendeteksi seseorang.
  • Peringatan kebocoran gas: ketika sensor gas MQ-2 melewati ambangnya, bunyikan buzzer dan buat ponselmu ikut berbunyi.
  • Stasiun cuaca: bandingkan suhu, kelembapan, dan tekanan dari BME280 di grafik mingguan.
  • Pemantau pintu dan jendela: lihat di aplikasi apakah ada pintu yang tertinggal terbuka dengan reed switch.

Error umum dan solusinya

Gejala atau pesanPenyebabSolusi
“Please specify your BLYNK_TEMPLATE_ID and BLYNK_TEMPLATE_NAME” ketika kompilasiBarisnya tidak ada, ditulis sesudah #include, atau masih memakai BLYNK_DEVICE_NAME lamaTaruh tiga baris #define di paling atas, sebelum include; ganti DEVICE_NAME menjadi TEMPLATE_NAME
“'class BlynkWifi' has no member named 'notify'” ketika kompilasiPerintah Blynk.notify() dari kode Blynk lamaBuat event di template dan pakai Blynk.logEvent()
“Invalid auth token” di Serial MonitorToken tidak ada atau salah disalin, perangkat sudah dihapus, atau masih memakai token Blynk lamaSalin ulang token dari halaman perangkat tanpa spasi di awal atau akhir
Tidak ada apa-apa setelah baris “Connecting to AgAdi”Board tidak bisa bergabung ke Wi-Fi: jaringan 5 GHz, kata sandi salah, atau sinyal lemahPakai jaringan 2,4 GHz; detailnya ada di panduan Wi-Fi ESP32
“Connecting to blynk.cloud:80” terus berulang atau “Login timeout”Jaringan tidak punya internet, atau jaringan sekolah atau kantor memblokir koneksinyaCoba hotspot ponsel; pakai port 443 dengan BlynkSimpleEsp32_SSL.h
“Heartbeat timeout”, perangkat sering Offlinedelay() yang lama atau perulangan yang memblokir di loop, catu daya lemahPindahkan jeda ke BlynkTimer, pakai kabel dan adaptor daya yang bagus
Tidak terjadi apa-apa ketika sakelar ditekanWidget terikat ke datastream lain atau pin di BLYNK_WRITE berbedaPin di pengaturan widget harus sama dengan Vx di kodemu
Gauge selalu menunjukkan 1 atau grafik kosongMax datastream dibiarkan 1 atau riwayat diatur ke Last ValueSesuaikan Min dan Max dengan rentang sensor dan ubah pengaturan riwayat
Setelah beberapa waktu tidak ada data yang masuk sama sekaliKuota pesan bulanan sudah habisPerpanjang interval kirim dan kirim hanya ketika ada perubahan
Relay bekerja terbalik atau tidak pernah lepasModul aktif LOW atau sinyal 3,3 V tidak cukupBalik nilai ROLE_AKTIF_LOW dan pakai modul yang kompatibel dengan 3,3 V
Ikuti urutan ketika mencari masalah: cek dulu koneksi Wi-Fi di Serial Monitor, lalu cari baris “Ready”, baru setelah itu cek apakah widget cocok dengan datastream. Kalau kamu mentok di tahap Wi-Fi, lihat ESP32 tidak mau terhubung ke Wi-Fi; kalau board restart ketika Wi-Fi menyala, baca Brownout dan Guru Meditation ESP32.

Blynk, web server sendiri, atau MQTT?

MetodeKelebihanKekuranganKapan dipilih
Blynk IoTDashboard siap pakai tanpa menulis aplikasi, akses dari luar rumah, notifikasiBatas paket gratis, bergantung pada cloudPrototipe cepat dan pemantauan jarak jauh
Web server ESP32Sepenuhnya gratis, bekerja tanpa internetBiasanya hanya bisa diakses dari jaringan yang sama, antarmukanya kamu tulis sendiriPanel kendali di dalam rumah
MQTT dan Home AssistantPesan tanpa batas, berjalan lokal, otomatisasi yang andalPengaturan lebih lama, butuh server yang selalu menyalaSistem rumah pintar permanen
Bot TelegramGratis, ideal untuk peringatan dan perintahTidak ada grafik atau dashboardAlarm dan perintah sederhana

Singkatnya, Blynk adalah cara termudah untuk mendapat hasil cepat dengan dashboard siap pakai yang tampilannya bagus, dan untuk menjangkau proyekmu dari luar rumah. Kalau kamu ingin sistem tanpa batas yang sepenuhnya lokal, baca Web Server dan WebSocket ESP32 atau MQTT dan Home Assistant dengan ESP32; kalau kamu cuma ingin mengirim peringatan ke ponsel, lihat panduan Bot Telegram ESP32.

Cara yang lebih mudah: BlueGrays IoT

Blynk adalah platform yang fleksibel dan andal. Tapi kalau kamu cuma ingin menyalakan relay atau memantau sensor dari ponsel, mungkin kamu tidak ingin menyiapkan template, datastream, widget, dan auth token secara manual. BlueGrays IoT melakukannya dengan template siap pakai: kamu memilih satu template di Labku › Perangkatku › Tambah perangkat baru, Ohmi menyiapkan kodenya dengan kunci perangkatmu, lalu kamu meng-upload-nya sekali dari Arduino IDE dengan library BlueGraysIoT. Ini berjalan dengan ESP32 dan Raspberry Pi Pico W lewat Wi-Fi 2,4 GHz, dan perangkat pertamamu gratis. Untuk detailnya, lihat panduan mengendalikan ESP32 dari ponsel.

Begitu kamu memahami trio template, datastream, dan auth token, menghubungkan proyek ESP32 baru ke ponselmu dengan Blynk hanya butuh beberapa menit. Gabungkan contoh LED, relay, dan sensor di sini, dan kamu sudah punya awal sistem rumah pintarmu sendiri. Di aplikasi BlueGrays kamu juga bisa menemukan proyek ESP32 seperti mengedipkan LED, terhubung ke Wi-Fi, mengukur suhu dengan DHT22, lampu pintar, penyiraman tanaman, dan alarm gerak dengan Telegram, masing-masing dengan skema rangkaian dan kode langkah demi langkah.

Pertanyaan umum

Apakah Blynk gratis?

Ya, Blynk punya paket gratis untuk penggunaan pribadi. Per Oktober 2026, paket ini menawarkan 5 perangkat, 100.000 pesan perangkat per bulan, dan riwayat data 1 minggu. Untuk lebih banyak perangkat, pesan tanpa batas, dan penyimpanan data yang lebih lama, kamu perlu pindah ke paket bulanan berbayar.

Di mana aku bisa menemukan auth token Blynk?

Di Blynk.Console, buka perangkatmu dari bagian Devices; di Device Info kamu akan melihat baris BLYNK_TEMPLATE_ID, BLYNK_TEMPLATE_NAME, dan BLYNK_AUTH_TOKEN yang siap ditempel ke kodemu. Di Blynk baru, token tidak lagi dikirim lewat email, dan setiap perangkat punya token sendiri.

Apakah aplikasi Blynk lama masih berfungsi?

Tidak. Aplikasi Blynk lama (Legacy) dihapus dari toko aplikasi pada 2022 dan server cloud-nya dimatikan pada 31 Desember 2022. Kamu perlu membangun ulang proyek lama di platform Blynk IoT yang baru dengan template dan datastream; sebagian besar kode ESP32 bisa dipakai lagi dengan sedikit perubahan.

Apa itu virtual pin di Blynk?

Virtual pin adalah saluran data bernomor antara aplikasi dan kodemu, dan tidak mewakili kaki fisik di board. Nomornya dari V0 sampai V255; nilai dari aplikasi dibaca dengan BLYNK_WRITE(Vx), dan nilai dari board dikirim ke aplikasi dengan Blynk.virtualWrite(Vx, value). Dengan begitu kamu bisa memproses nilai yang masuk sesukamu dan menampilkan data sensor di dashboard.

Kenapa ESP32-ku tampil offline di Blynk?

Penyebab paling umum adalah auth token yang salah atau tidak ada, ESP32 yang mencoba bergabung ke jaringan 5 GHz, pemanggilan delay() yang lama di loop(), dan catu daya yang lemah. Kalau baris “Ready” tidak muncul di Serial Monitor, masalahnya ada di koneksi; kalau muncul, pastikan kamu melihat perangkat yang benar di aplikasi.

Apakah Blynk bisa bekerja tanpa internet?

Tidak. Di Blynk IoT, perintah dan data lewat Blynk.Cloud, jadi ESP32 dan ponselmu sama-sama butuh akses internet. Untuk kendali tanpa internet, kamu bisa memakai web server bawaan ESP32, ESP-NOW, atau Bluetooth.

Lihat semua proyek
LED Berkedip dengan ESP32
#103Pemula

LED Berkedip dengan ESP32

Mengajarkan penggunaan output GPIO dasar dengan ESP32. Kita membuat efek berkedip dengan menyalakan dan mematikan LED dari pin digital. Versi ESP32 dari proyek blink klasik di Arduino UNO; perintah blink dasar di lingkungan Arduino sama, tetapi susunan pin ESP32 dan level GPIO 3,3 V-nya berbeda dengan Arduino UNO.

4.7(37)
99
Kedipan LED Bawaan ESP32
#106Pemula

Kedipan LED Bawaan ESP32

Mengedipkan LED biru bawaan di ESP32 DevKit V1. Tidak perlu komponen eksternal! Proyek pertama yang sebaiknya kamu coba ketika membeli ESP32. GPIO 2 tersambung ke LED bawaan.

4.8(29)
53
Membaca Intensitas Cahaya dengan Modul LDR ESP32
#113Pemula

Membaca Intensitas Cahaya dengan Modul LDR ESP32

Memantau secara real-time di Serial Monitor nilai ADC mentah modul LDR dan persentase cahaya relatif yang dihitung dari nilai acuan gelap dan terang. Persentase ini bukan pengukuran lux. Mengajarkan logika kalibrasi modul. Ideal dikerjakan sebelum Proyek 10, karena dipakai untuk menentukan nilai ambang.

4.6(36)
55
Koneksi Wi-Fi STA ESP32 (dengan Layar LCD)
#127Mahir

Koneksi Wi-Fi STA ESP32 (dengan Layar LCD)

Di proyek ini, kita menyambungkan ESP32 ke jaringan Wi-Fi rumah dalam mode Station (STA) dengan cara yang aman dan tahan gangguan. Kita menyimpan SSID dan kata sandi di file secrets.h terpisah agar tidak bocor ke Git, menyiapkan mekanisme sambung ulang otomatis, dan menampilkan tingkat sinyal RSSI dan alamat IP di layar LCD I2C. LED bawaan bekerja sebagai indikator status. Ini adalah pengelola koneksi kelas produksi.

4.4(21)
34
Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)
#117Menengah

Suhu dan Kelembapan DHT22 ESP32 (dengan Layar LCD)

Proyek ini mengukur suhu dan kelembapan sekitar dengan sensor DHT22 dan menampilkan datanya secara real-time di LCD I2C 16x2. Data dibaca dari sensor dengan protokol satu kabel lewat library Adafruit DHT. Proyek ini menjadi dasar untuk stasiun cuaca IoT, otomasi rumah pintar, atau sistem pemantauan lingkungan di rumah kaca. Komunikasi dengan DHT22 dilakukan lewat pin GPIO 4 ESP32.

4.8(38)
56
Lampu Pintar ESP32 (PIR + LDR + Relay + OLED)
#141Mahir
Premium

Lampu Pintar ESP32 (PIR + LDR + Relay + OLED)

Ubah lorong, kamar mandi, atau gudangmu menjadi lampu pintar dengan ESP32! Dengan sensor gerak PIR, sensor cahaya LDR, dan modul relay, kita membuat skenario klasik "lampu menyala ketika ada gerakan dalam gelap"; jika sudah terang, gerakan TIDAK menyalakan lampu, jadi energi hemat di siang hari. Lampu menyala 30 detik; jika gerakan berlanjut, timer diulang. OLED SSD1306 menampilkan status dengan font besar (NYALA / SIANG / MENUNGGU) dan hitung mundur.

4.3(6)
11
Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)
#145Mahir
Premium

Sistem Alarm Gerakan ESP32 (PIR + Buzzer + LED + Telegram)

Sistem alarm keamanan pintar yang menyalakan buzzer dan LED ketika sensor PIR mendeteksi gerakan, sekaligus mengirim notifikasi instan ke pemilik lewat Telegram. Cooldown 30 detik membatasi seberapa sering alarm berulang; mekanisme ini tidak memvalidasi deteksi PIR atau menghilangkan pemicu palsu. Cocok untuk rumah, garasi, gudang, atau ruang kerja. Dengan ESP32-CAM bisa ditambahkan notifikasi berfoto; dengan ESP32 DevKit V1 klasik, notifikasinya berupa teks.

0.0(0)
9