Advertisement

Menggunakan Pin GPIO Pada ESP32

1 834

Setelah sebelumnya embeddednesia membahas mengenai bagaimana variasi cara pemrograman pada ESP32, menggunakan ESP IDF, Arduino IDE, hingga menggunakan MicroPython. Artikel kali ini akan mengulas lebih rinci mengenai pin – pin GPIO yang ada pada ESP32

Gambar 1 berikut mengilustrasikan diagram pin dari  ESP-WROOM-32. Pembaca dapat menggunakan gambar ini sebagai bahan referensi jika berinteraksi langsung dengan chip ESP32.

  • ESP32 Development Board 

Namun pada umumnya terutama seorang perancang akan menggunakan development board ESP32. Berikut adalah contoh  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

Yang perlu diperhatikan adalah, tidak semua pin pada ESP32, dapat diakses oleh development board-nya, dan setiap GPIO sebagaimana  diagramnya diilustrasikan pada gambar 1 akan memiliki cara pemrograman yang sama  meskipun pada development board yang berbeda.

  • Periferal pada ESP32

Sebagaimana pernah dibahas pada  tulisan yang lalu, 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) spesifik dapat digunakan hanya pada pin -pin tertentu saja. Sedangkan fitur  UART, I2C, SPI, PWM dapat diaktifkan secara programmatically. Berikut adalah diagram pin – pin pada development Board ESP32

Adverstiment

 

Meskipun begitu, tidak semua pin dengan fitur  tertentu pada ESP32 cocok digunakan untuk semua keperluan di dalam project. Tabel berikut menunjukkan pin – pin yang paling baik digunakan sebagai input, output dan beberapa catatan yang perlu diperhatikan saat menentukan pin mana yang digunakan.

Pin yang diberi highlight hijau, bisa digunakan di dalam project. Sedangkan pin dengan  highlight kuning bisa digunakan namun dengan  catatan yang perlu diperhatikan, karena terdapat perilaku yang tak terduga terutama saat proses boot. Pin dengan highlight merah tidak direkomendasikan sebagai input ataupun output.

 

GPIO Input Output Catatan
0 pulled up OK output sinyal PWM saat boot
1 TX pin OK output debug saat boot
2 OK OK Terhubung ke LED on board
3 OK TX pin HIGH saat boot
4 OK OK
5 OK OK output sinyal PWM saat boot
6 x x terhubung dengan SPI Flash terintegrasi
7 x x terhubung dengan SPI Flash terintegrasi
8 x x terhubung dengan SPI Flash terintegrasi
9 x x terhubung dengan SPI Flash terintegrasi
10 x x terhubung dengan SPI Flash terintegrasi
11 x x terhubung dengan SPI Flash terintegrasi
12 OK OK boot gagal ketika mendapatkan input high
13 OK OK
14 OK OK output sinyal PWM saat boot
15 OK OK output sinyal PWM saat boot
16 OK OK
17 OK OK
18 OK OK
19 OK OK
20 OK OK
21 OK OK
22 OK OK
23 OK OK
24 OK OK
25 OK OK
26 OK OK
27 OK OK
28 OK OK
29 OK OK
30 OK OK
31 OK OK
32 OK OK
33 OK OK
34 OK OK
35 OK OK
36 OK Hanya input
37 OK Hanya input
38 OK Hanya input
39 OK Hanya input

 

 

- Advertisement -

 

  • Pin Hanya Untuk Input

GPIO 34 hingga 39 hanyalah 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. Namun pin – pin tersebut terhubung kepada SPI Flash yang teritegrasi dengan ESP-WROOM-32 sehingga tidak direkomendasikan digunakan  untuk keperluan lain. Jadi jangan gunakan pin – pin berikut

  • 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)

Advertisement

  • 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 berikut dengan 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 membangungkan 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)
  • 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)

Advertisement

  • SPI (Serial Peripheral Interface)

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

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15
  • Interrupts

Semua GPIO pada ESP32 dapat diatur sebagai Interrupt

  • 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.

Meskipun begitu, jika terdapat periferal yang terhubung dengan ke-6 pin tersebut. Ada kemungkinan, proses flashing akan mengalami masalah. Penyebabnya bisa jadi karena periferal yang terhubung dengan pin – pin  tersebut mencegah ESP32 masuk ke mode flashing atau boot. Baca tautan berikut tentang dokumentasi Boot Mode pada ESP32

  • Pin berada pada kondisi HIGH saat Boot

Beberapa GPIO berubah kondisi statenya menjadi HIGH atau keluaran sinyal PWM saat boot atau reset. Ini berarti, akan terdapat keluaran yang tak 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-pullup dengan resistor sehingga  mengetanahkan pin tersebut  (menghubungkan ke ground), akan mendisable regulator 3.3V. Sehingga pin ini dapat dihubungkan dengan push button misalnya, guna merestart ESP32

  • Arus Yang  Dapat Ditarik Pada GPIO

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

 

Sumber Random Nerd Tutorial
1 Komentar
  1. […] Menggunakan Pin GPIO Pada ESP32 […]

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d blogger menyukai ini: