Memprogram Board ESP32 Menggunakan ESP-IDF di Linux Ubuntu
Apa itu ESP32?
ESP32 adalah sebuah microcontroller yang dikembangkan oleh Espressif Systems sebuah perusahaan yang berada di Shanghai, Tiongkok. ESP32 seringkali dipakai untuk keperluan IoT (Internet of Things) dan Robotika.
Mengapa memprogram menggunakan ESP-IDF?
Kenapa memprogram menggunakan ESP-IDF kan ada Arduino IDE? Karena ESP-IDF adalah framework official dari Espressif Systems untuk pemrograman ESP32. ESP-IDF memang lebih susah digunakan dibandingkan Arduino IDE namun dengan ESP-IDF kita dapat lebih leluasa dalam pemrograman karena abstraksi Arduino IDE yang terlalu high-level.
Instalasi ESP-IDF
1. Pertama-tama kita akan clone ESP-IDF dari repository github mereka
git clone --recursive https://github.com/espressif/esp-idf.git
lalu ketik lagi untuk fetch submodule
git submodule update --init --recursive
2. Install depedencies yang dibutuhkan
sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util
3. Menginstall tool
cd esp-idf
./install.sh
4. Menyiapkan environment variabel
. ./export.sh
karena tidak selalu berada di sistem (jika membuat jendela baru tidak dapat akses idf.py) maka tulis ini di .bashrc
export IDF_PATH=$HOME/letak_file_esp_idf
source $IDF_PATH/export.sh
5. Cek apakah berhasil
idf.py --version
Jika ada output dari terminal maka instalasi ESP-IDF berhasil!
Memprogram ESP32 dengan ESP-IDF
1.Buat project baru dengan idf.py
idf.py create-project blink-led
2.Lalu masuk ke directory project
cd blink-led
3.Karena kita menggunakan esp32 maka kita set target esp32
idf.py set-target esp32
4.Modifikasi file main/blink-led.
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/gpio.h"
// pin GPIO misal punya saya GPIO 2
#define LED_GPIO GPIO_NUM_2
void app_main() {
// konfigurasi sebagai output untuk GPIO 2
gpio_set_direction(LED_GPIO, GPIO_MODE_OUTPUT);
while (1) {
// Nyala!
gpio_set_level(LED_GPIO, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS); // Delay for 1 second
// Mati!
gpio_set_level(LED_GPIO, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS); // Delay for 1 second
}
}
5. Build dan flash
Untuk build dapat menggunakan
idf.py build
Jika sudah build maka flash file ke ESP32 menggunakan
idf.py flash