TeknoTUT

Cara Memprogram ESP32 dengan Arduino IDE untuk Pemula

Panduan pemula memprogram ESP32 dengan Arduino IDE: install board ESP32, upload program LED berkedip pertama, hingga menghubungkan ESP32 ke WiFi.

Ditulis oleh 13 menit bacaEnglish
Ilustrasi papan ESP32 yang terhubung ke laptop dan sinyal WiFi
Daftar Isi

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).

Komponen untuk proyek pertama ESP32: papan ESP32 DevKit V1, kabel micro USB, breadboard, LED merah, resistor, dan kabel jumper 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 D atau G (misalnya D23 atau G23 berarti 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 .exe atau .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.AppImage

Langkah #2: Tambahkan URL Board Manager ESP32

Secara default, Arduino IDE belum mengenal papan ESP32. Kita perlu menambahkan alamat paket resmi dari Espressif.

  1. Buka menu File → Preferences (Windows/Linux) atau Arduino IDE → Settings (macOS).
  2. Cari kolom Additional boards manager URLs.
  3. Tempelkan URL berikut, lalu klik OK.
https://espressif.github.io/arduino-esp32/package_esp32_index.json

Jika 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

  1. Buka Boards Manager dengan mengklik ikon papan di sidebar kiri, atau lewat menu Tools → Board → Boards Manager….
  2. Ketik esp32 di kolom pencarian.
  3. 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-0001 atau /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 5

Outputnya 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 ttyUSB0

Jika 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 $USER

Logout lalu login kembali (atau restart komputer) agar perubahan grup berlaku.

Setelah itu, kembali ke Arduino IDE dan lakukan pengaturan berikut:

  1. Pilih board lewat Tools → Board → esp32 → ESP32 Dev Module.
  2. Pilih port lewat Tools → Port, lalu klik port ESP32 anda (misalnya COM4 atau /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 dan resistor yang terhubung ke pin GPIO 23 dan GND pada ESP32 DevKit V1 di atas breadboard 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.

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_PIN menjadi 2 untuk 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 tulisan Connecting...., 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 mati

Jika 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 dBm

Jika 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.


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.

Bacaan Selanjutnya

Artikel lain yang mungkin menarik buatmu.