A termékfotók tájékoztató jellegűek, és a gyártási tételtől és a beszállítótól függően kisebb eltéréseket mutathatnak. A termék specifikációi és árai előzetes értesítés nélkül változhatnak. Mindent megteszünk, hogy a lehető legpontosabb és leghitelesebb specifikációkat adjuk meg a termékoldalon, de lehetséges, hogy ezek nem teljesen helyesek. Ha ilyen esetet észlel, kérjük, jelentse nekünk.
A termék szakemberek számára készült, és használatához képzett, valamint felhatalmazott személyzet szükséges. A termék nem tartalmaz összeszerelési/használati útmutatót . A termék nem megfelelő képesítéssel rendelkező személyek általi üzembe helyezése a weboldalon található Általános Szerződési Feltételek értelmében a jótállás elvesztését eredményezi.
A megadott műszaki adatok (áram, teljesítmény stb.) ideális működési körülmények között érvényes maximális értékeket jelentenek. A biztonságos használat és az optimális élettartam érdekében javasolt a terméket folyamatos üzemben legfeljebb a megadott maximális értékek 50%-án használni.
ESP32-CAM fejlesztőpanel, WiFi, Bluetooth, OV5640 5 MP
Kompatibilis megoldás mesterséges látás, videóstreaming és IoT projektekhez, 802.11b/g/n WiFi és Bluetooth 4.2 LE kapcsolattal vezeték nélküli alkalmazásokhoz. Integrál egy kétmagos processzort akár 240 MHz-ig és 4 MB PSRAM-ot a képfeldolgozás gyorsításához, egy 5 MP-es OV5640 kamerát a részletes felvételekhez, TF-kártya támogatást és JPEG, BMP, szürkeárnyalatos formátumokat, valamint kompatibilis az Arduino IDE-vel a gyors fejlesztéshez.
Shipping by csütörtök 22 október
A termék megvásárlásával jár 0,81 € hűségpont.
Nemzetközi gyors szállítás az EU-n belül. Ingyenes szállítás 100 EUR feletti megrendelések esetén a legtöbb EU-országban.
24 órán belül szállítunk raktárunkból
Minden rendelés után pontokat kap, a rendelés értékének 5%-ában.
Az ESP32-CAM fejlesztőpanel egy kompakt modul, amely egyesíti az ESP32 WiFi- és Bluetooth-processzort egy FPC csatlakozón keresztül kapcsolódó 5 MP-es OV5640 kamerával, teljes megoldást kínálva képek rögzítésére és továbbítására mesterséges látási projektekben, videostreamingben és IoT alkalmazásokban. A panel önállóan is működhet, képeket és videófolyamokat küldve a hálózatra WiFi-n keresztül, vagy programozható úgy is, hogy UART-on érkező parancsokra reagáljon, így alkalmas megfigyelésre, tárgyfelismerésre, távoli monitorozásra és automatizált fényképezési projektekre.
A processzor egy 32 bites, kétmagos ESP32 LX6, 80 és 240 MHz közötti órajelekkel és akár 600 DMIPS számítási teljesítménnyel. A 520 KB belső SRAM memóriát 4 MB külső PSRAM egészíti ki, amely nagy felbontású képek tömörítés és továbbítás előtti feldolgozásához szükséges. Az OV5640 kamera maximális felbontása 2592 x 1944 pixel (5 MP), és egy 24 tűs FPC csatlakozón keresztül kapcsolódik, ugyanazon a típusú csatlakozón, mint a régebbi OV2640 kamerás változat.
A fő jellemzők közé tartozik a kamera FPC csatlakozója, a legfeljebb 4 GB-os microSD kártyahely, egy fehér LED, amely vakuként szolgál, a panelre nyomtatott PCB antenna, két sor tűsor (összesen 16 tű), amelyek a tápellátást, a szabad GPIO-kat és az UART interfészt hozzák ki, valamint egy RESET gomb. A tápellátás 5 VDC-ről történik az 5V tűn, legalább 2A stabil tápegység ajánlott, a panel pedig 3.3 VDC-ről is táplálható a 3V3 tűn keresztül.
Az UART interfészen keresztül (U0T és U0R tűk) a panel egy számítógépről USB-soros átalakítóval programozható és tesztelhető, a hálózatra csatlakoztatás után pedig a képek és a videófolyam közvetlenül elérhető bármely, a helyi hálózaton lévő számítógép vagy telefon böngészőjéből. A megmaradó szabad GPIO-k lehetővé teszik további, Arduino, ESP32, STM32 vagy Raspberry Pi kompatibilis szenzorok és modulok csatlakoztatását is, a panel 3.3V-os logikai szintjét használva.
FIGYELEM
Kamera OV5640 (aktuális széria)
Ez a modul OV5640 (5MP) kamerával kerül szállításra az OV2640 helyett. Az érzékelő működés közben erősen felmelegszik, és érintésre forró lehet. Ez normális viselkedés ennél a panel-kamera kombinációnál, nem hiba.
Kötelező használati feltételek:
Hűtőborda felszerelve a kamera hátoldalára, hővezető szalaggal vagy paddal.
Megfelelő szellőzés; ne használja a modult zárt házban, légáramlás nélkül.
Stabil 5V-os tápellátás, legalább 2A, az 5V tűn. Ne táplálja a modult az USB-soros átalakító 3.3V-os kimenetéről.
Ajánlások:
Az Arduino IDE-ben válassza az “AI Thinker ESP32-CAM” panelt, és használja a CameraWebServer példát.
JPEG formátumot használjon. Folyamatos streamhez válasszon alacsonyabb felbontást (SVGA vagy HD); a maximális felbontást csak fényképekhez használja.
Időszakos képrögzítéshez kapcsolja ki az érzékelőt a képek között (GPIO32 HIGH szintre állításával).
Az autofókuszos változatnál az automatikus fókuszhoz 3.3V szükséges a kamera csatlakozó 24-es lábán, valamint egy dedikált könyvtár. Ezek nélkül a kamera fix fókuszban működik.
A modul nem ajánlott folyamatos, 24/7 streaminghez. Ha az OV2640-es változatra van szüksége, kérjük, a rendelés leadása előtt vegye fel velünk a kapcsolatot.
Specifikációk:

Tápfeszültség: 5 VDC (5V tű)
Áramfelvétel: 180 mA (Flash LED kikapcsolva) / 310 mA (Flash LED bekapcsolva, maximális fényerő)
Deep-sleep áramfelvétel: minimum 6 mA
Modem-sleep áramfelvétel: minimum 20 mA
Light-sleep áramfelvétel: minimum 6.7 mA
Tűk száma: 16
WiFi: 802.11 b/g/n
Bluetooth: 4.2 LE
CPU: Dual core LX6, 32 bit
CPU frekvencia: 80 - 240 MHz
Belső memória: 520 KB SRAM
Külső memória: 4 MB PSRAM
Támogatott interfészek: UART, SPI, I2C, PWM, ADC, DAC
Mellékelt kamera: OV5640, 5 MP, maximális felbontás 2592 x 1944 pixel
Képfájl formátumok: JPEG, BMP, grayscale
Memóriakártya: microSD (TF), legfeljebb 4 GB
Alacsony fogyasztású módok: Deep-sleep, Modem-sleep, Light-sleep
Beépített szoftverstack: LwIP, FreeRTOS
Hálózati működési módok: STA / AP / STA+AP
Smart Config / AirKiss: Igen
FOTA frissítés: Igen
SPI Flash memória: 32 Mbit
Kamera csatlakozó: FPC, 24 tű
Mellékelt programozó: Nem, külső adapter szükséges (ajánlott FT232 vagy egyenértékű)
Méretek: 42 x 27 x 12 mm
Elrendezés:
| Elem | Funkció |
|---|---|
| ESP32-S modul PCB antennával | Az ESP32 kétmagos processzor és a panelre nyomtatott WiFi/Bluetooth antenna. |
| Fehér LED | Vakuként szolgál a kamerához, GPIO4 vezérli. |
| Kamera FPC csatlakozó | 24 tűs csatlakozó, amelyhez az OV5640 kamera flex kábele kapcsolódik. |
| OV5640 kamera | 5 MP-es kameramodul, külön szerelve a panelre, flex kábellel csatlakoztatva. |
| microSD (TF) kártyahely | Helyi tárolás képek és fájlok számára, legfeljebb 4 GB-os kártyákhoz. |
| Két sor tűsor (dupla header) | A tápellátást, a szabad GPIO-kat és az UART interfészt hozzák ki, összesen 16 tűvel. |
| RESET gomb | Az ESP32 mikrokontrollert alaphelyzetbe állítja, és a program betöltéséhez is használható. |
| Feszültségszabályzó | Az 5V-os tápellátást a panel áramköreihez szükséges 3.3V-ra alakítja. |
| Rögzítőfuratok | Két furat a tűsorok között a panel rögzítéséhez. |
Pinout:

| Csatlakozó | Pin | Funkció |
|---|---|---|
| 5V header | 5V | Panel tápellátása, 5 VDC |
| 5V header | GND | Föld |
| 5V header | IO12 | GPIO12, MicroSD DATA2-ként is használva |
| 5V header | IO13 | GPIO13, MicroSD DATA3-ként is használva |
| 5V header | IO15 | GPIO15, MicroSD CMD-ként is használva |
| 5V header | IO14 | GPIO14, MicroSD CLK-ként is használva |
| 5V header | IO2 | GPIO2, MicroSD DATA0-ként is használva |
| 5V header | IO4 | GPIO4, MicroSD DATA1-ként használva, a flash LED vezérlése |
| 3V3 header | 3V3 | Panel tápellátása, 3.3 VDC |
| 3V3 header | IO16 | GPIO16, szabad vonal, lehet UART2 RX |
| 3V3 header | IO0 | GPIO0, indítási módot választ; program betöltéséhez GND-re kell kötni |
| 3V3 header | GND | Föld |
| 3V3 header | VCC | 3.3V vagy 5V kimenet, a panelt ezen a tűn keresztül nem szabad táplálni |
| 3V3 header | U0R (IO3) | UART RX, soros adatfogadás |
| 3V3 header | U0T (IO1) | UART TX, soros adatátvitel |
| 3V3 header | GND | Föld |
| Kamera jel (FPC) | ESP32 GPIO | Funkció |
|---|---|---|
| D0 | GPIO5 | Kamera adatvonal (Y2) |
| D1 | GPIO18 | Kamera adatvonal (Y3) |
| D2 | GPIO19 | Kamera adatvonal (Y4) |
| D3 | GPIO21 | Kamera adatvonal (Y5) |
| D4 | GPIO36 | Kamera adatvonal (Y6) |
| D5 | GPIO39 | Kamera adatvonal (Y7) |
| D6 | GPIO34 | Kamera adatvonal (Y8) |
| D7 | GPIO35 | Kamera adatvonal (Y9) |
| XCLK | GPIO0 | Bemeneti órajel a kamera érzékelő számára |
| PCLK | GPIO22 | Pixel kimeneti órajel |
| VSYNC | GPIO25 | Függőleges képkocka-szinkron |
| HREF | GPIO23 | Vízszintes sor-szinkron |
| SIOD (SDA) | GPIO26 | I2C/SCCB, érzékelő konfiguráció |
| SIOC (SCL) | GPIO27 | I2C/SCCB, érzékelő konfiguráció |
| PWDN | GPIO32 | Érzékelő kikapcsolása (power-down), HIGH a képek közötti kikapcsoláshoz |
Használat:
Ha a kameramodul még nincs felszerelve, rögzítse azt a panel FPC csatlakozójára a kontaktusok tájolását betartva, majd zárja le a csatlakozó rögzítőfülét.
Szereljen fel egy kis hűtőbordát hővezető szalaggal vagy paddal az OV5640 kamera hátoldalára az első használat előtt, mivel az érzékelő működés közben erősen felmelegszik, és érintésre forró lehet; ez normális viselkedés ennél a panel-kamera kombinációnál.
Biztosítson megfelelő szellőzést a modul körül, és ne használja zárt házban, légáramlás nélkül.
A panelt 5 VDC-ről, legalább 2A-rel táplálja az 5V tűn, stabil tápegységgel, és ne táplálja a modult USB-soros átalakító 3.3V-os kimenetéről.
Programozáshoz csatlakoztasson egy FT232 vagy egyenértékű adaptert az U0R, U0T és GND tűkre, az adapter feszültségjumperét 5V-ra állítva, az adapter TXD-jét az U0R-hez, az RXD-jét pedig az U0T-hez kötve.
Az Arduino IDE-ben telepítse az esp32 by Espressif Systems csomagot a Boards Managerből, válassza ki az AI Thinker ESP32-CAM panelt, és nyissa meg a CameraWebServer példát a File - Examples menüből.
A kódban válassza ki a #define CAMERA_MODEL_AI_THINKER sort, és adja meg a WiFi hálózat nevét és jelszavát.
Feltöltés előtt ideiglenesen kösse az IO0 tűt GND-re, hogy a panel Flash módba kerüljön, röviden nyomja meg a RESET gombot, majd indítsa el a kód feltöltését az Arduino IDE-ben.
A feltöltés befejezése után távolítsa el az IO0 és GND közötti összekötést, majd nyomja meg ismét a RESET gombot, hogy a panel a feltöltött programot futtassa.
Nyissa meg a Serial Monitor-t 115200 baud sebességgel, várja meg a WiFi hálózathoz való csatlakozást, jegyezze fel a megjelenő IP-címet, majd ezt a címet böngészőből elérve tekintse meg a videófolyamot.
Folyamatos streamhez használjon JPEG formátumot alacsonyabb felbontáson, például SVGA vagy HD módban, és a maximális felbontást csak egyedi fényképekhez tartsa fenn.
Időszakos képrögzítéshez kapcsolja ki az érzékelőt a képek között a GPIO32 HIGH szintre állításával, majd a következő rögzítés előtt állítsa vissza LOW-ra.
Az autofókuszos változatnál táplálja a kamera csatlakozó 24-es lábát 3.3V-tal, és használjon dedikált autofocus könyvtárat; ennek hiányában a kamera fix fókuszban működik.
Ne használja a modult folyamatos, 24/7 videostreamingre, mivel a panelt időszakos rögzítésre és monitorozásra tervezték.
Méretrajz:

Oktatóanyag:

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.
Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.
Avertismente generale de siguranta:
Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.
Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.
Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.
Nu lasati produsul alimentat nesupravegheat in timpul testelor.
Produsul nu este jucarie si nu este destinat copiilor.
Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.
Identificare produs:
Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.
Producator / Importator / Distribuitor:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
Website: www.sigmanortec.ro
Persoana responsabila in UE:
Sigmanortec S.R.L.
Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania
E-mail: [email protected]
Documentatie si siguranta:
Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].
/*
Test sketch for ESP32-CAM (AI-Thinker) with OV5640 5MP camera
Board: "AI Thinker ESP32-CAM" (Tools > Board > ESP32 Arduino)
Board package: esp32 by Espressif Systems, installed from Boards Manager
Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json
Library: esp_camera.h, included with the esp32 package, no extra library required
Wiring: camera attached through the onboard FPC connector, board powered at 5V on the 5V pin
This sketch does not use Wi-Fi, it only verifies that the camera initializes and captures frames
*/
#include "esp_camera.h"
// ---- AI-Thinker camera pin map ----
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("ESP32-CAM OV5640 test starting");
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = psramFound() ? FRAMESIZE_UXGA : FRAMESIZE_CIF;
config.jpeg_quality = 12;
config.fb_count = psramFound() ? 2 : 1;
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x\n", err);
return;
}
Serial.println("Camera init OK");
}
void loop() {
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Frame capture failed");
} else {
Serial.printf("Captured frame: %u x %u pixels, %u bytes\n", fb->width, fb->height, fb->len);
esp_camera_fb_return(fb);
}
delay(5000);
}
Az ESP32-CAM fejlesztőlap 5MP-es OV5640 kamerával egy beépített kamerával rendelkező ESP32 fejlesztőmodul, amellyel képeket rögzíthetünk és továbbíthatunk WiFi-n keresztül, külön kiegészítő alkatrészek nélkül. Ez a leírás magát az ESP32-CAM AI-Thinker lapot használja platformként az Arduino IDE-vel együtt, hogy feltöltsünk egy programot, amely elindítja a kamerát, és egy egyszerű videófolyamot szolgáltat egy belső webszerveren keresztül.
Mivel a lapnak nincs saját USB portja, a program feltöltéséhez külső, FT232 típusú USB-soros adapterre van szükség, amelyet a lap soros lábaihoz csatlakoztatunk.

Hogyan működik:
Az OV5640 szenzor a képet a 8 párhuzamos adatvonalon (D0-D7) rögzíti, amelyeket az XCLK, PCLK, VSYNC és HREF jelek szinkronizálnak. A szenzor beállítása (felbontás, expozíció, fehéregyensúly) a SIOD és SIOC vonalakon keresztül, I2C/SCCB kapcsolaton történik. A szenzor JPEG formátumba tömöríti a képet, mielőtt az ESP32 átvenné, ami jelentősen csökkenti az adatmennyiséget a nyers képhez képest.
SVGA felbontásnál (800 x 600 pixel) egy JPEG képkocka mérete a jelenettől és a kódban megadott minőségi szinttől függően körülbelül 20 - 50 KB. Ha egy tipikus, néhány száz KB/s sebességű helyi WiFi sávszélességet elosztunk ezzel a képkockamérettel, akkor másodpercenként néhány képkockás folyam adódik. Ez elegendő videós megfigyeléshez, de jóval elmarad a szenzor 2592 x 1944 pixeles maximális képességétől, amelyet az egyedi fényképek számára tartogatunk.
Csatlakoztatás:
A lap programozása egy FT232 adapterrel történik, amelyet az ESP32-CAM soros lábaihoz csatlakoztatunk. Az adapter feszültség-jumperét 5V-ra kell állítani, az IO0 lábat pedig csak a kód feltöltése idejére kötjük ideiglenesen GND-re.
| A termék lába | Ide csatlakozik | Szerep |
|---|---|---|
| 5V | FT232 VCC | A lap tápellátása, 5 VDC |
| GND | FT232 GND | Közös föld |
| U0R (GPIO3) | FT232 TXD | Soros adatok fogadása (a vonalak keresztezettek) |
| U0T (GPIO1) | FT232 RXD | Soros adatok küldése (a vonalak keresztezettek) |
| IO0 | GND (ideiglenes áthidalás) | Kiválasztja a Flash módot a kód feltöltéséhez |

Lap és könyvtárak:
Az Arduino IDE-ben nyissa meg a File - Preferences menüt, és az Additional Boards Manager URLs mezőbe írja be a https://dl.espressif.com/dl/package_esp32_index.json címet. Ezután nyissa meg a Tools - Board - Boards Manager menüt, keressen rá az esp32 kifejezésre, és telepítse az esp32 by Espressif Systems csomagot.
A telepítés után válassza ki az AI Thinker ESP32-CAM lapot a Tools - Board - ESP32 Arduino menüből.
Nem szükséges további könyvtárat telepíteni, mivel az esp_camera.h és a WiFi.h automatikusan települ az esp32 by Espressif Systems csomaggal.
A kód:
Az alábbi kód inicializálja a kamerát az AI-Thinker lap lábkiosztásával, csatlakozik a WiFi hálózathoz, és a videófolyamot a 80-as porton csatlakozó bármely kliensnek elküldi.
/*
ESP32-CAM (AI-Thinker) with OV5640 5MP camera - WiFi video stream example
Board: "AI Thinker ESP32-CAM" (Tools > Board > ESP32 Arduino)
Board package: esp32 by Espressif Systems, installed from Boards Manager
Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json
Libraries: esp_camera.h and WiFi.h, both included with the esp32 package, no extra library required
Upload wiring: FT232 VCC->5V, FT232 GND->GND, FT232 TXD->U0R, FT232 RXD->U0T, IO0 bridged to GND only during upload
*/
#include "esp_camera.h"
#include <WiFi.h>
// ---- Wi-Fi credentials ----
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// ---- AI-Thinker camera pin map ----
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
WiFiServer server(80);
void startCamera() {
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
if (psramFound()) {
config.frame_size = FRAMESIZE_SVGA; // 800x600, good balance for streaming
config.jpeg_quality = 12; // lower number = higher quality, bigger file
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_CIF;
config.jpeg_quality = 15;
config.fb_count = 1;
}
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x\n", err);
return;
}
Serial.println("Camera initialized");
}
void sendStreamToClient(WiFiClient &client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: multipart/x-mixed-replace; boundary=frame");
client.println();
while (client.connected()) {
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Frame capture failed");
break;
}
client.println("--frame");
client.println("Content-Type: image/jpeg");
client.printf("Content-Length: %u\n\n", fb->len);
client.write(fb->buf, fb->len);
client.println();
esp_camera_fb_return(fb);
if (!client.connected()) break;
}
}
void setup() {
Serial.begin(115200);
Serial.println();
startCamera();
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("WiFi connected, IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Open this address in a browser to view the live stream");
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected");
sendStreamToClient(client);
client.stop();
Serial.println("Client disconnected");
}
}
Hogyan működik a kód:
A fájl elején a WiFi hálózat adatai (ssid, password) és a kamera lábai vannak megadva az AI-Thinker lapnak megfelelően (PWDN_GPIO_NUM, XCLK_GPIO_NUM, Y2_GPIO_NUM - Y9_GPIO_NUM, VSYNC_GPIO_NUM, HREF_GPIO_NUM, PCLK_GPIO_NUM, SIOD_GPIO_NUM, SIOC_GPIO_NUM).
A startCamera függvény kitölti a camera_config_t struktúrát ezekkel a lábakkal, kiválasztja a FRAMESIZE_SVGA felbontást és két képkockapuffert, ha a lapon elérhető a PSRAM, majd meghívja az esp_camera_init függvényt, és a Serial monitoron kiírja, hogy az inicializálás sikerült-e.
A sendStreamToClient függvény a csatlakoztatott kliensnek multipart/x-mixed-replace típusú HTTP fejlécet küld. Ezután, amíg a kliens csatlakozva marad, az esp_camera_fb_get függvénnyel átvesz egy-egy JPEG képkockát, elküldi a kapcsolaton keresztül, és az esp_camera_fb_return függvénnyel felszabadítja.
A setup függvényben inicializáljuk a soros portot, elindítjuk a kamerát, megvárjuk a WiFi hálózathoz való csatlakozást, és kiírjuk a kapott IP-címet, majd a WiFiServer szervert elindítjuk a 80-as porton. A loop függvényben a lap új kliensre vár, és a sendStreamToClient segítségével elküldi neki a videófolyamot.
Eredmény:
Nyissa meg a Serial Monitort 115200 baud sebességgel. A kamera inicializálása és a hálózathoz való csatlakozás után megjelenik a lap IP-címe, és ha ezt a címet megnyitja egy böngészőben, megjelenik a kamera élő videófolyama.
Camera initialized
Connecting to WiFi.....
WiFi connected, IP address: 192.168.0.114
Open this address in a browser to view the live stream
New client connected
Client disconnected
New client connected
Client disconnected
Gyakori problémák:
Ha a Serial Monitor nem jelenít meg semmit, ellenőrizze, hogy a kiválasztott sebesség 115200 baud, és hogy a feltöltés után, a RESET megnyomása előtt eltávolította az IO0 és a GND közötti összeköttetést.
Ha indításkor hibaüzenet jelenik meg a kamera inicializálásakor (camera init failed), ellenőrizze, hogy a kamera flex szalagkábele jól rögzítve van az FPC csatlakozóban, és hogy a hűtőborda felszerelésekor nem mozdult el.
Ha a lap magától újraindul, vagy brownout üzenetek jelennek meg a Serial Monitorban, a tápforrás túl gyenge. Cserélje le egy legalább 2A-es, 5V-os tápra, amelyet közvetlenül az 5V lábra csatlakoztat.
Ha a lap nem csatlakozik a WiFi hálózathoz, ellenőrizze, hogy helyesen adta-e meg a hálózat nevét és a jelszót, és hogy a WiFi jel elég erős-e azon a helyen, ahol a lap el van helyezve.
Ha a kép nagyon sötét vagy zajos, biztosítson jobb fényforrást a jelenetben, mivel a kamerának a vakuLED-en kívül nincs saját megvilágítása.
Ha a kód feltöltése a laphoz való csatlakozás sikertelenségét jelző üzenetekkel meghiúsul, készítse el újra az IO0-GND áthidalást, és nyomja meg újra a RESET gombot pontosan abban a pillanatban, amikor az Arduino IDE megkezdi a feltöltést.
Korlátok és tippek:
Az OV5640 kamera az 5MP-es maximális felbontást csak egyedi fényképeknél éri el. Folyamatos streameléshez kisebb felbontások, például SVGA vagy HD ajánlottak, hogy a másodpercenkénti képkockák száma ésszerű maradjon.
A lapnak nincs saját USB portja, ezért a programozáshoz mindig külső USB-soros adapterre van szükség, az autofókuszos változat hiányában pedig a kamera fix fókusszal működik.
A szenzor működés közben érezhetően felmelegszik, ezért a lap nem ajánlott folyamatos, 24/7 videóstreamelésre, hanem megfigyelésre és időszakos felvételekre, felszerelt hűtőbordával és biztosított szellőzéssel.
Erre az összeállításra olyan projektek építhetők, mint a WiFi-s térfigyelő kamerák, a microSD kártyára képeket mentő megfigyelőállomások, vagy az egyszerű objektumfelismerő rendszerek, amelyek a képfeldolgozást külső szerveren végzik.