ESP32-CAM-Entwicklungsboard, WLAN, Bluetooth, OV3660 3MP
zoom_out_map
chevron_left chevron_right

Produktbilder dienen ausschließlich zu Informationszwecken und können je nach Charge und Lieferant geringfügige Unterschiede aufweisen. Produktspezifikationen und Preise können ohne vorherige Ankündigung geändert werden. Wir tun unser Bestes, um der Produktseite möglichst genaue und richtige Spezifikationen hinzuzufügen, es ist jedoch möglich, dass diese nicht ganz korrekt sind. Sollten Sie einen solchen Fall feststellen, melden Sie ihn uns bitte.

Das Produkt ist für Fachleute bestimmt und erfordert qualifiziertes und autorisiertes Personal. Dem Produkt liegt keine Montage-/Gebrauchsanleitung bei . Die Inbetriebnahme des Produktes durch nicht qualifizierte Personen führt zum Verlust der Garantie gemäß den AGB auf der Seite.

Die angegebenen technischen Spezifikationen (Strom, Leistung usw.) stellen maximale zulässige Werte unter idealen Betriebsbedingungen dar. Für einen sicheren Betrieb und eine optimale Lebensdauer wird empfohlen, das Produkt im Dauerbetrieb mit höchstens 50 % der angegebenen Maximalwerte zu verwenden.

ESP32-CAM-Entwicklungsboard, WLAN, Bluetooth, OV5640 5 MP

Kompakte Lösung für Projekte mit künstlicher Vision, Video-Streaming und IoT, mit WiFi 802.11b/g/n und Bluetooth 4.2 LE für drahtlose Anwendungen. Integriert einen Dual-Core-Prozessor mit bis zu 240 MHz und 4 MB PSRAM für schnelle Bildverarbeitung, eine OV5640-Kamera mit 5 MP für detaillierte Aufnahmen, TF-Kartenunterstützung und die Formate JPEG, BMP, Graustufen, kompatibel mit der Arduino IDE für eine schnelle Entwicklung.

81,97 RON Bruttopreis

67,74 RON zzgl. MwSt.

(5/5) aus 4 Gesamtbewertungen
Lies die Bewertungen

Shipping by Donnerstag 22 Oktober

Mit dem Kauf dieses Produkts erhalten Sie 4,10 RON an Treuepunkten.

Garantie: 24 Monate für Privatpersonen
INTERNATIONAL DELIVERY
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
FAST DISPATCH 24H
We ship from our stock within 24H
TREUEPUNKTE
Sie erhalten bei jeder Bestellung Punkte im Wert von 5 %.

Das ESP32-CAM-Entwicklungsboard ist ein kompaktes Modul, das einen ESP32-WiFi- und Bluetooth-Prozessor mit einer über einen FPC-Anschluss angebundenen 5-MP-OV5640-Kamera kombiniert und damit eine vollständige Lösung für die Bildaufnahme und -übertragung in Projekten für künstliche Vision, Video-Streaming und IoT bietet. Das Board kann eigenständig arbeiten, indem es Bilder und Videostreams über WiFi ins Netzwerk sendet, oder es kann so programmiert werden, dass es auf über UART empfangene Befehle reagiert. Es eignet sich für Überwachung, Objekterkennung, Fernüberwachung und automatisierte Fotografieprojekte.

Der Prozessor ist ein dualer Core-LX6-ESP32 mit 32 Bit, Arbeitsfrequenzen zwischen 80 und 240 MHz und einer Rechenleistung von bis zu 600 DMIPS. Der interne Speicher von 520 KB SRAM wird durch 4 MB externen PSRAM ergänzt, der für die Verarbeitung hochauflösender Bilder vor der Komprimierung und Übertragung erforderlich ist. Die OV5640-Kamera bietet eine maximale Auflösung von 2592 x 1944 Pixeln (5 MP) und ist über ein Flexkabel mit einem 24-poligen FPC-Anschluss verbunden, demselben Anschlusstyp, der auch für die ältere Version mit OV2640-Kamera verwendet wird.

Zu den Hauptmerkmalen gehören der FPC-Kameraanschluss, ein microSD-Kartensteckplatz für bis zu 4 GB, eine weiße LED als Blitz, eine auf der Platine gedruckte PCB-Antenne, zwei Pinreihen (insgesamt 16), die Versorgungsspannung, freie GPIOs und die UART-Schnittstelle herausführen, sowie eine RESET-Taste. Die Versorgung erfolgt mit 5 VDC über den 5V-Pin, wobei eine stabile Stromquelle mit mindestens 2A empfohlen wird; das Board kann auch mit 3,3 VDC über den 3V3-Pin versorgt werden.

Über die UART-Schnittstelle (Pins U0T und U0R) kann das Board mit einem USB-Seriell-Adapter von einem Computer aus programmiert und getestet werden. Nach der Verbindung mit dem Netzwerk können Bilder und Videostream direkt in einem Browser von jedem Computer oder Telefon im lokalen Netzwerk aufgerufen werden. Die verbleibenden freien GPIO-Pins ermöglichen außerdem den Anschluss zusätzlicher Sensoren oder Module, die mit Arduino, ESP32, STM32 oder Raspberry Pi kompatibel sind, unter Verwendung der 3,3-V-Logikpegel des Boards.

 

ACHTUNG

Kamera OV5640 (aktuelle Charge)

Dieses Modul wird mit der OV5640-Kamera (5 MP) statt der OV2640 ausgeliefert. Der Sensor erwärmt sich im Betrieb stark und kann sich bei Berührung heiß anfühlen. Dies ist ein normales Verhalten dieser Board-Kamera-Kombination und kein Defekt.

Obligatorische Einsatzbedingungen:

Kühlkörper auf der Rückseite der Kamera montieren, mit Wärmeleitband oder -pad.

Gute Belüftung; verwenden Sie das Modul nicht in geschlossenen Gehäusen ohne Luftzirkulation.

Stabile 5-V-Versorgung, mindestens 2A, am 5V-Pin. Versorgen Sie das Modul nicht über den USB-Seriell-Adapter mit 3,3 V.

Empfehlungen:

Wählen Sie in der Arduino IDE das Board „AI Thinker ESP32-CAM“ und verwenden Sie das Beispiel CameraWebServer.

Verwenden Sie das JPEG-Format. Für kontinuierliches Streaming wählen Sie eine reduzierte Auflösung (SVGA oder HD); die maximale Auflösung nur für Fotos.

Für periodische Aufnahmen den Sensor zwischen den Bildern abschalten (GPIO32 auf HIGH).

Bei der Autofokus-Version benötigt der Autofokus 3,3 V an Pin 24 des Kameraanschlusses und eine spezielle Bibliothek. Ohne diese arbeitet die Kamera mit festem Fokus.

 

Das Modul wird nicht für kontinuierliches 24/7-Streaming empfohlen. Wenn Sie die Variante mit OV2640 benötigen, kontaktieren Sie uns bitte vor der Bestellung.

 

Technische Daten:

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

Versorgungsspannung: 5 VDC (Pin 5V)

Stromverbrauch: 180 mA (Flash-LED aus) / 310 mA (Flash-LED ein, maximale Helligkeit)

Deep-Sleep-Stromverbrauch: mindestens 6 mA

Modem-Sleep-Stromverbrauch: mindestens 20 mA

Light-Sleep-Stromverbrauch: mindestens 6,7 mA

Pinanzahl: 16

WiFi: 802.11 b/g/n

Bluetooth: 4.2 LE

CPU: Dual Core LX6, 32 Bit

CPU-Frequenz: 80 - 240 MHz

Interner Speicher: 520 KB SRAM

Externer Speicher: 4 MB PSRAM

Unterstützte Schnittstellen: UART, SPI, I2C, PWM, ADC, DAC

Integrierte Kamera: OV5640, 5 MP, maximale Auflösung 2592 x 1944 Pixel

Bildformate: JPEG, BMP, Graustufen

Speicherkarte: microSD (TF), bis zu 4 GB

Stromsparmodi: Deep-sleep, Modem-sleep, Light-sleep

Integrierter Software-Stack: LwIP, FreeRTOS

Netzwerk-Betriebsarten: STA / AP / STA+AP

Smart Config / AirKiss: Ja

FOTA-Update: Ja

SPI-Flash-Speicher: 32 Mbit

Kameraanschluss: FPC, 24 Pins

Programmiergerät enthalten: Nein, externer Adapter erforderlich (empfohlen FT232 oder gleichwertig)

Abmessungen: 42 x 27 x 12 mm

 

Layout:

Element Funktion
ESP32-S-Modul mit PCB-Antenne Der duale Core-ESP32-Prozessor und die auf der Platine gedruckte WiFi/Bluetooth-Antenne.
Weiße LED Dient als Blitz für die Kamera, gesteuert von GPIO4.
FPC-Anschluss für die Kamera 24-poliger Anschluss, an den das Flexkabel der OV5640-Kamera angeschlossen ist.
OV5640-Kamera 5-MP-Kameramodul, separat von der Platine montiert und über ein Flexkabel verbunden.
microSD-Kartensteckplatz (TF) Lokale Speicherung von Bildern und Dateien, Karten bis zu 4 GB.
Zwei Pinreihen (Doppel-Header) Führen Versorgung, freie GPIOs und die UART-Schnittstelle heraus, insgesamt 16 Pins.
RESET-Taste Setzt den ESP32-Mikrocontroller zurück und wird auch beim Hochladen des Programms verwendet.
Spannungsregler Wandelt die 5-V-Versorgung in die für die Schaltung erforderlichen 3,3 V um.
Befestigungsbohrungen Zwei Bohrungen zwischen den Pinreihen zur Befestigung des Boards.

 

Pinbelegung:

Anschluss Pin Funktion
5V-Header 5V Versorgung des Boards, 5 VDC
5V-Header GND Masse
5V-Header IO12 GPIO12, auch als MicroSD DATA2 verwendet
5V-Header IO13 GPIO13, auch als MicroSD DATA3 verwendet
5V-Header IO15 GPIO15, auch als MicroSD CMD verwendet
5V-Header IO14 GPIO14, auch als MicroSD CLK verwendet
5V-Header IO2 GPIO2, auch als MicroSD DATA0 verwendet
5V-Header IO4 GPIO4, auch als MicroSD DATA1 verwendet, steuert die Flash-LED
3V3-Header 3V3 Versorgung des Boards, 3,3 VDC
3V3-Header IO16 GPIO16, freie Leitung, kann UART2 RX sein
3V3-Header IO0 GPIO0, wählt den Startmodus, wird zum Hochladen des Programms mit GND verbunden
3V3-Header GND Masse
3V3-Header VCC 3,3-V- oder 5-V-Ausgang, das Board darf nicht über diesen Pin versorgt werden
3V3-Header U0R (IO3) UART RX, serielle Datenempfang
3V3-Header U0T (IO1) UART TX, serielle Datenübertragung
3V3-Header GND Masse

 

Kamerasignal (FPC) GPIO ESP32 Funktion
D0 GPIO5 Kameradatenleitung (Y2)
D1 GPIO18 Kameradatenleitung (Y3)
D2 GPIO19 Kameradatenleitung (Y4)
D3 GPIO21 Kameradatenleitung (Y5)
D4 GPIO36 Kameradatenleitung (Y6)
D5 GPIO39 Kameradatenleitung (Y7)
D6 GPIO34 Kameradatenleitung (Y8)
D7 GPIO35 Kameradatenleitung (Y9)
XCLK GPIO0 Eingangstakt für den Kamerasensor
PCLK GPIO22 Pixel-Ausgangstakt
VSYNC GPIO25 Vertikale Bildsynchronisation
HREF GPIO23 Horizontale Liniensynchronisation
SIOD (SDA) GPIO26 I2C/SCCB, Sensor-Konfiguration
SIOC (SCL) GPIO27 I2C/SCCB, Sensor-Konfiguration
PWDN GPIO32 Sensor-Power-Down, HIGH zum Abschalten zwischen Aufnahmen

 

Verwendung:

Wenn das Kameramodul noch nicht montiert ist, befestigen Sie es am FPC-Anschluss des Boards und achten Sie dabei auf die Ausrichtung der Kontakte und schließen Sie die Verriegelungslasche des Anschlusses.

Montieren Sie vor der ersten Verwendung einen kleinen Kühlkörper mit Wärmeleitband oder -pad auf der Rückseite der OV5640-Kamera, da sich der Sensor im Betrieb stark erwärmt und bei Berührung heiß werden kann; dies ist ein normales Verhalten dieser Board-Kamera-Kombination.

Sorgen Sie für eine gute Belüftung rund um das Modul und verwenden Sie es nicht in einem geschlossenen Gehäuse ohne Luftzirkulation.

Versorgen Sie das Board mit 5 VDC, mindestens 2A, über den 5V-Pin mit einer stabilen Stromquelle und speisen Sie das Modul nicht aus dem 3,3-V-Ausgang eines USB-Seriell-Adapters.

Für die Programmierung verbinden Sie einen FT232 oder einen gleichwertigen Adapter mit den Pins U0R, U0T und GND, wobei der Spannungswahlschalter des Adapters auf 5V steht, und verbinden Sie TXD des Adapters mit U0R und RXD des Adapters mit U0T.

Installieren Sie in der Arduino IDE das esp32-Boardpaket von Espressif Systems über den Boards Manager, wählen Sie das Board AI Thinker ESP32-CAM aus und öffnen Sie das Beispiel CameraWebServer im Menü File - Examples.

Wählen Sie im Code die Zeile #define CAMERA_MODEL_AI_THINKER aus und tragen Sie den Namen des WiFi-Netzwerks sowie das Passwort ein.

Verbinden Sie vor dem Hochladen vorübergehend den IO0-Pin mit GND, um das Board in den Flash-Modus zu versetzen, drücken Sie kurz die RESET-Taste und starten Sie dann das Hochladen des Codes aus der Arduino IDE.

Nach Abschluss des Hochladens entfernen Sie die Verbindung zwischen IO0 und GND und drücken Sie erneut RESET, damit das Board das geladene Programm ausführt.

Öffnen Sie den Serial Monitor mit 115200 Baud, warten Sie auf die Verbindung mit dem WiFi-Netzwerk und notieren Sie die angezeigte IP-Adresse, dann rufen Sie diese Adresse in einem Browser auf, um den Videostream anzuzeigen.

Für kontinuierliches Streaming verwenden Sie das JPEG-Format mit einer reduzierten Auflösung, z. B. SVGA oder HD, und reservieren Sie die maximale Auflösung nur für einzelne Fotos.

Für periodische Aufnahmen schalten Sie den Sensor zwischen den Bildern ab, indem Sie den GPIO32 auf HIGH setzen, und setzen Sie ihn vor der nächsten Aufnahme wieder auf LOW.

Bei der Autofokus-Version versorgen Sie Pin 24 des Kameraanschlusses mit 3,3 V und verwenden Sie eine spezielle Bibliothek zur Autofokus-Steuerung; andernfalls arbeitet die Kamera mit festem Fokus.

Verwenden Sie das Modul nicht für kontinuierliches 24/7-Video-Streaming; das Board ist für Aufnahmen und intermittierende Überwachung ausgelegt.

 

Maßzeichnung:

 

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

Das ESP32-CAM-Board mit der OV5640-Kamera (5 MP) ist ein ESP32-Entwicklungsmodul mit integrierter Kamera. Es nimmt Bilder auf und überträgt sie per WLAN, ganz ohne weitere Komponenten. Dieses Tutorial verwendet das ESP32-CAM-Board von AI-Thinker als Plattform und die Arduino IDE, um ein Programm hochzuladen, das die Kamera startet und über einen internen Webserver einen einfachen Videostream bereitstellt.

Da das Board keinen eigenen USB-Anschluss hat, benötigen Sie zum Hochladen des Programms einen externen USB-Seriell-Adapter vom Typ FT232, der an die seriellen Pins des Boards angeschlossen wird.

ESP32-CAM-Entwicklungsboard, WLAN, Bluetooth, OV5640 5MP

Funktionsweise:

Der Sensor OV5640 nimmt das Bild über die 8 parallelen Datenleitungen D0-D7 auf, die durch die Signale XCLK, PCLK, VSYNC und HREF synchronisiert werden. Die Konfiguration des Sensors (Auflösung, Belichtung, Weißabgleich) erfolgt über eine I2C/SCCB-Verbindung auf den Leitungen SIOD und SIOC. Der Sensor komprimiert das Bild im JPEG-Format, bevor der ESP32 es übernimmt. Das verringert die Datenmenge im Vergleich zu einem Rohbild erheblich.

Bei der Auflösung SVGA (800 x 600 Pixel) hat ein JPEG-Frame je nach Szene und der im Code gewählten Qualitätsstufe etwa 20 - 50 KB. Teilt man eine typische lokale WLAN-Bandbreite von einigen hundert KB/s durch diese Framegröße, ergibt sich ein Stream von einigen Bildern pro Sekunde. Das genügt für die Videoüberwachung, liegt aber deutlich unter der maximalen Leistungsfähigkeit des Sensors von 2592 x 1944 Pixeln, die Einzelfotos vorbehalten ist.

Anschluss:

Das Board wird über einen FT232-Adapter programmiert, der an die seriellen Pins des ESP32-CAM angeschlossen wird. Der Spannungs-Jumper des Adapters steht dabei auf 5V. Der Pin IO0 wird nur während des Hochladens des Codes vorübergehend mit GND verbunden.

Pin des Produkts Wird verbunden mit Funktion
5V FT232 VCC Stromversorgung des Boards, 5 VDC
GND FT232 GND Gemeinsame Masse
U0R (GPIO3) FT232 TXD Empfang serieller Daten (die Leitungen werden gekreuzt)
U0T (GPIO1) FT232 RXD Senden serieller Daten (die Leitungen werden gekreuzt)
IO0 GND (temporäre Brücke) Wählt den Flash-Modus zum Hochladen des Codes

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

Board und Bibliotheken:

Gehen Sie in der Arduino IDE zu File - Preferences und tragen Sie im Feld Additional Boards Manager URLs die Adresse https://dl.espressif.com/dl/package_esp32_index.json ein. Öffnen Sie dann Tools - Board - Boards Manager, suchen Sie nach esp32 und installieren Sie das Paket esp32 by Espressif Systems.

Wählen Sie nach der Installation das Board AI Thinker ESP32-CAM unter Tools - Board - ESP32 Arduino aus.

Es ist keine zusätzliche Bibliothek zu installieren, da esp_camera.h und WiFi.h automatisch mit dem Paket esp32 by Espressif Systems mitgeliefert werden.

Der Code:

Der folgende Code initialisiert die Kamera mit der Pinbelegung des AI-Thinker-Boards, verbindet sich mit dem WLAN-Netzwerk und sendet den Videostream an jeden Client, der sich über Port 80 verbindet.

Anschluss des ESP32-CAM an den Programmieradapter FT232RL zum Hochladen des Codes

Anschluss des ESP32-CAM an den Programmieradapter FT232RL zum Hochladen des Codes

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

Wie der Code funktioniert:

Am Anfang der Datei werden die WLAN-Zugangsdaten (ssid, password) und die Kamera-Pins gemäß dem AI-Thinker-Board definiert (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).

Die Funktion startCamera füllt die Struktur camera_config_t mit diesen Pins, wählt die Auflösung FRAMESIZE_SVGA und zwei Frame-Puffer, sofern das Board über PSRAM verfügt, ruft dann esp_camera_init auf und gibt auf Serial aus, ob die Initialisierung erfolgreich war.

Die Funktion sendStreamToClient sendet an den verbundenen Client einen HTTP-Header vom Typ multipart/x-mixed-replace. Solange der Client verbunden bleibt, holt sie dann jeweils einen JPEG-Frame mit esp_camera_fb_get, sendet ihn über die Verbindung und gibt ihn mit esp_camera_fb_return wieder frei.

In der Funktion setup werden die serielle Schnittstelle initialisiert, die Kamera gestartet, auf die Verbindung mit dem WLAN-Netzwerk gewartet und die erhaltene IP-Adresse ausgegeben. Anschließend wird der Server WiFiServer auf Port 80 gestartet. In der Funktion loop wartet das Board auf einen neuen Client und sendet ihm den Videostream über sendStreamToClient.

Ergebnis:

Öffnen Sie den Serial Monitor mit 115200 Baud. Nach der Initialisierung der Kamera und der Verbindung mit dem Netzwerk wird die IP-Adresse des Boards angezeigt. Wenn Sie diese Adresse in einem Browser aufrufen, erscheint der Live-Videostream der Kamera.

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

Häufige Probleme:

Wenn der Serial Monitor nichts anzeigt, prüfen Sie, ob die gewählte Geschwindigkeit 115200 Baud beträgt und ob Sie die Verbindung zwischen IO0 und GND entfernt haben, bevor Sie nach dem Hochladen RESET drücken.

Wenn beim Start die Fehlermeldung zur Kamera-Initialisierung erscheint (camera init failed), prüfen Sie, ob das Flexband der Kamera fest im FPC-Steckverbinder sitzt und beim Anbringen des Kühlkörpers nicht verschoben wurde.

Wenn sich das Board von selbst zurücksetzt oder im Serial Monitor Brownout-Meldungen erscheinen, ist die Stromversorgung zu schwach. Ersetzen Sie sie durch ein Netzteil mit 5V und mindestens 2A, das direkt an den Pin 5V angeschlossen wird.

Wenn sich das Board nicht mit dem WLAN-Netzwerk verbindet, prüfen Sie, ob Sie Netzwerkname und Passwort korrekt eingegeben haben und ob das WLAN-Signal am Einsatzort des Boards stark genug ist.

Wenn das Bild sehr dunkel oder stark verrauscht ist, sorgen Sie für eine bessere Lichtquelle in der Szene, da die Kamera außer der Blitz-LED keine eigene Beleuchtung hat.

Wenn das Hochladen des Codes mit Meldungen über eine fehlgeschlagene Verbindung zum Board abbricht, stellen Sie die Brücke IO0-GND erneut her und drücken Sie RESET noch einmal genau in dem Moment, in dem die Arduino IDE mit dem Hochladen beginnt.

Einschränkungen und Tipps:

Die Kamera OV5640 erreicht die maximale Auflösung von 5 MP nur bei Einzelfotos. Für kontinuierliches Streaming werden kleinere Auflösungen wie SVGA oder HD empfohlen, um eine vernünftige Anzahl von Bildern pro Sekunde zu halten.

Das Board hat keinen eigenen USB-Anschluss, daher erfordert die Programmierung immer einen externen USB-Seriell-Adapter. Ohne die Variante mit Autofokus arbeitet die Kamera mit festem Fokus.

Der Sensor erwärmt sich im Betrieb deutlich. Deshalb eignet sich das Board nicht für kontinuierliches Videostreaming rund um die Uhr, sondern für Überwachung und zeitweilige Aufnahmen, mit montiertem Kühlkörper und ausreichender Belüftung.

Auf Basis dieses Aufbaus lassen sich Projekte wie WLAN-Überwachungskameras, Überwachungsstationen mit Bildspeicherung auf der microSD-Karte oder einfache Objekterkennungssysteme mit Bildverarbeitung auf einem externen Server umsetzen.

Vielleicht gefällt Ihnen auch