# Kompakt z ESP32-CAM — návod na stavbu

> Domácí digitální fotoaparát s fyzickou spouští, ukládáním na SD kartu a webovou galerií přes Wi-Fi, postavený na AI-Thinker ESP32-CAM se senzorem OV3660.

Domácí digitální fotoaparát s fyzickou spouští, ukládáním na SD kartu a webovou galerií přes Wi-Fi —
postavený na modulu AI-Thinker ESP32-CAM se senzorem OV3660.

**OV3660 · 3 Mpx** · SD karta · galerie přes Wi-Fi · Arduino IDE · celkem asi 200 Kč

## 00 — Seznam součástek

| Ks | Součástka | Poznámka |
| --- | --- | --- |
| 1× | AI-Thinker ESP32-CAM + OV3660 + základní deska | váš modul |
| 1× | Karta microSD (Class 10, naformátovaná na FAT32) | doporučeno 8–32 GB |
| 1× | Tlačítko bez aretace (6mm mikrospínač) | spoušť |
| 1× | Li-Po baterie 3,7 V, 1000–2000 mAh | nebo USB powerbanka |
| 1× | Nabíjecí modul TP4056 pro Li-Po (s ochranou) | pro nabíjení baterie |
| 1× | Step-up měnič MT3608 (výstup 5 V) | pokud napájíte přímo z Li-Po |
| 1× | Posuvný přepínač SPDT | zapnutí a vypnutí |
| — | Propojovací kabely, smršťovací bužírky, malá prototypová deska | |

## 01 — Zapojení hardwaru

Základní deska AI-Thinker už obsahuje převodník USB na sériovou linku pro programování. Pro stavbu
fotoaparátu stačí zapojit tlačítko spouště a napájení.

> **Důležité:** ESP32-CAM v jednobitovém režimu MMC používá piny GPIO pro SD kartu. GPIO13 je v tomto
> režimu volný a slouží pro tlačítko spouště. Za běhu fotoaparátu NEPŘIPOJUJTE nic dalšího ke GPIO4
> (bleskové LED) ani k pinům SD karty.

### Tlačítko spouště

| Pin ESP32-CAM | Součástka | Poznámka |
| --- | --- | --- |
| GPIO13 | Pin tlačítka 1 | `INPUT_PULLUP` — tlačítko stahuje na GND |
| GND | Pin tlačítka 2 | Aktivní v nule — rezistor není potřeba |

### Napájení

| Modul | Odkud | Kam | Poznámka |
| --- | --- | --- | --- |
| Posuvný přepínač | Li-Po + | TP4056 BAT+ | Hlavní vypínač |
| TP4056 | BAT+ / BAT− | MT3608 IN+ / IN− | Ochrana nabíjení |
| MT3608 | OUT+ | 5 V základní desky | Zvýšení na 5 V, dolaďte trimrem |
| Společná zem | Všechny GND | GND základní desky | Ideálně zapojení do hvězdy |

> **Nejjednodušší napájení:** pokud chcete bateriový obvod zatím vynechat, napájejte základní desku přes
> její port micro-USB z malé USB powerbanky. Všechno tak můžete hned vyzkoušet.

### SD karta

Slot na kartu microSD je přímo na modulu ESP32-CAM. Kartu naformátujte na **FAT32** a vložte ji před
zapnutím. Firmware sám vytvoří složku `/photos`.

## 02 — Nastavení firmwaru

### Nastavení Arduino IDE

1. Nainstalujte **Arduino IDE 2.x** z arduino.cc.
2. V *File → Preferences → Additional Boards Manager URLs* přidejte adresu balíčku desek ESP32:

   ```text
   https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
   ```

3. Otevřete *Tools → Board → Boards Manager*, vyhledejte **esp32** od Espressifu a nainstalujte verzi **2.x**.
4. Vyberte desku **AI Thinker ESP32-CAM**.
5. Nastavte schéma oddílů **Huge APP (3MB No OTA/1MB SPIFFS)**.
6. Nastavte PSRAM na **Enabled**.

### Úprava firmwaru

Otevřete `esp32cam_camera.ino` a na řádcích 17–18 doplňte přihlašovací údaje k Wi-Fi:

```cpp
const char* WIFI_SSID     = "YourNetworkName";
const char* WIFI_PASSWORD = "YourPassword";
```

### Nahrání firmwaru

> **Před nahráním:** základní deska má pro programovací režim tlačítko IO0. Držte IO0, stiskněte RESET
> (nebo odpojte a připojte napájení), tím přepnete do režimu bootloaderu, a pak v Arduino IDE klikněte na Upload.

1. Připojte základní desku k počítači přes USB (používá vestavěný čip CH340/CP2102).
2. V Arduino IDE vyberte správný COM/sériový port.
3. Podržte tlačítko **IO0** na základní desce.
4. Jednou stiskněte **RESET** (IO0 pořád držte).
5. Pusťte IO0 a v Arduino IDE klikněte na **Upload ↑**.
6. Po dokončení nahrávání znovu stiskněte RESET, aby se program spustil.

### Ověření funkce

1. Otevřete Serial Monitor na **115200 baud**.
2. Měli byste vidět: inicializace kamery OK → SD karta OK → IP adresa Wi-Fi.
3. Otevřete prohlížeč a přejděte na zobrazenou IP adresu.
4. Webová galerie by se měla hned načíst.

## 03 — Webová galerie

Webové rozhraní běží přímo na ESP32. Z libovolného zařízení v místní síti otevřete:

```text
http://<ESP32-IP-address>/
```

Dostupné adresy:

| URL | Metoda | Popis |
| --- | --- | --- |
| `/` | GET | Webová galerie |
| `/capture` | GET | Pořídí fotku, vrátí JSON |
| `/list` | GET | Pole JSON se všemi názvy fotek |
| `/photo?name=IMG_1.jpg` | GET | Zobrazí fotku v prohlížeči |
| `/photo?name=IMG_1.jpg&dl=1` | GET | Stáhne fotku |

## 04 — Ladění OV3660

OV3660 je 3Mpx senzor (lepší než běžný OV2640). Ve firmwaru můžete upravit tato nastavení:

```cpp
sensor_t* s = esp_camera_sensor_get();
s->set_vflip(s, 1);        // 1 = flip vertically (OV3660 default mount)
s->set_hmirror(s, 0);      // 1 = mirror horizontally
s->set_brightness(s, 1);   // -2 to +2
s->set_saturation(s, 0);   // -2 to +2
s->set_contrast(s, 0);     // -2 to +2
s->set_whitebal(s, 1);     // auto white balance
s->set_awb_gain(s, 1);     // AWB gain
s->set_aec2(s, 1);         // auto exposure advanced
s->set_ae_level(s, 0);     // -2 to +2 exposure bias
```

### Možnosti rozlišení

| Konstanta | Rozlišení | Použití |
| --- | --- | --- |
| `FRAMESIZE_UXGA` | 1600×1200 | Nejlepší kvalita (výchozí) |
| `FRAMESIZE_SXGA` | 1280×1024 | Dobrý kompromis |
| `FRAMESIZE_XGA` | 1024×768 | Rychlejší snímání |
| `FRAMESIZE_VGA` | 640×480 | Nejrychlejší, malé soubory |

## 05 — Nápady na krabičku

Několik způsobů, jak stavbu zabalit:

### Varianta A — tělo z 3D tiskárny

Na Printables nebo Thingiverse hledejte **„ESP32-CAM case“**. Pro modul AI-Thinker existuje spousta návrhů.
Doplňte vlastní horní panel s otvorem pro objektiv OV3660, štěrbinou pro SD kartu a zapuštěným tlačítkem spouště.

### Varianta B — plechovka od Altoids / instalační krabička

Do instalační krabičky z ABS o rozměrech 100 × 60 mm od TME/GM Electronic se vejde modul i malá Li-Po
baterie. Vyvrtejte otvor pro objektiv (OV3660 potřebuje výřez asi 10 mm) a tlačítko umístěte nahoru.

### Varianta C — kompaktní USB powerbanka

Některé ultratenké powerbanky (Xiaomi Slim 5000) jsou sotva větší než samotný ESP32-CAM. Přilepte modul
na záda, připojte krátký USB kabel a máte napájení bez jediného pájení.

> **Klíčové rozměry:** deska AI-Thinker ESP32-CAM: 40 × 27 mm. Kamerový modul OV3660 vyčnívá asi 15 mm
> nad desku. Základní deska přidá zespodu asi 5 mm.

## 06 — Řešení problémů

| Příznak | Pravděpodobná příčina | Řešení |
| --- | --- | --- |
| Camera init failed 0x105 | Kamera nebyla rozpoznána | Zkontrolujte usazení plochého kabelu a dostatečné napájení (≥ 500 mA) |
| SD card mount failed | Špatný formát nebo vadná karta | Přeformátujte na FAT32, zkuste jinou kartu |
| Obraz vzhůru nohama | Uchycení OV3660 | Přepněte `set_vflip(s, 0)` nebo `1` |
| Wi-Fi se nepřipojí | Špatné údaje nebo dosah | Zkontrolujte SSID a heslo, přibližte se k routeru |
| Brownout reset při focení | Nedostatečný proud | Použijte kvalitní USB kabel a zdroj ≥ 1 A |
| Fotka uložená, ale má 0 bajtů | Chyba framebufferu | Přidejte `delay(500)` před první snímek v `setup()` |
| Tlačítko spouští vícekrát | Zákmity | Zvyšte `DEBOUNCE_MS` na 500 |

---

Kompletní arduino sketch `esp32cam_camera.ino` leží vedle původního návodu v repozitáři mého portfolia
(`blog-posts/pointandshoot-cam/esp32cam_camera.ino`). <!-- TODO(content): publish the sketch (e.g. on GitHub) and link it here. -->
