Memprogram Board ESP32 Menggunakan ESP-IDF di Linux Ubuntu

Apa itu ESP32?

Foto 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

#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

Hasil

hasil