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, Wifi, Bluetooth, OV5640 5MP
Solutie compacta pentru proiecte de viziune artificiala, streaming video si IoT, cu conectivitate WiFi 802.11b/g/n si Bluetooth 4.2 LE pentru aplicatii wireless. Integreaza procesor dual core pana la 240MHz si 4MB PSRAM pentru procesare rapida a imaginilor, camera OV5640 de 5MP pentru cadre detaliate, suport card TF si formate JPEG, BMP, grayscale, compatibila cu Arduino IDE pentru dezvoltare rapida.
Expediere estimata: joi 22 octombrie
Cumparand acest produs primesti 311,06 Ft in puncte de fidelitate.
Adauga in cos produse in valoare de 130 Ron si ai livrare gratuita daca alegi sa platesti online
Produsele sunt expediate din stoc propriu
Primesti puncte la fiecare comanda, in valoare de 5%
Placa de dezvoltare ESP32-CAM este un modul compact care combina un procesor WiFi si Bluetooth ESP32 cu o camera OV5640 de 5MP atasata prin conector FPC, oferind o solutie completa pentru capturarea si transmiterea de imagini in proiecte de viziune artificiala, streaming video si IoT. Placa poate functiona independent, trimitand imagini si fluxuri video catre retea prin WiFi, sau poate fi programata pentru a raspunde unor comenzi primite prin UART, fiind potrivita pentru supraveghere, recunoastere de obiecte, monitorizare la distanta si proiecte de fotografiere automatizata.
Procesorul este un ESP32 dual core LX6 pe 32 de biti, cu frecvente de lucru intre 80 si 240 MHz si o putere de calcul de pana la 600 DMIPS. Memoria interna de 520 KB SRAM este completata de 4 MB PSRAM extern, necesara pentru procesarea imaginilor de rezolutie mare inainte de compresie si transmisie. Camera OV5640 ofera o rezolutie maxima de 2592 x 1944 pixeli (5 MP) si este conectata prin cablu flex la un conector FPC cu 24 de pini, acelasi tip de conector folosit si pentru varianta mai veche cu camera OV2640.
Printre caracteristicile principale se numara conectorul FPC pentru camera, slotul pentru card microSD de pana la 4 GB, un LED alb folosit ca blit, antena PCB imprimata pe placa, doua randuri de pini (16 in total) care expun alimentarea, GPIO-urile libere si interfata UART, si un buton de RESET. Alimentarea se face la 5 VDC pe pinul 5V, cu o sursa stabila recomandata de minim 2A, placa putand fi alimentata si la 3.3 VDC prin pinul 3V3.
Prin interfata UART (pinii U0T si U0R), placa poate fi programata si testata cu ajutorul unui adaptor USB-serial de la un calculator, iar dupa conectarea la retea, imaginile si fluxul video pot fi accesate direct dintr-un browser de pe orice calculator sau telefon din reteaua locala. Pinii GPIO ramasi liberi permit si conectarea unor senzori sau module suplimentare compatibile cu Arduino, ESP32, STM32 sau Raspberry Pi, folosind nivelul logic de 3.3V al placii.
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.
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 VDC (pin 5V)
Consum curent: 180 mA (Flash LED oprit) / 310 mA (Flash LED pornit, luminozitate maxima)
Consum curent Deep-sleep: 6 mA minim
Consum curent Modem-sleep: 20 mA minim
Consum curent Light-sleep: 6.7 mA minim
Numar pini: 16
WiFi: 802.11 b/g/n
Bluetooth: 4.2 LE
CPU: Dual core LX6, 32 biti
Frecventa CPU: 80 - 240 MHz
Memorie interna: 520 KB SRAM
Memorie externa: 4 MB PSRAM
Interfete suportate: UART, SPI, I2C, PWM, ADC, DAC
Camera inclusa: OV5640, 5 MP, rezolutie maxima 2592 x 1944 pixeli
Format imagini: JPEG, BMP, grayscale
Card de memorie: microSD (TF), pana la 4 GB
Moduri consum redus: Deep-sleep, Modem-sleep, Light-sleep
Stack software integrat: LwIP, FreeRTOS
Moduri de operare retea: STA / AP / STA+AP
Smart Config / AirKiss: Da
Actualizare FOTA: Da
Memorie Flash SPI: 32 Mbit
Conector camera: FPC, 24 pini
Programator inclus: Nu, necesita un adaptor extern (recomandat FT232 sau echivalent)
Dimensiuni: 42 x 27 x 12 mm
Layout:
| Element | Functie |
|---|---|
| Modul ESP32-S cu antena PCB | Procesorul ESP32 dual core si antena WiFi/Bluetooth imprimata pe placa. |
| LED alb | Foloseste ca blit pentru camera, comandat de GPIO4. |
| Conector FPC pentru camera | Conector cu 24 de pini la care este atasat cablul flex al camerei OV5640. |
| Camera OV5640 | Modul camera de 5 MP, montat separat de placa si conectat prin cablu flex. |
| Slot card microSD (TF) | Stocare locala a imaginilor si fisierelor, carduri de pana la 4 GB. |
| Doua randuri de pini (header dublu) | Expun alimentarea, GPIO-urile libere si interfata UART, 16 pini in total. |
| Buton RESET | Reseteaza microcontrolerul ESP32, folosit si la incarcarea programului. |
| Regulator de tensiune | Converteste alimentarea de 5V in tensiunea de 3.3V necesara circuitelor placii. |
| Gauri de montare | Doua orificii intre randurile de pini, pentru fixarea placii. |
Pinout:

| Conector | Pin | Functie |
|---|---|---|
| Header 5V | 5V | Alimentare placa, 5 VDC |
| Header 5V | GND | Masa |
| Header 5V | IO12 | GPIO12, folosit si ca MicroSD DATA2 |
| Header 5V | IO13 | GPIO13, folosit si ca MicroSD DATA3 |
| Header 5V | IO15 | GPIO15, folosit si ca MicroSD CMD |
| Header 5V | IO14 | GPIO14, folosit si ca MicroSD CLK |
| Header 5V | IO2 | GPIO2, folosit si ca MicroSD DATA0 |
| Header 5V | IO4 | GPIO4, folosit si ca MicroSD DATA1, comanda LED-ul flash |
| Header 3V3 | 3V3 | Alimentare placa, 3.3 VDC |
| Header 3V3 | IO16 | GPIO16, linie libera, poate fi UART2 RX |
| Header 3V3 | IO0 | GPIO0, selecteaza modul de pornire, se leaga la GND pentru incarcarea programului |
| Header 3V3 | GND | Masa |
| Header 3V3 | VCC | Iesire 3.3V sau 5V, nu se alimenteaza placa prin acest pin |
| Header 3V3 | U0R (IO3) | UART RX, receptie date seriale |
| Header 3V3 | U0T (IO1) | UART TX, transmisie date seriale |
| Header 3V3 | GND | Masa |
| Semnal camera (FPC) | GPIO ESP32 | Functie |
|---|---|---|
| D0 | GPIO5 | Linie de date camera (Y2) |
| D1 | GPIO18 | Linie de date camera (Y3) |
| D2 | GPIO19 | Linie de date camera (Y4) |
| D3 | GPIO21 | Linie de date camera (Y5) |
| D4 | GPIO36 | Linie de date camera (Y6) |
| D5 | GPIO39 | Linie de date camera (Y7) |
| D6 | GPIO34 | Linie de date camera (Y8) |
| D7 | GPIO35 | Linie de date camera (Y9) |
| XCLK | GPIO0 | Ceas de intrare pentru senzorul camerei |
| PCLK | GPIO22 | Ceas de iesire pixel |
| VSYNC | GPIO25 | Sincronizare verticala cadru |
| HREF | GPIO23 | Sincronizare orizontala linie |
| SIOD (SDA) | GPIO26 | I2C/SCCB, configurare senzor |
| SIOC (SCL) | GPIO27 | I2C/SCCB, configurare senzor |
| PWDN | GPIO32 | Oprire (power-down) senzor, HIGH pentru oprire intre capturi |
Utilizare:
Daca modulul camera nu este deja montat, fixati-l pe conectorul FPC al placii respectand orientarea contactelor si inchideti clapeta de blocare a conectorului.
Montati un radiator mic, cu banda sau pad termoconductor, pe spatele camerei OV5640 inainte de prima utilizare, deoarece senzorul se incalzeste puternic in functionare si poate deveni fierbinte la atingere, acesta fiind un comportament normal pentru aceasta combinatie placa-camera.
Asigurati o ventilatie buna in jurul modulului si nu il folositi intr-o carcasa inchisa fara circulatie de aer.
Alimentati placa la 5 VDC, minim 2A, pe pinul 5V, folosind o sursa stabila, si nu alimentati modulul din iesirea de 3.3V a unui adaptor USB-serial.
Pentru programare, conectati un adaptor FT232 sau echivalent la pinii U0R, U0T si GND, cu jumperul de tensiune al adaptorului pozitionat pe 5V, legand TXD-ul adaptorului la U0R si RXD-ul adaptorului la U0T.
In Arduino IDE instalati pachetul de placi esp32 by Espressif Systems din Boards Manager, selectati placa AI Thinker ESP32-CAM si deschideti exemplul CameraWebServer din meniul File - Examples.
In cod, selectati linia #define CAMERA_MODEL_AI_THINKER si completati numele retelei WiFi si parola.
Inainte de incarcare, legati temporar pinul IO0 la GND pentru a trece placa in modul Flash, apasati scurt butonul RESET, apoi porniti incarcarea codului din Arduino IDE.
Dupa finalizarea incarcarii, scoateti legatura dintre IO0 si GND si apasati din nou RESET pentru ca placa sa ruleze programul incarcat.
Deschideti Serial Monitor la 115200 baud, asteptati conectarea la reteaua WiFi si notati adresa IP afisata, apoi accesati aceasta adresa dintr-un browser pentru a vizualiza fluxul video.
Pentru streaming continuu folositi formatul JPEG la o rezolutie redusa, de tip SVGA sau HD, si rezervati rezolutia maxima doar pentru fotografii individuale.
Pentru capturi periodice, opriti senzorul intre poze punand pinul GPIO32 pe HIGH si readuceti-l pe LOW inainte de urmatoarea captura.
La versiunea cu autofocus, alimentati pinul 24 al conectorului camerei la 3.3V si folositi o librarie dedicata pentru control autofocus, in caz contrar camera functioneaza cu focus fix.
Nu folositi modulul pentru streaming video continuu 24/7, placa fiind conceputa pentru capturi si monitorizare intermitenta.
Diagrama dimensiuni:

Tutorial:

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]
/*
Test sketch for ESP32-CAM (AI-Thinker) with OV5640 5MP camera
Board: "AI Thinker ESP32-CAM" (Tools > Board > ESP32 Arduino)
Board package: esp32 by Espressif Systems, installed from Boards Manager
Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json
Library: esp_camera.h, included with the esp32 package, no extra library required
Wiring: camera attached through the onboard FPC connector, board powered at 5V on the 5V pin
This sketch does not use Wi-Fi, it only verifies that the camera initializes and captures frames
*/
#include "esp_camera.h"
// ---- AI-Thinker camera pin map ----
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
void setup() {
Serial.begin(115200);
delay(500);
Serial.println("ESP32-CAM OV5640 test starting");
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
config.frame_size = psramFound() ? FRAMESIZE_UXGA : FRAMESIZE_CIF;
config.jpeg_quality = 12;
config.fb_count = psramFound() ? 2 : 1;
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x\n", err);
return;
}
Serial.println("Camera init OK");
}
void loop() {
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Frame capture failed");
} else {
Serial.printf("Captured frame: %u x %u pixels, %u bytes\n", fb->width, fb->height, fb->len);
esp_camera_fb_return(fb);
}
delay(5000);
}
Placa ESP32-CAM cu camera OV5640 de 5MP este un modul de dezvoltare ESP32 cu camera incorporata, folosit pentru a capta si transmite imagini prin WiFi fara alte componente suplimentare. Tutorialul de fata foloseste chiar placa ESP32-CAM AI-Thinker ca platforma, impreuna cu Arduino IDE, pentru a incarca un program care porneste camera si serveste un flux video simplu printr-un server web intern.
Deoarece placa nu are port USB propriu, pentru incarcarea programului este nevoie de un adaptor USB-serial extern, de tip FT232, conectat la pinii seriali ai placii.

Cum functioneaza:
Senzorul OV5640 capteaza imaginea pe cele 8 linii de date paralele D0-D7, sincronizate de semnalele XCLK, PCLK, VSYNC si HREF, iar configurarea senzorului (rezolutie, expunere, balans de alb) se face printr-o legatura I2C/SCCB pe liniile SIOD si SIOC. Senzorul comprima imaginea in format JPEG inainte ca ESP32 sa o preia, ceea ce reduce mult volumul de date fata de o imagine bruta.
La rezolutia SVGA (800 x 600 pixeli), un cadru JPEG are, in functie de scena si de nivelul de calitate ales in cod, aproximativ 20 - 50 KB. Impartind o latime de banda WiFi locala tipica de cateva sute de KB/s la aceasta dimensiune de cadru rezulta un flux de cativa cadre pe secunda, suficient pentru monitorizare video, dar mult sub capacitatea maxima a senzorului de 2592 x 1944 pixeli, rezervata pentru fotografii individuale.
Conectare:
Programarea placii se face printr-un adaptor FT232 conectat la pinii seriali ai ESP32-CAM, cu jumperul de tensiune al adaptorului pe 5V, iar pinul IO0 se leaga temporar la GND doar in timpul incarcarii codului.
| Pin produs | Se conecteaza la | Rol |
|---|---|---|
| 5V | FT232 VCC | Alimentare placa, 5 VDC |
| GND | FT232 GND | Masa comuna |
| U0R (GPIO3) | FT232 TXD | Receptie date seriale (liniile se incruciseaza) |
| U0T (GPIO1) | FT232 RXD | Transmisie date seriale (liniile se incruciseaza) |
| IO0 | GND (punte temporara) | Selecteaza modul Flash pentru incarcarea codului |

Placa si biblioteci:
In Arduino IDE, mergeti la File - Preferences si adaugati in campul Additional Boards Manager URLs adresa https://dl.espressif.com/dl/package_esp32_index.json, apoi deschideti Tools - Board - Boards Manager, cautati esp32 si instalati pachetul esp32 by Espressif Systems.
Dupa instalare, selectati placa AI Thinker ESP32-CAM din Tools - Board - ESP32 Arduino.
Nu este nevoie sa instalati nicio biblioteca suplimentara, deoarece esp_camera.h si WiFi.h vin incluse automat o data cu pachetul esp32 by Espressif Systems.
Codul:
Codul de mai jos initializeaza camera cu maparea de pini a placii AI-Thinker, se conecteaza la reteaua WiFi si trimite fluxul video catre orice client conectat pe portul 80.
/*
ESP32-CAM (AI-Thinker) with OV5640 5MP camera - WiFi video stream example
Board: "AI Thinker ESP32-CAM" (Tools > Board > ESP32 Arduino)
Board package: esp32 by Espressif Systems, installed from Boards Manager
Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json
Libraries: esp_camera.h and WiFi.h, both included with the esp32 package, no extra library required
Upload wiring: FT232 VCC->5V, FT232 GND->GND, FT232 TXD->U0R, FT232 RXD->U0T, IO0 bridged to GND only during upload
*/
#include "esp_camera.h"
#include <WiFi.h>
// ---- Wi-Fi credentials ----
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// ---- AI-Thinker camera pin map ----
#define PWDN_GPIO_NUM 32
#define RESET_GPIO_NUM -1
#define XCLK_GPIO_NUM 0
#define SIOD_GPIO_NUM 26
#define SIOC_GPIO_NUM 27
#define Y9_GPIO_NUM 35
#define Y8_GPIO_NUM 34
#define Y7_GPIO_NUM 39
#define Y6_GPIO_NUM 36
#define Y5_GPIO_NUM 21
#define Y4_GPIO_NUM 19
#define Y3_GPIO_NUM 18
#define Y2_GPIO_NUM 5
#define VSYNC_GPIO_NUM 25
#define HREF_GPIO_NUM 23
#define PCLK_GPIO_NUM 22
WiFiServer server(80);
void startCamera() {
camera_config_t config;
config.ledc_channel = LEDC_CHANNEL_0;
config.ledc_timer = LEDC_TIMER_0;
config.pin_d0 = Y2_GPIO_NUM;
config.pin_d1 = Y3_GPIO_NUM;
config.pin_d2 = Y4_GPIO_NUM;
config.pin_d3 = Y5_GPIO_NUM;
config.pin_d4 = Y6_GPIO_NUM;
config.pin_d5 = Y7_GPIO_NUM;
config.pin_d6 = Y8_GPIO_NUM;
config.pin_d7 = Y9_GPIO_NUM;
config.pin_xclk = XCLK_GPIO_NUM;
config.pin_pclk = PCLK_GPIO_NUM;
config.pin_vsync = VSYNC_GPIO_NUM;
config.pin_href = HREF_GPIO_NUM;
config.pin_sscb_sda = SIOD_GPIO_NUM;
config.pin_sscb_scl = SIOC_GPIO_NUM;
config.pin_pwdn = PWDN_GPIO_NUM;
config.pin_reset = RESET_GPIO_NUM;
config.xclk_freq_hz = 20000000;
config.pixel_format = PIXFORMAT_JPEG;
if (psramFound()) {
config.frame_size = FRAMESIZE_SVGA; // 800x600, good balance for streaming
config.jpeg_quality = 12; // lower number = higher quality, bigger file
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_CIF;
config.jpeg_quality = 15;
config.fb_count = 1;
}
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x\n", err);
return;
}
Serial.println("Camera initialized");
}
void sendStreamToClient(WiFiClient &client) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: multipart/x-mixed-replace; boundary=frame");
client.println();
while (client.connected()) {
camera_fb_t * fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Frame capture failed");
break;
}
client.println("--frame");
client.println("Content-Type: image/jpeg");
client.printf("Content-Length: %u\n\n", fb->len);
client.write(fb->buf, fb->len);
client.println();
esp_camera_fb_return(fb);
if (!client.connected()) break;
}
}
void setup() {
Serial.begin(115200);
Serial.println();
startCamera();
WiFi.begin(ssid, password);
Serial.print("Connecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("WiFi connected, IP address: ");
Serial.println(WiFi.localIP());
Serial.println("Open this address in a browser to view the live stream");
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
Serial.println("New client connected");
sendStreamToClient(client);
client.stop();
Serial.println("Client disconnected");
}
}
Cum functioneaza codul:
La inceputul fisierului sunt definite datele retelei WiFi (ssid, password) si pinii camerei conform placii AI-Thinker (PWDN_GPIO_NUM, XCLK_GPIO_NUM, Y2_GPIO_NUM - Y9_GPIO_NUM, VSYNC_GPIO_NUM, HREF_GPIO_NUM, PCLK_GPIO_NUM, SIOD_GPIO_NUM, SIOC_GPIO_NUM).
Functia startCamera completeaza structura camera_config_t cu acesti pini, alege rezolutia FRAMESIZE_SVGA si doi buffere de cadre atunci cand placa are PSRAM disponibil, apoi apeleaza esp_camera_init si afiseaza pe Serial daca initializarea a reusit.
Functia sendStreamToClient trimite catre clientul conectat un antet HTTP de tip multipart/x-mixed-replace, apoi, cat timp clientul ramane conectat, preia cate un cadru JPEG cu esp_camera_fb_get, il trimite pe conexiune si il elibereaza cu esp_camera_fb_return.
In functia setup se initializeaza portul serial, se porneste camera, se asteapta conectarea la reteaua WiFi si se afiseaza adresa IP primita, apoi se porneste server-ul WiFiServer pe portul 80. In functia loop, placa asteapta un client nou si ii trimite fluxul video prin sendStreamToClient.
Rezultat:
Deschideti Serial Monitor la 115200 baud. Dupa initializarea camerei si conectarea la retea va fi afisata adresa IP a placii, iar la accesarea acestei adrese dintr-un browser va aparea fluxul video live de la camera.
Camera initialized
Connecting to WiFi.....
WiFi connected, IP address: 192.168.0.114
Open this address in a browser to view the live stream
New client connected
Client disconnected
New client connected
Client disconnected
Probleme frecvente:
Daca Serial Monitor nu afiseaza nimic, verificati ca viteza selectata este 115200 baud si ca ati scos legatura dintre IO0 si GND inainte de a apasa RESET dupa incarcare.
Daca la pornire apare mesajul de eroare la initializarea camerei (camera init failed), verificati ca banda flex a camerei este bine fixata in conectorul FPC si ca nu a fost deplasata la montarea radiatorului.
Daca placa se reseteaza singura sau apar mesaje de brownout in Serial Monitor, sursa de alimentare este prea slaba, inlocuiti-o cu una de 5V si minim 2A conectata direct pe pinul 5V.
Daca placa nu se conecteaza la reteaua WiFi, verificati ca ati introdus corect numele retelei si parola si ca semnalul WiFi este suficient de puternic in locul unde este montata placa.
Daca imaginea este foarte intunecata sau plina de zgomot, asigurati o sursa de lumina mai buna in scena, deoarece camera nu are iluminare proprie in afara LED-ului de blit.
Daca incarcarea codului esueaza cu mesaje de conectare esuata la placa, refaceti puntea IO0-GND si apasati din nou RESET exact in momentul in care Arduino IDE incepe incarcarea.
Limitari si sfaturi:
Camera OV5640 ajunge la rezolutia maxima de 5MP doar pentru fotografii individuale, pentru streaming continuu fiind recomandate rezolutii mai mici precum SVGA sau HD, pentru a pastra un numar rezonabil de cadre pe secunda.
Placa nu are port USB propriu, astfel ca programarea necesita intotdeauna un adaptor USB-serial extern, iar fara varianta cu autofocus camera lucreaza cu focus fix.
Senzorul se incalzeste vizibil in functionare, motiv pentru care placa nu este recomandata pentru streaming video continuu 24/7, ci pentru monitorizare si capturi intermitente, cu radiator montat si ventilatie asigurata.
Pe baza acestui montaj se pot construi proiecte precum camere de supraveghere WiFi, statii de monitorizare cu salvare de imagini pe cardul microSD sau sisteme simple de recunoastere a obiectelor folosind procesarea de imagine pe un server extern.