ESP32-CAM fejlesztőkártya CH340G-vel, WIFI-vel, Bluetooth-szal
zoom_out_map
chevron_left chevron_right

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.

91,61 lei Adóval együtt

75,71 lei Áfa nélkül

(4/5) kívül 9 összes értékelés
Olvasd el a véleményeket
1-2 zile

Tegye mellé a hozzá illő tartozékokat is

  • Részletek

A termékkel együtt, azonos mennyiségben kerül a kosárba.

check In Stoc

Shipping by szerda 11 november

A termék megvásárlásával jár 4,58 lei hűségpont.

Jótállás: 24 hónap magánszemélyeknek
NEMZETKÖZI SZÁLLÍTÁS
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.
GYORS KISZÁLLÍTÁS 24 ÓRÁN BELÜL
24 órán belül szállítunk raktárunkból
HŰSÉGPONTOK
Minden rendelés után pontokat kap, a rendelés értékének 5%-ában.

Az ESP32-CAM fejlesztőpanel egyetlen modulon ötvözi az ESP32 WiFi- és Bluetooth-képes processzort, valamint a FPC csatlakozón keresztül flexibilis kábellel kapcsolt, 5 MP-es OV5640 kamerát. Komplett megoldást kínál képrögzítési és képtovábbítási feladatokhoz mesterséges látási projektekben, video streamingben és IoT alkalmazásokban. A panel önállóan is működhet, képeket és videófolyamokat küldve hálózaton keresztül WiFi-n, vagy programozható úgy is, hogy UART-on érkező parancsokra reagáljon, így alkalmas megfigyelésre, tárgyfelismerésre, távfelügyeletre és automatizált fényképezésre.

A panelhez dedikált programozó is tartozik, CH340 vagy FT232 interfésszel felszerelve (a gyártási tételtől függően), USB Type-C porttal.

A processzor egy 32 bites, kétmagos ESP32 LX6, 80 és 240 MHz közötti órajellel é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óra kapcsolódik. A modul támogatja a WiFi 802.11 b/g/n szabványt, a Bluetooth 4.2 LE-t, a JPEG, BMP vagy grayscale formátumú képeket, valamint a Deep-sleep, Modem-sleep és Light-sleep alacsony fogyasztású módokat.

A főbb jellemzők közé tartozik a kamerához való FPC csatlakozó, a legfeljebb 4 GB-os microSD kártyahely, a vakuként használt fehér LED, a nyomtatott PCB antenna, a két soros tüskesor (összesen 16 pin), amely a tápellátást, a szabad GPIO-kat és az UART interfészt teszi elérhetővé, valamint egy RESET gomb. A tápellátás 5 VDC feszültséggel történik az 5V pinen, stabil, legalább 2 A-es tápegységgel; a panel 3.3 VDC-ről is táplálható a 3V3 pinen keresztül.

Az UART interfészen (U0T és U0R pinek) keresztül a panel programozása és tesztelése a számítógéphez csatlakoztatott USB-soros adapterrel történik, majd a hálózatra csatlakozás után a képek és a videófolyam közvetlenül bármely, ugyanazon helyi hálózatban lévő számítógép vagy telefon böngészőjéből elérhető. A megmaradó szabad GPIO-k lehetővé teszik további, Arduino, ESP32, STM32 vagy Raspberry Pi kompatibilis szenzorok és modulok csatlakoztatását, a panel 3.3 V-os logikai szintjét használva.

 

Specifikációk:

Placa%20dezvoltare%20ESP32-CAM,%20Wifi,%20Bluetooth,%20OV2640%202MP%20wiring.jpg

Tápfeszültség: 5 VDC (5V pin)

Á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

Pin-ek száma: 16

WiFi: 802.11 b/g/n

Bluetooth: 4.2 LE

CPU: Dual core LX6, 32 bites

CPU frekvencia: 80 - 240 MHz

Belső memória: 520 KB SRAM

Külső memória: 4 MB PSRAM

SPI Flash memória: 32 Mbit

Támogatott interfészek: UART, SPI, I2C, PWM, ADC, DAC

Tartozék kamera: OV5640, 5 MP, maximális felbontás 2592 x 1944 pixel

Kamera csatlakozó: FPC, 24 pin

Képfomátumok: JPEG, BMP, grayscale

Memóriakártya: microSD (TF), akár 4 GB

Alacsony fogyasztású módok: Deep-sleep, Modem-sleep, Light-sleep

Integrált szoftver stack: LwIP, FreeRTOS

Hálózati működési módok: STA / AP / STA+AP

Smart Config / AirKiss: Igen

FOTA frissítés: Igen

Tartozék programozó: Igen, Type-C csatlakozóval, CH340 vagy FT232 a tételtől függően

Méretek: 42 x 27 x 12 mm

 

FIGYELEM!

 Figyelmesen olvassa el a vásárlás előtt
OV5640 kamera (aktuális tétel)

Ez a modul OV2640 helyett OV5640 (5 MP) kamerával kerül szállításra, az OV2640 kamerák minőségi beszerzésével kapcsolatos problémák miatt. Az érzékelő működés közben erősen felmelegszik, és érintésre forró lehet. Ez a viselkedés normális ennél a panel-kamera kombinációnál, nem hiba.

A programozó CH340 vagy FT232 drivert használhat, a gyártási tételtől függően.

 

Kötelező használati feltételek:

Hűtőborda felszerelése a kamera hátoldalára, hővezető szalaggal vagy paddal.

Jó szellőzés; ne használja a modult zárt házban, légáramlás nélkül.

Stabil 5V-os tápegység, legalább 2A árammal, az 5V pinen. Ne táplálja a modult az USB-soros adapter 3.3V kimenetéről.

 

Az OV5640 kamera melegedésének csökkentése az ESP32-CAM panelen

Az ESP32-CAM (AI Thinker) panelt eredetileg az OV2640 kamerához tervezték, és a kamera csatlakozóját 3.3V-tal (DOVDD), 2.8V-tal (AVDD) és 1.2V-tal (DVDD) táplálja. Az OV5640 érzékelő azonban 1.5V-ot igényel a magon (DVDD). Ahhoz, hogy ebben a konfigurációban is működjön, az OV5640 alapértelmezetten bekapcsolja a belső 1.5V-os szabályozóját, amelyet a 3.3V-os feszültség táplál. A feszültségkülönbség hővé alakul közvetlenül az érzékelő belsejében, ezért a modul folyamatos működés során erősen melegszik. Körülbelül 50°C felett zaj és lila árnyalat jelenhet meg a képen. A megoldás a 1.2V-os szabályozó 1.5V-osra cserélése, majd a belső szabályozó szoftveres letiltása.

 

Szükséges

Szabályozó: XC6206P152MR vagy ME6206A15XG (1.5V, SOT-23)

Szerszámok: forrólevegős állomás, multiméter

OV5640 regiszter: 0x3031, 3. bit (érték: 0x08)

 

Használat

Csatlakoztassa le a kamerát, és táplálja a panelt 5V-tal.

Multiméterrel mérje meg a kamera csatlakozó közelében lévő SOT-23 szabályozók kimenetét egy GND pinhez viszonyítva, és azonosítsa azt, amelyik körülbelül 1.2V-ot ad. A 2.8V-os szabályozó és az AMS1117 (3.3V) nem módosítandó.

Jegyezze fel az azonosított szabályozó VIN (3.3V), VOUT (1.2V) és GND lábainak helyét.

Forrassza le az 1.2V-os szabályozót, és helyette szerelje be az 1.5V-os szabályozót, miután az adatlap alapján ellenőrizte, hogy a VIN, VOUT és GND lábak megfelelnek a padoknak.

Táplálja a panelt kamera nélkül, és ellenőrizze, hogy az új szabályozó kimenete 1.45V és 1.55V közé esik.

Csatlakoztassa vissza a kamerát, és a kódba, közvetlenül az esp_camera_init() után, illessze be a belső szabályozó letiltását (az alábbi példa szerint).

Ellenőrizze a Serial Monitorban, hogy a 0x3031 regiszter értéke 0x08.

Opcionálisan szereljen egy kis alumínium hűtőbordát a kamera modul hátoldalára, hővezető szalaggal rögzítve.

 

// OV5640: disable the internal 1.5V core regulator (register 0x3031, bit 3)

// Use ONLY when DVDD is supplied externally with 1.5V

sensor_t *s = esp_camera_sensor_get();

if (s->id.PID == OV5640_PID) {

  s->set_reg(s, 0x3031, 0x08, 0x08);

  Serial.printf("OV5640 reg 0x3031 = 0x%02X\n", s->get_reg(s, 0x3031, 0xFF));

}

 

A módosítás után a kamera minden tesztelt felbontáson helyesen működik, egészen 2560x1920-ig, és a modul hőmérséklete csökken. Ettől függetlenül hűtőborda továbbra is szükséges, mivel a kamera működés közben így is körülbelül 50 °C-ra melegszik.

 

Forrasztás nélküli alternatíva

Szereljen hűtőbordát a kamerára, használjon legfeljebb SVGA vagy HD felbontást a streamben, és két felvétel között helyezze a szenzort készenléti állapotba (0x3008 = 0x42 készenléthez, 0x02 aktívhoz).

 

Figyelem! Ne tiltsa le a belső szabályozót olyan panelen, amelyen nem történt módosítás, és amelyen DVDD-n 1.2V van. Az érzékelő magja a megadott minimális feszültség alatt működne, ami sérült képekhez és lefagyáshoz vezethet. Olyan panelen, amelyen nincs DVDD szabályozó, a letiltás a mag teljes tápellátás nélküli állapotát eredményezi.

Módosítás után a panel már nem alkalmas OV2640 kamerához, amely 1.2V-ot igényel a magon. A panelt ennek megfelelően jelölje meg. A módosítás SMD alkatrészek forrasztásában szerzett tapasztalatot igényel.

 

Elrendezés:

Elem Funkció
ESP32-S modul PCB antennával A kétmagos ESP32 processzor és a panelre nyomtatott WiFi / Bluetooth antenna.
Fehér LED Vakuként használható a kamerához, és a GPIO4 vezérli. Akkor világít, amikor a GPIO4 HIGH, és kialszik, amikor a GPIO4 LOW.
Piros státusz LED A panel hátoldalán található LED, a GPIO33 vezérli. Akkor világít, amikor a GPIO33 LOW, és szabad indikátorként használható a programban.
Kamera FPC csatlakozó 24 tűs csatlakozó, amelyhez az OV5640 kamera flexibilis kábele csatlakozik.
OV5640 kamera 5 MP-es kamera modul, külön a panelre szerelve és flexibilis kábellel csatlakoztatva.
microSD (TF) kártyafoglalat Helyi képtárolás és fájlok mentése, legfeljebb 4 GB-os kártyákkal. Az IO2, IO4, IO12, IO13, IO14 és IO15 pineket használja.
Két soros tüskesor (dupla header) A tápellátás, a szabad GPIO-k és az UART interfész kivezetése, összesen 16 pinnel.
IO0 pin Meghatározza az indítási módot. Ha reseteléskor GND-re van kötve (a mellette lévő GND pinre), a panel programbetöltő módba lép. Ha nincs összekötve, a panel a Flash memóriában lévő programot futtatja.
RESET gomb Lenullázza az ESP32 mikrokontrollert. Az IO0 GND-re kötése után megnyomva beléptet a betöltési módba, majd a híd eltávolítása után a program futtatására szolgál.
Feszültségszabályozó Az 5 V-os tápfeszültséget a panel áramköreihez szükséges 3.3 V-ra alakítja.
Rögzítőfuratok Két furat a tüskesorok között a panel rögzítéséhez.

 

Pinout:

Csatlakozó Pin Funkció
5V header 5V A panel tápellátása, 5 VDC
5V header GND Föld
5V header IO12 GPIO12, MicroSD DATA2-ként is használatos
5V header IO13 GPIO13, MicroSD DATA3-ként is használatos
5V header IO15 GPIO15, MicroSD CMD-ként is használatos
5V header IO14 GPIO14, MicroSD CLK-ként is használatos
5V header IO2 GPIO2, MicroSD DATA0-ként is használatos
5V header IO4 GPIO4, MicroSD DATA1-ként is használatos, vezérli a flash LED-et
3V3 header 3V3 A panel tápellátása, 3.3 VDC
3V3 header IO16 GPIO16, szabad vonal, lehet UART2 RX
3V3 header IO0 GPIO0, kiválasztja az indítási módot, GND-re kell kötni a program feltöltéséhez
3V3 header GND Föld
3V3 header VCC 3.3 V vagy 5 V kimenet, ezen a pinen keresztül nem szabad táplálni a panelt
3V3 header U0R (IO3) UART RX, soros adat vétel
3V3 header U0T (IO1) UART TX, soros adat továbbítás
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 szenzor számára
PCLK GPIO22 Pixel kimeneti órajel
VSYNC GPIO25 Képkocka függőleges szinkron
HREF GPIO23 Vízszintes sor szinkron
SIOD (SDA) GPIO26 I2C / SCCB, szenzor konfiguráció
SIOC (SCL) GPIO27 I2C / SCCB, szenzor konfiguráció
PWDN GPIO32 Szenzor kikapcsolása (power-down), HIGH a felvételek közötti kikapcsoláshoz

 

Használat:

Ha a kamera modul még nincs felszerelve, rögzítse a panel FPC csatlakozójára a kontaktusok helyes irányának betartásával, majd zárja le a csatlakozó rögzítőfülét.

Már az első használat előtt szereljen egy kis hűtőbordát hővezető szalaggal vagy paddal az OV5640 kamera hátoldalára, mert az érzékelő működés közben erősen felmelegszik, és érintésre forró lehet; ez a panel-kamera kombináció normális viselkedése.

Gondoskodjon megfelelő szellőzésről a modul körül, és ne használja zárt házban, légáramlás nélkül.

A panelt 5 VDC-vel, legalább 2 A-rel táplálja az 5V pinen, stabil tápegységgel, és ne táplálja a modult egy USB-soros adapter 3.3 V-os kimenetéről. Ne adjon feszültséget a VCC pinre, mivel az kimenet.

Programozáshoz csatlakoztasson egy FT232 vagy ezzel egyenértékű adaptert az U0R, U0T és GND pinekhez, az adapter 3.3 V-os jumperével, az adapter TXD-jét az U0R-hez, az RXD-jét az U0T-hez, valamint az adapter földjét a panel földjé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 CAMERA_MODEL_AI_THINKER kamera modellt, és adja meg a WiFi hálózat nevét és jelszavát.

Feltöltés előtt ideiglenesen kösse az IO0 pin-t GND-re, nyomja meg a RESET gombot, majd töltse fel a programot.

Feltöltés után távolítsa el az IO0 és GND közötti összekötést, majd nyomja meg ismét a RESET-et. Nyissa meg a Serial Monitort 115200 baud sebességgel, jegyezze fel a megjelenő IP-címet, majd írja be egy ugyanazon hálózaton lévő számítógép vagy telefon böngészőjébe.

Folyamatos streamhez válassza a JPEG formátumot és kisebb felbontást (SVGA vagy HD), a maximális felbontást pedig csak fényképekhez használja. Ha időszakos képkészítést végez, két kép között helyezze a szenzort kikapcsolt állapotba a GPIO32 HIGH szintre állításával.

Ha microSD kártyát használ, vegye figyelembe, hogy az IO2, IO4, IO12, IO13, IO14 és IO15 pinek a kártyához vannak rendelve, és az IO4 a fehér LED-et is vezérli.

A modul nem ajánlott 24 órás folyamatos streameléshez. A stabil működéshez használjon jó minőségű tápegységet, rövid tápkábeleket, és erős WiFi jelet azokon a helyeken, ahol a panelt használja.

 

Méretrajz:

 

Útmutató:

ESP3232-cam%20ESPCAM%20wiring%20programator%20ft232.png

9264
Tápfeszültség
5 V DC
Méretek
42 x 27 x 12 mm
Tűk száma
16
Interfész
UART, SPI, I2C, PWM, ADC, DAC
Flash memória
32 Mbit SPI
Fogyasztás
180 mA / 310 mA
Processzor
Dual core LX6, 32 bites
WiFi
802.11 b/g/n
Bluetooth
4.2 LE
Készenléti fogyasztás
6 mA
SRAM memória
520 KB
Processzor órajele
80-240 MHz
Memóriakártya-foglalat
microSD (TF), legfeljebb 4 GB

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 selected in Arduino IDE: "AI Thinker ESP32-CAM" (Tools > Board > esp32)
  Board package: esp32 by Espressif Systems (installed from Boards Manager)
  Boards Manager URL (File > Preferences): https://dl.espressif.com/dl/package_esp32_index.json
  Libraries: none to install, esp_camera.h comes with the esp32 package
  Wiring: camera attached to the onboard FPC connector, board powered at 5 V (min 2 A) on the 5V pin,
          FT232 TXD -> U0R, FT232 RXD -> U0T, FT232 GND -> GND, IO0 bridged to GND only during upload
  This sketch does not use WiFi. It checks that the camera starts and reports the frame size.
*/

#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

bool cameraReady = false;

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;
  // SVGA keeps the sensor cooler than the maximum resolution
  config.frame_size = psramFound() ? FRAMESIZE_SVGA : 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;
  }

  sensor_t *s = esp_camera_sensor_get();
  Serial.printf("Camera init OK, sensor PID: 0x%04X\n", s->id.PID);
  cameraReady = true;
}

void loop() {
  if (!cameraReady) {
    delay(1000);
    return;
  }

  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",
                  (unsigned)fb->width, (unsigned)fb->height, (unsigned)fb->len);
    esp_camera_fb_return(fb);
  }
  delay(5000);
}

Az ESP32-CAM kártya 5 MP-es OV5640 kamerával egy beépített kamerával rendelkező ESP32 modul, amely további alkatrészek nélkül képes képeket rögzíteni és WiFi-n keresztül továbbítani. Felügyeleti rendszerekben, távoli megfigyelésben, automatikus fényképezésben és képfelismerési projektekben használják.

A tutorial a AI-Thinker ESP32-CAM kártyát használja platformként, amelyet az Arduino IDE-ből programozunk. A kártyának nincs USB portja, ezért a programot egy FT232RL USB-soros adapterrel töltjük fel, a tápellátás pedig külön, legalább 2 A-es 5 VDC tápegységről történik. A program elindítja a kamerát, és egy egyszerű webszerveren keresztül videofolyamot szolgáltat.

ESP32-CAM fejlesztőkártya, Wifi, Bluetooth, OV5640 5MP

Hogyan működik:

Az OV5640 szenzor rögzíti a képet, és 8 párhuzamos adatvonalon (D0 - D7) küldi az ESP32-nek, amelyeket az XCLK (a szenzornak adott órajel), a PCLK (a pixelek órajele), a VSYNC (képkocka kezdete) és a HREF (érvényes sor) jelek szinkronizálnak. A szenzor konfigurálása, vagyis a felbontás, az expozíció és a fehéregyensúly beállítása I2C / SCCB buszon történik a SIOD (GPIO26) és SIOC (GPIO27) vonalakon. A PWDN (GPIO32) láb leállíthatja a szenzort, ha nincs használatban.

Az alábbi számítás megmutatja, miért tömörítik a képet JPEG formátumba közvetlenül a szenzorban. A maximális felbontás 2592 x 1944 = 5 038 848 pixel. Pixelenként 2 bájttal (RGB565 formátum) egy képkocka valamivel több mint 10 MB lenne (10 077 696 bájt), ami meghaladja a kártya 4 MB-os PSRAM-ját. JPEG formátumban egy képkocka sokkal kevesebb helyet foglal, így könnyen elfér a memóriában.

SVGA felbontáson (800 x 600 = 480 000 pixel) egy JPEG képkocka a jelenettől és a kódban beállított minőségtől függően körülbelül 10 - 40 KB. Saját teszteinkben a 12-es minőségnél a képkockánkénti átlag körülbelül 13 KB volt. Ha a WiFi-hálózat a gyakorlatban 400 KB/s sebességet biztosít, és egy képkocka 40 KB, akkor 400 / 40 = 10 képkocka másodpercenként. A HD felbontás felett a szenzor csak 4 - 6 képkocka/másodperc sebességet ad 20 MHz-es XCLK órajellel. A maximális felbontás ezért az egyedi fényképekre marad fenn, a videofolyamhoz pedig az SVGA vagy a HD felbontást érdemes választani. Az esp32-camera könyvtár maximális felbontásként QSXGA-t, 2560 x 1920 pixelt kínál, ami kicsit kevesebb, mint a szenzor 2592 x 1944 pixeles felbontása.

Csatlakoztatás:

A kártyát külön, legalább 2 A-es 5 VDC tápegységről kell táplálni az 5V lábon. Ne az USB-soros adapterről táplálja, mert az adapter és az USB-port nem biztosítja az OV5640 kamera és a WiFi együttes csúcsáramát, az adapter 3.3 V-os kimenete pedig nem alkalmas erre a kártyára. Az FT232RL adapter VCC lába nincs bekötve, az adapter jumperét 3.3 V-ra állítsa, hogy a TXD és RXD jelek az ESP32 GPIO-inak 3.3 V-os logikai szintjével egyezzenek. A soros vonalak keresztben vannak kötve: az adapter TXD lába az U0R-re, az adapter RXD lába az U0T-re megy. Az IO0 és GND közötti hidat csak a program feltöltése idejére helyezze be.

Termék lába Csatlakozik ide Szerep
5V 5 VDC tápegység, + kivezetés A kártya tápellátása, legalább 2 A
GND (5V fejléc) 5 VDC tápegység, - kivezetés A tápellátás földelése
U0R (GPIO3) FT232 TXD Soros adatfogadás a kártyán
U0T (GPIO1) FT232 RXD Soros adatküldés a kártyáról
GND (U0T mellett) FT232 GND Közös föld az adapterrel
IO0 GND (az IO0 melletti láb) Ideiglenes híd a programfeltöltési módhoz

Az ESP32-CAM AI-Thinker csatlakoztatása FT232RL adapterhez és 5V 2A tápegységhez programozáshoz

Az alábbi kép a kártya FT232 programozóhoz való csatlakoztatását mutatja.

ESP3232-cam%20ESPCAM%20bekötés%20programozó%20ft232.png

Gombok, beállítások és jelzőfények:

Elem Mire való Hogyan használjuk
RESET gomb Alaphelyzetbe állítja az ESP32 mikrovezérlőt. Rövid nyomással használja az IO0 GND-re kötése után a feltöltési módba lépéshez, majd a híd eltávolítása után a program futtatásához.
IO0 - GND híd Kiválasztja az indítási módot. Reset közben bedugva a kártya programra vár. Reset közben kihúzva a kártya a Flash-ből futtatja a programot.
Fehér LED (vaku) A kamera jelenetét világítja meg, a GPIO4 vezérli. Akkor világít, ha a GPIO4 HIGH. A tutorial programjában kikapcsolva marad.
Piros állapotjelző LED A kártya hátoldalán lévő jelzőfény, a GPIO33 vezérli. Akkor világít, ha a GPIO33 LOW. A tutorial programja nem használja.

Feltöltéshez kösse az IO0-t GND-re, nyomja meg a RESET gombot, majd töltse fel a programot. A kártya helyes módba került, ha az Arduino IDE a feltöltést csatlakozási hiba nélkül elindítja.

Feltöltés után távolítsa el az IO0 és GND közötti hidat, majd nyomja meg a RESET gombot. A kártya most a programot futtatja, és a Serial Monitorban megjelennek az indítási üzenetek.

A fehér LED a programban kikapcsolva marad. Ha további megvilágításra van szüksége, vezérelje a GPIO4-et a kódból, de vegye figyelembe, hogy a maximális fényerőn égő LED körülbelül 130 mA-rel növeli a fogyasztást. Saját méréseink szerint az OV5640 kamerás kártya körülbelül 340 - 360 mA-t fogyasztott 5 V-on, a kamera aktív és a LED kikapcsolt állapotában.

Kártyacsomag és könyvtárak:

Az Arduino IDE-ben lépjen a File - Preferences menübe, és az Additional Boards Manager URLs mezőbe írja be a https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json címet. Ezután nyissa meg a Tools - Board - Boards Manager menüpontot, keresse meg az esp32 csomagot, és telepítse az esp32 by Espressif Systems csomagot egy friss, 2.0.x vagy újabb verzióban.

A telepítés után válassza ki az AI Thinker ESP32-CAM kártyát a Tools - Board - esp32 menüből. Az alábbi képernyőképek a beállítás lépéseit mutatják az Arduino IDE-ben.

A Library Manager-ből nem kell könyvtárat telepíteni, mert az esp_camera.h és a WiFi.h az esp32 by Espressif Systems csomaggal együtt érkezik.

A kód:

A program a AI-Thinker kártya lábkiosztásával inicializálja a kamerát, csatlakozik a WiFi-hálózathoz, és a 80-as porton csatlakozó kliensnek JPEG videofolyamot küld. A feltöltés előtt cserélje ki a hálózat nevét és jelszavát.

/*
  ESP32-CAM (AI-Thinker) with OV5640 5MP camera - WiFi MJPEG video stream
  Board selected in Arduino IDE: "AI Thinker ESP32-CAM" (Tools > Board > esp32)
  Board package: esp32 by Espressif Systems (installed from Boards Manager)
  Boards Manager URL (File > Preferences): https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  Libraries: none to install, esp_camera.h and WiFi.h come with the esp32 package
  Upload wiring: FT232 TXD -> U0R, FT232 RXD -> U0T, FT232 GND -> GND,
                 5V supply (min 2 A) on the 5V pin, IO0 bridged to GND only during upload
*/
#include "esp_camera.h"
#include <WiFi.h>
// ---- Wi-Fi credentials (replace with your own) ----
const char* WIFI_SSID = "YOUR_WIFI_SSID";
const char* WIFI_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
// White flash LED on GPIO4 (also SD card DATA1)
#define FLASH_LED_GPIO_NUM 4
WiFiServer server(80);
// Configure and start the camera
bool startCamera() {
  camera_config_t config = {};          // start from a zeroed structure
  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;        // 20 MHz clock for the sensor
  config.pixel_format = PIXFORMAT_JPEG;  // the sensor compresses the image itself
  if (psramFound()) {
    config.frame_size = FRAMESIZE_SVGA;  // 800x600, a good balance for streaming
    config.jpeg_quality = 12;            // lower number = better quality, bigger file
    config.fb_count = 2;                 // two frame buffers for smoother streaming
    config.fb_location = CAMERA_FB_IN_PSRAM;
    config.grab_mode = CAMERA_GRAB_LATEST;  // always send the newest frame
    Serial.println("PSRAM found, using SVGA with 2 frame buffers");
  } else {
    config.frame_size = FRAMESIZE_CIF;
    config.jpeg_quality = 15;
    config.fb_count = 1;
    config.fb_location = CAMERA_FB_IN_DRAM;
    config.grab_mode = CAMERA_GRAB_WHEN_EMPTY;
    Serial.println("No PSRAM, using CIF with 1 frame buffer");
  }
  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x\n", err);
    return false;
  }
  // Read the sensor ID to confirm which camera is attached
  sensor_t *s = esp_camera_sensor_get();
  Serial.printf("Camera init OK, sensor PID: 0x%04X\n", s->id.PID);
  if (s->id.PID != OV5640_PID) {
    Serial.println("Warning: the attached sensor is not an OV5640");
  }
  return true;
}
// Read and ignore the HTTP request header sent by the browser
void skipRequest(WiFiClient &client) {
  unsigned long start = millis();
  while (client.connected() && millis() - start < 1000) {
    if (client.available()) {
      String line = client.readStringUntil('\n');
      if (line.length() <= 1) break;  // blank line ends the header
    }
  }
}
// Send frames to the client until it disconnects
void streamTo(WiFiClient &client) {
  client.print("HTTP/1.1 200 OK\r\n");
  client.print("Content-Type: multipart/x-mixed-replace; boundary=frame\r\n\r\n");
  Serial.println("Streaming started");
  uint32_t frames = 0;
  while (client.connected()) {
    camera_fb_t *fb = esp_camera_fb_get();  // get one JPEG frame
    if (!fb) {
      Serial.println("Frame capture failed");
      break;
    }
    size_t len = fb->len;
    client.print("--frame\r\n");
    client.print("Content-Type: image/jpeg\r\n");
    client.printf("Content-Length: %u\r\n\r\n", (unsigned)len);
    size_t sent = client.write(fb->buf, len);
    client.print("\r\n");
    esp_camera_fb_return(fb);               // give the buffer back to the driver
    if (sent != len) break;                 // client is gone
    frames++;
  }
  Serial.printf("Client disconnected after %u frames\n", (unsigned)frames);
}
void setup() {
  Serial.begin(115200);
  delay(500);
  Serial.println();
  Serial.println("ESP32-CAM OV5640 stream example");
  // Keep the white flash LED off
  pinMode(FLASH_LED_GPIO_NUM, OUTPUT);
  digitalWrite(FLASH_LED_GPIO_NUM, LOW);
  if (!startCamera()) {
    return;  // stop here if the camera did not start
  }
  // Connect to Wi-Fi
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  WiFi.setSleep(false);  // no Wi-Fi power saving, better for streaming
  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.print("Open http://");
  Serial.print(WiFi.localIP());
  Serial.println("/ in a browser to see the stream");
  server.begin();
}
void loop() {
  WiFiClient client = server.available();  // wait for a browser
  if (client) {
    Serial.println("Client connected");
    skipRequest(client);
    streamTo(client);
    client.stop();
  }
}

A kód működése:

Az első rész a definíciókat tartalmazza. A WIFI_SSID és WIFI_PASSWORD állandók a hálózat adatait tárolják, a PWDN_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 sorok írják le az ESP32 és a kameracsatlakozó közötti lábakat, megegyezően a leírás táblázatával. A FLASH_LED_GPIO_NUM értéke a GPIO4, a server objektum pedig a 80-as porton figyel.

A startCamera() függvény feltölti a camera_config_t struktúrát a kamera lábaival, a 20 MHz-es XCLK órajellel és a PIXFORMAT_JPEG formátummal. A struktúra üresen indul (= {}), így a be nem állított mezők nem tartalmaznak véletlen értékeket. Ha a psramFound() igaz értéket ad, akkor FRAMESIZE_SVGA felbontást választ két képkocka-pufferrel a PSRAM-ban (fb_count = 2) és a CAMERA_GRAB_LATEST módot, amely mindig a legfrissebb képkockát küldi. Ellenkező esetben FRAMESIZE_CIF felbontást választ egyetlen pufferrel a belső memóriában. Az esp_camera_init() után a függvény az esp_camera_sensor_get() segítségével beolvassa a szenzort, kiírja a PID azonosítót, amely az OV5640 esetén 0x5640, és figyelmeztet, ha a csatlakoztatott szenzor más típusú.

A skipRequest() függvény beolvassa és eldobja a böngésző HTTP kérésének fejlécét az első üres sorig. A streamTo() függvény elküldi a multipart/x-mixed-replace fejlécet, majd ciklusban: az esp_camera_fb_get() segítségével vesz egy képkockát, elküldi az elválasztót, a típust és a hosszt, a JPEG adatot a client.write() segítségével írja ki, és az esp_camera_fb_return() függvénnyel felszabadítja a puffert. A ciklus akkor áll le, amikor a kliens lecsatlakozik.

A setup() függvényben a Serial 115200 baudon indul, a fehér LED kikapcsolva marad, meghívódik a startCamera(), a kártya a WiFi.begin() függvénnyel csatlakozik a WiFi-hez, és kiírja a kapott IP-címet. A loop() függvény a server.available() függvénnyel vár kliensre, és amikor megjelenik egy, a streamTo() függvénnyel kiszolgálja a videofolyamot.

Eredmény:

Nyissa meg a Serial Monitort 115200 baud sebességgel. Indítás után meg kell jelennie a kamera inicializálásának visszaigazolásának, 0x5640 PID-del, majd a kártya IP-címének. Írja be a címet a böngészőbe, és megjelenik a valós idejű kép.

ESP32-CAM OV5640 stream example
PSRAM found, using SVGA with 2 frame buffers
Camera init OK, sensor PID: 0x5640
Connecting to WiFi......
WiFi connected, IP address: 192.168.1.57
Open http://192.168.1.57/ in a browser to see the stream
Client connected
Streaming started
Client disconnected after 412 frames

Gyakori problémák:

A feltöltés csatlakozási hibával áll le. A gyakori ok a rossz indítási mód. Ellenőrizze, hogy az IO0 GND-re van kötve, nyomja meg a RESET gombot a feltöltés előtt, és ellenőrizze, hogy a TXD az U0R-re, az RXD pedig az U0T-re megy, nem közvetlenül.

Feltöltés után nem történik semmi, és a Serial Monitorban a program feltöltésére való várakozásról szóló üzenet jelenik meg. Az IO0 és GND közötti híd bent maradt. Vegye ki, majd nyomja meg a RESET gombot.

A kártya folyamatosan újraindul, vagy a Brownout detector was triggered üzenet jelenik meg. A tápellátás nem elegendő, általában azért, mert a kártyát USB-ről vagy gyenge tápegységről táplálják. Használjon stabil, legalább 2 A-es 5 VDC tápegységet, rövid kábelekkel.

A Camera init failed üzenet jelenik meg hibakóddal. A kamera flat kábele nincs teljesen bedugva, vagy az FPC csatlakozó zárja nincs lezárva. Kapcsolja ki a tápellátást, dugja vissza a kábelt a érintkezőkkel a helyes irányban, és zárja le a kapcsot.

A kép zajos lesz, vagy lila árnyalatú egy idő működés után. Az OV5640 szenzor túlmelegedett. Szereljen hűtőbordát a kamera hátoldalára, biztosítson szellőzést, és csökkentse a felbontást SVGA-ra vagy HD-re.

A kártya csatlakozik a WiFi-hez, de a kép megakad, vagy kevés képkocka jön másodpercenként. A WiFi-jel gyenge, vagy a felbontás túl nagy. Vigye közelebb a kártyát a routerhez, és csökkentse a felbontást a kódban.

Korlátok és tanácsok:

A modul nem ajánlott folyamatos, 24 órás streamelésre, mert az OV5640 kamera ezen a kártyán erősen melegszik. Az ok az, hogy a kártyát az OV2640 kamerához tervezték, és a kameracsatlakozót 3.3 V-tal, 2.8 V-tal és 1.2 V-tal táplálja, míg az OV5640 a magját a 3.3 V-ból működtetett belső 1.5 V-os szabályozóról kapja. A feszültségkülönbség hő formájában magában a szenzorban jelenik meg, és körülbelül 50 Celsius-fok felett zaj és lila árnyalat jelenhet meg a képen.

Hardveres módosítás nélkül használjon hűtőbordát a kameránál, streamelésnél legfeljebb SVGA vagy HD felbontást, és a befogások között a szenzort a 0x3008 regiszteren keresztül helyezze standby állapotba (0x42 érték a standby-hoz és 0x02 az aktívhoz). Saját méréseinkben a kártya fogyasztása körülbelül 338 mA-ről 163 mA-re csökkent, a szenzor standby állapotában. A könyvtár által kínált maximális felbontás, 2560 x 1920 pixel, fényképekhez megfelelő.

Az SMD alkatrészek forrasztásában jártas felhasználók csökkenthetik a melegedést úgy, hogy a kameracsatlakozó melletti 1.2 V-os szabályozót 1.5 V-osra cserélik (például XC6206P152MR vagy ME6206A15XG típusra), és a belső szenzorszabályozót a szoftverből kikapcsolják a 0x3031 regiszter 3. bitjének (0x08 érték) beállításával, közvetlenül az esp_camera_init() után. Ezt a módosítást követően saját méréseink szerint a kamera hűtőbordája láthatóan hidegebb maradt.

// Only on a board where the DVDD regulator was replaced with a 1.5 V one
sensor_t *s = esp_camera_sensor_get();
if (s->id.PID == OV5640_PID) {
  s->set_reg(s, 0x3031, 0x08, 0x08);  // bypass the internal 1.5 V core regulator
}

Nem módosított kártyán ne kapcsolja ki a belső szabályozót, mert a szenzor magja a minimális feszültség alatt működne, ami sérült képekhez és lefagyásokhoz vezethet. A módosított kártya már nem alkalmas OV2640 kamerához, ezért megfelelően meg kell jelölni.

Ezen tutorial alapján építhet böngészőből elérhető megfigyelő kamerát, időszakos fényképező rendszert microSD kártyára mentéssel, vagy tárgyfelismerő projektet a szabad GPIO-k segítségével mozgásérzékelő szenzorokhoz vagy más modulokhoz.

Ez még talán érdekelhet