9.Pemrograman
Mikrokontroler ESP32
9.1. Mikrokontroler ESP32
ESP32 adalah sistem pada chip (SoC) yang dikembangkan oleh Espressif Systems. Ini adalah chip yang serbaguna dan kuat yang mengintegrasikan prosesor, modul WiFi, dan Bluetooth dalam satu paket. ESP32 dilengkapi dengan prosesor dual-core Xtensa LX6 yang dapat beroperasi hingga 240 MHz. Prosesor ini memiliki arsitektur RISC-V dan mendukung berbagai periferal seperti UART, SPI, I2C, GPIO, ADC, DAC, dan banyak lagi.
ESP32 mendukung standar WiFi 802.11 b/g/n/e/i, yang memungkinkannya untuk terhubung ke jaringan WiFi. Ini memungkinkan perangkat yang menggunakan ESP32 untuk terhubung ke internet secara nirkabel. ESP32 juga memiliki kemampuan Bluetooth 4.2 BR/EDR dan BLE (Bluetooth Low Energy). Ini memungkinkan ESP32 untuk berkomunikasi dengan perangkat Bluetooth lainnya, seperti headset, speaker, dan perangkat nirkabel lainnya. ESP32 dilengkapi dengan berbagai pilihan memori, termasuk RAM dan penyimpanan flash. Memori ini penting untuk menyimpan kode program, data, dan konfigurasi perangkat. Diagram blok fitur-fitur yang ada dalam ESP32 ditunjukkan dalam Gambar 9.1. Sedangkan pinout chip ESP32 ditunjukkan dalam Gambar 9.2. Chip ESP32 sering kali dikemas dalam bentuk modul yang sudah dilengkapi dengan konektor usb mikro dan juga konektor untuk pinout. Salah satu modul yang sering digunakan adalah ESP32-WROOM-32 yang dikembangkan oleh Espressif Systems. Pinout dari ESP32-WROOM-32 ditunjukkan dalam Gambar 9.3.
Ada beberapa opsi untuk mengembangkan perangkat berbasis ESP32. Ini termasuk menggunakan Arduino IDE dengan pustaka ESP32, menggunakan ESP-IDF (Espressif IoT Development Framework), atau menggunakan platform pengembangan lainnya seperti MicroPython, Lua, dan arduino. ESP32 sering digunakan dalam berbagai aplikasi IoT (Internet of Things) seperti sensor jarak jauh, pengendalian perangkat, monitoring lingkungan, dan banyak lagi. Kemampuannya untuk terhubung ke WiFi dan Bluetooth membuatnya cocok untuk aplikasi yang memerlukan konektivitas nirkabel.
ESP32 telah menjadi salah satu platform pilihan untuk pengembangan proyek IoT karena kemampuannya yang serbaguna, hemat daya, dan biayanya yang terjangkau. Dengan dukungan komunitas yang besar dan beragamnya pilihan pengembangan, ESP32 menjadi pilihan yang populer bagi para pengembang yang ingin menciptakan solusi IoT yang inovatif dan canggih.
Gambar 9.1. Diagram blok fitur ESP32
Gambar 9.2. Pinout ESP32
Gambar 9.3. Pinout Modul ESP32-WROOM-32
9.2. Arduino IDE
Arduino IDE (Integrated Development Environment) adalah lingkungan pengembangan perangkat lunak yang digunakan untuk memprogram mikrokontroler Arduino. Berikut adalah penjelasan detail tentang Arduino IDE:
1. Tujuan
Arduino IDE dirancang khusus untuk memudahkan pengembangan perangkat lunak untuk berbagai board Arduino. Tujuannya adalah untuk menyediakan lingkungan yang mudah digunakan bagi pemula sekaligus cukup kuat bagi pengembang yang lebih berpengalaman.
2. Antarmuka Pengguna
Antarmuka pengguna Arduino IDE sederhana dan intuitif. Ini terdiri dari beberapa komponen utama, termasuk area kode, toolbar, console serial, dan pustaka. Antarmuka pengguna Arduino IDE ditunjukkan dalam Gambar 9.4.
Gambar 9.4. Antarmuka pengguna Arduino IDE 3. Bahasa Pemrograman
Arduino IDE menggunakan bahasa pemrograman yang berbasis pada bahasa C/C++. Namun, IDE ini menyediakan fungsi dan pustaka yang telah dipermudah untuk digunakan, sehingga cocok bagi pemula.
4. Pustaka
Arduino IDE dilengkapi dengan berbagai pustaka standar yang mencakup fungsi-fungsi umum seperti kontrol pin, komunikasi serial, pembacaan sensor, dan
banyak lagi. Pustaka-pustaka ini memudahkan pengembangan proyek tanpa perlu menulis kode dari awal.
5. Upload Kode
Salah satu fitur utama Arduino IDE adalah kemampuannya untuk mengunggah kode yang telah ditulis ke board Arduino dengan mudah. Pengguna hanya perlu memilih board yang tepat dan port serial yang sesuai sebelum mengunggah kode.
6. Dukungan untuk Berbagai Board
Arduino IDE mendukung berbagai jenis board Arduino, termasuk Arduino Uno, Arduino Nano, Arduino Mega, dan banyak lagi. Selain itu, IDE ini juga mendukung board dari produsen lain yang kompatibel dengan Arduino, seperti ESP8266 dan ESP32.
7. Kompatibilitas
Arduino IDE dapat diinstal di berbagai sistem operasi, termasuk Windows, macOS, dan Linux, sehingga dapat digunakan oleh pengembang dari berbagai platform.
8. Ekosistem
Arduino IDE merupakan bagian dari ekosistem yang lebih luas yang mencakup forum, dokumentasi, dan komunitas yang aktif. Ini memungkinkan pengguna untuk mendapatkan dukungan, berbagi proyek, dan memperluas pengetahuan mereka tentang Arduino.
9. Pengembangan Lanjutan
Selain untuk pengembangan proyek sederhana, Arduino IDE juga dapat digunakan untuk pengembangan proyek yang lebih kompleks. Pengguna yang lebih berpengalaman dapat memanfaatkan fitur-fitur canggih seperti debugging dan pengoptimalan kode.
10. Menginstall Arduino IDE
Untuk menginstall Arduino IDE silahkan Kunjungi situs web resmi Arduino di https://www.arduino.cc/en/software dan unduh versi terbaru dari Arduino IDE sesuai dengan sistem operasi yang Anda gunakan (Windows, macOS, atau Linux). Tampilan halaman unduh aplikasi arduino ditunjukkan dalam Gambar 9.5.
Gambar 9.5. Tampilan halaman unduh aplikasi Arduino IDE
9.3. Menginstall Board ESP32 pada Arduino IDE
Sebelum menginstall board ESP32, pastikan bahwa Arduino IDE telah terinstall. Jika belum silahkan ikuti langkah-langkah pada sub-bab sebelumnya. Jika Arduino IDE telah terinstall, maka berikut langkah-langkah untuk menginstal board ESP32 pada Arduino IDE:
1. Buka Arduino IDE: Mulailah dengan membuka Arduino IDE di komputer Anda.
2. Buka Preferences: Pergi ke menu "File" (Windows/Linux) atau "Arduino"
(macOS), lalu pilih "Preferences". Setelah menu preference dipilih maka akan muncul window seperti ditunjukkan dalam Gambar 9.6.
Gambar 9.6. Arduino IDE preferences
3. Tambahkan URL Board Manager ESP32: Di dalam kotak teks yang disebut
"Additional Board Manager URLs", tambahkan URL berikut:
https://espressif.github.io/arduino-esp32/package_esp32_index.json
Atau pilih tombol di sebelah kanan kotak teks dan isikan url di atas pada form yang tersedia seperti ditunjukkan dalam Gambar 9.7.
Gambar 9.7. Additional board manager pada Arduino IDE
4. Buka Board Manager: Sekarang, pergi ke menu "Tools", lalu pilih "Board", dan klik "Boards Manager...".
5. Cari ESP32: Di dalam Boards Manager, cari "esp32" menggunakan kolom pencarian di bagian atas. Anda akan melihat paket yang dikelola oleh Espressif Systems. Klik "Install" untuk menginstalnya seperti ditunjukkan dalam Gambar 9.8.
Gambar 9.8. ESP32 pada Arduino Board Manager
6. Pilih Board ESP32: Setelah instalasi selesai, kembali ke menu "Tools" > "Board", dan pilih "ESP32 Dev Module" atau board ESP32 yang Anda miliki dari daftar yang tersedia.
7. Konfigurasi Port (Jika Diperlukan)**: Jika belum, pilih port serial yang terhubung dengan board ESP32 Anda di menu "Tools" > "Port".
8. Restart Arduino IDE.
9.4. Platform IO
PlatformIO adalah lingkungan pengembangan terbuka yang dirancang khusus untuk pengembangan perangkat lunak untuk berbagai platform mikrokontroler dan mikroprosesor, termasuk yang digunakan dalam proyek Internet of Things (IoT).
Berikut ini penjelasan detail tentang PlatformIO:
1. Keterbukaan dan Kompatibilitas
● PlatformIO bersifat terbuka dan mendukung banyak platform mikrokontroler populer seperti Arduino, ESP8266, ESP32, STM32, dan lainnya.
● Kompatibilitas yang luas memungkinkan pengembang untuk menggunakan berbagai pilihan perangkat keras sesuai dengan kebutuhan proyek.
2. Integrasi dengan Berbagai Editor
● PlatformIO terintegrasi dengan berbagai editor teks populer seperti Visual Studio Code (VSCode), Atom, Sublime Text, dan lainnya.
● Integrasi ini memungkinkan pengembang untuk memilih editor yang paling mereka sukai dan tetap menggunakan fitur-fitur unggulan PlatformIO.
3. Manajemen Proyek yang Mudah
● PlatformIO menyediakan manajemen proyek yang mudah dengan dukungan untuk struktur proyek yang terorganisir dengan baik.
● Pengembang dapat dengan cepat membuat, mengelola, dan mengonfigurasi proyek mereka dengan menggunakan antarmuka baris perintah (CLI) atau melalui antarmuka pengguna grafis.
4. Integrasi dengan Layanan Cloud
● PlatformIO dapat terintegrasi dengan layanan cloud seperti PlatformIO Remote Development untuk memfasilitasi pengembangan berbasis awan.
● Integrasi ini memungkinkan pengembang untuk mengakses, mengelola, dan mengembangkan proyek mereka dari mana saja dengan koneksi internet.
5. Manajemen Paket yang Fleksibel
● PlatformIO menyediakan manajemen paket yang fleksibel dengan dukungan untuk pemasangan dan pembaruan paket perangkat lunak secara otomatis.
● Pengembang dapat dengan mudah menambahkan dan mengelola dependensi proyek mereka melalui platform ini.
6. Pengujian dan Debugging yang Terintegrasi
● PlatformIO menyediakan fitur pengujian dan debugging yang terintegrasi dengan berbagai pengaturan dan pilihan konfigurasi.
● Fitur ini memungkinkan pengembang untuk menguji kode mereka secara efisien dan mengidentifikasi dan memperbaiki bug dengan cepat.
7. Dukungan untuk IoT
● PlatformIO secara khusus dirancang untuk mendukung pengembangan aplikasi IoT dengan menyediakan dukungan untuk berbagai platform mikrokontroler dan protokol komunikasi yang umum digunakan dalam lingkungan IoT.
● Ini termasuk dukungan untuk ESP8266, ESP32, Arduino, dan banyak lagi.
Dengan fitur-fitur ini, PlatformIO memberikan lingkungan pengembangan yang kuat dan fleksibel bagi pengembang untuk membuat, mengelola, dan mendeploy aplikasi IoT dengan lebih efisien dan efektif.
9.5. Cara menginstall PlatformIO di Visual Studio Code
PlatformIO dapat diintegrasikan dengan code editor seperti Visual Studio Code. Berikut adalah langkah-langkah untuk menginstal PlatformIO pada Visual Studio Code:
1. Unduh Visual Studio Code: Jika Anda belum memilikinya, unduh dan instal Visual Studio Code dari situs web resmi: https://code.visualstudio.com/.
2. Buka Visual Studio Code: Buka Visual Studio Code setelah proses instalasi selesai.
3. Instalasi PlatformIO Extension: Di Visual Studio Code, buka tab Extensions (atau tekan `Ctrl+Shift+X`). Cari "PlatformIO" di kotak pencarian. Pilih ekstensi
"PlatformIO IDE" yang ditawarkan oleh PlatformIO. Klik tombol "Install" untuk memulai proses instalasi. Langkah-langkah ini ditunjukkan dalam Gambar 9.9, Gambar 9.10, dan Gambar 9.11.
Gambar 9.9. Masuk ke menu Extension pada Visual Studio Code
Gambar 9.10. Cari platformIO di kotak pencarian
Gambar 9.11. Pilih dan install platformIO
4. Aktivasi PlatformIO: Setelah proses instalasi selesai, Anda mungkin perlu me-restart Visual Studio Code untuk mengaktifkan ekstensi PlatformIO.
5. Konfigurasi PlatformIO: Setelah restart, buka menu PlatformIO dari bilah menu atau toolbar di Visual Studio Code. Anda akan melihat opsi untuk membuat atau mengimpor proyek, serta akses ke berbagai perangkat PlatformIO lainnya seperti ditunjukkan dalam Gambar 9.12.
6. Mulai Menggunakan PlatformIO: Sekarang Anda siap untuk mulai menggunakan PlatformIO pada Visual Studio Code. Anda dapat membuat proyek baru, menulis kode, mengelola dependensi, dan melakukan berbagai tugas pengembangan IoT lainnya.
Dengan PlatformIO terintegrasi di dalam Visual Studio Code, Anda akan memiliki akses ke fitur-fitur yang kuat dan fleksibel untuk pengembangan perangkat lunak IoT dan mikrokontroler.
Gambar 9.12. Membuka Menu platformIO pada Visual Studio Code
9.6. Struktur Dasar Pemrograman
Mikrokontroler ESP32 Menggunakan Arduino IDE
Struktur pemrograman pada Arduino umumnya mengikuti pola dasar yang terdiri dari dua fungsi utama: setup() dan loop(). Berikut adalah penjelasan singkat tentang struktur pemrograman pada Arduino:
1. Fungsi setup()
Fungsi ini dieksekusi sekali saat program dimulai. Ini digunakan untuk menginisialisasi variabel, menyiapkan pin I/O, atau melakukan konfigurasi awal
lainnya sebelum program memasuki loop utama. Contoh penggunaan setup() adalah mengatur pin sebagai input atau output, mengatur kecepatan transmisi serial, atau menginisialisasi sensor. Berikut adalah contoh implementasi fungsi setup() sederhana untuk melakukan inisialisasi pin sebagai input dan output.
2. Fungsi loop()
Fungsi ini dieksekusi secara terus-menerus setelah setup() selesai. Ini adalah bagian utama dari program di mana logika utama atau tugas berulang dilakukan. Kontrol terus menerus berada di dalam loop hingga program berakhir atau papan mikrokontroler dimatikan. Berikut adalah contoh fungsi loop() untuk mengecek apakah tombol ditekan atau tidak dan memberikan respon berupa kondisi
ledPin sesuai dengan logika pada tombol.
Dalam struktur pemrograman yang lebih kompleks, Anda juga dapat menggunakan fungsi-fungsi tambahan dan variabel global. Namun, inti dari program Arduino biasanya terdiri dari fungsi setup() dan loop() ini.