Scheda di sviluppo ESP32-CAM, Wifi, Bluetooth, OV3660 3MP
zoom_out_map
chevron_left chevron_right

Le immagini dei prodotti sono solo a scopo informativo e potrebbero presentare piccole differenze, a seconda del lotto e del fornitore. Le specifiche e i prezzi dei prodotti potrebbero essere soggetti a modifiche senza preavviso. Facciamo del nostro meglio per aggiungere specifiche quanto più precise e corrette possibili alla pagina del prodotto, ma è possibile che non siano del tutto corrette. Se identifichi un caso del genere, ti preghiamo di segnalarcelo.

Il prodotto è destinato agli specialisti e richiede personale qualificato e autorizzato. Il prodotto non include istruzioni di montaggio/uso . La messa in funzione del prodotto da parte di persone non qualificate comporta la perdita della garanzia secondo i Termini e Condizioni presenti sul sito.

Le specifiche tecniche indicate (corrente, potenza, ecc.) rappresentano valori massimi consentiti in condizioni ideali di funzionamento. Per un utilizzo sicuro e una durata ottimale, si raccomanda di utilizzare il prodotto in regime continuo a non più del 50% dei valori massimi specificati.

Scheda di sviluppo ESP32-CAM, Wi-Fi, Bluetooth, OV5640 5MP

Soluzione compatta per progetti di visione artificiale, streaming video e IoT, con connettività WiFi 802.11b/g/n e Bluetooth 4.2 LE per applicazioni wireless. Integra un processore dual core fino a 240MHz e 4MB PSRAM per l'elaborazione rapida delle immagini, una camera OV5640 da 5MP per fotogrammi dettagliati, supporto per scheda TF e formati JPEG, BMP, grayscale, compatibile con Arduino IDE per uno sviluppo rapido.

81,97 RON Tasse incluse

67,74 RON Tasse escluse

(5/5) su un total di 4 valutazioni
Leggi le recensioni

Spedito entro giovedì 22 ottobre

Acquistando questo prodotto guadagni 4,10 RON in punti fedeltà.

Garanzia: 24 mesi per le persone fisiche
SPEDIZIONE INTERNAZIONALE
Spedizione veloce gratuita per ordini superiori a 100EUR nella maggior parte de paesi UE.
SPEDIZIONE VELOCE 24 ORE
Spediamo dal nostro magazzino entro 24 ore
PUNTI FEDELTÀ
Ricevi punti a ogni ordine, per un valore del 5%.

La scheda di sviluppo ESP32-CAM è un modulo compatto che combina un processore WiFi e Bluetooth ESP32 con una fotocamera OV5640 da 5MP collegata tramite connettore FPC, offrendo una soluzione completa per l’acquisizione e la trasmissione di immagini in progetti di visione artificiale, streaming video e IoT. La scheda può funzionare autonomamente, inviando immagini e flussi video alla rete tramite WiFi, oppure può essere programmata per rispondere a comandi ricevuti tramite UART, risultando adatta per sorveglianza, riconoscimento di oggetti, monitoraggio remoto e progetti di fotografia automatizzata.

Il processore è un ESP32 dual core LX6 a 32 bit, con frequenze di lavoro tra 80 e 240 MHz e una potenza di calcolo fino a 600 DMIPS. La memoria interna da 520 KB SRAM è completata da 4 MB di PSRAM esterna, necessaria per l’elaborazione di immagini ad alta risoluzione prima della compressione e della trasmissione. La fotocamera OV5640 offre una risoluzione massima di 2592 x 1944 pixel (5 MP) ed è collegata tramite cavo flat a un connettore FPC a 24 pin, lo stesso tipo di connettore utilizzato anche per la versione più vecchia con fotocamera OV2640.

Tra le caratteristiche principali figurano il connettore FPC per la fotocamera, lo slot per scheda microSD fino a 4 GB, un LED bianco utilizzato come flash, l’antenna PCB stampata sulla scheda, due file di pin (16 in totale) che espongono l’alimentazione, i GPIO liberi e l’interfaccia UART, e un pulsante di RESET. L’alimentazione avviene a 5 VDC sul pin 5V, con un alimentatore stabile consigliato da almeno 2A; la scheda può essere alimentata anche a 3.3 VDC tramite il pin 3V3.

Tramite l’interfaccia UART (pin U0T e U0R), la scheda può essere programmata e testata con l’aiuto di un adattatore USB-seriale da un computer, mentre dopo la connessione alla rete, le immagini e il flusso video possono essere accessibili direttamente da un browser su qualsiasi computer o telefono della rete locale. I pin GPIO rimanenti liberi consentono anche il collegamento di sensori o moduli aggiuntivi compatibili con Arduino, ESP32, STM32 o Raspberry Pi, utilizzando il livello logico a 3.3V della scheda.

 

ATTENZIONE

Fotocamera OV5640 (lotto attuale)

Questo modulo viene fornito con la fotocamera OV5640 (5MP) al posto della OV2640. Il sensore si riscalda molto durante il funzionamento e può diventare caldo al tatto. È un comportamento normale per questa combinazione scheda-fotocamera, non un difetto.

Condizioni obbligatorie di utilizzo:

Radiatore montato sul retro della fotocamera, con nastro o pad termoconduttivo.

Buona ventilazione; non utilizzare il modulo in contenitori chiusi senza circolazione d’aria.

Alimentazione stabile a 5V, minimo 2A, sul pin 5V. Non alimentare il modulo dall’adattatore USB-seriale a 3.3V.

Raccomandazioni:

In Arduino IDE selezionate la scheda “AI Thinker ESP32-CAM” e utilizzate l’esempio CameraWebServer.

Utilizzate il formato JPEG. Per lo streaming continuo scegliete una risoluzione ridotta (SVGA o HD); la risoluzione massima solo per le foto.

Per acquisizioni periodiche, spegnete il sensore tra uno scatto e l’altro (GPIO32 su HIGH).

Nella versione con autofocus, la messa a fuoco automatica richiede 3.3V sul pin 24 del connettore della fotocamera e una libreria dedicata. In assenza di questi, la fotocamera funziona con fuoco fisso.

 

Il modulo non è consigliato per streaming continuo 24/7. Se avete bisogno della variante con OV2640, contattateci prima di effettuare l’ordine.

 

Specifiche:

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

Tensione di alimentazione: 5 VDC (pin 5V)

Consumo di corrente: 180 mA (Flash LED spento) / 310 mA (Flash LED acceso, luminosità massima)

Consumo di corrente Deep-sleep: minimo 6 mA

Consumo di corrente Modem-sleep: minimo 20 mA

Consumo di corrente Light-sleep: minimo 6.7 mA

Numero di pin: 16

WiFi: 802.11 b/g/n

Bluetooth: 4.2 LE

CPU: Dual core LX6, 32 bit

Frequenza CPU: 80 - 240 MHz

Memoria interna: 520 KB SRAM

Memoria esterna: 4 MB PSRAM

Interfacce supportate: UART, SPI, I2C, PWM, ADC, DAC

Fotocamera inclusa: OV5640, 5 MP, risoluzione massima 2592 x 1944 pixel

Formato immagini: JPEG, BMP, scala di grigi

Scheda di memoria: microSD (TF), fino a 4 GB

Modalità a basso consumo: Deep-sleep, Modem-sleep, Light-sleep

Stack software integrato: LwIP, FreeRTOS

Modalità di funzionamento rete: STA / AP / STA+AP

Smart Config / AirKiss: Sì

Aggiornamento FOTA: Sì

Memoria Flash SPI: 32 Mbit

Connettore fotocamera: FPC, 24 pin

Programmatore incluso: No, richiede un adattatore esterno (consigliato FT232 o equivalente)

Dimensioni: 42 x 27 x 12 mm

 

Layout:

Element Functie
Modulo ESP32-S con antenna PCB Il processore ESP32 dual core e l’antenna WiFi/Bluetooth stampata sulla scheda.
LED bianco Usato come flash per la fotocamera, comandato da GPIO4.
Connettore FPC per la fotocamera Connettore a 24 pin a cui è collegato il cavo flat della fotocamera OV5640.
Fotocamera OV5640 Modulo fotocamera da 5 MP, montato separatamente dalla scheda e collegato tramite cavo flat.
Slot scheda microSD (TF) Memorizzazione locale di immagini e file, schede fino a 4 GB.
Due file di pin (header doppio) Espongono l’alimentazione, i GPIO liberi e l’interfaccia UART, 16 pin in totale.
Pulsante RESET Resetta il microcontrollore ESP32, usato anche per il caricamento del programma.
Regolatore di tensione Converte l’alimentazione a 5V nella tensione di 3.3V necessaria ai circuiti della scheda.
Fori di montaggio Due fori tra le file di pin, per il fissaggio della scheda.

 

Pinout:

Connettore Pin Funzione
Header 5V 5V Alimentazione scheda, 5 VDC
Header 5V GND Massa
Header 5V IO12 GPIO12, usato anche come MicroSD DATA2
Header 5V IO13 GPIO13, usato anche come MicroSD DATA3
Header 5V IO15 GPIO15, usato anche come MicroSD CMD
Header 5V IO14 GPIO14, usato anche come MicroSD CLK
Header 5V IO2 GPIO2, usato anche come MicroSD DATA0
Header 5V IO4 GPIO4, usato anche come MicroSD DATA1, comanda il LED flash
Header 3V3 3V3 Alimentazione scheda, 3.3 VDC
Header 3V3 IO16 GPIO16, linea libera, può essere UART2 RX
Header 3V3 IO0 GPIO0, seleziona la modalità di avvio, va collegato a GND per il caricamento del programma
Header 3V3 GND Massa
Header 3V3 VCC Uscita 3.3V o 5V, non alimentare la scheda tramite questo pin
Header 3V3 U0R (IO3) UART RX, ricezione dati seriali
Header 3V3 U0T (IO1) UART TX, trasmissione dati seriali
Header 3V3 GND Massa

 

Segnale fotocamera (FPC) GPIO ESP32 Funzione
D0 GPIO5 Linea dati fotocamera (Y2)
D1 GPIO18 Linea dati fotocamera (Y3)
D2 GPIO19 Linea dati fotocamera (Y4)
D3 GPIO21 Linea dati fotocamera (Y5)
D4 GPIO36 Linea dati fotocamera (Y6)
D5 GPIO39 Linea dati fotocamera (Y7)
D6 GPIO34 Linea dati fotocamera (Y8)
D7 GPIO35 Linea dati fotocamera (Y9)
XCLK GPIO0 Clock di ingresso per il sensore della fotocamera
PCLK GPIO22 Clock di uscita pixel
VSYNC GPIO25 Sincronizzazione verticale del frame
HREF GPIO23 Sincronizzazione orizzontale della linea
SIOD (SDA) GPIO26 I2C/SCCB, configurazione sensore
SIOC (SCL) GPIO27 I2C/SCCB, configurazione sensore
PWDN GPIO32 Spegnimento (power-down) del sensore, HIGH per spegnerlo tra le acquisizioni

 

Utilizzo:

Se il modulo fotocamera non è già montato, fissarlo al connettore FPC della scheda rispettando l’orientamento dei contatti e chiudere la linguetta di blocco del connettore.

Montare un piccolo radiatore, con nastro o pad termoconduttivo, sul retro della fotocamera OV5640 prima del primo utilizzo, poiché il sensore si riscalda molto durante il funzionamento e può diventare caldo al tatto; questo è un comportamento normale per questa combinazione scheda-fotocamera.

Assicurare una buona ventilazione intorno al modulo e non utilizzarlo in un contenitore chiuso senza circolazione d’aria.

Alimentare la scheda a 5 VDC, minimo 2A, sul pin 5V, usando un alimentatore stabile, e non alimentare il modulo dall’uscita 3.3V di un adattatore USB-seriale.

Per la programmazione, collegare un adattatore FT232 o equivalente ai pin U0R, U0T e GND, con il jumper di tensione dell’adattatore impostato su 5V, collegando TXD dell’adattatore a U0R e RXD dell’adattatore a U0T.

In Arduino IDE installare il pacchetto schede esp32 by Espressif Systems dal Boards Manager, selezionare la scheda AI Thinker ESP32-CAM e aprire l’esempio CameraWebServer dal menu File - Examples.

Nel codice, selezionare la riga #define CAMERA_MODEL_AI_THINKER e inserire il nome della rete WiFi e la password.

Prima del caricamento, collegare temporaneamente il pin IO0 a GND per portare la scheda in modalità Flash, premere brevemente il pulsante RESET, quindi avviare il caricamento del codice da Arduino IDE.

Dopo il completamento del caricamento, rimuovere il collegamento tra IO0 e GND e premere di nuovo RESET affinché la scheda esegua il programma caricato.

Aprire il Serial Monitor a 115200 baud, attendere la connessione alla rete WiFi e annotare l’indirizzo IP visualizzato, quindi accedere a tale indirizzo da un browser per visualizzare il flusso video.

Per lo streaming continuo utilizzare il formato JPEG a una risoluzione ridotta, tipo SVGA o HD, e riservare la risoluzione massima solo per foto singole.

Per acquisizioni periodiche, spegnere il sensore tra uno scatto e l’altro portando il pin GPIO32 su HIGH e riportandolo su LOW prima dell’acquisizione successiva.

Nella versione con autofocus, alimentare il pin 24 del connettore della fotocamera a 3.3V e utilizzare una libreria dedicata per il controllo autofocus; in caso contrario la fotocamera funziona con fuoco fisso.

Non utilizzare il modulo per streaming video continuo 24/7, poiché la scheda è progettata per acquisizioni e monitoraggio intermittenti.

 

Diagramma dimensioni:

 

Tutorial:

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

9087

Produs destinat utilizarii in proiecte electronice, automatizari, prototipare, educatie si cercetare.

Produsul trebuie utilizat numai conform specificatiilor tehnice mentionate in descriere si/sau in documentatia produsului.

Avertismente generale de siguranta:

Nu utilizati produsul la tensiuni, curenti sau temperaturi peste valorile specificate.

Montajul si conectarea trebuie realizate de persoane cu cunostinte tehnice minime in domeniul electric/electronic.

Evitati scurtcircuitele, inversarea polaritatii si conectarea gresita a alimentarii.

Nu lasati produsul alimentat nesupravegheat in timpul testelor.

Produsul nu este jucarie si nu este destinat copiilor.

Pentru modulele electronice, se recomanda utilizarea in carcase, panouri sau montaje protejate, dupa caz.

Identificare produs:

Denumirea produsului, codul/SKU-ul si caracteristicile tehnice sunt mentionate in pagina produsului si/sau pe eticheta ambalajului.

Producator / Importator / Distribuitor:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Website: www.sigmanortec.ro

Persoana responsabila in UE:

Sigmanortec S.R.L.

Calea Bucuresti nr. 9, Targu Jiu, Gorj, Romania

E-mail: [email protected]

Documentatie si siguranta:

Pentru informatii suplimentare, fise tehnice, declaratii de conformitate sau instructiuni, ne puteti contacta la [email protected].

/*
  Test sketch for ESP32-CAM (AI-Thinker) with OV5640 5MP camera
  Board: "AI Thinker ESP32-CAM" (Tools > Board > ESP32 Arduino)
  Board package: esp32 by Espressif Systems, installed from Boards Manager
  Boards Manager URL: https://dl.espressif.com/dl/package_esp32_index.json
  Library: esp_camera.h, included with the esp32 package, no extra library required
  Wiring: camera attached through the onboard FPC connector, board powered at 5V on the 5V pin
  This sketch does not use Wi-Fi, it only verifies that the camera initializes and captures frames
*/

#include "esp_camera.h"

// ---- AI-Thinker camera pin map ----
#define PWDN_GPIO_NUM   32
#define RESET_GPIO_NUM  -1
#define XCLK_GPIO_NUM    0
#define SIOD_GPIO_NUM   26
#define SIOC_GPIO_NUM   27
#define Y9_GPIO_NUM     35
#define Y8_GPIO_NUM     34
#define Y7_GPIO_NUM     39
#define Y6_GPIO_NUM     36
#define Y5_GPIO_NUM     21
#define Y4_GPIO_NUM     19
#define Y3_GPIO_NUM     18
#define Y2_GPIO_NUM      5
#define VSYNC_GPIO_NUM  25
#define HREF_GPIO_NUM   23
#define PCLK_GPIO_NUM   22

void setup() {
  Serial.begin(115200);
  delay(500);
  Serial.println("ESP32-CAM OV5640 test starting");

  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;
  config.frame_size = psramFound() ? FRAMESIZE_UXGA : FRAMESIZE_CIF;
  config.jpeg_quality = 12;
  config.fb_count = psramFound() ? 2 : 1;

  esp_err_t err = esp_camera_init(&config);
  if (err != ESP_OK) {
    Serial.printf("Camera init failed with error 0x%x\n", err);
    return;
  }
  Serial.println("Camera init OK");
}

void loop() {
  camera_fb_t * fb = esp_camera_fb_get();
  if (!fb) {
    Serial.println("Frame capture failed");
  } else {
    Serial.printf("Captured frame: %u x %u pixels, %u bytes\n", fb->width, fb->height, fb->len);
    esp_camera_fb_return(fb);
  }
  delay(5000);
}

La scheda ESP32-CAM con telecamera OV5640 da 5MP è un modulo di sviluppo ESP32 con telecamera integrata, utilizzato per acquisire e trasmettere immagini via WiFi senza bisogno di altri componenti aggiuntivi. Questo tutorial usa proprio la scheda ESP32-CAM AI-Thinker come piattaforma, insieme ad Arduino IDE, per caricare un programma che avvia la telecamera e offre un semplice flusso video tramite un server web interno.

Poiché la scheda non ha una porta USB propria, per caricare il programma serve un adattatore USB-seriale esterno, di tipo FT232, collegato ai pin seriali della scheda.

Scheda di sviluppo ESP32-CAM, Wifi, Bluetooth, OV5640 5MP

Come funziona:

Il sensore OV5640 acquisisce l'immagine sulle 8 linee dati parallele D0-D7, sincronizzate dai segnali XCLK, PCLK, VSYNC e HREF, mentre la configurazione del sensore (risoluzione, esposizione, bilanciamento del bianco) avviene tramite un collegamento I2C/SCCB sulle linee SIOD e SIOC. Il sensore comprime l'immagine in formato JPEG prima che l'ESP32 la prelevi, riducendo molto il volume di dati rispetto a un'immagine raw.

Alla risoluzione SVGA (800 x 600 pixel), un fotogramma JPEG pesa, a seconda della scena e del livello di qualità scelto nel codice, circa 20 - 50 KB. Dividendo una tipica larghezza di banda WiFi locale di alcune centinaia di KB/s per questa dimensione di fotogramma si ottiene un flusso di alcuni fotogrammi al secondo, sufficiente per la videosorveglianza, ma ben al di sotto della capacità massima del sensore di 2592 x 1944 pixel, riservata alle foto singole.

Collegamento:

La programmazione della scheda avviene tramite un adattatore FT232 collegato ai pin seriali dell'ESP32-CAM, con il jumper di tensione dell'adattatore su 5V, mentre il pin IO0 va collegato temporaneamente a GND solo durante il caricamento del codice.

Pin del prodotto Si collega a Funzione
5V FT232 VCC Alimentazione della scheda, 5 VDC
GND FT232 GND Massa comune
U0R (GPIO3) FT232 TXD Ricezione dati seriali (le linee si incrociano)
U0T (GPIO1) FT232 RXD Trasmissione dati seriali (le linee si incrociano)
IO0 GND (ponticello temporaneo) Seleziona la modalità Flash per il caricamento del codice

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

Scheda e librerie:

In Arduino IDE andate su File - Preferences e aggiungete nel campo Additional Boards Manager URLs l'indirizzo https://dl.espressif.com/dl/package_esp32_index.json, poi aprite Tools - Board - Boards Manager, cercate esp32 e installate il pacchetto esp32 by Espressif Systems.

Dopo l'installazione, selezionate la scheda AI Thinker ESP32-CAM da Tools - Board - ESP32 Arduino.

Non è necessario installare alcuna libreria aggiuntiva, perché esp_camera.h e WiFi.h sono incluse automaticamente con il pacchetto esp32 by Espressif Systems.

Il codice:

Il codice qui sotto inizializza la telecamera con la mappatura dei pin della scheda AI-Thinker, si collega alla rete WiFi e invia il flusso video a qualsiasi client connesso sulla porta 80.

Collegamento di ESP32-CAM al programmatore FT232RL per il caricamento del codice

Collegamento di ESP32-CAM al programmatore FT232RL per il caricamento del codice

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

Come funziona il codice:

All'inizio del file sono definiti i dati della rete WiFi (ssid, password) e i pin della telecamera secondo la scheda 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).

La funzione startCamera compila la struttura camera_config_t con questi pin, sceglie la risoluzione FRAMESIZE_SVGA e due buffer di fotogrammi quando la scheda dispone di PSRAM, quindi chiama esp_camera_init e mostra sul Serial se l'inizializzazione è riuscita.

La funzione sendStreamToClient invia al client connesso un'intestazione HTTP di tipo multipart/x-mixed-replace, poi, finché il client resta connesso, preleva un fotogramma JPEG alla volta con esp_camera_fb_get, lo invia sulla connessione e lo rilascia con esp_camera_fb_return.

Nella funzione setup si inizializza la porta seriale, si avvia la telecamera, si attende la connessione alla rete WiFi e si mostra l'indirizzo IP ricevuto, poi si avvia il server WiFiServer sulla porta 80. Nella funzione loop, la scheda attende un nuovo client e gli invia il flusso video tramite sendStreamToClient.

Risultato:

Aprite il Serial Monitor a 115200 baud. Dopo l'inizializzazione della telecamera e la connessione alla rete verrà mostrato l'indirizzo IP della scheda, e accedendo a questo indirizzo da un browser apparirà il flusso video live della telecamera.

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

Problemi frequenti:

Se il Serial Monitor non mostra nulla, verificate che la velocità selezionata sia 115200 baud e di aver rimosso il collegamento tra IO0 e GND prima di premere RESET dopo il caricamento.

Se all'avvio compare il messaggio di errore di inizializzazione della telecamera (camera init failed), verificate che il flat della telecamera sia ben inserito nel connettore FPC e che non si sia spostato durante il montaggio del dissipatore.

Se la scheda si riavvia da sola o compaiono messaggi di brownout nel Serial Monitor, l'alimentatore è troppo debole: sostituitelo con uno da 5V e almeno 2A collegato direttamente al pin 5V.

Se la scheda non si collega alla rete WiFi, verificate di aver inserito correttamente il nome della rete e la password e che il segnale WiFi sia abbastanza forte nel punto in cui è montata la scheda.

Se l'immagine è molto scura o piena di rumore, assicurate una fonte di luce migliore nella scena, perché la telecamera non ha un'illuminazione propria oltre al LED flash.

Se il caricamento del codice fallisce con messaggi di connessione non riuscita alla scheda, rifate il ponticello IO0-GND e premete di nuovo RESET esattamente nel momento in cui Arduino IDE inizia il caricamento.

Limitazioni e consigli:

La telecamera OV5640 raggiunge la risoluzione massima di 5MP solo per le foto singole, mentre per lo streaming continuo si consigliano risoluzioni inferiori come SVGA o HD, per mantenere un numero ragionevole di fotogrammi al secondo.

La scheda non ha una porta USB propria, quindi la programmazione richiede sempre un adattatore USB-seriale esterno, e senza la versione con autofocus la telecamera lavora a fuoco fisso.

Il sensore si riscalda sensibilmente durante il funzionamento, perciò la scheda non è consigliata per lo streaming video continuo 24/7, ma per il monitoraggio e le acquisizioni intermittenti, con dissipatore montato e ventilazione adeguata.

Con questo montaggio si possono realizzare progetti come telecamere di sorveglianza WiFi, stazioni di monitoraggio con salvataggio delle immagini sulla scheda microSD o semplici sistemi di riconoscimento degli oggetti che usano l'elaborazione delle immagini su un server esterno.

Potrebbe anche piacerti