Catatan Belajar oleh : Reza Ervani bin Asmanu
GPIO adalah singkatan dari General Purpose Input Output.
Dalam bahasa Indonesia yang sederhana, GPIO adalah pin (kaki logam) pada sebuah mikrokontroler (seperti ESP32, Arduino, atau Raspberry Pi) yang fungsinya belum ditentukan secara permanen oleh pabrik.
Artinya, Anda sebagai pemrogram yang menentukan fungsi pin tersebut melalui kode program (coding): apakah mau dijadikan sebagai penerima data (Input) atau pengirim listrik (Output).
Berikut adalah penjelasan rincinya:
1. Analogi Sederhana
Bayangkan mikrokontroler (ESP32) adalah otak manusia.
- GPIO Output adalah Tangan: Otak memerintahkan tangan untuk menekan saklar lampu (Mengirim sinyal keluar untuk menyalakan sesuatu).
- GPIO Input adalah Indera Peraba (Kulit): Jika kulit merasakan panas, ia mengirim sinyal ke otak (Menerima sinyal masuk dari sensor).
2. Dua Mode Utama GPIO
A. Mode OUTPUT (Keluar)
Dalam mode ini, pin akan mengeluarkan tegangan listrik.
- Fungsi: Untuk mengontrol komponen eksternal.
- Logika:
- HIGH (1): Pin mengeluarkan tegangan (3.3V pada ESP32, atau 5V pada Arduino Uno). Arus mengalir, lampu menyala.
- LOW (0): Pin terhubung ke Ground (0V). Arus berhenti, lampu mati.
- Contoh: Menyalakan LED, memicu Relay, membunyikan Buzzer, memutar motor DC.
B. Mode INPUT (Masuk)
Dalam mode ini, pin akan “mendengarkan” atau membaca tegangan yang masuk.
- Fungsi: Untuk membaca keadaan sensor atau tombol.
- Logika:
- Jika pin mendeteksi tegangan 3.3V masuk $\rightarrow$ Chip membacanya sebagai HIGH (1).
- Jika pin mendeteksi Ground (0V) masuk $\rightarrow$ Chip membacanya sebagai LOW (0).
- Contoh: Membaca apakah tombol ditekan, mendeteksi gerakan (sensor PIR), membaca sensor pintu magnet.
3. Fitur Lanjutan pada GPIO
GPIO pada chip modern seperti ESP32 tidak hanya sekadar Nyala/Mati. Satu kaki pin seringkali memiliki “bakat ganda” (Multiplexing):
- ADC (Analog to Digital Converter):GPIO biasa hanya tahu 0 dan 1. Tapi jika diubah ke mode ADC, pin ini bisa mengukur seberapa besar tegangannya. Contoh: Membaca volume putaran (potensiometer) atau sensor suhu analog. Nilainya bukan cuma 0 atau 1, tapi bisa 0 sampai 4095.
- PWM (Pulse Width Modulation):Ini adalah cara memanipulasi Output Digital agar seolah-olah menjadi Analog. Caranya dengan menyalakan dan mematikan pin sangat cepat.
- Hasil: LED bisa redup-terang (dimming), atau Servo motor bisa bergerak ke sudut tertentu.
- Protokol Komunikasi (I2C, SPI, UART):Pin GPIO tertentu bisa diubah fungsinya menjadi jalur komunikasi data berkecepatan tinggi untuk bicara dengan sensor canggih (seperti sensor Gyroscope, layar OLED, atau modul SD Card).
4. Konsep Penting: Pull-Up dan Pull-Down
Saat GPIO diset sebagai Input, musuh utamanya adalah kondisi Floating (Mengambang).
Ini terjadi jika pin tidak terhubung ke positif, dan tidak juga ke negatif (seperti kabel yang putus). Pin akan membaca noise dari udara, kadang 1, kadang 0, tidak jelas.
Untuk mengatasinya, kita menggunakan resistor internal:
- Input Pull-Up: Pin dipaksa default “HIGH” (1). Tombol harus menghubungkan ke Ground agar menjadi “LOW”.
- Input Pull-Down: Pin dipaksa default “LOW” (0). Tombol harus menghubungkan ke Positif agar menjadi “HIGH”.
5. Batasan Fisik (PENTING untuk ESP32)
Karena Anda membahas ESP32-S3 sebelumnya, ada hal krusial tentang GPIO-nya:
- Tegangan Logika (Logic Level):
- ESP32 bekerja pada 3.3 Volt.
- JANGAN memasukkan tegangan 5V langsung ke GPIO ESP32 (misalnya dari sensor Arduino lama), karena chip bisa terbakar.
- Arus Maksimum (Current Limit):
- Satu pin GPIO biasanya hanya kuat mengeluarkan arus sekitar 12mA – 40mA (tergantung datasheet, amannya anggap 20mA).
- Ini cukup untuk LED, tapi TIDAK KUAT untuk memutar motor dinamo langsung. Anda butuh transistor atau driver motor.
- Input Only Pins:
- Pada ESP32, ada beberapa pin (biasanya GPIO 34, 35, 36, 39) yang hanya bisa menjadi Input, tidak bisa mengeluarkan listrik (Output).
Singkatnya, GPIO adalah jembatan yang memungkinkan kode program Anda berinteraksi dengan dunia nyata.
