Placa dezvoltare ESP32-CAM OV3660 3MP CH340G
zoom_out_map
chevron_left chevron_right

Imaginile produselor au caracter informativ si pot prezenta diferente minore, in functie de lot si de furnizor. Este posibil ca specificatiile si pretul produselor sa fie modificate fara preaviz. Facem tot posibilul sa adaugam in pagina produselor specificatii cat mai exacte si corecte dar este posibil ca acestea sa nu fie in totalitate corecte. in cazul in care identificati un astfel de caz, va rugam sa ne semnalati acest lucru.

Produsele noastre sunt destinate in principal dezvoltarii, prototiparii si proiectelor tehnice. Informatiile privind specificatiile, instructiunile si conformitatea sunt furnizate conform datelor disponibile de la producatori sau furnizori. Pentru integrarea in produse finale sau aplicatii comerciale, recomandam verificarea compatibilitatii si conformitatii in functie de utilizarea dorita.

Specificatiile tehnice mentionate (curent, putere etc.) reprezinta valori maxime admise in conditii ideale de functionare. Pentru o utilizare sigura si o durata de viata optima, recomandam exploatarea produsului in regim continuu la cel mult 50% din valorile maxime specificate.

Placa dezvoltare ESP32-CAM cu CH340G, WIFI, Bluetooth, OV5640 5MP

Solutie compacta pentru proiecte de viziune artificiala, streaming video si IoT, cu procesor ESP32 dual core pana la 240MHz, conectivitate WiFi 802.11 b g n si Bluetooth 4.2 LE pentru control si transmisie wireless, camera OV5640 de 5MP pentru imagini detaliate, memorie cu PSRAM de 4MB pentru capturi si prelucrare eficienta, programare usoara in Arduino IDE prin CH340G cu USB Type C.

91,61 RON Cu TVA

75,71 RON Fara TVA

(4/5) din 9 total recenzii
Citeste recenziile
1-2 zile
check In Stoc

Expediere estimata: joi 22 octombrie

Ai gasit mai ieftin? Spune-ne! (autentifica-te pentru a trimite o solicitare)

Cumparand acest produs primesti 4,58 RON in puncte de fidelitate.

Garantie: 24 luni pentru persoane fizice
LIVRARE GRATUITA
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
EXPEDIERE RAPIDA
Produsele sunt expediate din stoc propriu
PUNCTE FIDELITATE
Primesti puncte la fiecare comanda, in valoare de 5%

Placa de dezvoltare ESP32-CAM combina un modul ESP32 cu procesor dual core si o camera OV5640 de 5 MP, oferind conectivitate WiFi si Bluetooth intr-un format compact. Placa accepta semnale video de la propriul senzor optic, comenzi si date prin UART, SPI, I2C, PWM, ADC si DAC, fiind potrivita pentru proiecte de viziune artificiala, streaming video, supraveghere, recunoastere faciala, fotografie automatizata si aplicatii IoT in general.

Procesorul dual core LX6 pe 32 de biti ruleaza la frecvente de pana la 240 MHz, cu o putere de calcul de pana la 600 DMIPS, suficienta pentru procesarea imaginilor si gestionarea simultana a conexiunii WiFi 802.11 b/g/n si Bluetooth 4.2 LE. Memoria interna de 520 KB SRAM este completata de 4 MB PSRAM extern, necesara pentru capturarea si incadrarea imaginilor de rezolutie mare provenite de la camera OV5640. Placa suporta formatele de imagine JPEG, BMP si grayscale, poate incarca fotografii prin WiFi, poate stoca date pe un card TF extern de pana la 4 GB si dispune de mai multe moduri de consum redus, Deep-sleep, Modem-sleep si Light-sleep, utile pentru proiecte alimentate de la baterie.

Printre caracteristicile principale se numara conectorul FPC pentru camera OV5640, slotul pentru card microSD, LED-ul de tip flash de pe placa, butonul de resetare, doua randuri de pini de extensie cu 16 pini in total din care 9 sunt utilizabili ca intrari/iesiri, senzorul Hall si senzorul de temperatura integrate in cipul ESP32, suportul pentru Smart Config/AirKiss si FOTA, precum si modurile de operare STA, AP si STA+AP. Alimentarea placii se face la 5 VDC prin pinul 5V, kitul incluzand si un convertor serial USB-TTL cu circuit CH340G si conector Type-C, folosit pentru programare si pentru comunicarea seriala cu un calculator.

Prin interfata UART si prin pachetul software pus la dispozitie de Espressif, placa este compatibila cu mediul Arduino IDE, fiind recunoscuta ca "AI Thinker ESP32-CAM". Conexiunea seriala permite si comunicarea cu un calculator sau cu alte microcontrolere, iar conectivitatea WiFi permite integrarea in retele impreuna cu alte placi ESP32, module IoT sau aplicatii de pe calculator si telefon.
 

ATENTIE

Camera OV5640 (lotul actual)

Acest modul se livreaza cu camera OV5640 (5MP) in locul OV2640. Senzorul se incalzeste puternic in functionare si poate deveni fierbinte la atingere. Este un comportament normal pentru aceasta combinatie placa-camera, nu un defect.

Programatorul poate folosi driverul CH340 sau FT232, in functie de lot.

Conditii obligatorii de utilizare:

Radiator montat pe spatele camerei, cu banda sau pad termoconductor.

Ventilatie buna; nu folositi modulul in carcase inchise fara circulatie de aer.

Alimentare stabila de 5V, minim 2A, pe pinul 5V. Nu alimentati modulul din adaptorul USB-serial pe 3.3V.

Recomandari:

In Arduino IDE selectati placa “AI Thinker ESP32-CAM” si folositi exemplul CameraWebServer.

Folositi formatul JPEG. Pentru streaming continuu alegeti o rezolutie redusa (SVGA sau HD); rezolutia maxima doar pentru fotografii.

Pentru capturi periodice, opriti senzorul intre poze (GPIO32 pe HIGH).

La versiunea cu autofocus, focalizarea automata necesita 3.3V pe pinul 24 al conectorului camerei si o librarie dedicata. Fara acestea, camera functioneaza cu focus fix.

 

Modulul nu este recomandat pentru streaming continuu 24/7. Daca aveti nevoie de varianta cu OV2640, contactati-ne inainte de plasarea comenzii.

 

Specificatii:

Tensiune alimentare: 5 V (pin de alimentare)

Curent consum (Flash LED oprit): 180 mA la 5 V

Curent consum (Flash LED aprins, luminozitate maxima): 310 mA la 5 V

Curent consum (Deep-sleep): 6 mA la 5 V, minim

Curent consum (Modem-sleep): 20 mA la 5 V, minim

Curent consum (Light-sleep): 6.7 mA la 5 V, minim

Numar pini: 16

Porturi I/O: 9

WiFi: 802.11 b/g/n

Bluetooth: 4.2 LE

CPU: Dual core 32 biti, Xtensa LX6

Frecventa CPU: 80 - 240 MHz

Putere de calcul: pana la 600 DMIPS

Memorie integrata: 520 KB SRAM

Memorie externa: 4 MB PSRAM

Suport protocoale: UART / SPI / I2C / PWM / ADC / DAC

Camera inclusa: Da, OV5640, 5 MP

Conector camera: FPC

Format imagini: JPEG, BMP, grayscale

Suport upload imagine prin WiFi: Da

Suport card TF: Da, pana la 4 GB

Moduri consum redus: Deep-sleep, Modem-sleep, Light-sleep

Stack software integrat: LwIP si FreeRTOS

Moduri operare: STA / AP / STA+AP

Suport Smart Config / AirKiss: Da

Suport FOTA: Da

SPI Flash: 32 Mbit

PSRAM: 4 Mbit

Programator: CH340G

Conector programator: Type-C

Dimensiuni: 42 x 27 x 12 mm

 

Layout:

Element Functie
Camera OV5640 (pe placa ESP32-CAM) Senzor optic de 5 MP, conectat la placa prin banda FPC.
Slot card microSD (pe placa ESP32-CAM) Stocare locala a imaginilor, card TF de pana la 4 GB.
LED flash (pe placa ESP32-CAM) LED de iluminare, comandat de GPIO4.
Buton Reset (pe placa ESP32-CAM) Reseteaza microcontrolerul ESP32.
Header pini 5V (pe placa ESP32-CAM) Alimentare si pinii folositi de cardul microSD, marcati 5V, GND, IO12, IO13, IO15, IO14, IO2, IO4.
Header pini 3V3 (pe placa ESP32-CAM) Pinii de iesire 3.3 V, GPIO si UART, marcati 3V3, IO16, IO0, GND, VCC, U0R, U0T, GND.
Buton Download / IO0 (pe modulul CH340G) Leaga GPIO0 la GND pentru a porni placa ESP32-CAM in modul de incarcare a codului.
Indicator alimentare (pe modulul CH340G) LED aprins cand modulul este alimentat prin USB.
Interfata Micro USB (pe modulul CH340G) Conectare la calculator pentru alimentare si comunicare seriala.
Buton Reset (pe modulul CH340G) Reseteaza placa ESP32-CAM conectata pe modul.
Circuit CH340G (pe modulul CH340G) Convertor USB-serial, asigura comunicatia UART cu calculatorul.
Conector pentru ESP32-CAM (pe modulul CH340G) Doi conectori mama in care se introduce placa ESP32-CAM, cu pinii 5V, GND, U0R, U0T si IO0 legati la circuitul CH340G.

 

Pinout:

Conector Pin Functie
Header stanga 5V Alimentare placa, 5 V, recomandat minim 2 A
Header stanga GND Masa
Header stanga IO12 (GPIO12) Data2 card SD, HSPI_Q, ADC2_5, pin de strapping MTDI
Header stanga IO13 (GPIO13) Data3 card SD, HSPI_ID, ADC2_4
Header stanga IO15 (GPIO15) CMD card SD, HSPI_CS0, ADC2_3, pin de strapping MTDO
Header stanga IO14 (GPIO14) CLK card SD, HSPI_CLK, ADC2_6, pin de strapping MTMS
Header stanga IO2 (GPIO2) Data0 card SD, HSPI_WP, ADC2_2, pin de strapping
Header stanga IO4 (GPIO4) Data1 card SD, HSPI_HD, ADC2_0, comanda LED-ul flash
Header dreapta 3V3 Iesire 3.3 V din regulatorul placii
Header dreapta IO16 (GPIO16) U2_RXD, folosit si ca Chip Select pentru PSRAM
Header dreapta IO0 (GPIO0) Selectare mod de pornire, LOW la reset pentru modul de incarcare a codului, folosit si ca XCLK pentru camera
Header dreapta GND Masa
Header dreapta VCC Iesire P_OUT, 3.3 V sau 5 V, nu se alimenteaza placa prin acest pin
Header dreapta U0R (GPIO3) RX UART0, receptie date, folosit la programare
Header dreapta U0T (GPIO1) TX UART0, transmisie date, folosit la programare
Header dreapta GND Masa

 

Utilizare:

Montati placa ESP32-CAM pe modulul programator cu CH340G, astfel incat pinii 5V, GND, U0R, U0T si IO0 ai celor doua placi sa se suprapuna, sau conectati-le separat prin fire daca folositi un alt convertor USB-serial.

Alimentati ansamblul cu o sursa stabila de 5 VDC, minim 2 A, aplicata pe pinul 5V si GND al placii ESP32-CAM, de exemplu printr-un adaptor de retea cu mufa DC si un adaptor DC-terminal cu suruburi. Nu alimentati placa din iesirea de 3.3 V a convertorului USB-serial si nu folositi pinul VCC ca intrare de alimentare, acesta fiind o iesire.

Montati un radiator pe spatele camerei OV5640, fixat cu banda sau pad termoconductor, si asigurati o ventilatie buna in jurul placii, deoarece camera OV5640 se incalzeste puternic in functionare, acesta fiind un comportament normal pentru aceasta combinatie placa-camera si nu un defect. Evitati folosirea modulului in carcase inchise, fara circulatie de aer, si evitati streamingul continuu pe durate lungi.

Descarcati si instalati driverul CH340G potrivit sistemului de operare din sectiunea Download a paginii produsului, deoarece placa poate fi incompatibila cu ultima versiune a driverului CH340 din 2023.

In Arduino IDE adaugati placile ESP32 din File -> Preferences, introducand la Additional Boards Manager URLs adresa https://dl.espressif.com/dl/package_esp32_index.json, apoi instalati pachetul "esp32 by Espressif Systems" din Tools -> Board -> Boards Manager.

Selectati placa "AI Thinker ESP32-CAM" din Tools -> Board -> ESP32 si deschideti exemplul CameraWebServer din File -> Examples -> ESP32 -> Camera.

In cod, lasati activa definitia CAMERA_MODEL_AI_THINKER si completati numele retelei WiFi si parola in variabilele ssid si password.

Pregatiti un cablu Dupont mama-mama inainte de a incarca programul, pentru a putea lega GPIO0 la GND daca este nevoie.

Pentru incarcarea codului, tineti apasat butonul Download de pe modulul CH340G in timp ce incepeti urcarea, sau, daca modulul nu are acest buton, legati GPIO0 la GND cu firul Dupont, alimentati placa, incarcati codul, apoi scoateti legatura si alimentati din nou placa pentru a reveni la functionarea normala.

Daca urcarea codului nu reuseste, verificati ca este selectat Flash Mode DIO din Tools -> Flash Mode si incercati din nou.

Dupa mesajul de confirmare a incarcarii, apasati butonul Reset, deschideti Monitorul Serial la 115200 baud si asteptati conectarea la reteaua WiFi, adresa IP si porturile serverului fiind afisate in fereastra, asa cum se vede mai jos.

Deschideti un browser si accesati adresa IP afisata in Monitorul Serial, urmata de portul serverului, pentru a vedea fluxul video live si a regla parametrii camerei, intr-o pagina asemanatoare cu cea din imaginea de mai jos.

Pentru streaming continuu alegeti o rezolutie redusa, de exemplu SVGA sau HD, si formatul JPEG, iar rezolutia maxima folositi-o doar pentru fotografii individuale.

Pentru capturi periodice, opriti senzorul intre poze punand GPIO32 pe nivel HIGH, pentru a reduce incalzirea camerei si consumul.

Daca placa este echipata cu varianta de camera cu autofocus, functia de focalizare automata necesita 3.3 V pe pinul 24 al conectorului camerei si o librarie dedicata. Fara aceasta alimentare si librarie, camera functioneaza cu focus fix.

9264

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:

Acest produs este destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie, cercetare si aplicatii tehnice similare. Produsul trebuie utilizat doar conform specificatiilor tehnice mentionate in pagina produsului si/sau in documentatia disponibila.

Utilizarea incorecta, depasirea valorilor maxime admise de tensiune, curent, temperatura sau conectarea gresita pot duce la defectarea produsului, deteriorarea altor echipamente sau la riscuri de siguranta.

Produsul nu este jucarie si nu este destinat copiilor. Montajul, testarea si utilizarea trebuie realizate de persoane cu cunostinte minime in domeniul electric/electronic. Se recomanda utilizarea produsului in montaje protejate, carcase adecvate sau sisteme care respecta normele de siguranta aplicabile.

 

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]

/*
  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);
}

Placa ESP32-CAM cu camera OV5640 de 5 MP este o placa de dezvoltare ESP32 completa, cu microcontroler, camera, slot de card microSD si antena pe aceeasi placa. Este gandita pentru proiecte de streaming video, supraveghere, fotografie declansata de evenimente si alte aplicatii IoT care au nevoie de o imagine trimisa prin WiFi catre un telefon, un calculator sau un server local.

Fiind o placa ESP32, tutorialul foloseste direct placa ESP32-CAM, programata in Arduino IDE ca "AI Thinker ESP32-CAM", impreuna cu modulul programator CH340G inclus in kit. Nu este nevoie de o alta placa de dezvoltare.

Placa dezvoltare ESP32-CAM cu CH340G, WIFI, Bluetooth, OV5640 5MP

Cum functioneaza:

Camera OV5640 trimite imaginea catre ESP32 pe un bus paralel de 8 biti (pinii D0-D7), insotit de semnalele de sincronizare PCLK, VSYNC si HREF si de busul I2C-compatibil SCCB (SIOD/SIOC) prin care microcontrolerul configureaza rezolutia, expunerea si balansul de alb ale senzorului. ESP32 preia cadrele in memoria PSRAM externa de 4 MB, le comprima in format JPEG folosind encoderul hardware integrat si le pune la dispozitie printr-un server HTTP pornit pe WiFi, la adresa IP primita de la router.

Rezolutia aleasa in cod, de exemplu SVGA (800x600) sau VGA (640x480), determina marimea fiecarui cadru JPEG, deci si viteza de transmitere prin WiFi, de aceea pentru un flux video continuu se foloseste o rezolutie mai mica, iar rezolutia maxima a senzorului OV5640, 2592x1944 (5 MP), se foloseste doar pentru fotografii individuale.

 

Conectare:

Placa ESP32-CAM se alimenteaza separat la 5 V, iar programarea se face prin modulul programator CH340G, care leaga pinii seriali ai placii la portul USB al calculatorului.

Pin produs Se conecteaza la Rol
5V Iesirea + a adaptorului DC-terminal, alimentat de sursa 5 VDC 2 A Alimentare placa ESP32-CAM
GND (langa 5V) Iesirea - a adaptorului DC-terminal Masa alimentarii
IO0 IO0 pe modulul programator CH340G Selectare mod de incarcare a codului
GND (langa U0T) GND pe modulul programator CH340G Masa comuna cu programatorul
U0R U0R pe modulul programator CH340G Receptie date seriale (RX)
U0T U0T pe modulul programator CH340G Transmisie date seriale (TX)

Schema conectare ESP32-CAM OV5640 cu programator CH340G si alimentare 5V 2A

Toata electronica placii lucreaza la 3.3 V, iar modulul programator cu CH340G respecta acelasi nivel logic pe pinii seriali, asa ca nu este nevoie de convertor de nivel intre cele doua placi. Pinul VCC de pe placa ESP32-CAM este o iesire de 3.3 V sau 5 V si nu trebuie folosit pentru a alimenta placa. Alimentarea de 5 V, minim 2 A, este obligatorie pentru functionarea stabila a camerei OV5640, un adaptor USB de calculator fiind de multe ori insuficient pentru functionarea in regim normal, desi acesta poate fi folosit temporar doar pentru programare.

 

Placa si biblioteci:

Selectati placa "AI Thinker ESP32-CAM" din meniul Tools > Board, dupa ce instalati pachetul "esp32 by Espressif Systems" din Tools > Board > Boards Manager. Daca pachetul nu apare in lista, adaugati adresa https://dl.espressif.com/dl/package_esp32_index.json in File > Preferences, la Additional Boards Manager URLs.

Nu este nevoie sa instalati nicio biblioteca suplimentara din Library Manager. Bibliotecile esp_camera.h, WiFi.h si WebServer.h fac parte din pachetul esp32 instalat mai sus.

 

Codul:

Codul initializeaza camera cu maparea de pini a modelului AI Thinker, se conecteaza la reteaua WiFi si porneste un server HTTP simplu cu o pagina principala si o adresa de unde se poate descarca o fotografie in format JPEG.

/*
  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();
}

Cum functioneaza codul:

La inceputul fisierului sunt definite constantele de pini ale camerei, 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 si PCLK_GPIO_NUM, cu valorile fixe folosite pe placa AI Thinker, plus FLASH_LED_GPIO_NUM pentru LED-ul de pe GPIO4. Variabilele ssid si password trebuie completate cu datele retelei WiFi, iar obiectul server, de tip WebServer, este creat pe portul 80.

In functia setup, dupa pornirea comunicatiei seriale, structura camera_config_t este completata cu pinii camerei, formatul de imagine PIXFORMAT_JPEG si, in functie de rezultatul lui psramFound, rezolutia FRAMESIZE_SVGA cu doi bufferi de cadru cand placa are PSRAM, sau FRAMESIZE_VGA cu un singur buffer in caz contrar. Functia esp_camera_init porneste camera, iar in caz de eroare mesajul este afisat pe Serial. Urmeaza conectarea la WiFi cu WiFi.begin, o asteptare in bucla pana cand WiFi.status returneaza WL_CONNECTED, si inregistrarea celor doua rute, handleRoot pentru pagina principala si handleCapture pentru poza, inainte de a porni server.begin.

Functia handleCapture cere un cadru nou cu esp_camera_fb_get, il trimite catre browser cu server.send_P folosind tipul image/jpeg, apoi elibereaza memoria cadrului cu esp_camera_fb_return. In functia loop, server.handleClient este apelata permanent pentru a raspunde cererilor primite prin HTTP.

 

Rezultat:

Pe Monitorul Serial, la 115200 baud, se vede conectarea la reteaua WiFi si adresa IP primita de placa, apoi confirmarea pornirii serverului HTTP. Accesand adresa IP afisata, urmata de /capture, intr-un browser, se descarca o fotografie facuta in acel moment de camera OV5640.

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

Probleme frecvente:

Nu apare nimic pe Monitorul Serial: verificati ca viteza selectata in Monitorul Serial este 115200 baud si ca modulul programator este conectat corect, cu U0R si U0T neinversate.

Urcarea codului esueaza cu mesaj de conectare sau de sincronizare: tineti apasat butonul Download sau legati GPIO0 la GND inainte de a incepe urcarea, si verificati ca este selectat Flash Mode DIO din Tools > Flash Mode.

Camera nu porneste si apare o eroare de initializare pe Serial: verificati alimentarea de 5 V, minim 2 A, deoarece o sursa slaba duce la resetari (brownout) in momentul initializarii camerei.

Imaginea este alba, intunecata sau are dungi: lasati camera cateva secunde sa isi regleze automat expunerea si balansul de alb, si verificati ca banda FPC a camerei este asezata corect in conector.

Placa se reseteaza singura in timpul streamingului: reduceti rezolutia si calitatea JPEG din cod si verificati din nou sursa de alimentare, un consum de varf de peste 300 mA cu o sursa slaba provoaca resetari repetate.

Camera devine foarte fierbinte la atingere: este un comportament normal al senzorului OV5640, dar montati obligatoriu un radiator pe spate si evitati streamingul continuu pe durate lungi.

Limitari si sfaturi:

Rezolutia maxima de 5 MP a senzorului OV5640 este utila pentru fotografii, nu pentru streaming continuu, unde viteza de transmitere prin WiFi si memoria PSRAM limiteaza practic rezolutia la SVGA sau HD. Modulul nu este recomandat pentru functionare neintrerupta 24/7, iar pentru proiecte cu capturi periodice este indicat sa opriti camera intre poze, folosind GPIO32, pentru a reduce incalzirea si consumul. Pornind de la acest cod, placa poate fi extinsa cu salvare pe cardul microSD, detectie de miscare cu un senzor PIR extern pe unul dintre pinii liberi, sau integrare intr-un sistem mai mare de supraveghere cu mai multe camere ESP32-CAM.

Produse Asociate