Instroduction ESP32 sebagai Mikrokontroller

Baru Mengenal ESP32? Mulailah dari Sini!

ESP32 adalah seri microcontroller System on a Chip (SoC) dengan biaya rendah dan konsumsi daya rendah yang dikembangkan oleh Espressif. Chip ini dilengkapi dengan kemampuan Wi-Fi dan Bluetooth serta prosesor dual-core. Jika Anda pernah menggunakan ESP8266, ESP32 adalah penerusnya dengan fitur yang lebih lengkap.

Apa itu ESP32?

ESP32 adalah microcontroller yang sangat populer karena berbagai keunggulannya, seperti:

  • Biaya Rendah: Mulai dari $6, ESP32 sangat terjangkau bagi banyak kalangan.
  • Konsumsi Daya Rendah: Mendukung mode hemat energi seperti deep sleep, cocok untuk perangkat IoT.
  • Koneksi Wi-Fi: Dapat terhubung ke jaringan Wi-Fi (station mode) atau membuat jaringan Wi-Fi sendiri (access point mode).
  • Bluetooth: Mendukung Bluetooth klasik dan BLE (Bluetooth Low Energy).
  • Prosesor Dual-Core: Sebagian besar ESP32 memiliki dua prosesor Xtensa 32-bit LX6.
  • Antarmuka Input/Output Kaya: Mendukung berbagai periferal seperti ADC, DAC, UART, SPI, I2C, PWM, dan lainnya.
  • Kompatibel dengan Arduino: Bisa diprogram menggunakan gaya pemrograman Arduino.
  • Kompatibel dengan MicroPython: Mendukung MicroPython untuk pengembangan berbasis Python.

Spesifikasi Teknis ESP32

ESP32 memiliki spesifikasi yang luar biasa untuk berbagai proyek IoT dan otomasi rumah:

esp32 modul

  • Wi-Fi: Data rate hingga 150 Mbps dengan HT40.
    • Bluetooth: BLE dan Bluetooth klasik.
    • Prosesor: Tensilica Xtensa Dual-Core 32-bit LX6 dengan kecepatan hingga 240 MHz.
  • Memori:
    • ROM: 448 KB (digunakan untuk proses booting dan fungsi inti).
    • SRAM: 520 KB (untuk penyimpanan data dan instruksi).
    • RTC fast SRAM: 8 KB (untuk penyimpanan data dan CPU utama saat RTC Boot dari mode deep-sleep).
    • RTC slow SRAM: 8 KB (untuk akses co-processor selama mode deep-sleep).
    • eFuse: 1 Kbit (256 bit digunakan untuk sistem seperti alamat MAC dan konfigurasi chip, sementara 768 bit sisanya disediakan untuk aplikasi pengguna, termasuk enkripsi flash dan ID chip).
    • Embedded flash: Flash yang terhubung secara internal melalui IO16, IO17, SD_CMD, SD_CLK, SD_DATA_0, dan SD_DATA_1 pada chip ESP32-D2WD dan ESP32-PICO-D4:
      • 0 MiB (untuk chip ESP32-D0WDQ6, ESP32-D0WD, dan ESP32-S0WD).
      • 2 MiB (untuk chip ESP32-D2WD).
      • 4 MiB (untuk modul ESP32-PICO-D4 SiP).
  • Konsumsi Daya Rendah: ESP32 dirancang untuk mendukung konsumsi daya yang sangat rendah, memungkinkan Anda tetap menggunakan fitur seperti konversi ADC (Analog-to-Digital Converter) bahkan saat dalam mode deep sleep.

    Antarmuka Input/Output Periferal:
    ESP32 mendukung berbagai antarmuka periferal, termasuk:

    • Antarmuka dengan DMA (Direct Memory Access): mendukung fitur seperti capacitive touch.
    • ADC (Analog-to-Digital Converter): konversi sinyal analog menjadi digital.
    • DAC (Digital-to-Analog Converter): konversi sinyal digital menjadi analog.
    • I²C (Inter-Integrated Circuit): komunikasi data antara perangkat elektronik.
    • UART (Universal Asynchronous Receiver/Transmitter): komunikasi serial asinkron.
    • SPI (Serial Peripheral Interface): transfer data berkecepatan tinggi.
    • I²S (Integrated Interchip Sound): antarmuka untuk aplikasi audio digital.
    • RMII (Reduced Media-Independent Interface): antarmuka jaringan ethernet.
    • PWM (Pulse-Width Modulation): untuk kontrol motor atau LED.

    Keamanan:
    ESP32 dilengkapi akselerator perangkat keras untuk mendukung algoritma AES (Advanced Encryption Standard) dan protokol SSL/TLS, memastikan keamanan tinggi untuk aplikasi IoT.

Perbedaan Utama ESP32 dan ESP8266

esp32 vs esp8266_1

ESP32 adalah penerus ESP8266 dengan peningkatan berikut:

  • Lebih cepat dengan prosesor dual-core.
  • Dukungan Bluetooth.
  • Lebih banyak GPIO (General Purpose Input Output).
  • Konsumsi daya lebih efisien.
  • Sedikit lebih mahal dibanding ESP8266.

Memilih Board Pengembangan ESP32

Saat mencari board ESP32 secara online, Anda akan menemukan beragam pilihan dari berbagai vendor. Meskipun semuanya berfungsi dengan cara yang serupa, beberapa board mungkin lebih cocok untuk proyek tertentu. Saat memilih board pengembangan ESP32, ada beberapa aspek yang perlu Anda pertimbangkan:

  1. Antarmuka USB-ke-UART dan Sirkuit Regulator Tegangan:
    Sebagian besar board pengembangan yang lengkap memiliki kedua fitur ini. Fitur ini penting untuk menghubungkan ESP32 ke komputer Anda dengan mudah untuk mengunggah kode dan menyediakan daya.
  2. Tombol BOOT dan RESET/EN:
    Tombol ini digunakan untuk mengaktifkan mode flashing atau mereset (memulai ulang) board. Beberapa board tidak memiliki tombol BOOT, tetapi biasanya board tersebut dapat masuk ke mode flashing secara otomatis.
  3. Konfigurasi Pin dan Jumlah Pin:
    Untuk menggunakan ESP32 dengan benar dalam proyek Anda, pastikan Anda memiliki akses ke diagram pinout board (seperti peta yang menunjukkan pin mana yang sesuai dengan GPIO tertentu dan fitur-fiturnya). Jika tidak memiliki akses ke pinout, Anda mungkin akan salah dalam menggunakan ESP32.
  4. Konektor Antena:
    Sebagian besar board dilengkapi dengan antena onboard untuk sinyal Wi-Fi. Namun, beberapa board menyediakan konektor antena untuk menyambungkan antena eksternal opsional. Menambahkan antena eksternal dapat meningkatkan jangkauan Wi-Fi.
  5. Konektor Baterai:
    Jika Anda ingin menggunakan baterai untuk memberi daya pada ESP32, beberapa board memiliki konektor untuk baterai LiPo, yang lebih praktis. Anda juga bisa memberi daya pada ESP32 biasa melalui pin daya.
  6. Fitur Perangkat Keras Tambahan:
    Beberapa board pengembangan ESP32 memiliki fitur perangkat keras tambahan. Misalnya, ada yang dilengkapi layar OLED bawaan, modul LoRa, modul SIM800 (untuk GSM dan GPRS), holder baterai, kamera, atau fitur lainnya.

Apa papan pengembangan ESP32 terbaik untuk pemula?
Untuk pemula, kami merekomendasikan papan ESP32 yang memiliki banyak GPIO yang tersedia, tanpa fitur perangkat keras tambahan. Penting juga agar papan tersebut dilengkapi dengan regulator tegangan dan input USB untuk daya serta mengunggah kode.

Dalam sebagian besar proyek ESP32 kami, kami menggunakan papan ESP32 DEVKIT DOIT, dan itu adalah papan yang kami rekomendasikan untuk pemula. Terdapat beberapa versi papan ini dengan jumlah pin yang berbeda (30, 36, dan 38)—semua papan bekerja dengan cara yang serupa.

esp32 dev kit

Di Mana Membeli ESP32?

Anda dapat memeriksa tautan berikut untuk menemukan papan ESP32 DEVKIT DOIT di berbagai toko:

ESP32 DEVKIT DOIT Board
Development Board lain yang serupa dengan fitur yang disebutkan sebelumnya juga bisa menjadi pilihan yang baik, seperti Adafruit ESP32 Feather, Sparkfun ESP32 Thing, NodeMCU-32S, Wemos LoLin32, dan sebagainya.

development board lain

ESP32 DEVKIT DOIT
Dalam artikel ini, kami akan menggunakan papan ESP32 DEVKIT DOIT sebagai referensi. Jika Anda memiliki papan yang berbeda, jangan khawatir. Informasi di halaman ini juga kompatibel dengan papan pengembangan ESP32 lainnya.

esp32 devkit v1

Spesifikasi – ESP32 DEVKIT V1 DOIT
Tabel berikut menunjukkan ringkasan fitur dan spesifikasi papan ESP32 DEVKIT V1 DOIT:

Fitur Spesifikasi
Jumlah inti 2 (dual core)
Wi-Fi 2.4 GHz hingga 150 Mbit/s
Bluetooth BLE (Bluetooth Low Energy) dan Bluetooth legacy
Arsitektur 32 bit
Frekuensi clock Hingga 240 MHz
RAM 512 KB
Pin 30, 36, atau 38 (tergantung model)
Perifer Sentuh kapasitif, ADC (konverter analog-ke-digital), DAC (konverter digital-ke-analog), I2C (Inter-Integrated Circuit), UART (universal asynchronous receiver/transmitter), CAN 2.0 (Controller Area Network), SPI (Serial Peripheral Interface), I2S (Integrated Inter-IC Sound), RMII (Reduced Media-Independent Interface), PWM (pulse width modulation), dan lainnya.
Tombol bawaan Tombol RESET dan BOOT
LED bawaan LED biru bawaan yang terhubung ke GPIO2; LED merah bawaan yang menunjukkan papan sedang diberi daya
Jembatan USB ke UART CP2102

Papan ESP32 ini memiliki 36 pin, dengan 18 pin di setiap sisi. Jumlah GPIO yang tersedia tergantung pada model papan Anda.

Untuk mempelajari lebih lanjut tentang GPIO ESP32, baca panduan referensi GPIO kami: Referensi Pinout ESP32: Pin GPIO mana yang sebaiknya Anda gunakan?

Papan ini dilengkapi dengan antarmuka microUSB yang dapat Anda gunakan untuk menghubungkan papan ke komputer untuk mengunggah kode atau memberikan daya.

Papan ini menggunakan chip CP2102 (USB to UART) untuk berkomunikasi dengan komputer Anda melalui port COM menggunakan antarmuka serial. Chip populer lainnya adalah CH340. Periksa chip konverter USB ke UART yang ada pada papan Anda karena Anda perlu menginstal driver yang diperlukan agar komputer dapat berkomunikasi dengan papan (informasi lebih lanjut tentang ini akan dibahas nanti dalam panduan ini).

Papan ini juga dilengkapi dengan tombol RESET (mungkin dilabeli EN) untuk me-restart papan dan tombol BOOT untuk memasukkan papan ke dalam mode pemrograman (siap menerima kode). Perhatikan bahwa beberapa papan mungkin tidak memiliki tombol BOOT.

Selain itu, papan ini juga dilengkapi dengan LED biru bawaan yang terhubung secara internal ke GPIO 2. LED ini berguna untuk debugging sebagai output fisik visual. Ada juga LED merah yang menyala ketika Anda memberikan daya ke papan.

Panduan Pinout GPIO ESP32
Chip ESP32 memiliki 48 pin dengan berbagai fungsi. Tidak semua pin tersedia pada setiap papan pengembangan ESP32, dan beberapa pin sebaiknya tidak digunakan. Papan ESP32 DEVKIT V1 DOIT biasanya memiliki 36 GPIO yang dapat Anda gunakan untuk menghubungkan periferal.

Pin Daya
Biasanya, semua papan dilengkapi dengan pin daya: 3V3, GND, dan VIN. Anda dapat menggunakan pin ini untuk memberi daya pada papan (jika Anda tidak memberikan daya melalui port USB), atau untuk mendapatkan daya untuk periferal lain (jika Anda memberi daya pada papan menggunakan port USB).

Pin Input Output Umum (GPIO)
Hampir semua GPIO memiliki nomor yang ditetapkan, dan itulah cara Anda merujuk ke pin tersebut—berdasarkan nomornya.

Dengan ESP32, Anda dapat memutuskan pin mana yang akan digunakan untuk UART, I2C, atau SPI – Anda hanya perlu mengaturnya di dalam kode. Ini dimungkinkan berkat fitur multiplexing pada chip ESP32 yang memungkinkan penugasan beberapa fungsi ke pin yang sama.

Jika Anda tidak mengaturnya dalam kode, pin-pin tersebut akan dikonfigurasi secara default seperti yang ditunjukkan pada gambar di bawah (lokasi pin dapat berbeda tergantung pada pabrikannya). Selain itu, ada pin-pin dengan fitur khusus yang membuatnya cocok atau tidak cocok untuk proyek tertentu.

Kami memiliki panduan detail yang didedikasikan untuk GPIO ESP32 yang kami sarankan untuk Anda baca: Panduan Referensi Pinout ESP32. Panduan ini menunjukkan cara menggunakan GPIO ESP32 dan menjelaskan GPIO mana yang terbaik untuk digunakan tergantung pada proyek Anda.

Penempatan GPIO mungkin berbeda tergantung pada model papan Anda. Namun, biasanya, setiap GPIO tertentu bekerja dengan cara yang sama terlepas dari papan pengembangan yang Anda gunakan (dengan beberapa pengecualian). Misalnya, terlepas dari papan yang digunakan, biasanya GPIO5 selalu menjadi pin VSPI CS0, GPIO 23 selalu terkait dengan VSPI MOSI untuk komunikasi SPI, dan sebagainya.

Cara Memprogram ESP32

ESP32 dapat diprogram dengan berbagai bahasa pemrograman seperti:

  • C/C++ menggunakan Arduino IDE.
  • MicroPython.
  • LUA.
  • JavaScript.

Metode yang kami pilih untuk memprogram ESP32 adalah dengan menggunakan bahasa pemrograman C/C++ “bahasa pemrograman Arduino”. Kami juga memiliki beberapa panduan dan tutorial yang menggunakan firmware MicroPython.

Sepanjang panduan ini, kami akan membahas pemrograman ESP32 menggunakan core Arduino untuk papan ESP32. Jika Anda lebih suka menggunakan MicroPython, silakan merujuk ke panduan ini: Memulai dengan MicroPython di ESP32.

Pemrograman ESP32 dengan Arduino IDE
Untuk memprogram papan Anda, Anda memerlukan IDE untuk menulis kode. Bagi pemula, kami merekomendasikan menggunakan Arduino IDE. Meskipun ini bukan IDE terbaik, Arduino IDE bekerja dengan baik dan mudah serta intuitif untuk digunakan oleh pemula. Setelah Anda terbiasa dengan Arduino IDE dan mulai membuat proyek yang lebih kompleks, Anda mungkin akan merasa lebih berguna menggunakan VS Code dengan ekstensi Platformio sebagai gantinya.

Jika Anda baru mulai dengan ESP32, mulailah dengan Arduino IDE.

Instalasi Arduino IDE
Untuk menjalankan Arduino IDE, Anda perlu menginstal JAVA di komputer Anda. Jika belum, kunjungi situs web berikut untuk mengunduh dan menginstal versi terbaru: http://java.com/download.

Kunjungi situs web Arduino dan unduh versi yang sesuai dengan sistem operasi Anda.

arduino

Windows: Jalankan file yang diunduh dan ikuti petunjuk dalam panduan instalasi.
Mac OS X: Salin file yang diunduh ke dalam folder aplikasi Anda.
Linux: Ekstrak file yang diunduh, dan buka file arduino-ide yang akan meluncurkan IDE.

Jika Anda memiliki keraguan, Anda dapat mengunjungi Panduan Instalasi Arduino.

Apakah Anda membutuhkan papan ESP32? Anda bisa membelinya di sini.

Instalasi ESP32 di Arduino IDE
Untuk menginstal papan ESP32 di Arduino IDE, ikuti langkah-langkah berikut:

  1. Di Arduino IDE 2, buka menu File > Preferences.
  2. Salin dan tempelkan baris berikut ke dalam kolom Additional Boards Manager URLs:
    https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json


    Catatan: Jika Anda sudah memiliki URL untuk papan ESP8266, Anda dapat memisahkan URL tersebut dengan koma, seperti berikut:

    http://arduino.esp8266.com/stable/package_esp8266com_index.json, https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  3. Buka Boards Manager. Anda dapat pergi ke Tools > Board > Boards Manager… atau Anda bisa langsung mengklik ikon Boards Manager di pojok kiri.

  4. Cari ESP32 dan tekan tombol Install untuk esp32 by Espressif Systems versi 3.X.

    Itu saja. Papan ESP32 seharusnya terinstal setelah beberapa detik.

    Setelah itu, restart Arduino IDE Anda.

    Kemudian, pergi ke Tools > Board dan pastikan Anda sudah melihat papan ESP32 tersedia.

    Sekarang, Anda siap untuk mulai memprogram ESP32 Anda menggunakan Arduino IDE.

    Menguji Instalasi dan Mengunggah Kode ke ESP32
    Sekarang, mari kita periksa apakah instalasi berhasil dan apakah kita bisa mengunggah kode baru ke papan ESP32.

    Kita akan mengunggah contoh sketsa dari perpustakaan contoh yang tersedia.

    Hubungkan papan pengembangan ESP32 Anda ke komputer menggunakan kabel USB. Jika Anda menggunakan papan ESP32 DEVKIT DOIT, LED merah bawaan akan menyala. Ini menunjukkan bahwa papan menerima daya.

Dengan Arduino IDE Anda terbuka, ikuti langkah-langkah berikut:

  1. Pilih papan Anda di menu Tools > Board atau di menu drop-down atas, klik “Select other board and port…”.

    Jendela baru, seperti yang ditunjukkan di bawah, akan terbuka. Cari model papan ESP32 Anda.

    Pilih model papan yang Anda gunakan, dan port COM yang sesuai. Dalam contoh kami, kami menggunakan DOIT ESP32 DEVKIT V1. Klik OK setelah selesai.

    Instalasi Driver USB
    Jika Anda tidak melihat port COM di Arduino IDE, Anda mungkin perlu menginstal driver USB-to-UART di komputer Anda. Sebagian besar papan ESP32 menggunakan chip CP210x atau CH340, tergantung pada papan yang Anda gunakan.

    Jika Anda perlu menginstal driver CP210x, kami merekomendasikan untuk melihat tutorial ini: Instalasi Driver USB ESP32/ESP8266 – CP210x USB to UART Bridge.
  2. Buka contoh berikut—ini akan mencari jaringan Wi-Fi dalam jangkauan papan Anda.

    ESP32: File > Examples > WiFi (ESP32) > WiFiScan

  3. Sebuah sketsa baru akan terbuka di Arduino IDE Anda:
  4. Tekan tombol Upload di Arduino IDE. Tunggu beberapa detik sementara kode dikompilasi dan diunggah ke papan Anda.

    Catatan: Jika Anda melihat banyak titik di jendela debugging, diikuti dengan pesan kesalahan unggah, itu berarti papan Anda tidak masuk ke mode pemrograman secara otomatis. Klik tombol Upload lagi, dan ketika Anda mulai melihat titik-titik di jendela debugging, tekan tombol BOOT di papan selama beberapa detik.
  5. Jika semuanya berjalan seperti yang diharapkan, kode akan terunggah dengan sukses setelah beberapa detik. Anda akan menerima pesan serupa:

  6. Buka Serial Monitor di Arduino IDE dengan kecepatan baud 115200:

    Arduino IDE > Tools > Serial Monitor

  7. Tekan tombol Enable/RESET di papan ESP32 Anda dan Anda seharusnya melihat jaringan yang tersedia di sekitar papan Anda.

Contoh ESP32
Di Arduino IDE Anda, Anda dapat menemukan berbagai contoh untuk ESP32. Pertama, pastikan Anda telah memilih papan ESP32 di Tools > Boards. Kemudian, pergi ke File > Examples dan lihat contoh-contoh yang ada di bagian ESP32.

Menguji Instalasi
Untuk menguji instalasi add-on ESP32, kita akan mengunggah kode sederhana yang menyalakan dan mematikan LED bawaan (GPIO 2).

Salin kode berikut ke Arduino IDE Anda:

#include <Arduino.h>

#define LED 2

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(LED, OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(LED, HIGH);
  Serial.println("LED is on");
  delay(1000);
  digitalWrite(LED, LOW);
  Serial.println("LED is off");
  delay(1000);
}

Upload Sketch
Pilih papan Anda sebelum mengunggah kode. Pada menu drop-down di bagian atas, klik “Select other board and port…”.

Jendela baru, seperti yang ditunjukkan di bawah, akan terbuka. Cari  ESP32 board Anda.

Pilih model papan ESP32 yang Anda gunakan, dan port COM yang sesuai. Dalam contoh ini, kami menggunakan DOIT ESP32 DEVKIT V1. Klik OK setelah selesai.

Sekarang, Anda hanya perlu menekan tombol Upload.

Setelah beberapa detik, proses unggah seharusnya selesai.

Catatan: Beberapa papan pengembangan ESP32 tidak masuk ke mode flashing/unggah secara otomatis saat mengunggah kode baru, dan Anda akan melihat banyak titik di jendela debugging diikuti dengan pesan kesalahan. Jika itu terjadi, Anda perlu menekan tombol BOOT pada ESP32 saat Anda mulai melihat titik-titik di jendela debugging.

LED bawaan pada ESP32 seharusnya berkedip setiap detik.

Serial Monitor
Anda dapat mengklik ikon Serial Monitor untuk membuka tab Serial Monitor. Pastikan Anda memilih kecepatan baud 115200.

Troubleshooting

  1. Jika Anda mencoba mengunggah sketsa baru ke ESP32 dan mendapatkan pesan kesalahan:
    “A fatal error occurred: Failed to connect to ESP32: Timed out… Connecting…”, itu berarti ESP32 Anda tidak dalam mode flashing/unggah.

    Pastikan nama papan dan port COM yang benar telah dipilih, lalu ikuti langkah-langkah berikut:

    • Tekan dan tahan tombol BOOT pada papan ESP32 Anda.
    • Tekan tombol Upload di Arduino IDE untuk mengunggah sketsa Anda.
    • Setelah Anda melihat pesan “Connecting….” di Arduino IDE, lepaskan jari Anda dari tombol BOOT.
    • Setelah itu, Anda seharusnya melihat pesan “Done uploading”.

    Anda perlu mengulangi urutan tombol tersebut setiap kali ingin mengunggah sketsa baru. Namun, jika Anda ingin menyelesaikan masalah ini secara permanen tanpa perlu menekan tombol BOOT, ikuti saran dalam panduan berikut:
    [SOLVED] Failed to connect to ESP32: Timed out waiting for packet header.

  2. Jika Anda mendapatkan kesalahan: “COM Port not found/not available”, Anda mungkin perlu menginstal driver CP210x:

    • Instal USB Drivers – CP210x USB to UART Bridge (Windows PC)
    • Instal USB Drivers – CP210x USB to UART Bridge (Mac OS X)

Related Articles

Leave a Reply

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