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 CH340G-vel, WiFi-vel, Bluetooth-szal, OV5640 5 MP-vel
Kompatibil megoldás mesterséges látás, videostreaming és IoT projektekhez, akár 240 MHz-es ESP32 kétmagos processzorral, 802.11 b/g/n WiFi és Bluetooth 4.2 LE kapcsolattal a vezeték nélküli vezérléshez és adatátvitelhez, 5 MP-es OV5640 kamerával a részletes képekhez, 4 MB PSRAM memóriával a hatékony rögzítéshez és feldolgozáshoz, valamint egyszerű programozással Arduino IDE-ben a CH340G-n keresztül, USB Type C csatlakozással.
Shipping by csütörtök 22 október
A termék megvásárlásával jár 4,58 lei 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 ESP32 modult kombinál egy dual core processzorral és egy 5 MP-es OV5640 kamerával, WiFi és Bluetooth kapcsolatot kínálva kompakt formátumban. A panel saját optikai szenzoráról érkező videojeleket, valamint parancsokat és adatokat támogat UART, SPI, I2C, PWM, ADC és DAC interfészeken keresztül, így alkalmas mesterséges látással kapcsolatos projektekhez, videostreaminghez, megfigyeléshez, arcfelismeréshez, automatizált fényképezéshez és általános IoT alkalmazásokhoz.
A 32 bites dual core LX6 processzor akár 240 MHz-es frekvencián működik, legfeljebb 600 DMIPS számítási teljesítménnyel, ami elegendő a képfeldolgozáshoz és a WiFi 802.11 b/g/n, valamint a Bluetooth 4.2 LE kapcsolat egyidejű kezeléséhez. A 520 KB belső SRAM memóriát 4 MB külső PSRAM egészíti ki, amely szükséges az OV5640 kameráról érkező nagy felbontású képek rögzítéséhez és puffereléséhez. A panel támogatja a JPEG, BMP és grayscale képformátumokat, képes fényképek WiFi-n keresztüli feltöltésére, akár 4 GB-os külső TF kártyán történő adattárolásra, és több alacsony fogyasztású üzemmóddal rendelkezik, Deep-sleep, Modem-sleep és Light-sleep, amelyek hasznosak akkumulátoros projektekhez.
A fő jellemzők közé tartozik az OV5640 kamera FPC csatlakozója, a microSD kártyahely, a panelen található flash LED, a reset gomb, a két sor bővítőpin összesen 16 tűvel, որոնց közül 9 használható bemenetként/kimenetként, az ESP32 chipbe integrált Hall-érzékelő és hőmérséklet-érzékelő, a Smart Config/AirKiss és FOTA támogatás, valamint a STA, AP és STA+AP működési módok. A panel tápellátása 5 VDC-ről történik az 5V tűn keresztül, a készlet pedig tartalmaz egy CH340G áramkörös USB-TTL soros átalakítót és Type-C csatlakozót is, amely programozásra és számítógéppel történő soros kommunikációra szolgál.
Az UART interfészen és az Espressif által biztosított szoftvercsomagon keresztül a panel kompatibilis az Arduino IDE környezettel, és "AI Thinker ESP32-CAM" néven ismerhető fel. A soros kapcsolat számítógéppel vagy más mikrokontrollerekkel való kommunikációra is lehetőséget ad, míg a WiFi kapcsolat lehetővé teszi az integrációt más ESP32 panelek, IoT modulok vagy számítógépes és telefonos alkalmazások hálózataiba.
FIGYELEM
OV5640 kamera (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 tapintásra forró lehet. Ez a panel-kamera kombináció esetében normális viselkedés, nem hiba.
Kötelező használati feltételek:
Hűtőborda a kamera hátoldalán, szalaggal vagy hővezető paddal rögzítve.
Megfelelő szellőzés; ne használja a modult zárt házban, légáramlás nélkül.
Stabil 5V tápellátás, legalább 2A, az 5V tűn keresztül. Ne táplálja a modult a soros USB-átalakító 3.3V 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.
Használja a JPEG formátumot. Folyamatos streameléshez 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 szinten).
Az autofókuszos változatnál az automatikus élességállításhoz 3.3V szükséges a kamera csatlakozójának 24-es lábán, valamint egy dedikált könyvtár. Ezek nélkül a kamera fix fókuszsal működik.
A modul nem ajánlott 24/7 folyamatos streameléshez. Ha az OV2640 változatra van szüksége, a rendelés leadása előtt vegye fel velünk a kapcsolatot.
Specifikációk:
Tápfeszültség: 5 V (táp tű)
Áramfelvétel (Flash LED kikapcsolva): 180 mA 5 V-on
Áramfelvétel (Flash LED bekapcsolva, maximális fényerő): 310 mA 5 V-on
Áramfelvétel (Deep-sleep): 6 mA 5 V-on, minimum
Áramfelvétel (Modem-sleep): 20 mA 5 V-on, minimum
Áramfelvétel (Light-sleep): 6.7 mA 5 V-on, minimum
Lábak száma: 16
I/O portok: 9
WiFi: 802.11 b/g/n
Bluetooth: 4.2 LE
CPU: Dual core 32 bit, Xtensa LX6
CPU frekvencia: 80 - 240 MHz
Számítási teljesítmény: akár 600 DMIPS
Beépített memória: 520 KB SRAM
Külső memória: 4 MB PSRAM
Támogatott protokollok: UART / SPI / I2C / PWM / ADC / DAC
Tartalmazott kamera: Igen, OV5640, 5 MP
Kamera csatlakozó: FPC
Képformátumok: JPEG, BMP, grayscale
Képfeltöltés WiFi-n keresztül támogatott: Igen
TF kártya támogatás: Igen, akár 4 GB
Alacsony fogyasztású módok: Deep-sleep, Modem-sleep, Light-sleep
Integrált szoftver stack: LwIP és FreeRTOS
Működési módok: STA / AP / STA+AP
Smart Config / AirKiss támogatás: Igen
FOTA támogatás: Igen
SPI Flash: 32 Mbit
PSRAM: 4 Mbit
Programozó: CH340G
Programozó csatlakozó: Type-C
Méretek: 42 x 27 x 12 mm
Elrendezés:

| Elem | Funkció |
|---|---|
| OV5640 kamera (az ESP32-CAM panelen) | 5 MP-es optikai szenzor, FPC szalagkábel арқылы csatlakoztatva a panelhez. |
| microSD kártyahely (az ESP32-CAM panelen) | Helyi képtárolás, legfeljebb 4 GB-os TF kártya. |
| Flash LED (az ESP32-CAM panelen) | Megvilágító LED, GPIO4 vezérli. |
| Reset gomb (az ESP32-CAM panelen) | Az ESP32 mikrokontroller újraindítása. |
| 5V lábsor (az ESP32-CAM panelen) | Táplálás és a microSD kártya által használt lábak, 5V, GND, IO12, IO13, IO15, IO14, IO2, IO4 jelöléssel. |
| 3V3 lábsor (az ESP32-CAM panelen) | 3.3 V kimeneti lábak, GPIO és UART, 3V3, IO16, IO0, GND, VCC, U0R, U0T, GND jelöléssel. |
| Download / IO0 gomb (a CH340G modulon) | Az GPIO0-t GND-re köti, hogy az ESP32-CAM panel kódfeltöltési módba induljon. |
| Tápjelző (a CH340G modulon) | LED, amely világít, amikor a modul USB-n keresztül tápot kap. |
| Micro USB interfész (a CH340G modulon) | Csatlakozás számítógéphez tápellátás és soros kommunikáció céljából. |
| Reset gomb (a CH340G modulon) | Az adapterre csatlakoztatott ESP32-CAM panel újraindítása. |
| CH340G áramkör (a CH340G modulon) | USB-soros átalakító, biztosítja a UART kommunikációt a számítógéppel. |
| ESP32-CAM csatlakozó (a CH340G modulon) | Két anya csatlakozó, amelyekbe az ESP32-CAM panel illeszkedik, a 5V, GND, U0R, U0T és IO0 lábak a CH340G áramkörhöz kapcsolva. |
Pinout:

| Csatlakozó | Pin | Funkció |
|---|---|---|
| Bal oldali lábsor | 5V | Panel tápellátása, 5 V, ajánlott legalább 2 A |
| Bal oldali lábsor | GND | Föld |
| Bal oldali lábsor | IO12 (GPIO12) | SD kártya Data2, HSPI_Q, ADC2_5, MTDI strapping pin |
| Bal oldali lábsor | IO13 (GPIO13) | SD kártya Data3, HSPI_ID, ADC2_4 |
| Bal oldali lábsor | IO15 (GPIO15) | SD kártya CMD, HSPI_CS0, ADC2_3, MTDO strapping pin |
| Bal oldali lábsor | IO14 (GPIO14) | SD kártya CLK, HSPI_CLK, ADC2_6, MTMS strapping pin |
| Bal oldali lábsor | IO2 (GPIO2) | SD kártya Data0, HSPI_WP, ADC2_2, strapping pin |
| Bal oldali lábsor | IO4 (GPIO4) | SD kártya Data1, HSPI_HD, ADC2_0, a flash LED vezérlése |
| Jobb oldali lábsor | 3V3 | 3.3 V kimenet a panel feszültségszabályzójáról |
| Jobb oldali lábsor | IO16 (GPIO16) | U2_RXD, PSRAM-hoz Chip Selectként is használva |
| Jobb oldali lábsor | IO0 (GPIO0) | Indítási mód kiválasztása, LOW resetkor kódfeltöltési módhoz, a kamera XCLK-jeként is használva |
| Jobb oldali lábsor | GND | Föld |
| Jobb oldali lábsor | VCC | P_OUT kimenet, 3.3 V vagy 5 V, a panelt ezen a lábon keresztül nem szabad táplálni |
| Jobb oldali lábsor | U0R (GPIO3) | UART0 RX, adatfogadás, programozáskor használva |
| Jobb oldali lábsor | U0T (GPIO1) | UART0 TX, adatküldés, programozáskor használva |
| Jobb oldali lábsor | GND | Föld |
Használat:
Szerelje fel az ESP32-CAM panelt a CH340G programozó modulra úgy, hogy a két panel 5V, GND, U0R, U0T és IO0 lábai egymásra essenek, vagy csatlakoztassa őket külön vezetékekkel, ha más USB-soros átalakítót használ.
Lássa el az egységet stabil 5 VDC táppal, legalább 2 A-rel, az ESP32-CAM panel 5V és GND lábára kötve, például egy hálózati adapterrel DC csatlakozóval és egy csavaros DC-sorkapcsos adapterrel. Ne táplálja a panelt a soros USB-átalakító 3.3 V kimenetéről, és ne használja a VCC lábat tápbemenetként, mert az kimenet.
Szereljen hűtőbordát az OV5640 kamera hátoldalára, szalaggal vagy hővezető paddal rögzítve, és biztosítson megfelelő szellőzést a panel körül, mivel az OV5640 kamera működés közben erősen felmelegszik, ami ennél a panel-kamera kombinációnál normális viselkedés, nem hiba. Kerülje a modul használatát zárt házban, légáramlás nélkül, és kerülje a hosszú ideig tartó folyamatos streamelést.
Töltse le és telepítse az operációs rendszerének megfelelő CH340G drivert a termékoldal Download szekciójából, mivel a panel nem biztos, hogy kompatibilis a CH340 2023-as legújabb illesztőprogram-verziójával.
Az Arduino IDE-ben adja hozzá az ESP32 panelek támogatását a File -> Preferences menüben az Additional Boards Manager URLs mezőbe beírva a https://dl.espressif.com/dl/package_esp32_index.json, címet, majd telepítse az "esp32 by Espressif Systems" csomagot a Tools -> Board -> Boards Manager menüből.
Válassza az "AI Thinker ESP32-CAM" panelt a Tools -> Board -> ESP32 menüben, és nyissa meg a CameraWebServer példát a File -> Examples -> ESP32 -> Camera útvonalon.
A kódban hagyja aktívan a CAMERA_MODEL_AI_THINKER definíciót, és töltse ki a WiFi hálózat nevét és jelszavát az ssid és password változókban.
Készítsen elő egy anya-anya Dupont kábelt a program feltöltése előtt, hogy szükség esetén össze tudja kötni a GPIO0-t a GND-vel.
A kód feltöltéséhez tartsa lenyomva a CH340G modul Download gombját a feltöltés indításakor, vagy ha a modulon nincs ilyen gomb, kösse a GPIO0-t GND-re egy Dupont vezetékkel, táplálja a panelt, töltse fel a kódot, majd bontsa a kapcsolatot és kapcsolja újra a panelt, hogy visszatérjen a normál működéshez.
Ha a kód feltöltése nem sikerül, ellenőrizze, hogy a Tools -> Flash Mode menüben a DIO Flash Mode van-e kiválasztva, majd próbálja újra.
A megerősítő üzenet után nyomja meg a Reset gombot, nyissa meg a Soros monitort 115200 baudon, és várja meg a WiFi hálózathoz való csatlakozást; az IP-cím és a szerver portjai az ablakban jelennek meg, ahogy az alább látható.
Nyisson meg egy böngészőt, és lépjen a Soros monitorban megjelenő IP-címre, majd a szerver portjára, hogy lássa az élő videófolyamot és beállítsa a kamera paramétereit, a lenti képhez hasonló oldalon.
Folyamatos streameléshez válasszon alacsonyabb felbontást, például SVGA-t vagy HD-t, és a JPEG formátumot, a maximális felbontást pedig csak egyedi fényképekhez használja.
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, hogy csökkentse a kamera melegedését és fogyasztását.
Ha a panel autofókuszos kamera változattal van felszerelve, az automatikus fókuszáláshoz 3.3 V szükséges a kamera csatlakozójának 24-es lábán, valamint egy dedikált könyvtár. Ennek a tápellátásnak és könyvtárnak a hiányában a kamera fix fókuszsal működik.
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].
/*
ESP32-CAM OV5640 5MP - camera self test
Board: AI Thinker ESP32-CAM (Tools > Board > ESP32 > AI Thinker ESP32-CAM)
Board package: esp32 by Espressif Systems, installed from Boards Manager
Additional Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json
Libraries: none to install separately, esp_camera.h is part of the esp32 board package
Wiring: power the board on the 5V and GND pins with a stable 5V / 2A supply,
program it through U0R, U0T, IO0 and GND using the included ESP32-CAM-MB CH340G programmer
This sketch does not use WiFi, it only checks that the OV5640 camera initializes
and captures frames correctly, printing the result on the Serial Monitor
*/
#include "esp_camera.h"
// Camera pin map for the AI Thinker ESP32-CAM board
#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
#define FLASH_LED_GPIO_NUM 4
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("ESP32-CAM OV5640 self test starting");
// Keep the flash LED off during the test
pinMode(FLASH_LED_GPIO_NUM, OUTPUT);
digitalWrite(FLASH_LED_GPIO_NUM, LOW);
// Report whether PSRAM is detected, required for larger frame buffers
if (psramFound()) {
Serial.println("PSRAM detected");
} else {
Serial.println("PSRAM not detected, using smaller frame size");
}
// Camera configuration structure
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_sccb_sda = SIOD_GPIO_NUM;
config.pin_sccb_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_SVGA : FRAMESIZE_QVGA;
config.jpeg_quality = 12;
config.fb_count = psramFound() ? 2 : 1;
// Initialize the camera and report the result
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init FAILED with error 0x%x\n", err);
} else {
Serial.println("Camera init OK");
}
}
void loop() {
// Capture one frame every 5 seconds and print its size
camera_fb_t *fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Capture failed, no frame buffer");
} else {
Serial.printf("Frame captured: %u x %u pixels, %u bytes JPEG\n",
fb->width, fb->height, fb->len);
esp_camera_fb_return(fb);
}
delay(5000);
}
Az ESP32-CAM fejlesztőpanel 5 MP-es OV5640 kamerával egy teljes értékű ESP32 fejlesztőpanel, amelyen mikrovezérlő, kamera, microSD kártyafoglalat és antenna kapott helyet ugyanazon a panelen. Videostreaming, megfigyelés, eseményvezérelt fényképezés és más IoT projektek számára készült, amelyeknél a képet WiFi-n keresztül kell eljuttatni egy telefonra, számítógépre vagy helyi szerverre.
Mivel ESP32 panelről van szó, a bemutató közvetlenül az ESP32-CAM panelt használja, amelyet az Arduino IDE-ben "AI Thinker ESP32-CAM" néven programozunk a készletben található CH340G programozómodullal együtt. Másik fejlesztőpanelre nincs szükség.

Hogyan működik:
Az OV5640 kamera a képet 8 bites párhuzamos buszon (D0-D7 lábak) küldi az ESP32-nek, a PCLK, VSYNC és HREF szinkronjelek, valamint az I2C-kompatibilis SCCB busz (SIOD/SIOC) kíséretében, amelyen keresztül a mikrovezérlő beállítja az érzékelő felbontását, expozícióját és fehéregyensúlyát. Az ESP32 a képkockákat a külső 4 MB-os PSRAM memóriába olvassa be, a beépített hardveres kódolóval JPEG formátumba tömöríti, majd egy WiFi-n elindított HTTP szerveren keresztül teszi elérhetővé a routertől kapott IP-címen.
A kódban választott felbontás, például SVGA (800x600) vagy VGA (640x480), meghatározza az egyes JPEG képkockák méretét, így a WiFi-n keresztüli átviteli sebességet is. Ezért folyamatos videófolyamhoz kisebb felbontást használunk, az OV5640 érzékelő maximális, 2592x1944 (5 MP) felbontását pedig csak különálló fényképekhez.
Csatlakoztatás:
Az ESP32-CAM panelt külön tápláljuk 5 V-ról, a programozás pedig a CH340G programozómodulon keresztül történik, amely a panel soros lábait a számítógép USB portjához köti.
| Termék lába | Ide csatlakozik | Szerep |
|---|---|---|
| 5V | A DC-terminál adapter + kimenete, amelyet az 5 VDC 2 A tápegység táplál | Az ESP32-CAM panel tápellátása |
| GND (az 5V mellett) | A DC-terminál adapter - kimenete | A tápellátás földje |
| IO0 | IO0 a CH340G programozómodulon | A kódfeltöltési mód kiválasztása |
| GND (az U0T mellett) | GND a CH340G programozómodulon | Közös föld a programozóval |
| U0R | U0R a CH340G programozómodulon | Soros adatfogadás (RX) |
| U0T | U0T a CH340G programozómodulon | Soros adatküldés (TX) |
A panel teljes elektronikája 3.3 V-on működik, a CH340G programozómodul pedig ugyanezt a logikai szintet használja a soros lábakon, ezért a két panel között nincs szükség szintillesztőre. Az ESP32-CAM panel VCC lába 3.3 V-os vagy 5 V-os kimenet, és nem szabad a panel táplálására használni. Az OV5640 kamera stabil működéséhez kötelező az 5 V-os, legalább 2 A-es tápellátás. A számítógép USB adaptere gyakran nem elegendő a normál üzemhez, bár ideiglenesen, csak programozásra használható.
Panel és könyvtárak:
Válassza ki az "AI Thinker ESP32-CAM" panelt a Tools > Board menüből, miután telepítette az "esp32 by Espressif Systems" csomagot a Tools > Board > Boards Manager menüpontból. Ha a csomag nem jelenik meg a listában, adja hozzá a https://dl.espressif.com/dl/package_esp32_index.json címet a File > Preferences ablakban, az Additional Boards Manager URLs mezőben.
Nem kell további könyvtárat telepíteni a Library Managerből. Az esp_camera.h, a WiFi.h és a WebServer.h könyvtárak a fent telepített esp32 csomag részei.
A kód:
A kód inicializálja a kamerát az AI Thinker modell lábkiosztásával, csatlakozik a WiFi hálózathoz, és elindít egy egyszerű HTTP szervert egy főoldallal és egy címmel, ahonnan JPEG formátumú fénykép tölthető le.
/*
ESP32-CAM OV5640 5MP - simple snapshot web server
Board: AI Thinker ESP32-CAM (install package "esp32 by Espressif Systems" from Boards Manager,
Additional Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json)
Libraries: none to install separately, esp_camera.h, WiFi.h and WebServer.h are part of the esp32 board package
Wiring: camera and microSD pins are fixed on board, programming uses U0R, U0T, IO0 and GND
through the included ESP32-CAM-MB CH340G programmer, power is supplied on the 5V/GND pins
*/
#include "esp_camera.h"
#include <WiFi.h>
#include <WebServer.h>
// Camera pin map for the AI Thinker ESP32-CAM board
#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
#define FLASH_LED_GPIO_NUM 4
// WiFi credentials, replace with your own network
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
WebServer server(80);
// Serve a simple HTML page with a link to the snapshot
void handleRoot() {
String html = "<html><body><h1>ESP32-CAM OV5640</h1>";
html += "<p><a href=\"/capture\">Get snapshot</a></p></body></html>";
server.send(200, "text/html", html);
}
// Capture one JPEG frame and send it to the browser
void handleCapture() {
camera_fb_t *fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Camera capture failed");
server.send(503, "text/plain", "Camera capture failed");
return;
}
server.sendHeader("Content-Disposition", "inline; filename=capture.jpg");
server.send_P(200, "image/jpeg", (const char *)fb->buf, fb->len);
esp_camera_fb_return(fb);
Serial.printf("Snapshot sent, size %u bytes\n", fb->len);
}
void setup() {
Serial.begin(115200);
Serial.println();
// Flash LED pin kept off at startup
pinMode(FLASH_LED_GPIO_NUM, OUTPUT);
digitalWrite(FLASH_LED_GPIO_NUM, LOW);
// Camera configuration structure
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_sccb_sda = SIOD_GPIO_NUM;
config.pin_sccb_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;
// Use a larger frame and double buffering when PSRAM is available
if (psramFound()) {
config.frame_size = FRAMESIZE_SVGA;
config.jpeg_quality = 12;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_VGA;
config.jpeg_quality = 15;
config.fb_count = 1;
}
// Initialize the camera
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");
// Connect to WiFi
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());
// Register HTTP routes and start the server
server.on("/", handleRoot);
server.on("/capture", handleCapture);
server.begin();
Serial.println("HTTP server started");
Serial.println("Open the IP address above in a browser, then click Get snapshot");
}
void loop() {
server.handleClient();
}
Hogyan működik a kód:
A fájl elején a kamera lábainak konstansai vannak definiálva: PWDN_GPIO_NUM, RESET_GPIO_NUM, XCLK_GPIO_NUM, SIOD_GPIO_NUM, SIOC_GPIO_NUM, Y2_GPIO_NUM-Y9_GPIO_NUM, VSYNC_GPIO_NUM, HREF_GPIO_NUM és PCLK_GPIO_NUM, az AI Thinker panelen használt rögzített értékekkel, továbbá a FLASH_LED_GPIO_NUM a GPIO4-en lévő LED-hez. Az ssid és password változókat a WiFi hálózat adataival kell kitölteni, a WebServer típusú server objektum pedig a 80-as porton jön létre.
A setup függvényben, a soros kommunikáció elindítása után, a camera_config_t struktúra feltöltődik a kamera lábaival, a PIXFORMAT_JPEG képformátummal, valamint a psramFound eredményétől függően FRAMESIZE_SVGA felbontással és két képkocka-pufferrel, ha a panelen van PSRAM, ellenkező esetben FRAMESIZE_VGA felbontással és egyetlen pufferrel. Az esp_camera_init függvény elindítja a kamerát, hiba esetén pedig az üzenet megjelenik a Serial-on. Ezután a WiFi.begin segítségével csatlakozik a WiFi-hez, ciklusban várakozik, amíg a WiFi.status értéke WL_CONNECTED nem lesz, majd a server.begin elindítása előtt regisztrálja a két útvonalat: a handleRoot a főoldalhoz, a handleCapture pedig a fényképhez tartozik.
A handleCapture függvény új képkockát kér az esp_camera_fb_get segítségével, a server.send_P-vel elküldi a böngészőnek image/jpeg típussal, majd az esp_camera_fb_return-nel felszabadítja a képkocka memóriáját. A loop függvényben a server.handleClient hívása folyamatosan történik, hogy válaszoljon a HTTP-n érkező kérésekre.
Eredmény:
A Soros Monitoron, 115200 baud sebességnél, látható a WiFi hálózathoz való csatlakozás és a panel által kapott IP-cím, majd a HTTP szerver elindulásának megerősítése. Ha egy böngészőben megnyitjuk a kiírt IP-címet a /capture végződéssel, letöltődik egy fénykép, amelyet az OV5640 kamera abban a pillanatban készített.
Camera initialized
Connecting to WiFi.......
WiFi connected, IP address: 192.168.0.115
HTTP server started
Open the IP address above in a browser, then click Get snapshot
Snapshot sent, size 48213 bytes
Snapshot sent, size 51042 bytes
Gyakori problémák:
Semmi sem jelenik meg a Soros Monitoron: ellenőrizze, hogy a Soros Monitorban a kiválasztott sebesség 115200 baud, és hogy a programozómodul helyesen van csatlakoztatva, az U0R és az U0T nincs felcserélve.
A kód feltöltése csatlakozási vagy szinkronizálási hibaüzenettel meghiúsul: tartsa nyomva a Download gombot, vagy kösse a GPIO0 lábat a GND-re a feltöltés megkezdése előtt, és ellenőrizze, hogy a Tools > Flash Mode menüben a Flash Mode DIO van kiválasztva.
A kamera nem indul el, és inicializálási hiba jelenik meg a Serial-on: ellenőrizze az 5 V-os, legalább 2 A-es tápellátást, mert egy gyenge tápegység újraindulásokat (brownout) okoz a kamera inicializálásakor.
A kép fehér, sötét vagy csíkos: hagyja a kamerát néhány másodpercig automatikusan beállítani az expozíciót és a fehéregyensúlyt, és ellenőrizze, hogy a kamera FPC szalagkábele helyesen van a csatlakozóban.
A panel magától újraindul streaming közben: csökkentse a felbontást és a JPEG minőségét a kódban, és ellenőrizze ismét a tápegységet, mert a 300 mA feletti csúcsfogyasztás gyenge tápegységgel ismétlődő újraindulásokat okoz.
A kamera tapintásra nagyon forró: ez az OV5640 érzékelő normális viselkedése, de feltétlenül szereljen hűtőbordát a hátoldalára, és kerülje a hosszú ideig tartó folyamatos streamelést.
Korlátok és tippek:
Az OV5640 érzékelő 5 MP-es maximális felbontása fényképekhez hasznos, folyamatos streaminghez nem, ahol a WiFi-n keresztüli átviteli sebesség és a PSRAM memória gyakorlatilag SVGA vagy HD felbontásra korlátozza a képet. A modul nem ajánlott megszakítás nélküli 24/7 működésre, az időszakos felvételeket készítő projektekben pedig érdemes a kamerát a képek között a GPIO32 segítségével kikapcsolni, hogy csökkenjen a melegedés és a fogyasztás. Ebből a kódból kiindulva a panel bővíthető mentéssel a microSD kártyára, mozgásérzékeléssel egy külső PIR érzékelővel az egyik szabad lábon, vagy beépíthető egy nagyobb, több ESP32-CAM kamerát használó megfigyelőrendszerbe.