ESP32
Untuk memudahkan dalam membuat rancangan Internet of Things (IoT) khususnya dalam skala percobaan atau skala labaoratoirum, pada materi ini disarankan menggunakan kemasan jenis DevKit sehingga tidak perlu lagi memerlukan rangkaian pendukung tambahan, seperti: USB-to-UART, rangkaian regulator, rangkaian mode mode bootloader otomatis, hinga header pin. Terdapat sejumlah model DevKit yang ada dipasaran, tentunya setiap model memiliki fitur-fitur pembeda, dan basis modul atau SoC yang digunakan juga berbeda-beda. Merujuk pada situs resmi espressif terdapat sejumlah seri DevKit, yaitu:
- ESP32-P Series
- ESP32-S Series
- ESP32-S2 Series
- ESP32-C Series
- ESP32-C61 Series
- ESP32-C5 Series
- ESP32-C3 Series
- ESP32-C2 Series
- ESP32-H Series
- ESP32 Series
- ESP8266 Series (versi awal),
- Other IoT DevKits.
Setiap seri tesebut tentunya memiliki perbedaan dengan seri-seri yang lainnya, untuk lebih detail dapat dilihat pada situs resminya (www.espressif.com/en/products/devkits). Selain itu, secara detail juga disediakan dokumentasi berupa datasheet yang lengkap, sehingga para pengguna dapat mempelajarinya dengan lebih mudah.
1. ESP32-DevKitC
ESP32 memiliki banyak seri, pada materi haya dibahas ESP32 Series karena seri ini cukup umum digunakan. Gambar 1. menunjukkan bentuk dari ESP32-DevKitC V4 yang menggunakan modul ESP32-WROOM-32. Komponen utama dari DevKit ini dapat dilihat pada Tabel 1.

Gambar 1. ESP32-DevKitC V4 dengan ESP32-WROOM-32
Tabel 1. Komponen Utama

Tabel 2. dan Tabel 3. menyajikan nama dan fungsi setiap pin header I/O pada kedua sisi papan (J2 dan J3). Pada Gambar 2. menunjukkan tata letak dari Pin ESP32-DEVKitC secara lebih rinci, bagian pin header J2 ditunjukkan pada bagian kiri dan bagian J3 ditunjukkan bagian sebelah kanan.
Tabel 2. Nama dan Fungsi Pin Header (Pada sisi J2)

Tabel 3. Nama dan Fungsi Pin Header (Pada sisi J3)

GPIO singkatan dari General Purpose Input/Output, merupakan pin serbaguna yang dapat diprogram untuk menjadi input atau output. Input berarti dapat digunakan untuk membaca data atau sinyal dari perangkat masukan, seperti: sensor, push button, dan perangkat masukkan lainnya yang. Sedangkat output dapat digunakan untuk mengendalikan perangkat lain, seperti: LED, motor, relay, dan perangkat aktuator lainnya yang memerlukan pemicu sinyal atau tegangan masukan untuk berkerja. Sebuah GPIO dapat difungsikan sebagai Input atau Output, namun tidak dalam waktu yang bersamaan, sehingga perlu diatur mode-nya saat melakukan pemrograman.

Gambar 2. Tata Letak Pin ESP32-DevKitC
Selain berfungsi sebagai pin GPIO, terdapat juga pin ADC yang merupakan singkatan dari Analog Digital to Converter, pin ini berfungsi untuk membaca data analog yang dapat bersumber dari data sensor, khususnya sensor analog. Seperti ditunjukkan pada Tabel 4. 3 dan Tabel 4. 4, ADCx_CHx menunjukkan pin-pin yang memiliki fungsi ADC, misalnya ADC1_CH0 artinya ADC1 pada channel 0, begitu juga dengan contoh ADC yang lainnya. ADC yang dimiliki oleh ESP32 memiliki resolusi defualt sebesar 12 bit, dengan rentang nilai mulai dari 0 sampai dengan 4095. Secara program , resolusi ADC ESP32 dapat diatur, misalnya menjadi 9, 10, 11, atau 12 bit.
Fungsi lain yang dimiliki oleh ESP32 adalah fungsi touch atau kapasitif touch sensor yang merupakan bawaan dari chip. Sensor TOUCH pada ESP32 adalah fitur bawaan ini memungkinkan mikrokontroler untuk mendeteksi perubahan kapasitansi pada pin tertentu, sehingga dapat digunakan sebagai tombol sentuh tanpa memerlukan komponen tambahan seperti saklar mekanik. Prinsip kerjanya sederhana: setiap pin touch berfungsi sebagai pelat kapasitif yang sensitif terhadap sentuhan manusia atau benda konduktif lain. Saat disentuh, kapasitansi pada pin tersebut meningkat, menyebabkan perubahan waktu pengisian dan pelepasan sinyal listrik, yang kemudian dibaca oleh ADC internal dan diterjemahkan sebagai nilai digital. ESP32 memiliki 10 channel touch, mulai dari TOUCH_CH0 sampai dengan TOUCH_CH9, masing-masing channel terhubung ke GPIO tertentu. Fitur ini juga dapat digunakan untuk membangunkan ESP32 dari mode deep sleep, sehingga sangat berguna dalam aplikasi hemat daya. Namun, sensor touch ini memiliki keterbatasan, misalnya bacaan yang dipengaruhi kelembaban, suhu, dan panjang kabel, sehingga memerlukan kalibrasi serta filter perangkat lunak agar hasilnya stabil. Meskipun tidak sepresisi sensor kapasitif khusus, fungsi touch pada ESP32 sudah sangat memadai untuk aplikasi sederhana seperti tombol sentuh lampu, keypad digital, slider volume, atau sistem keamanan berbasis sentuhan.
Pin-pin lain yang dimiliki oleh ESP32 adalah pin JTAG (Joint Test Action Group), seperti: MTMS, MTDI, MTCK, dan MTDO. Pin-pin ini digunakan untuk debugging, boundary scan, dan pemrograman firmware. MTMS adalah JTAG Mode Select (biasanya GPIO14), MTDI adalah JTAG Data In (biasanya GPIO12), MTCK adalah JTAG Clock (biasanya GPIO13) dan MTDO adalah JTAG Data Out (biasanya GPIO15). Meskipun dapat difungsikan sebagai GPIO biasa, pin ini sebaiknya disiapkan untuk keperluan debugging karena perannya sangat penting dalam pengembangan dan produksi perangkat berbasis ESP32.
Selian itu terdapat pin CMD atau singkatan dari Command Pin yang digunakan pada antarmuka SDIO (Secure Digital Input Output) di ESP32. Pin ini berfungsi sebagai jalur komunikasi perintah ketika ESP32 berinteraksi dengan perangkat SD card atau modul lain yang mendukung SDIO. Dalam protokol SDIO, terdapat tiga jenis jalur utama, yaitu: CLK (Clock) yang berfungsi memberikan sinyal sinkronisasi ke seluruh bus, CMD (Command) dipakai untuk mengirim perintah dari host (ESP32) ke slave (misalnya SD card) dan menerima respon balik, serta DATA0 sampai dengan DATA3 merupakan jalur data untuk mengirimkan informasi.
Selian pin ADC (Analog Digital To Converter) ESP32 juga memiliki pin DAC (Digital to Analog Converter) atau kebalikan dari ADC. Fungsinya adalah mengubah sinyal digital (misalnya nilai 0–255) menjadi tegangan analog. Pada ESP32, hanya ada 2 channel DAC: DAC_1 (GPIO25) dan DAC_2 (GPIO26).