Fase 1 · Minggu 3

Dasar ESP32 & Arduino Programming

GPIO, digitalRead/Write, analogRead, sensor sederhana, dan Serial Monitor.

Mengenal ESP32 & Pin GPIO

ESP32 memiliki banyak pin GPIO (General Purpose Input/Output) yang bisa digunakan untuk membaca sensor dan mengontrol aktuator.

ESP32 DevKit V1 Micro USB 3V3 EN GPIO 36 GPIO 39 GPIO 34 GPIO 35 GPIO 32 GPIO 33 GND VIN (5V) GND GPIO 13 GPIO 12 GPIO 14 GPIO 27 GPIO 26 GPIO 2 (LED) GPIO 4 Power (3.3V) Power (5V) Input Only (ADC) Input/Output (GPIO) Built-in LED

ESP32 DevKit V1 — Pinout sederhana (pin yang sering dipakai)

ℹ️ Penting: GPIO 34, 35, 36, 39 hanya bisa sebagai input (tidak bisa output). GPIO 2 terhubung ke LED built-in.

Digital Input/Output

Digital = hanya 2 nilai: HIGH (3.3V / nyala) dan LOW (0V / mati).

Menyalakan LED External:

ESP32 GPIO 23 GND 220Ω LED → GND

Rangkaian: ESP32 GPIO 23 → Resistor 220Ω → LED → GND

C++ (Arduino)#define LED_PIN 23   // GPIO 23
#define BTN_PIN 15   // GPIO 15

void setup() {
  pinMode(LED_PIN, OUTPUT);    // LED sebagai output
  pinMode(BTN_PIN, INPUT_PULLUP); // Button dengan pull-up internal
  Serial.begin(115200);
}

void loop() {
  int btnState = digitalRead(BTN_PIN);

  if (btnState == LOW) {       // Tombol ditekan (active low)
    digitalWrite(LED_PIN, HIGH); // LED nyala
    Serial.println("Button: PRESSED → LED ON");
  } else {
    digitalWrite(LED_PIN, LOW);  // LED mati
    Serial.println("Button: RELEASED → LED OFF");
  }

  delay(100);
}

Rangkaian Button + LED:

ESP32 GPIO 23 GPIO 15 GND 220Ω LED Button

Rangkaian: Button (GPIO 15) + LED (GPIO 23) → GND

Analog Input (ADC)

ADC (Analog to Digital Converter) membaca nilai analog 0–4095 (12-bit) dari sensor seperti potensiometer atau LDR.

C++ (Arduino)#define LDR_PIN 34   // GPIO 34 (input only, ADC)

void setup() {
  Serial.begin(115200);
}

void loop() {
  int nilaiADC = analogRead(LDR_PIN);  // 0 - 4095
  float tegangan = nilaiADC * 3.3 / 4095.0;

  Serial.print("ADC: ");
  Serial.print(nilaiADC);
  Serial.print(" | Tegangan: ");
  Serial.print(tegangan);
  Serial.println(" V");

  delay(500);
}
ADC Value: 0 (Gelap) 2048 4095 (Terang) Tegangan: 0V ← ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ → 3.3V Formula: tegangan = nilaiADC × 3.3 / 4095

ESP32 ADC: 12-bit resolution (0–4095) mapping ke 0–3.3V

Serial Monitor — Debugging Tool

Serial Monitor adalah alat paling penting untuk debugging. Gunakan untuk melihat output dari ESP32.

Cara Menggunakan:

  1. Pastikan Serial.begin(115200) ada di setup()
  2. Gunakan Serial.print() atau Serial.println() untuk output
  3. Buka Tools → Serial Monitor di Arduino IDE
  4. Set baud rate ke 115200
Serial Monitor — 115200 baud ADC: 2547 | Tegangan: 2.05 V ADC: 2601 | Tegangan: 2.09 V ADC: 1023 | Tegangan: 0.82 V Button: PRESSED → LED ON Button: RELEASED → LED OFF _

Contoh output Serial Monitor

💡 Tips Debugging: Selalu tambahkan Serial.println() di setiap bagian penting kode. Ini membantu memahami alur program dan mendeteksi error.

Checklist Minggu 3