Jika anda pernah mendevelop ESP32, pasti anda pernah menggunakan satu atau beberapa IDE diatas. Pertanyaannya, kira-kira mana ya yang paling bagus untuk digunakan? Jawaban cepatnya, relatif, tergantung kebutuhan. Tapi saya pribadi memisahkan Arduino IDE, Platform IO, dan ESP-IDF sebagai 3 development environment yang mengurut tingkat kesulitannya. Artinya jika anda tidak punya keperluan atau keterbatasan khusus, saran saya langsung saja gunakan Arduino IDE! Tapi disini coba saya jabarkan juga keunggulan dari yang lainnya.

Arduino IDE

Jika kita menggunakan Arduino IDE, kita hanya perlu mendownload dan menginstallnya dari sini, install board ESP32 dari Board Manager, lalu voila! Langsung gunakan. Tentu saat hendak melakukan build dan upload, kita harus mimilih board yang sesuai. Karena saya biasa menggunakan sebuah board DOIT Espressif ESP32, maka board itu pula yang saya pilih.

Kelebihan yang saya rasakan dari penggunaan Arduino IDE ini tentu pada kecepatan dan kemudahan dalam penyiapannya. Pada saat penggunaan, saya juga sangat jarang mendapatkan kendala. Untuk segala basic needs menurut saya Arduino IDE ini sudah cukup. Pun ketika kita hendak menggunakan example project dari File/Examples, tinggal pilih filenya, dan langsung tekan upload. Untuk melihat Serial Monitor jika anda memprint sesuatu, anda tinggal tekan tombol bergambar kaca pembesar.

Untuk pemula dan bagi anda yang tidak hendak melakukan customization khusus, saya sangat menganjurkan menggunakan Arduino IDE, alasannya karena barrier untuk memulai melakukan pemrograman dengan Embedded Systems menjadi sangat kecil. Adapun, Arduino IDE ini tentu tidak bisa melakukan segalanya, ia memiliki beberapa kekurangan, salah satunya adalah pada ketidakmampuannya untuk memberikan code linting tertentu, atau anda tidak dapat secara lincah berpindah dari satu file ke file lainnya seperti ketika anda menggunakan IDE yang lebih kompleks seperti VSCode, Atom, atau Visual Studio. Kelemahan lainnya adalah jika anda ingin menjelajah kode sampai kepada implementasi library dan pada C level, anda akan kesulitan, karena Arduino IDE mengabstraksi itu semua, sehingga semudah itu untuk digunakan, namun menjadi tidak fleksibel jika kiranya anda butuh penyesuaian. Hal ini akan sangat anda rasakan jika anda sedang mendevelop atau menggunakan sebuah library yang sedang bleeding-edge, dan masih punya error disana-sini. Jika anda termasuk kedalam golongan ini, saran saya segera berkemas dan mari berlanjut pada IDE berikutnya.

Platform IO

Platform IO adalah sebuah ekstensi yang terdapat pada VSCode, yang dapat digunakan untuk membuild, mengupload, dan memonitor program yang telah kita buat untuk sebuah perangkat embedded. Tak hanya berhenti pada keampuannya melakukan fungsi-fungsi dasar, dengannya kita dapat melakukan pengelolaan library dsb. Platform IO adalah salah satu extension yang sangat saya anjurkan bagi para pengembang, terutama untuk yang hendak lebih serius terjun di dalamnya. Alasannya adalah karena Platform IO memberikan keleluasaan dalam pengelolaan library, serta konfigurasi board pada saat uploading. Poin ini paling terasa manfaatnya ketika suatu saat saya sedang mengembangkan sebuah project yang harus saya flash/upload berulang-ulang di 3 port dengan 2 jenis board berbeda. Salah satunya ESP32, dan satunya lagi Arduino Uno. Dengan menggunakan pengaturan yang ada di file platform.ini, saya dapat secara simultan melakukan flashing ke masing-masing ketiga board tersebut tanpa perlu pusing. Kelebihan lainnya adalah bagi anda yang telah terbiasa menggunakan Arduino IDE, Platform IO ini sangat mudah untuk langsung digunakan, karena environment kerja dan gaya kompilasinya sangat mirip. Hal ini dikarenakan dalam pembuatan suatu project baru, kita bisa memilih untuk menggunakan framework Arduino sebagai struktur pengembangan yang kita gunakan.

Platform.ini, file untuk melakukan pengelolan board target build dan upload

Jika ingin menggunakan Platform IO, kita pertama harus melalui proses instalasi VSCode, lalu menginstallnya sebagai extension. Setelah menginstall VSCode disini, kita dapat memilih menu extensions di VSCode, dan mengetikkan Platform IO. Setelah muncul opsinya, kita perlu menunggu sampai proses instalasi selesai. Begitu selesai, kita perlu menutup dan membuka kembali VSCode. Jika tidak ada masalah, Platform IO dapat langsung digunakan, dan ia biasa akan muncul saat pertama kali VSCode kita start. Kita dapat membuat project baru dengan masuk ke menu VSCode > Home > New Project.

ESP-IDF

ESP-IDF (Espressif IoT Development Framework) adalah sebuah development environment yang dibuat khusus untuk mengembangkan ESP, atau board dari keluarga Espressif. Environmentnya dapat didownload dan digunakan secara terpisah seperti disini. Selain itu, anda juga dapat menginstalasinya sebagai extension pada VSCode dengan proses instalasi yang kurang lebih sama dengan Platform IO. Lalu, apasih kelebihan dari ESP-IDF? Satu hal yang paling saya notice adalah, sebagai pengguna framework Arduino dalam pengembangan segala embedded system yang saya lakukan, saya agak bingung di awal, karena struktur dan pengembangan ESP-IDF berbeda dengannya. Sederhananya, kita tidak serta merta dapat menggunakan library dan basic codes yang umum digunakan di Arduino IDE, seperti setup() loop(), dan Serial.println(). Disini anda seperti disuguhkan a whole new world dalam pengembangan embedded system ESP. Lantas, kenapa repot-repot?

Tentunya suatu tools akan dibuat karena kebutuhan tertentu, dan Espressif membuat tools ini untuk dapat mengembangkan board-board miliknya dengan lebih leluasa. Terlihat bagaimana framework ini menggunakan C dan C++ secara hampir gamblang (Berbeda dengan Arduino Framework yang mengggunakan simplified C++). Pola building yang digunakan mirip seperti pembuatan binary files pada umumnya, yaitu menggunakan CMake. Alhasil, anda mendapat kekuatan penuh pengembangan C dan C++, seperti heap, memory allocation, dsb. Andapun tidak terikat pada struktur setup() loop(), tapi anda disediakan sebuah void app_main() yang mana dapat anda buat berapapun loop didalamnya. Salah satu yang bisa dibilang kekurangan bagi anda yang sebelumnya telah terbiasa menggunakan Arduino IDE, adalah anda perlu banyak penyesuaian bahkan pada level code. Beberapa fungsi dasar seperti Serial.println() semuanya harus diganti dengan fungsii print biasa seperti printf.

Tapi apasih keunikan khusus yang diberikan oleh ESP-IDF ini? Sebagai seorang IoT Engineer, terkadang saya membutuhkan support dan pengembangan library terbaru terutama saat komunitas belum banyak yang mengembangkannya. Disini Espressif memberikan perhatian khusus pada pengembangan library miliknya, sehingga kita bisa mendapatkan support dan kecepatan update yang kita butuhkan. Dalam hal ini, saya banyak sekali menggunakan ESP32 sebagai board utama dalam banyak project saya. Pada ESP32, ada beberapa fitur terbaru yang masih belum ada adaptasi penuhnya pada Arduino framework. Salah satunya per hari ini adalah library BLE Espressif. Saya tidak bisa menunggu sampai adanya Adaptasi penuh (yang minim error) dari BLE Espressif di Arduino framework, sedangkan saya sudah butuh untuk menggunakannya sekarang. Adapun Espressif berkomitmen untuk terus mengembangkan boardnya dan menyediakan cutting-edge developments di ESP-IDF ini. Hal lain yang patut di mention adalah, ESP-IDF ini merupakan native environment dari library Espressif, maka seharusnya akan less error (tapi untuk ini saya belum banyak mengujinya).

Terima kasih sudah membaca, semoga anda dapat menemukan IDE yang paling sesuai dengan kebutuhan anda.