# Diagram Wiring IoT SmartBin (sesuai firmware aktif)

Dokumen ini mengikuti pin aktif pada:

- `firmware/esp32_devkit/include/config.h`
- `firmware/esp32_devkit/src/main.cpp`
- `firmware/esp32_cam/include/config_cam.h`
- `firmware/esp32_cam/src/main.cpp`

## Jumlah sensor

Sistem memiliki **2 sensor eksternal untuk mengukur isi tempat sampah**:

1. HC-SR04 ultrasonic — sensor utama jarak/tingkat isi.
2. Sharp GP2Y0A21 — sensor IR analog sebagai validasi/fallback.

Jika kamera dihitung sebagai sensor visual, totalnya menjadi **3 sensor**:

3. OV2640 pada modul ESP32-CAM AI-Thinker — pemantauan visual.

LED merah, kuning, hijau, LED biru onboard, dan flash kamera adalah indikator/aktuator, bukan sensor.

## Diagram utama ESP32 DevKit

```mermaid
flowchart LR
    USB["USB / catu 5 V"] --> ESP["ESP32 DevKit V1"]

    ESP -- "3V3" --> USV["HC-SR04 VCC"]
    ESP -- "GND bersama" --> USG["HC-SR04 GND"]
    ESP -- "GPIO5 / D5" --> UST["HC-SR04 TRIG"]
    USE["HC-SR04 ECHO (3,3 V)"] -->|"GPIO18 / D18 langsung"| ESP

    ESP -- "5V / VIN" --> IRV["Sharp GP2Y0A21 VCC"]
    ESP -- "GND bersama" --> IRG["Sharp GP2Y0A21 GND"]
    IRO["Sharp OUT"] -->|"GPIO34 / ADC1_CH6"| ESP

    ESP -->|"GPIO25 melalui 220 Ω"| RED["LED merah / FULL"]
    ESP -->|"GPIO26 melalui 220 Ω"| YEL["LED kuning / MEDIUM"]
    ESP -->|"GPIO27 melalui 220 Ω"| GRN["LED hijau / EMPTY"]
    RED --> GND
    YEL --> GND
    GRN --> GND

    ESP -. "GPIO2 (internal board)" .-> BLUE["LED biru heartbeat"]
```

### Tabel sambungan ESP32 DevKit

| Perangkat | Pin perangkat | Sambungkan ke | Fungsi di firmware |
|---|---|---|---|
| HC-SR04 | VCC | ESP32 `3V3` | Catu sensor 3,3 V |
| HC-SR04 | GND | ESP32 `GND` | Ground bersama |
| HC-SR04 | TRIG | ESP32 `GPIO5 / D5` | Pulsa trigger langsung |
| HC-SR04 | ECHO | ESP32 `GPIO18 / D18` | Sinyal langsung |
| Sharp GP2Y0A21 | VCC (merah) | ESP32 `5V/VIN` | Catu 4,5–5,5 V |
| Sharp GP2Y0A21 | GND (hitam) | ESP32 `GND` | Ground bersama |
| Sharp GP2Y0A21 | OUT (kuning/putih) | ESP32 `GPIO34` | Masukan analog ADC1 |
| Traffic light | R | ESP32 `GPIO25` melalui `220 Ω` | FULL |
| Traffic light | Y | ESP32 `GPIO26` melalui `220 Ω` | MEDIUM |
| Traffic light | G | ESP32 `GPIO27` melalui `220 Ω` | EMPTY |
| Traffic light | GND/common cathode | ESP32 `GND` | `HIGH = ON` sesuai `LED_ACTIVE_LOW 0` |

### Detail HC-SR04 3,3 V

```text
HC-SR04 VCC  ── 3V3 ESP32
HC-SR04 GND  ── GND ESP32
HC-SR04 TRIG ── GPIO5 / D5
HC-SR04 ECHO ── GPIO18 / D18
```

Konfigurasi proyek menggunakan HC-SR04 pada 3,3 V sesuai diagram aktif. ECHO
terhubung langsung ke D18, tanpa pin fallback dan tanpa pembagi tegangan.

## ESP32-CAM AI-Thinker

OV2640 dan flash LED sudah terpasang pada board. Tidak perlu menyambungkan pin kamera satu per satu jika memakai modul ESP32-CAM AI-Thinker lengkap.

### Wiring operasional

```mermaid
flowchart LR
    PSU["Catu 5 V stabil ≥ 1 A"] -->|"5V"| CAM["ESP32-CAM AI-Thinker"]
    PSU -->|"GND"| CAM
    CAM -. "koneksi internal ribbon" .-> OV["OV2640"]
    CAM -. "GPIO4 internal" .-> FLASH["Flash LED onboard"]
    CAM -->|"Wi-Fi: 192.168.1.99"| ROUTER["Router / Dashboard"]
```

Gunakan suplai 5 V yang stabil. Arus kamera dan Wi-Fi dapat melonjak; suplai lemah dapat menyebabkan brownout, restart, atau stream terputus.

### Wiring saat upload firmware

```mermaid
flowchart LR
    TTL["USB-to-TTL 5 V"] -->|"5V"| CAM["ESP32-CAM"]
    TTL -->|"GND"| CAM
    TTL -->|"TX → U0R/RX"| CAM
    CAM -->|"U0T/TX → RX"| TTL
    BOOT["GPIO0"] -->|"hanya saat upload"| GND["GND"]
```

| USB-to-TTL | ESP32-CAM | Catatan |
|---|---|---|
| 5V | 5V | Gunakan sumber yang mampu memasok arus kamera |
| GND | GND | Ground bersama |
| TX | U0R / RX | Silang TX ke RX |
| RX | U0T / TX | Silang RX ke TX |
| GND | GPIO0 | Hanya untuk masuk mode upload |

Urutan upload:

1. Hubungkan GPIO0 ke GND.
2. Reset/power-cycle ESP32-CAM.
3. Upload firmware.
4. Lepaskan GPIO0 dari GND.
5. Reset/power-cycle untuk menjalankan kamera.

### Pin internal OV2640 sesuai kode

| Sinyal kamera | GPIO |
|---|---:|
| PWDN | 32 |
| RESET | tidak digunakan (`-1`) |
| XCLK | 0 |
| SCCB SDA / SIOD | 26 |
| SCCB SCL / SIOC | 27 |
| Y2–Y9 | 5, 18, 19, 21, 36, 39, 34, 35 |
| VSYNC | 25 |
| HREF | 23 |
| PCLK | 22 |
| Flash LED onboard | 4 |

Pin-pin internal tersebut mengikuti jalur board AI-Thinker dan tidak perlu diwiring ulang.

## Catatan pemasangan

- Semua perangkat pada ESP32 DevKit harus memakai ground bersama.
- Pasang HC-SR04 menghadap ke permukaan sampah dari bagian atas bin.
- Pasang Sharp IR sehingga area bacanya tidak terhalang dinding bin.
- Jauhkan kabel analog GPIO34 dari kabel ECHO, TRIG, dan catu yang bising.
- Tambahkan kapasitor `100 nF` dekat VCC masing-masing sensor.
- Untuk Sharp IR, kapasitor elektrolit `10 µF` antara VCC dan GND dekat sensor membantu meredam lonjakan/noise.
- Jangan memakai GPIO12, GPIO13, atau GPIO14 untuk menggantikan pin firmware tanpa meninjau ulang strapping saat boot.
