Advertisement

Tutorial ESP32 dengan ESP-IDF : #3 Blinky !!

2 3,379

Ini adalah artikel lanjutan dari seri tutorial ESP32 dengan ESP-IDF dimana pada bagian ke 1 dan ke 2 yang lalu telah dibahas bagaimana memulai mempersiapkan environment dan membuat program pertama HelloWorld menggunakan template ESP-IDF (Espressif IoT Development Framework).

Kali ini pembahasan akan dilanjutkan dengan bagaimana mengakses  LED internal pada ESP32 dan membuatnya menyala berkedip – kedip. Sebelum melanjutkan pembahasan ini, diharapkan pembaca telah mengikuti pembahasan yang lalu di seri Tutorial ESP32 dengan ESP-IDF  

  • Prasyarat Perangkat Keras

Development Board yang kompatibel dengan artikel kali ini dan dapat dibeli di TOKO BEY. . Salah satu jenisnya adalah ESP32S DevKit DOIT dengan kaki – kaki pin berjumlah 38 seperti berikut

 

Pembaca dapat membeli modul ESP32 melalui TOKO BEY dengan mengakses halaman pembelian di tautan berikut.  Jika pembaca merasa tulisan ini bermanfaat, pembaca dapat berterimakasih dengan membeli produk di TOKO BEY

Adverstiment

Development board lainnya, yang sedikit berbeda namun memiliki diagram pin yang sama adalah sebagai berikut

Pembaca dapat membeli modul ESP32 melalui TOKO BEY dengan mengakses halaman pembelian di tautan berikut.  Jika pembaca merasa tulisan ini bermanfaat, pembaca dapat berterimakasih dengan membeli produk di TOKO BEY

  • Prasyarat Perangkat Lunak

Sebagaimana pernah dibahas, pada tutorial kali ini embeddednesia menggunakan environment perangkat lunak yangs sama dengan yang pernah dibahas pada dua artikel sebelumnya di tautan berikut

  • Rangkaian Perangkat keras

Pada artikel kali ini, diguanakan LED built-in yang sudah terpasang secara bawaan pada development board ESP32. Pembaca juga dapat menghubungkannya gpio 2 (led built in) ke led external sendiri

 

Adverstiment

 

  • Membuat Project 

Jika ingin membuat project dari nol, programmer dapat meng-clone ESP-IDF Template dan mengatur konfigurasinya seperti yang pernah dibahas pada saat membuat program Hello World yang lalu.

Namun jika ternyata pembaca sudah pernah membuat project HelloWorld sebagaimana pernah dibahas pada  artikel yang lalu, untuk membuat project baru, tinggal copy paste saja project HelloWorld tersebut dengan klik kanan pada direktori project, lalu pilih copy dan paste di Panel Project Explorer. Beri nama project tersebut Blink.

 

Agar tidak terjadi salah build, pastikan project selain Blink sebaiknya dalam kondisi close. Caranya klik kanan direktori project yang ingin di-close, lalu pilih Close Project. Jika suatu saat programmer ingin membuka lagi tinggal klik kanan lalu Open Project 

  • Menulis Code

Pada main.cpp ganti code-nya dengan code berikut


#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_spi_flash.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#define BLINK_GPIO 2
void app_main()
{
/* Configure the IOMUX register for pad BLINK_GPIO (some pads are
muxed to GPIO on reset already, but some default to other
functions and need to be switched to GPIO. Consult the
Technical Reference for a list of pads and their default
functions.)
*/
gpio_pad_select_gpio(BLINK_GPIO);
/* Set the GPIO as a push/pull output */
gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
while(1) {
/* Blink off (output low) */
printf("Turning off the LED\n");
gpio_set_level(BLINK_GPIO, 0);
vTaskDelay(1000 / portTICK_PERIOD_MS);
/* Blink on (output high) */
printf("Turning on the LED\n");
gpio_set_level(BLINK_GPIO, 1);
vTaskDelay(1000 / portTICK_PERIOD_MS);
}
}
view raw

main.c

hosted with ❤ by GitHub

- Advertisement -

  • Penjelasan Program

Untuk dapat mengakses GPIO guna menyalakan LED internal, maka yang pertama perlu dilakukan adalah memasukkan  di- #include library driver/gpio.h sebagaimana pada baris 4, untuk dapat mengakses library gpio.

Berikutnya pada baris 19, programmer memilih Pin yang akan diaktifkan menggunakan statement gpio_pad_select_gpio dengan argumen nomer pin dari ESP32 yang ingin digunakan, dalam artikel ini digunakan pin 2 (LED built in).

void gpio_pad_select_gpio(uint8_t gpio_num);

Setelah itu, GPIO 2 harus diatur terlebih dahulu sebagai mode output. Untuk  keperluan ini dapat digunakan gpio_set_direction seperti pada baris 21.

esp_err_tgpio_set_direction(gpio_num_tgpio_numgpio_mode_tmode)

Argumen pertama dari fungsi gpio_set_direction adalah  gpio_num yang merupakan  nomer pin gpio yang ingin digunakan.  Sedangkan, argumen kedua adalah mode dari pin gpio yang digunakan. Ada 6 mode yang tersedia

No Mode Nilai Hexa
1 Disable Input dan Ouput GPIO_MODE_DEF_DISABLE 0
2 Hanya Input GPIO_MODE_DEF_INPUT 0x1
3 Hanya Output GPIO_MODE_DEF_OUTPUT 0x2
4 Hanya output dengan Open drain ((GPIO_MODE_DEF_OUTPUT)|(GPIO_MODE_DEF_OD)) 0x6
5 Output dan Input dengan open drain ((GPIO_MODE_DEF_INPUT)|(GPIO_MODE_DEF_OUTPUT)|(GPIO_MODE_DEF_OD)) 0x7
6 Output dan Input ((GPIO_MODE_DEF_INPUT)|(GPIO_MODE_DEF_OUTPUT)) 0x3
**Catatan:
Mode Open Drain : GPIO_MODE_DEF_OD = 0x4

Setelah selesei diinisialisasi di baris 21, maka selanjutnya  pada blok superloop while(1)  di barus 21 sampai dengan  33, program tinggal diatur untuk menyala dengan mengeset gpio_set_level menjadi logika 1. Dan logika 0 jika ingin dijadikan padam.

esp_err_tgpio_set_level(gpio_num_tgpio_num, uint32_t level)

vTaskDelay digunakan untuk memberikan jeda beberapa saat antara posisi ON dan OFF pada pin gpio, sehingga proses kelap – kelip pada led dapat diamati oleh mata manusia.

  • Running

Berikut adalah hasil ketika program selesei di-build, flashing dan dijalankan dengan make monitor

Baca juga tulisan lain pada seri #Tutorial ESP32 dengan ESP-IDF atau tulisan menarik lainnya di kategori ESP32
2 Komentar
  1. […] Tutorial ESP32 dengan ESP-IDF : #3 Blinky !! […]

  2. […] Tutorial ESP32 dengan ESP-IDF : #3 Blinky !! […]

Tinggalkan Balasan

Situs ini menggunakan Akismet untuk mengurangi spam. Pelajari bagaimana data komentar Anda diproses.