Apa Itu ESP32? Fitur, Pengaturan Arduino IDE, dan Proyek Wi-Fi Pertamamu
Apa itu ESP32 dan apa bedanya dengan Arduino? Wi-Fi dan Bluetooth, pin yang aman, pengaturan Arduino IDE, sketch Blink pertama, terhubung ke Wi-Fi, mengendalikan LED dari ponsel, varian ESP32, dan kesalahan umum.
ESP32 adalah mikrokontroler dual-core yang sangat murah buatan Espressif dengan Wi-Fi dan Bluetooth bawaan. Sendirian, ESP32 bisa melakukan banyak hal yang tidak bisa dilakukan Arduino Uno: terhubung ke jaringan rumahmu, menyajikan halaman web yang kamu buka di ponsel, mengambil waktu dan cuaca dari internet, dan berkomunikasi dengan ponselmu lewat Bluetooth. Ditambah lagi, ESP32 diprogram di Arduino IDE dengan perintah-perintah Arduino yang sudah kamu kenal. Sekarang ESP32 adalah board paling populer untuk mulai membuat proyek Internet of Things (IoT).

Apa itu ESP32 dan apa kegunaannya?
Tepatnya, “ESP32” adalah nama chip di bawah tutup logam itu. Board yang kamu pegang adalah board pengembangan yang membawa chip tersebut (seperti ESP32 DevKit atau NodeMCU-32S): ada konverter USB-serial untuk berkomunikasi dengan komputermu, regulator yang menurunkan 5 V menjadi 3,3 V, serta tombol reset (EN) dan pemrograman (BOOT). Berikut beberapa hal yang bisa kamu lakukan dengan ESP32:
- Stasiun cuaca Wi-Fi: tampilkan suhu dan kelembapan di halaman yang kamu buka di ponsel.
- Kendali dari ponsel: operasikan lampu, stopkontak, atau pintu dengan tombol di halaman web.
- Ambil data dari internet: tampilkan waktu yang sebenarnya (NTP), cuaca, atau kurs mata uang di layar.
- Kirim notifikasi: beri peringatan lewat Telegram atau email ketika gerakan terdeteksi.
- Perangkat Bluetooth: buat remote yang terhubung ke ponselmu, atau perangkat yang dikenali komputer sebagai keyboard.
- Sensor yang bertahan berbulan-bulan dengan baterai: bangun dari deep sleep hanya untuk melakukan pengukuran.
ESP32 vs Arduino Uno
| Fitur | Arduino Uno R3 | ESP32 (WROOM-32) |
|---|---|---|
| Prosesor | ATmega328P, 8-bit, 16 MHz | Xtensa LX6, dua inti, 32-bit, 240 MHz |
| RAM | 2 KB | 520 KB |
| Memori program (flash) | 32 KB | Biasanya 4 MB |
| Nirkabel | Tidak ada | Wi-Fi + Bluetooth (Classic dan BLE) |
| Tegangan kerja | 5 V | 3,3 V |
| GPIO yang bisa dipakai | 20 | Sekitar 34 (sebagian hanya input) |
| Input analog (ADC) | 6 channel, 10-bit | 18 channel, 12-bit |
| Output analog (DAC) | Tidak ada | 2 channel, 8-bit |
Melihat tabel ini, ESP32 tampak lebih unggul di segala hal, tetapi Uno juga punya kelebihan: karena bekerja di 5 V, Uno langsung kompatibel dengan sebagian besar sensor dan modul lama, pinnya lebih tangguh, dan lebih sedikit memberi kejutan bagi pemula. Kalau kamu tidak butuh nirkabel, Uno tetap tempat yang bagus untuk memulai; untuk memutuskan mana yang dipilih, lihat Arduino Mana yang Sebaiknya Kubeli?
Pin ESP32: mana yang aman dipakai?
Pin ESP32 tidak semuanya “sama” seperti di Arduino. Sebagian terhubung ke memori flash, sebagian hanya bisa menjadi input, dan level sebagian lainnya memengaruhi cara board boot. Kamu bisa melihat peta pin lengkap board-mu di alat Pinout; berikut ringkasannya:
| Pin | Status | Catatan |
|---|---|---|
| GPIO 6–11 | Jangan dipakai | Terhubung ke flash internal; memakainya membuat board crash |
| GPIO 34–39 | Hanya input | Tidak bisa menjadi output dan tidak punya pull-up internal |
| GPIO 0, 2, 12, 15 | Pakai dengan hati-hati | Level-nya ketika boot berpengaruh |
| GPIO 1 dan 3 | Pakai dengan hati-hati | TX dan RX koneksi serial USB |
| Pin ADC2 (0, 2, 4, 12–15, 25–27) | Tidak bisa membaca analog ketika Wi-Fi aktif | Pakai ADC1 (GPIO 32–39) untuk pembacaan analog |
| GPIO 4, 5, 13, 14, 16–19, 21–23, 25–27, 32, 33 | Aman | Input dan output serbaguna |
Mengatur ESP32 di Arduino IDE
- Di Arduino IDE, buka File > Preferences dan tambahkan https://espressif.github.io/arduino-esp32/package_esp32_index.json ke kolom “Additional boards manager URLs”.
- Di Boards Manager, cari esp32 lalu instal paket buatan Espressif Systems.
- Pilih ESP32 Dev Module di Tools > Board.
- Hubungkan ESP32 dengan kabel USB dan pilih port yang benar di Tools > Port. Kalau tidak ada port yang muncul, instal driver untuk chip USB-serial di board-mu (CP2102 atau CH340).
- Kalau tulisan “Connecting...” lama bertahan di layar ketika upload, tahan tombol BOOT di board lalu lepaskan begitu upload dimulai.
Program pertama: mengedipkan LED bawaan
Sebagian besar board ESP32 DevKit punya LED biru yang terhubung ke GPIO 2. Kode di bawah mengedipkannya setiap setengah detik; seperti yang kamu lihat, perintahnya persis sama dengan di Arduino:
1const int LED_PIN = 2; // çoğu DevKit'te dahili mavi LED / onboard blue LED on most DevKits
2
3void setup() {
4 pinMode(LED_PIN, OUTPUT);
5}
6
7void loop() {
8 digitalWrite(LED_PIN, HIGH);
9 delay(500);
10 digitalWrite(LED_PIN, LOW);
11 delay(500);
12}Terhubung ke Wi-Fi
Kekuatan sebenarnya ESP32 adalah Wi-Fi. Kode di bawah menghubungkan ESP32 ke jaringan rumahmu dan menampilkan alamat IP yang diberikan router ke ESP32 di Serial Monitor. Ganti nama jaringan dan kata sandinya dengan milikmu, lalu buka Serial Monitor di 115200 baud:
1#include <WiFi.h>
2
3const char* ssid = "AgAdi"; // Wi-Fi adın / your Wi-Fi name
4const char* password = "Sifre123"; // Wi-Fi şifren / your Wi-Fi password
5
6void setup() {
7 Serial.begin(115200);
8 WiFi.begin(ssid, password);
9 Serial.print("Bağlanıyor / connecting");
10 while (WiFi.status() != WL_CONNECTED) {
11 delay(500);
12 Serial.print(".");
13 }
14 Serial.println();
15 Serial.print("IP adresi / IP address: ");
16 Serial.println(WiFi.localIP());
17}
18
19void loop() {
20}Mengendalikan LED dari ponsel: web server sederhana
Sekarang mari ubah ESP32 menjadi web server kecil. Setelah upload, buka alamat IP yang tampil di Serial Monitor di browser ponsel yang terhubung ke Wi-Fi yang sama; dua tombol di halaman itu menyalakan dan mematikan LED board. Hubungkan relay sebagai pengganti LED dan kamu bisa mengendalikan lampu sungguhan dengan cara yang sama; lihat Apa Itu Modul Relay?
1#include <WiFi.h>
2#include <WebServer.h>
3
4const char* ssid = "AgAdi";
5const char* password = "Sifre123";
6const int LED_PIN = 2;
7
8WebServer server(80);
9
10void handleRoot() {
11 server.send(200, "text/html",
12 "<meta name='viewport' content='width=device-width'>"
13 "<h1>ESP32</h1>"
14 "<a href='/on'><button>LED AÇ / ON</button></a> "
15 "<a href='/off'><button>LED KAPAT / OFF</button></a>");
16}
17
18void setup() {
19 pinMode(LED_PIN, OUTPUT);
20 Serial.begin(115200);
21 WiFi.begin(ssid, password);
22 while (WiFi.status() != WL_CONNECTED) delay(500);
23 Serial.println(WiFi.localIP()); // bu adresi telefonda aç / open this address on your phone
24
25 server.on("/", handleRoot);
26 server.on("/on", []() { digitalWrite(LED_PIN, HIGH); handleRoot(); });
27 server.on("/off", []() { digitalWrite(LED_PIN, LOW); handleRoot(); });
28 server.begin();
29}
30
31void loop() {
32 server.handleClient();
33}Varian ESP32: mana yang sebaiknya dibeli?
| Model | Fitur utama | Kapan dipilih |
|---|---|---|
| ESP32 (WROOM-32 DevKit) | Wi-Fi, Bluetooth Classic dan BLE, dual-core | Board pertama serbaguna |
| ESP32-S3 | USB native, RAM lebih besar, instruksi AI | Proyek kamera, audio, keyboard dan mouse USB |
| ESP32-C3 | RISC-V single-core, Wi-Fi dan BLE, kecil dan murah | Sensor IoT sederhana |
| ESP32-CAM | Kamera dan slot microSD | Streaming gambar, kamera keamanan |
| ESP8266 (NodeMCU, Wemos D1) | Lebih lama, single-core, hanya Wi-Fi | Proyek Wi-Fi yang sangat sederhana |
Catu daya dan berjalan dengan baterai
Ketika menyalakan Wi-Fi, ESP32 bisa sesaat menarik arus sampai 250 mA. Kalau port USB yang lemah atau kabel yang tipis tidak sanggup menahan beban mendadak ini, board akan restart dengan pesan “Brownout detector was triggered”. Pakai kabel yang bagus dan adaptor 5 V yang bisa memberi minimal 1 A; kalau perlu, tambahkan kapasitor 100–470 µF di antara 3V3 dan GND. Untuk proyek baterai, mode deep sleep ESP32 memangkas konsumsi chip sampai hitungan mikroampere; namun regulator dan LED di board pengembangan tetap menarik beberapa mA, jadi untuk umur baterai yang panjang lebih baik memakai modul polos atau board berdaya rendah.
ESP32 dengan MicroPython
ESP32 bisa diprogram tidak hanya dengan bahasa Arduino, tetapi juga dengan MicroPython. Setelah kamu memasang MicroPython ke board dengan Thonny, terhubung ke Wi-Fi hanya butuh beberapa baris:
1import network, time
2from machine import Pin
3
4led = Pin(2, Pin.OUT)
5wlan = network.WLAN(network.STA_IF)
6wlan.active(True)
7wlan.connect("AgAdi", "Sifre123") # Wi-Fi adı ve şifresi / Wi-Fi name and password
8
9while not wlan.isconnected():
10 time.sleep(0.5)
11print("IP:", wlan.ifconfig()[0])
12
13while True:
14 led.value(not led.value()) # LED'i yakıp söndür / toggle the LED
15 time.sleep(0.5)Ide proyek dengan ESP32
- Stasiun cuaca Wi-Fi: pantau suhu dan kelembapan yang diukur DHT11 dari ponselmu.
- Stopkontak pintar: nyalakan lampu dengan relay dari halaman web atau asisten suara.
- Alarm gerakan: kirim notifikasi Telegram ketika sensor PIR mendeteksi orang.
- Jam internet: ambil waktu dari server NTP dan tampilkan di LCD atau display 7-segmen.
- Remote Bluetooth: kendalikan mobil robot dengan aplikasi di ponselmu.
- Sensor hemat baterai: buat perangkat yang bangun setiap 10 menit, mengirim hasil pengukuran, lalu tidur lagi.
Kesalahan umum dan cara mengatasinya
- Tidak ada port yang muncul: kabelnya mungkin hanya untuk mengecas, atau driver USB-serial belum terinstal; pakai kabel data dan instal driver CP2102 atau CH340.
- “Failed to connect... Timed out waiting for packet header”: tahan tombol BOOT ketika upload dimulai.
- Board terus restart: dayanya kurang (brownout); pakai kabel dan adaptor yang lebih baik serta kapasitor.
- Tidak mau terhubung ke Wi-Fi: jaringannya mungkin 5 GHz, atau ada kesalahan huruf besar-kecil di nama atau kata sandinya.
- Memakai GPIO 6–11: pin-pin ini terhubung ke flash; memakainya membuat board crash.
- Nilai analog kacau ketika Wi-Fi menyala: sensornya terpasang di pin ADC2; pindahkan ke salah satu pin ADC1 antara GPIO 32 dan 39.
ESP32 adalah cara termudah untuk membawa apa yang sudah kamu pelajari di Arduino ke internet. Untuk mengulang dasar-dasar Arduino, lihat Apa Itu Arduino?; di aplikasi BlueGrays kamu akan menemukan puluhan proyek ESP32, termasuk LED, web server, WebSocket, jam NTP, data cuaca, dan alarm Telegram, lengkap dengan skema rangkaian dan kode.
Pertanyaan umum
Apakah ESP32 itu Arduino?
Bukan. ESP32 adalah mikrokontroler terpisah buatan Espressif, sedangkan Arduino adalah nama ekosistem board dan software. Namun berkat paket yang disediakan Espressif, ESP32 bisa diprogram di Arduino IDE dengan perintah Arduino, jadi sebagian besar kode Arduino bisa berjalan di ESP32 dengan sedikit perubahan.
Apakah ESP32 bisa bekerja dengan 5 V?
Board pengembangan bisa diberi daya 5 V dari USB atau pin VIN; regulator di board menurunkannya menjadi 3,3 V. Namun pin GPIO bekerja di 3,3 V dan tidak tahan 5 V, jadi kamu tidak boleh menghubungkan sinyal 5 V langsung ke pin-pin itu.
Sebaiknya aku beli ESP32 atau Arduino Uno?
Untuk proyek yang butuh Wi-Fi, Bluetooth, atau internet, ambil ESP32. Kalau kamu baru di elektronika dan ingin bekerja lancar dengan sensor dan modul 5 V serta mengikuti tutorial persis seperti aslinya, Arduino Uno membuatmu mulai dengan lebih sedikit kejutan.
Apakah ESP32 bisa terhubung ke Wi-Fi 5 GHz?
ESP32 klasik, ESP32-S3, dan ESP32-C3 hanya mendukung Wi-Fi 2,4 GHz dan tidak bisa melihat jaringan 5 GHz. Pastikan band 2,4 GHz di router-mu menyala.
Apa perbedaan ESP32 dan ESP8266?
ESP8266 adalah chip single-core yang lebih lama, hanya mendukung Wi-Fi, dan hanya punya satu input analog. ESP32 dual-core dan lebih cepat, juga mendukung Bluetooth, serta punya jauh lebih banyak pin, channel ADC, dan memori. Untuk proyek baru, ESP32 lebih disarankan.
Bisakah ESP32 dipakai tanpa internet?
Bisa. ESP32 bisa membuat jaringan Wi-Fi sendiri (mode access point), beberapa ESP32 bisa saling berkomunikasi tanpa router dengan ESP-NOW, dan ESP32 bisa terhubung ke ponsel lewat Bluetooth. Kamu juga bisa memakainya sebagai Arduino yang bertenaga tanpa fitur nirkabelnya sama sekali.
Proyek untuk dibuat setelah membaca ini
Lihat semua proyek
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.

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.

Web Server Asinkron ESP32 (dengan Tampilan IP di LCD)
Di proyek ini, kita mengubah ESP32 menjadi web server asinkron yang bisa kamu kendalikan dari ponsel atau komputer di jaringan Wi-Fi yang sama. Berkat library ESPAsyncWebServer, server bisa memproses beberapa permintaan bersamaan (berbeda dengan WebServer.h klasik, yang memblokir pada satu permintaan). Kamu bisa membuka alamat IP ESP32 di browser dan mengklik tombol ON/OFF (rute /on dan /off) untuk menyalakan dan mematikan LED yang tersambung ke GPIO 5.

Penghitung WebSocket ESP32 (2 Tombol + LCD + Web Real-Time)
Di proyek ini, dua tombol yang tersambung ke ESP32 (GPIO 5 menghitung naik, GPIO 4 menghitung turun) mengubah sebuah penghitung. Nilainya langsung diperbarui di LCD I2C 16x2 sekaligus, lewat dukungan WebSocket ESPAsyncWebServer, di setiap browser yang tersambung tanpa memuat ulang halaman. Alih-alih polling HTTP, dipakai satu koneksi yang tetap terbuka, dan ESP32 mengirim nilai baru ke semua orang dengan ws.textAll().

HTTPClient + API Cuaca ESP32 (dengan Layar LCD)
Di proyek ini, kita memakai ESP32 untuk melakukan panggilan REST API ke API cuaca (wttr.in) lewat internet dengan HTTPClient.h. Kita mengurai respons JSON yang diterima dengan ArduinoJson v7 dan menampilkan kota, suhu, kelembapan, cuaca, dan informasi angin di layar LCD I2C dalam bahasa Turki dan Inggris. wttr.in gratis dan tidak butuh kunci API; kamu cukup memasukkan nama kota apa pun untuk mengambil kondisi cuaca terkini kota itu. Data diperbarui otomatis setiap 30 menit.

Jam Real-Time dari Internet lewat NTP ESP32
ESP32 tersambung ke Wi-Fi dan mengambil waktu nyata dengan presisi milidetik dari server NTP (Network Time Protocol). Berkat fungsi configTzTime(), zona waktu Turki (TRT, UTC+3) otomatis diterapkan, dan pergantian DST di negara yang memakai waktu musim panas otomatis diatur dengan string POSIX TZ. Waktunya ditampilkan di Serial Monitor sekaligus di LCD I2C opsional. configTzTime() memulai layanan SNTP; sinkronisasi ulang berkala terjadi selama koneksi tersedia.

Lampu Otomatis dengan Sensor Gerak PIR ESP32
Di proyek ini, sensor gerak PIR HC-SR501 mendeteksi ketika seseorang masuk ke ruangan dan otomatis menyalakan LED. Lama LED menyala dilacak dengan millis(); setiap bacaan HIGH memperbarui waktu gerakan terakhir, dan LED mati minimal 10 detik setelah bacaan HIGH terakhir. Kode yang sekarang juga menunggu 50 ms di setiap loop dengan delay(50), jadi loopnya belum sepenuhnya non-blocking. Proyek ini bisa dipakai untuk lampu tangga.

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.
Artikel lainnya
Aplikasi BlueGrays
Rakit rangkaian ini langkah demi langkah di ponselmu
Skema pengkabelan, kode, dan daftar komponen dalam satu layar. 200+ proyek Arduino, ESP32, dan Pico siap dibuat.
Pindai dengan ponselmu
Arahkan kamera ke kode ini dan toko aplikasi di ponselmu akan terbuka.
atau buka toko aplikasi

