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
-
Nainstalujte Arduino IDE 2.x z arduino.cc.
-
V File → Preferences → Additional Boards Manager URLs přidejte adresu balíčku desek ESP32:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json -
Otevřete Tools → Board → Boards Manager, vyhledejte esp32 od Espressifu a nainstalujte verzi 2.x.
-
Vyberte desku AI Thinker ESP32-CAM.
-
Nastavte schéma oddílů Huge APP (3MB No OTA/1MB SPIFFS).
-
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:
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.
- Připojte základní desku k počítači přes USB (používá vestavěný čip CH340/CP2102).
- V Arduino IDE vyberte správný COM/sériový port.
- Podržte tlačítko IO0 na základní desce.
- Jednou stiskněte RESET (IO0 pořád držte).
- Pusťte IO0 a v Arduino IDE klikněte na Upload ↑.
- Po dokončení nahrávání znovu stiskněte RESET, aby se program spustil.
Ověření funkce
- Otevřete Serial Monitor na 115200 baud.
- Měli byste vidět: inicializace kamery OK → SD karta OK → IP adresa Wi-Fi.
- Otevřete prohlížeč a přejděte na zobrazenou IP adresu.
- 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:
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í:
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).