Mengenal Pin GPIO ESP-WROOM-32

Modul ESP32 WROOM-32 adalah modul development board yang memudahkan untuk mempelajari dan mencoba rangkaian-rangkaian yang menggunakan chip ESP-WROOM-32. Chip ESP32 memiliki keunggulan daripada chip ESP sebelumnya, dimana ESP32 memiliki kecepatan yang lebih tinggi, 32 bit, memori lebih besar, dan di dalamnya telah terintegrasi modul Bluetooth.

 

1. Peripheral pada ESP32

ESP32 memiliki periferal sebagai berikut :

    • 18 kanal ADC (Analog-to- Digital Converter)

    • 3 antarmuka SPI

    • 3 antarmuka UART

    • 2 antarmuka I2C

    • 16 kanal output PWM

    • 2 kanal DAC (Digital to Analog Converter)

    • 2 antarmuka I2S

    • 10 GPIO sensor kapasitif

Fitur ADC (analog to digital Converter) dan DAC (Digital To Analog Converter) hanya dapat digunakan pada pin -pin tertentu. Sedangkan fitur UART, I2C, SPI, PWM dapat diaktifkan secara programmatically. Berikut diagram pin – pin pada development board ESP32.

Tidak semua pin pada ESP32 cocok digunakan untuk semua keperluan di dalam project. Pin yang diberi highlight hijau bisa digunakan di dalam project. Pin dengan highlight kuning juga bisa digunakan namun dengan catatan yang perlu diperhatikan. Hal ini dikarenakan terdapat perilaku yang tidak terduga terutama saat proses boot. Pin dengan highlight merah tidak direkomendasikan sebagai input ataupun output.

2. Pin hanya untuk Input

GPIO 34 hingga GPIO 39 hanya dipergunakan sebagai input. Pin – pin tersebut tidak memiliki pull-up internal atau resistor pull-down. Berikut adalah pin – pin tersebut :

    • GPIO 34

    • GPIO 35

    • GPIO 36

    • GPIO 39

    • SPI flash terintegrsi dengan ESP-WROOM-32

GPIO 6 hingga GPIO 11 dapat diakses oleh beberapa development board ESP32. Pin – pin tersebut terhubung dengan SPI Flash yang terintegrasi dengan ESP-WROOM-32 sehingga tidak direkomendasikan digunakan untuk keperluan lain. Jadi, jangan gunakan pin – pin berikut ini :

    • GPIO 6 (SCK/CLK)

    • GPIO 7 (SDO/SD0)

    • GPIO 8 (SDI/SD1)

    • GPIO 9 (SHD/SD2)

    • GPIO 10 (SWP/SD3)

    • GPIO 11 (CSC/CMD)

    • Capacitive touch GPIO

ESP32 memiliki 10 sensor sentuh kapasitif yang dapat mengindera benda apapun yang menyimpan muatan listrik seperti kulit manusia. Sehingga pin – pin tersebut dapat mendeteksi variasi induksi ketika GPIO disentuh dengan jari. Pin ini dapat dengan mudah diintegrasikan dengan bantalan kapasitif dan menggantikan tombol mekanik. Berikut adalah sensor internal sentuh yang terhubung dengan GPIO :

    • T0 (GPIO 4)

    • T1 (GPIO 0)

    • T2 (GPIO 2)

    • T3 (GPIO 15)

    • T4 (GPIO 13)

    • T5 (GPIO 12)

    • T6 (GPIO 14)

    • T7 (GPIO 27)

    • T8 (GPIO 33)

    • T9 (GPIO 32)

3. Analog to Digital Converter (ADC)

ESP32 memiliki 18 kanal masukan ADC 12 bit, sedangkan ESP8266 hanya 1 kanal ADC 10 bit. Berikut adalah GPIO yang dapat dipergunakan sebagai ADC beserta kanalnya.

    • ADC1_CH0 (GPIO 36)

    • ADC1_CH1 (GPIO 37)

    • ADC1_CH2 (GPIO 38)

    • ADC1_CH3 (GPIO 39)

    • ADC1_CH4 (GPIO 32)

    • ADC1_CH5 (GPIO 33)

    • ADC1_CH6 (GPIO 34)

    • ADC1_CH7 (GPIO 35)

    • ADC2_CH0 (GPIO 4)

    • ADC2_CH1 (GPIO 0)

    • ADC2_CH2 (GPIO 2)

    • ADC2_CH3 (GPIO 15)

    • ADC2_CH4 (GPIO 13)

    • ADC2_CH5 (GPIO 12)

    • ADC2_CH6 (GPIO 14)

    • ADC2_CH7 (GPIO 27)

    • ADC2_CH8 (GPIO 25)

    • ADC2_CH9 (GPIO 26)

    • Digital to Analog Converter (DAC)

Ada 2 kanal DAC 8 bit pada ESP32 yang berfungsi untuk mengubah sinyal digital ke keluaran tegangan analog. Berikut adalah GPIO dan kanal tersebut :

    • DAC1 (GPIO25)

    • DAC2 (GPIO26)

    • GPIO Real Time Clock

ESP32 juga dilengkapi dengan GPIO yang diarahkan ke RTC subsistem rendah daya yang dapat digunakan ketika ESP32 dalam kondisi deep sleep. GPIO RTC ini dapat digunakan untuk membangunkan ESP32 dari kondisi deep sleep ketika co-prosesor ULP (Ultra Low Power) sedang berjalan. Berikut adalah GPIO yang dapat digunakan sebagai external wake up source :

    • RTC_GPIO0 (GPIO36)

    • RTC_GPIO3 (GPIO39)

    • RTC_GPIO4 (GPIO34)

    • RTC_GPIO5 (GPIO35)

    • RTC_GPIO6 (GPIO25)

    • RTC_GPIO7 (GPIO26)

    • RTC_GPIO8 (GPIO33)

    • RTC_GPIO9 (GPIO32)

    • RTC_GPIO10 (GPIO4)

    • RTC_GPIO11 (GPIO0)

    • RTC_GPIO12 (GPIO2)

    • RTC_GPIO13 (GPIO15)

    • RTC_GPIO14 (GPIO13)

    • RTC_GPIO15 (GPIO12)

    • RTC_GPIO16 (GPIO14)

    • RTC_GPIO17 (GPIO27)

4.  PWM

ESP32 memiliki 16 kanal PWM independen yang dapat dikonfigurasi untuk menghasilkan sinyal PWM dengan pengaturan yang berbeda – beda. Semua pin yang dapat menjadi keluaran dapat dipergunakan sebagai pin PWM (kecuali GPIO 34 hingga 39). Untuk mengatur sinyal PWM, perlu ditentukan terlebih dahulu parameter – parameter berikut pada program :

    • Frekuensi gelombang;

    • Duty cycle;

    • Kanal PWM;

    • GPIO  mana yang dipergunakan sebagai keluaran gelombang.

    • I2C (Inter-Integrated Circuit)

Jika pembaca memprogram ESP32 menggunakan Arduini IDE, ada dua pin default yang mendukung I2C dan didukung oleh pustaka Wire, yaitu

    • GPIO 21 (SDA)

    • GPIO 22 (SCL)

5. SPI (Serial Peripheral Interface)

Secara default, mapping pin untuk SPI di ESP 32 adalah sebagai berikut :

6 Interrupts

Semua GPIO pada ESP32 dapat diatur sebagai Interrupt.

7. Strapping Pins

ESP32 memiliki 6 pin strapping sebagai berikut :

    • GPIO 0

    • GPIO 2

    • GPIO 4

    • GPIO 5

    • GPIO 12

    • GPIO 15

Pin – pin tersebut digunakan oleh ESP32 saat mode flashing atau bootloader pada sebagian besar board development yang memiliki USB/Serial built-in. Kondisi state pin ini tidak perlu dikuatirkan, karena board yang akan mengaturnya ke kondisi yang sesuai saat mode flashing atau boot.

Jika terdapat peripheral yang terhubung dengan ke-6 pin tersebut, ada kemungkinan proses flashing akan mengalami masalah. Penyebabnya bisa jadi karena peripheral yang terhubung dengan pin – pin tersebut mencegah ESP32 masuk ke mode flashing atau boot.

8. Pin berada pada kondisi HIGH saat Boot

Beberapa GPIO berubah kondisi statenya menjadi HIGH atau keluaran sinyal PWM saat boot atau reset. Sehingga akan terdapat keluaran yang tidak terduga saat pin – pin GPIO berikut berada pada kondisi reset atau boot.

    • GPIO 1

    • GPIO 3

    • GPIO 5

    • GPIO 6 s/d GPIO 11 (terhubung dengan ESP32 yang terintegrasi dengan memori flash SPI – tidak direkomendasikan untuk digunakan).

    • GPIO 14

    • GPIO 15

    • Enable (EN)

Pin Enable (EN) adalah pin enable regulator 3.3V yang di pull-up dengan resistor maka menghubungkan pin tersebut ke ground sehingga akan mendisable regulator 3.3V. Sehingga pin ini dapat dihubungkan dengan push button misalnya, guna merestart ESP32.

9. Arus yang dapat ditarik pada GPIO

Arus maksimal yang dapat ditarik oleh peripheral di tiap GPIO adalah 12mA, sebagaimana tertulis pada datasheet.

 

Posting Komentar

0 Komentar