Jika anda tertarik dengan dunia IoT (Internet of Things), tentu anda sudah sering mendengar nama ESP32. Papan kecil seharga puluhan ribu rupiah ini ada di balik banyak proyek rumah pintar, mulai dari lampu yang bisa dinyalakan lewat HP, sensor suhu yang mengirim data ke dashboard, hingga bel pintu pintar.
Masalahnya, banyak pemula yang langsung bingung di langkah pertama. Papan sudah di tangan, kabel USB sudah tercolok, tetapi ESP32 tidak muncul di Arduino IDE, atau proses upload gagal dengan pesan error yang membingungkan. Padahal, sekali pengaturannya benar, memprogram ESP32 semudah memprogram Arduino biasa.
Kabar baiknya, Arduino IDE bisa dipakai untuk memprogram ESP32 secara resmi berkat Arduino core for ESP32 yang dikembangkan langsung oleh Espressif, pembuat chip ESP32. Anda bisa menulis kode dengan gaya Arduino yang sudah familiar, ditambah akses ke WiFi dan Bluetooth bawaan ESP32.
Dalam artikel kali ini, kita akan membahas tuntas cara memprogram ESP32 dengan Arduino IDE, mulai dari mengenal ESP32, meng-install board ESP32 di Arduino IDE, membuat proyek LED berkedip pertama, menghubungkan ESP32 ke WiFi, hingga mengatasi error yang paling sering muncul. Mari kita mulai!
Apa itu ESP32?
ESP32 adalah mikrokontroler buatan perusahaan asal Tiongkok, Espressif Systems, yang sudah dilengkapi WiFi dan Bluetooth di dalam satu chip. ESP32 merupakan penerus ESP8266 yang populer, dengan prosesor yang lebih kencang, pin yang lebih banyak, dan tambahan Bluetooth.
Chip ESP32 versi klasik memakai prosesor dual-core Xtensa dengan kecepatan hingga 240 MHz, RAM internal sekitar 520 KB, serta mendukung WiFi 2,4 GHz dan Bluetooth (Classic maupun BLE). Sebagai perbandingan, Arduino Uno hanya berjalan di 16 MHz dengan RAM 2 KB dan tanpa WiFi sama sekali.
Biasanya kita tidak memakai chip ESP32 secara langsung, melainkan dalam bentuk papan pengembangan (development board) yang sudah dilengkapi port USB, regulator tegangan, dan tombol. Yang paling umum dijual di Indonesia adalah ESP32 DevKit V1 (sering juga disebut "ESP32 DOIT DevKit" atau "ESP-WROOM-32") dengan 30 atau 38 pin.
Catatan: saat ini Espressif juga memproduksi varian lain seperti ESP32-S3, ESP32-C3, dan ESP32-C6. Langkah instalasi di artikel ini sama untuk semua varian, hanya pilihan board dan nomor pinnya yang berbeda. Artikel ini memakai ESP32 DevKit V1 dengan chip ESP32 klasik.
Mengapa Memilih ESP32?
Ada banyak papan mikrokontroler di pasaran. Berikut beberapa alasan mengapa ESP32 menjadi favorit untuk proyek IoT:
- WiFi dan Bluetooth bawaan: tidak perlu modul tambahan untuk terhubung ke internet atau ke HP.
- Harga murah: papan ESP32 DevKit V1 umumnya dijual dengan harga yang tidak jauh berbeda dari Arduino Uno tiruan, padahal kemampuannya jauh lebih tinggi.
- Performa tinggi: prosesor dual-core 240 MHz cukup untuk menjalankan web server kecil, mengolah data sensor, sekaligus mengirim data ke cloud.
- Bisa diprogram dengan Arduino IDE: anda bisa memakai sintaks Arduino dan ribuan library yang sudah ada.
- Komunitas besar: hampir semua masalah yang anda temui sudah pernah dibahas di forum atau dokumentasi resmi.
Tentu ada juga kekurangannya. Supaya adil, berikut hal yang perlu anda ketahui:
- Logika 3,3 volt: pin ESP32 bekerja di tegangan 3,3V, bukan 5V seperti Arduino Uno. Banyak sensor dan modul 5V perlu level shifter.
- Konsumsi daya lebih besar saat WiFi aktif, sehingga untuk proyek bertenaga baterai anda perlu memanfaatkan mode deep sleep.
- Beberapa pin punya fungsi khusus dan tidak bebas dipakai. Kita akan membahasnya di bagian pinout.
Berikut perbandingan singkat ESP32 dengan papan lain yang sering dipakai pemula:
| Fitur | Arduino Uno R3 | ESP8266 (NodeMCU) | ESP32 DevKit V1 |
|---|---|---|---|
| Prosesor | 16 MHz, single-core | 80/160 MHz, single-core | hingga 240 MHz, dual-core |
| WiFi | ❌ | ✅ 2,4 GHz | ✅ 2,4 GHz |
| Bluetooth | ❌ | ❌ | ✅ Classic + BLE |
| Tegangan logika | 5V | 3,3V | 3,3V |
| Pin ADC | 6 | 1 | hingga 18 |
| Diprogram via Arduino IDE | ✅ | ✅ | ✅ |
Persiapan
Sebelum memulai, siapkan perangkat keras dan perangkat lunak berikut:
- ESP32 DevKit V1 (30 atau 38 pin).
- Kabel micro USB yang mendukung data, bukan kabel yang hanya untuk mengisi daya. Ini penyebab gagal yang paling sering terjadi!
- Komputer dengan Windows 10/11, macOS, atau Linux (misalnya Ubuntu 24.04 LTS).
- Arduino IDE 2. Saat artikel ini ditulis, versi terbarunya adalah 2.3.x, dan bisa diunduh gratis di situs resmi Arduino.
- Untuk proyek LED: 1 buah LED 5 mm (warna bebas), 1 buah resistor 220Ω (atau 330Ω), breadboard, dan 2 kabel jumper (jenis female-to-male bila ESP32 tidak ditancapkan di breadboard, seperti pada ilustrasi rangkaian di bawah).
Ilustrasi komponen yang dibutuhkan: ESP32 DevKit V1, kabel micro USB, breadboard, LED, resistor 220Ω, dan kabel jumper.
Kalau anda pernah mengikuti tutorial membuat proyek pertama Raspberry Pi Blink, komponennya hampir sama persis. Bedanya, kali ini "otaknya" adalah ESP32.
Mengenal Pinout ESP32 DevKit V1
Sebelum merangkai apa pun, ada beberapa aturan penting tentang pin ESP32 yang perlu anda ketahui:
- Nomor pin yang dipakai di kode adalah nomor GPIO, yang biasanya tercetak di papan dengan awalan
DatauG(misalnyaD23atauG23berarti GPIO 23). - GPIO 6 sampai 11 terhubung ke memori flash internal. Jangan pernah dipakai, karena bisa membuat ESP32 crash.
- GPIO 34, 35, 36, dan 39 hanya bisa dipakai sebagai input (misalnya untuk membaca sensor), tidak bisa menyalakan LED.
- GPIO 0, 2, 12, dan 15 adalah pin strapping yang memengaruhi mode booting. Sebaiknya hindari dulu untuk pemula.
- Pada banyak papan DevKit V1, GPIO 2 terhubung ke LED biru bawaan di papan.
Peringatan tegangan: semua pin GPIO ESP32 bekerja pada 3,3V dan tidak toleran 5V. Jangan menghubungkan output 5V dari sensor atau modul lain langsung ke pin GPIO, karena bisa merusak ESP32 secara permanen.
Cara Install Board ESP32 di Arduino IDE
OK, sekarang kita masuk ke bagian inti. Langkah-langkah di bawah ini ditujukan untuk Arduino IDE 2.3.x dan Arduino core for ESP32 versi 3.3.x (versi terbaru saat artikel ini ditulis).
Langkah #1: Install Arduino IDE
Unduh Arduino IDE dari halaman Software Arduino, lalu pasang sesuai sistem operasi anda:
- Windows: jalankan file installer
.exeatau.msi, lalu ikuti petunjuknya. - macOS: buka file
.dmg, lalu seret Arduino IDE ke folder Applications. - Linux: unduh versi AppImage, beri izin eksekusi, lalu jalankan.
Untuk pengguna Linux, beri izin eksekusi pada file AppImage dengan perintah berikut (sesuaikan nama file dengan versi yang anda unduh);
chmod +x ~/Downloads/arduino-ide_2.3.10_Linux_64bit.AppImage
~/Downloads/arduino-ide_2.3.10_Linux_64bit.AppImageLangkah #2: Tambahkan URL Board Manager ESP32
Secara default, Arduino IDE belum mengenal papan ESP32. Kita perlu menambahkan alamat paket resmi dari Espressif.
- Buka menu File → Preferences (Windows/Linux) atau Arduino IDE → Settings (macOS).
- Cari kolom Additional boards manager URLs.
- Tempelkan URL berikut, lalu klik OK.
https://espressif.github.io/arduino-esp32/package_esp32_index.jsonJika kolom tersebut sudah berisi URL lain (misalnya untuk ESP8266), pisahkan setiap URL dengan tanda koma, atau klik ikon di sebelah kanan kolom untuk menambahkannya di baris baru.
Langkah #3: Install Paket esp32 by Espressif Systems
- Buka Boards Manager dengan mengklik ikon papan di sidebar kiri, atau lewat menu Tools → Board → Boards Manager….
- Ketik
esp32di kolom pencarian. - Pilih paket esp32 by Espressif Systems, lalu klik Install.
Hati-hati memilih paket: ada juga paket bernama Arduino ESP32 Boards buatan Arduino, yang hanya ditujukan untuk papan resmi Arduino seperti Arduino Nano ESP32. Untuk ESP32 DevKit V1, pastikan yang anda install adalah esp32 by Espressif Systems.
Proses unduhan cukup besar (beberapa ratus MB) karena paket ini menyertakan compiler dan tool untuk semua varian ESP32, jadi silakan tunggu beberapa menit hingga selesai.
Langkah #4: Hubungkan ESP32 dan Pilih Port
Colokkan ESP32 ke komputer menggunakan kabel micro USB. Papan DevKit V1 memakai chip USB-to-serial CP2102 (dari Silicon Labs) atau CH340 (dari WCH). Anda bisa melihat chip mana yang dipakai dengan memperhatikan tulisan pada chip kecil di dekat port USB.
- Windows: jika ESP32 tidak terdeteksi, install driver CP210x dari Silicon Labs atau driver CH340 dari situs resmi WCH, sesuai chip di papan anda. Port akan muncul sebagai
COM3,COM4, dan seterusnya. - macOS: versi macOS terbaru umumnya sudah mengenali kedua chip tersebut. Port muncul dengan nama seperti
/dev/cu.usbserial-0001atau/dev/cu.wchusbserial…. - Linux: driver sudah ada di kernel. Port muncul sebagai
/dev/ttyUSB0.
Khusus di Linux, untuk memastikan ESP32 terdeteksi, jalankan perintah berikut sesaat setelah mencolokkan papan;
sudo dmesg | tail -n 5Outputnya kira-kira seperti ini:
usb 1-2: new full-speed USB device number 7 using xhci_hcd
cp210x 1-2:1.0: cp210x converter detected
usb 1-2: cp210x converter now attached to ttyUSB0Jika muncul baris attached to ttyUSB0, berarti ESP32 sudah dikenali. Selanjutnya, tambahkan user anda ke grup dialout agar Arduino IDE boleh mengakses port serial tanpa sudo;
sudo usermod -aG dialout $USERLogout lalu login kembali (atau restart komputer) agar perubahan grup berlaku.
Setelah itu, kembali ke Arduino IDE dan lakukan pengaturan berikut:
- Pilih board lewat Tools → Board → esp32 → ESP32 Dev Module.
- Pilih port lewat Tools → Port, lalu klik port ESP32 anda (misalnya
COM4atau/dev/ttyUSB0).
Pengaturan lain di menu Tools seperti Upload Speed dan Flash Frequency biarkan saja di nilai default.
Proyek #1: LED Berkedip dengan ESP32
Proyek "Blink" adalah "Hello World"-nya dunia mikrokontroler. Kita akan menyalakan dan mematikan LED setiap satu detik.
Langkah #1: Rangkai LED ke ESP32
Kita akan memakai GPIO 23, karena pin ini aman dipakai sebagai output dan letaknya di ujung barisan pin sehingga mudah dijangkau. Rangkai komponen sesuai tabel koneksi berikut:
| Dari | Ke |
|---|---|
| Pin D23 (GPIO 23) ESP32 | Salah satu kaki resistor 220Ω |
| Kaki resistor lainnya | Kaki panjang LED (anoda, +) |
| Kaki pendek LED (katoda, −) | Pin GND ESP32 |
Ilustrasi rangkaian LED pada breadboard. Ikuti tabel koneksi di atas.
Tips breadboard: papan ESP32 DevKit V1 cukup lebar, sehingga jika ditancapkan di tengah breadboard berukuran kecil, hanya tersisa satu baris lubang di setiap sisinya. Gunakan breadboard ukuran penuh, atau tancapkan ESP32 di satu breadboard dan LED di breadboard kedua.
Resistor berfungsi membatasi arus agar LED dan pin GPIO tidak rusak. Dengan tegangan 3,3V dan resistor 220Ω, arus yang mengalir hanya sekitar 5–6 mA, sangat aman untuk pin ESP32.
Langkah #2: Tulis Program Blink
Buat sketch baru lewat File → New Sketch, lalu ganti seluruh isinya dengan kode berikut:
// Pin GPIO tempat LED terhubung
const int LED_PIN = 23;
void setup() {
Serial.begin(115200); // aktifkan Serial Monitor
pinMode(LED_PIN, OUTPUT); // jadikan pin LED sebagai output
Serial.println("ESP32 siap!");
}
void loop() {
digitalWrite(LED_PIN, HIGH); // nyalakan LED
Serial.println("LED menyala");
delay(1000); // tunggu 1 detik
digitalWrite(LED_PIN, LOW); // matikan LED
Serial.println("LED mati");
delay(1000);
}Penjelasan singkat kodenya:
setup()dijalankan sekali saat ESP32 menyala. Di sini kita mengaktifkan komunikasi serial dengan kecepatan 115200 baud dan mengatur GPIO 23 sebagai output.loop()dijalankan berulang-ulang tanpa henti. LED dinyalakan, ditunggu 1 detik, dimatikan, lalu ditunggu 1 detik lagi.
Jika anda belum punya LED dan resistor, ganti
LED_PINmenjadi2untuk mengedipkan LED biru bawaan di papan DevKit V1 (berlaku pada papan yang LED-nya terhubung ke GPIO 2).
Langkah #3: Upload Program ke ESP32
Simpan sketch dengan Ctrl+S (Cmd+S di macOS), lalu klik tombol Upload (ikon panah ke kanan) di pojok kiri atas. Arduino IDE akan meng-compile kode terlebih dahulu. Proses pertama biasanya agak lama, jadi bersabarlah.
Di panel Output, anda akan melihat proses upload yang kira-kira seperti ini:
Connecting....
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
...
Writing at 0x00010000... (100 %)
Wrote 289280 bytes (159041 compressed) at 0x00010000 in 2.6 seconds
Hash of data verified.
Hard resetting via RTS pin...Jika muncul tulisan Hard resetting via RTS pin..., berarti program sudah berhasil di-upload dan LED akan mulai berkedip. Selesai!
Upload macet di
Connecting....? Beberapa papan DevKit V1 tidak bisa masuk mode upload secara otomatis. Tekan dan tahan tombol BOOT di papan saat muncul tulisanConnecting...., lalu lepaskan setelah persentase upload mulai berjalan.
Langkah #4: Buka Serial Monitor
Untuk melihat pesan yang dikirim ESP32, buka Tools → Serial Monitor atau tekan Ctrl+Shift+M. Pastikan kecepatan baud di pojok kanan panel Serial Monitor diatur ke 115200 baud.
Outputnya kira-kira seperti ini:
ESP32 siap!
LED menyala
LED mati
LED menyala
LED matiJika yang muncul justru karakter acak, berarti kecepatan baud di Serial Monitor belum sama dengan nilai di Serial.begin().
Proyek #2: Menghubungkan ESP32 ke WiFi
Nah, inilah kelebihan utama ESP32 dibanding Arduino biasa. Hanya dengan beberapa baris kode, ESP32 sudah bisa terhubung ke jaringan WiFi anda. Proyek ini tidak membutuhkan rangkaian tambahan.
Langkah #1: Tulis Program Koneksi WiFi
Buat sketch baru, lalu masukkan kode berikut. Ganti NamaWiFiAnda dan PasswordWiFiAnda dengan nama dan password WiFi anda:
#include <WiFi.h>
const char* ssid = "NamaWiFiAnda";
const char* password = "PasswordWiFiAnda";
void setup() {
Serial.begin(115200);
delay(1000);
WiFi.mode(WIFI_STA); // mode station (klien WiFi)
WiFi.begin(ssid, password); // mulai menghubungkan
Serial.print("Menghubungkan ke WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("Terhubung!");
Serial.print("Alamat IP: ");
Serial.println(WiFi.localIP());
Serial.print("Kekuatan sinyal (RSSI): ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
}
void loop() {
// cek koneksi setiap 10 detik
if (WiFi.status() != WL_CONNECTED) {
Serial.println("Koneksi terputus, menyambung ulang...");
WiFi.reconnect();
}
delay(10000);
}Library WiFi.h sudah termasuk di dalam paket esp32 yang kita install tadi, jadi tidak perlu meng-install library tambahan.
Langkah #2: Upload dan Lihat Hasilnya
Upload program seperti pada proyek sebelumnya, lalu buka Serial Monitor dengan kecepatan 115200 baud. Tekan tombol EN (reset) di papan jika pesannya belum muncul. Outputnya kira-kira seperti ini:
Menghubungkan ke WiFi.....
Terhubung!
Alamat IP: 192.168.1.37
Kekuatan sinyal (RSSI): -58 dBmJika alamat IP muncul, berarti ESP32 sudah tersambung ke jaringan lokal anda. Nilai RSSI menunjukkan kekuatan sinyal: semakin mendekati 0 semakin kuat. Nilai di sekitar -50 hingga -67 dBm tergolong baik, sedangkan di bawah -80 dBm koneksi biasanya mulai tidak stabil.
Penting: ESP32 klasik hanya mendukung WiFi 2,4 GHz. Jika router anda memakai nama jaringan yang sama untuk 2,4 GHz dan 5 GHz (band steering), dan ESP32 terus menampilkan titik tanpa pernah terhubung, coba pisahkan nama jaringan 2,4 GHz di pengaturan router.
Dengan ESP32 yang sudah terhubung ke WiFi, pintu ke dunia IoT sudah terbuka: anda bisa membuat web server di ESP32, mengirim data sensor ke server, atau mengontrol perangkat lewat HP.
Troubleshooting Error yang Sering Muncul
Berikut masalah yang paling sering dialami saat pertama kali memprogram ESP32, beserta solusinya:
| Masalah | Kemungkinan Penyebab | Solusi |
|---|---|---|
| Port tidak muncul di Tools → Port | Kabel hanya untuk charging, atau driver belum terpasang | Ganti kabel USB data, install driver CP210x/CH340 |
Failed to connect to ESP32: Wrong boot mode detected |
Papan tidak masuk mode upload otomatis | Tahan tombol BOOT saat muncul Connecting.... |
Permission denied: '/dev/ttyUSB0' (Linux) |
User belum masuk grup dialout |
sudo usermod -aG dialout $USER, lalu logout-login |
Port /dev/ttyUSB0 langsung hilang (Ubuntu) |
Paket brltty mengklaim chip CH340 |
Hapus paket dengan sudo apt remove brltty jika anda tidak memakai braille display |
| Serial Monitor menampilkan karakter acak | Kecepatan baud tidak sama | Samakan dengan nilai di Serial.begin() (115200) |
| ESP32 terus restart saat WiFi aktif (brownout) | Daya dari port USB kurang | Ganti kabel/port USB, hindari USB hub tanpa adaptor daya |
| LED tidak menyala | Kaki LED terbalik atau salah pin | Kaki panjang ke resistor, kaki pendek ke GND, cek nomor GPIO |
Satu hal yang perlu diingat soal masalah brltty di Ubuntu: paket ini adalah layanan untuk perangkat braille display. Jika anda memang memakainya, jangan dihapus, dan cari solusi alternatif seperti menonaktifkan aturan udev untuk chip CH340 saja.
Kesimpulan
Dari artikel ini, kita dapat menyimpulkan bahwa memprogram ESP32 dengan Arduino IDE sebenarnya cukup mudah. Kuncinya ada pada pengaturan awal: menambahkan URL Board Manager resmi Espressif, meng-install paket esp32 by Espressif Systems, memilih board ESP32 Dev Module, dan memastikan port serial terdeteksi dengan kabel USB yang mendukung data.
Setelah itu, anda bisa langsung menulis kode dengan gaya Arduino seperti biasa. Kita sudah membuat dua proyek pertama: LED berkedip di GPIO 23 dan koneksi WiFi yang menampilkan alamat IP ESP32.
Yang Perlu Diingat
- Pin GPIO ESP32 bekerja di 3,3V dan tidak toleran 5V.
- Hindari GPIO 6–11 (flash) dan ingat bahwa GPIO 34–39 hanya untuk input.
- ESP32 klasik hanya mendukung WiFi 2,4 GHz.
- Jika upload macet di
Connecting...., tahan tombol BOOT.
Langkah Selanjutnya
Setelah ESP32 bisa terhubung ke WiFi, langkah selanjutnya yang menarik untuk dicoba adalah membuat web server di ESP32 untuk mengontrol LED dari browser, membaca sensor suhu dan kelembapan seperti DHT22, atau mengirim data sensor menggunakan protokol MQTT. Jika anda juga tertarik dengan dunia single board computer, silakan baca artikel Mengenal Raspberry Pi untuk melihat perbedaannya dengan mikrokontroler seperti ESP32.
Resources dan Link Berguna
- Dokumentasi Arduino core for ESP32 (Espressif)
- Repositori arduino-esp32 di GitHub
- Download Arduino IDE
- Driver CP210x USB to UART dari Silicon Labs
Ada pertanyaan atau kendala saat mengikuti tutorial ini? Jangan ragu untuk bertanya, dan tetap pantau terus web Teknotut untuk proyek ESP32 berikutnya!
Semoga artikel ini membantu.



