Pada artikel kali ini saya akan membahas tentang Pin GPIO ESP32 yang bisa anda jadikan referensi, Namun sebelum ketopik pembahasan, saya mengulas sedikit pengertian, spesifikasi dan fitur yang terdapat pada modul ESP32 ini.
BACA JUGA : Konfigurasi Pin GPIO ESP8266
Pengertian ESP32
ESP32 merupakan sebuah kit Modul yang terdiri dari IC mikrokontroler ESP32, EEPROM, komponen-komponen pasif, serta antena PCB. ESP32 merupakan sebuah modul SMD yang biasanya disolder pada board PCB utama atau development board. Pada gambar dibawah ini merupakan jenis ESP Wrom32
Spesifikasi
Berikut ini merupakan Spesifikasi dari Modul ESP32-WROOM-32
- Prosesor: Xtensa dual-core (or single-core) 32-bit LX6 microprocessor,
- Freq Clock up to 240 MHz
- Memori: 520 KB SRAM.
- Wireless connectivity: Wi-Fi 802.11 b/g/n
- Bluetooth v4.2 BR/EDR and BLE (shares the radio with Wi-Fi).
- Flash memori 4 MB
- 48 pin GPIO
- 15 pin channel ADC (Analog to Digital Converter)
- 25 pin PWM (Pulse Width Modulation
- 2 pin channel DAC (Digital to Analog Converter)
Fitur
ESP32-S2 memiliki sistem on chip dengan WiFi 2.4GHz, dengan integrasi yang tinggi dan daya yang rendah. ESP32-S2 hadir dengan antarmuka USB (OTG) bawaan, WiFi Time-of-Flight hingga fitur keamanan hardware. ESP32 juga dilengkapi sensor efek hall built-in yang mendeteksi perubahan medan magnet di sekitarnya. Esp ini mempunyai 2 tombol pada boardnya yaitu enable dan boot
Enable (EN) adalah pin untuk mengaktifkan regulator 3.3V yang digunakan untuk restart. Sambungkan ke ground untuk menonaktifkan regulator 3.3V. Ini berarti Anda dapat menggunakan pin ini yang terhubung ke pushbutton untuk memulai ulang ESP32 Anda. Chip ESP32 memiliki 48 pin dengan banyak fungsi, tetapi beberapa pin tidak dapat digunakan. Untuk lebih jelasnya simak tulisan dibawah ini.
Pin GPIO ESP32 WROM
Gambar di bawah merupakan pinout ESP-WROOM-32. Anda dapat menggunakannya sebagai referensi jika Anda menggunakan chip kosong ESP32 untuk membuat papan kustom:
Catatan: tidak semua GPIO dapat diakses di semua boards, tetapi setiap GPIO tertentu bekerja dengan cara yang sama terlepas dari boards yang Anda gunakan.
Periferal ESP32
Periferal ESP32 meliputi:
- 18 saluran Konverter Analog-ke-Digital (ADC)
- 3 antarmuka SPI
- 3 antarmuka UART
- 2 antarmuka I2C
- 16 saluran keluaran PWM
- 2 Konverter Digital-ke-Analog (DAC)
- 2 antarmuka I2S
- 10 GPIO penginderaan kapasitif
Fitur ADC (analog to digital converter) dan DAC (digital to analog converter) ditetapkan ke pin statis tertentu. Namun, Anda dapat memutuskan pin mana yang UART, I2C, SPI, PWM, dll – Anda hanya perlu menetapkannya dalam kode. Ini dimungkinkan karena fitur multiplexing chip ESP32.
Meskipun Anda dapat menentukan properti pin pada perangkat lunak, ada pin yang ditetapkan secara default seperti yang ditunjukkan pada gambar berikut (ini adalah contoh untuk board ESP32 DEVKIT V1 DOIT dengan 36 pin – lokasi pin dapat berubah tergantung pada pabrikannya).
Selain itu, ada pin dengan fitur khusus yang membuatnya cocok atau tidak untuk proyek tertentu. Tabel berikut menunjukkan pin apa yang terbaik untuk digunakan sebagai input, output, dan pin mana yang perlu Anda waspadai.
Seperti pada keterengan warna pada gambar diatas, Pin yang disorot dengan warna hijau boleh digunakan. Yang disorot dengan warna kuning boleh digunakan, tetapi Anda perlu memperhatikan karena mereka mungkin memiliki perilaku yang tidak terduga terutama saat boot. Pin yang disorot dengan warna merah tidak disarankan untuk digunakan sebagai input atau output. untuk lebih jelas silahkan baca keterangannya pada tabel dibawah ini :
Tabel Pin GPIO ESP32
GPIO | Input | Output | Keterangan |
0 | pulled up | OK | outputs sinyal PWM saat boot |
1 | TX pin | OK | men-debug output saat boot |
2 | OK | OK | terhubung ke LED yang terpasang |
3 | OK | RX pin | HIGH saat boot |
4 | OK | OK | |
5 | OK | OK | outputs PWM signal saat boot |
6 | x | x | terhubung ke terintegrasi SPI flash |
7 | x | x | terhubung ke terintegrasi SPI flash |
8 | x | x | terhubung ke terintegrasi SPI flash |
9 | x | x | terhubung ke terintegrasi SPI flash |
10 | x | x | terhubung ke terintegrasi SPI flash |
11 | x | x | terhubung ke terintegrasi SPI flash |
12 | OK | OK | boot gagal jika pulled high boot |
13 | OK | OK | |
14 | OK | OK | outputs PWM signal saat boot |
15 | OK | OK | outputs PWM signal saat boot |
16 | OK | OK | |
17 | OK | OK | |
18 | OK | OK | |
19 | OK | OK | |
21 | OK | OK | |
22 | OK | OK | |
23 | OK | OK | |
25 | OK | OK | |
26 | OK | OK | |
27 | OK | OK | |
32 | OK | OK | |
33 | OK | OK | |
34 | OK | input | |
35 | OK | input | |
36 | OK | input | |
39 | OK | input |
Pin GPIO ESP32 HIGH di Boot
Beberapa GPIO mengubah statusnya menjadi HIGH atau mengeluarkan sinyal PWM saat boot atau reset. Ini berarti bahwa jika Anda memiliki output yang terhubung ke GPIO ini, Anda mungkin mendapatkan hasil yang tidak diharapkan ketika ESP32 me-reset atau melakukan booting.
- GPIO 1
- GPIO 3
- GPIO 5
- GPIO 6 hingga GPIO 11 (terhubung ke memori flash SPI terintegrasi ESP32 – tidak disarankan untuk digunakan).
- GPIO 14
- GPIO 15
pin input GPIO ESP32
GPIO 34 hingga 39 adalah GPI – pin input saja. Pin ini tidak memiliki resistor pull-up atau pull-down internal. Pin ini tidak dapat digunakan sebagai output, jadi gunakan pin ini hanya sebagai input:
- GPIO 34
- GPIO 35
- GPIO 36
- GPIO 39
Flash SPI terintegrasi pada ESP-WROOM-32
Pin GPIO ESP32 6 hingga GPIO 11 diekspos di beberapa papan pengembangan ESP32. Namun, pin ini terhubung ke flash SPI terintegrasi pada chip ESP-WROOM-32 dan tidak direkomendasikan untuk penggunaan lain. Jadi, jangan gunakan pin ini di proyek Anda:
- GPIO 6 (SCK/CLK)
- GPIO 7 (SDO/SD0)
- GPIO 8 (SDI/SD1)
- GPIO 9 (SHD/SD2)
- GPIO 10 (SWP/SD3)
- GPIO 11 (CSC/CMD)
- GPIO sentuh kapasitif
ESP32 memiliki 10 sensor sentuh kapasitif internal. Ini dapat merasakan variasi dalam segala hal yang memiliki muatan listrik, seperti kulit manusia. Jadi mereka dapat mendeteksi variasi yang ditimbulkan saat menyentuh GPIO dengan jari. Pin ini dapat dengan mudah diintegrasikan ke bantalan kapasitif dan menggantikan tombol mekanis.
Sensor sentuh internal terhubung ke 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)
Konverter Analog ke Digital (ADC)
ESP32 memiliki saluran input ADC 18 x 12 bit (sedangkan ESP8266 hanya memiliki ADC 1x 10 bit). Ini adalah GPIO yang dapat digunakan sebagai ADC dan saluran masing-masing:
- 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)
Catatan: Pin ADC2 tidak dapat digunakan saat Wi-Fi digunakan. Jadi, jika Anda menggunakan Wi-Fi dan mengalami kesulitan mendapatkan nilai dari ADC2 GPIO, Anda dapat mempertimbangkan untuk menggunakan ADC1 GPIO. Itu harus menyelesaikan masalah Anda.
Saluran input ADC memiliki resolusi 12-bit. Ini berarti Anda bisa mendapatkan pembacaan analog mulai dari 0 hingga 4095, di mana 0 sesuai dengan 0V dan 4095 hingga 3.3V. Anda juga dapat mengatur resolusi saluran Anda pada kode dan rentang ADC.
Pin ADC ESP32 tidak memiliki perilaku linier. Anda mungkin tidak akan dapat membedakan antara 0 dan 0,1V, atau antara 3,2 dan 3,3V. Anda perlu mengingatnya saat menggunakan pin ADC. Anda akan mendapatkan perilaku yang mirip dengan yang ditunjukkan pada gambar berikut.
Konverter Digital ke Analog (DAC)
Terdapat saluran DAC 2 x 8 bit pada ESP32 untuk mengubah sinyal digital menjadi keluaran sinyal tegangan analog. Ini adalah saluran DAC:
- DAC1 (GPIO25)
- DAC2 (GPIO26)
GPIO RTC Pin ESP32
Ada dukungan RTC GPIO pada ESP32. GPIO yang dirutekan ke subsistem berdaya rendah RTC dapat digunakan saat ESP32 dalam mode tidur nyenyak. GPIO RTC ini dapat digunakan untuk membangunkan ESP32 dari tidur nyenyak saat co-prosesor Ultra Low Power (ULP) sedang berjalan. GPIO berikut dapat digunakan sebagai sumber bangun eksternal.
- 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 Pin GPIO ESP32
Kontroler PWM LED ESP32 memiliki 16 saluran independen yang dapat dikonfigurasi untuk menghasilkan sinyal PWM dengan properti yang berbeda. Semua pin yang dapat bertindak sebagai output dapat digunakan sebagai pin PWM (GPIO 34 hingga 39 tidak dapat menghasilkan PWM).
Untuk mengatur sinyal PWM, Anda perlu menentukan parameter ini dalam kode:
- frekuensi sinyal;
- Siklus;
- saluran PWM;
- GPIO tempat Anda ingin mengeluarkan sinyal.
I2C Pin GPIO ESP32
ESP32 memiliki dua saluran I2C dan pin apa pun dapat diatur sebagai SDA atau SCL. Saat menggunakan ESP32 dengan Arduino IDE, pin I2C default adalah:
- GPIO 21 (SDA)
- GPIO 22 (SCL)
Jika Anda ingin menggunakan pin lain saat menggunakan library wire, Anda hanya perlu menulis kode dibawah ini:
Wire.begin(SDA, SCL);
SPI Pin GPIO ESP32
Secara default, pemetaan pin untuk SPI adalah:
SPI | MOSI | MISO | CLK | CS |
VSPI | GPIO 23 | GPIO 19 | GPIO 18 | GPIO 5 |
HSPI | GPIO 13 | GPIO 12 | GPIO 14 | GPIO 15 |
Strapping Pin GPIO ESP32
Strapping Pin digunakan untuk menempatkan ESP32 ke mode bootloader atau flashing. Pada sebagian besar papan pengembangan dengan USB/Serial bawaan, Anda tidak perlu khawatir tentang status pin ini. Papan menempatkan pin dalam kondisi yang tepat untuk mode flashing atau boot. Strapping Pin pada Chip ESP32 adalah sebagai berikut:
- GPIO 0
- GPIO 2
- GPIO 4
- GPIO 5 (harus HIGH saat boot)
- GPIO 12 (harus LOW saat boot)
- GPIO 15 (harus HIGH saat boot)
Jika Anda memiliki periferal yang terhubung ke pin tersebut, Anda mungkin mengalami masalah saat mencoba mengunggah kode baru, mem-flash ESP32 dengan firmware baru, atau mengatur ulang board. Jika Anda memiliki beberapa periferal yang terhubung ke pin strapping dan Anda mengalami masalah saat mengunggah kode atau mem-flash ESP32, itu mungkin karena periferal tersebut mencegah ESP32 memasuki mode yang benar. Baca dokumentasi Pemilihan Mode Boot untuk memandu Anda ke arah yang benar. Setelah mengatur ulang, mem-flash, atau mem-boot, pin tersebut berfungsi seperti yang diharapkan.