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 mit CH340G, WLAN, Bluetooth, OV5640 5MP
Kompakte Lösung für Projekte mit künstlicher Vision, Video-Streaming und IoT, mit dual-core ESP32-Prozessor bis zu 240 MHz, WiFi 802.11 b g n und Bluetooth 4.2 LE für drahtlose Steuerung und Übertragung, 5-MP-OV5640-Kamera für detaillierte Bilder, Speicher mit 4 MB PSRAM für effiziente Aufnahmen und Verarbeitung, einfache Programmierung im Arduino IDE über CH340G mit USB Typ C.
Shipping by Donnerstag 22 Oktober
Mit dem Kauf dieses Produkts erhalten Sie 347,66 Ft an Treuepunkten.
International fast shipping within EU. Free Shipping for orders above 100 EUR in most EU countries.
We ship from our stock within 24H
Sie erhalten bei jeder Bestellung Punkte im Wert von 5 %.
Das ESP32-CAM-Entwicklungsboard kombiniert ein ESP32-Modul mit Dual-Core-Prozessor und einer 5-MP-OV5640-Kamera und bietet WiFi- sowie Bluetooth-Konnektivität in einem kompakten Format. Das Board unterstützt Videosignale vom eigenen optischen Sensor sowie Befehle und Daten über UART, SPI, I2C, PWM, ADC und DAC und eignet sich für Projekte in den Bereichen Computer Vision, Video-Streaming, Überwachung, Gesichtserkennung, automatisierte Fotografie und IoT-Anwendungen im Allgemeinen.
Der 32-Bit-Dual-Core-LX6-Prozessor arbeitet mit Frequenzen von bis zu 240 MHz und einer Rechenleistung von bis zu 600 DMIPS, ausreichend für Bildverarbeitung und die gleichzeitige Verwaltung der WiFi-802.11-b/g/n- und Bluetooth-4.2-LE-Verbindung. Der interne 520-KB-SRAM-Speicher wird durch 4 MB externen PSRAM ergänzt, der für die Erfassung und Pufferung hochauflösender Bilder der OV5640-Kamera erforderlich ist. Das Board unterstützt die Bildformate JPEG, BMP und Graustufen, kann Fotos per WiFi hochladen, Daten auf einer externen TF-Karte mit bis zu 4 GB speichern und verfügt über mehrere Energiesparmodi, Deep-sleep, Modem-sleep und Light-sleep, die für batteriebetriebene Projekte nützlich sind.
Zu den Hauptmerkmalen gehören der FPC-Anschluss für die OV5640-Kamera, der microSD-Kartensteckplatz, die Flash-LED auf dem Board, die Reset-Taste, zwei Reihen von Erweiterungsstiften mit insgesamt 16 Pins, von denen 9 als Ein-/Ausgänge nutzbar sind, der integrierte Hall-Sensor und Temperatursensor im ESP32-Chip, die Unterstützung für Smart Config/AirKiss und FOTA sowie die Betriebsmodi STA, AP und STA+AP. Die Versorgung des Boards erfolgt mit 5 VDC über den 5V-Pin; das Kit enthält außerdem einen seriellen USB-TTL-Wandler mit CH340G-Schaltkreis und Type-C-Anschluss, der für die Programmierung und die serielle Kommunikation mit einem Computer verwendet wird.
Über die UART-Schnittstelle und das von Espressif bereitgestellte Softwarepaket ist das Board mit der Arduino IDE kompatibel und wird als "AI Thinker ESP32-CAM" erkannt. Die serielle Verbindung ermöglicht auch die Kommunikation mit einem Computer oder anderen Mikrocontrollern, und die WiFi-Konnektivität erlaubt die Integration in Netzwerke zusammen mit anderen ESP32-Boards, IoT-Modulen oder Anwendungen auf Computer und Telefon.
ACHTUNG
Kamera OV5640 (aktuelle Charge)
Dieses Modul wird mit der OV5640-Kamera (5 MP) anstelle der OV2640 geliefert. Der Sensor erwärmt sich im Betrieb stark und kann sich bei Berührung heiß anfühlen. Dies ist ein normales Verhalten für diese Board-Kamera-Kombination, kein Defekt.
Obligatorische Einsatzbedingungen:
Kühlkörper auf der Rückseite der Kamera montiert, mit Wärmeleitband oder -pad.
Gute Belüftung; verwenden Sie das Modul nicht in geschlossenen Gehäusen ohne Luftzirkulation.
Stabile 5-V-Versorgung, mindestens 2 A, 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 schalten Sie den Sensor zwischen den Bildern ab (GPIO32 auf HIGH).
Bei der Version mit Autofokus benötigt die automatische Fokussierung 3,3 V am 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.
Spezifikationen:
Versorgungsspannung: 5 V (Versorgungspin)
Stromverbrauch (Flash-LED aus): 180 mA bei 5 V
Stromverbrauch (Flash-LED an, maximale Helligkeit): 310 mA bei 5 V
Stromverbrauch (Deep-sleep): 6 mA bei 5 V, minimal
Stromverbrauch (Modem-sleep): 20 mA bei 5 V, minimal
Stromverbrauch (Light-sleep): 6,7 mA bei 5 V, minimal
Anzahl der Pins: 16
I/O-Ports: 9
WiFi: 802.11 b/g/n
Bluetooth: 4.2 LE
CPU: Dual Core 32 Bit, Xtensa LX6
CPU-Frequenz: 80 - 240 MHz
Rechenleistung: bis zu 600 DMIPS
Integrierter Speicher: 520 KB SRAM
Externer Speicher: 4 MB PSRAM
Unterstützte Protokolle: UART / SPI / I2C / PWM / ADC / DAC
Inklusive Kamera: Ja, OV5640, 5 MP
Kameraanschluss: FPC
Bildformate: JPEG, BMP, Graustufen
Unterstützung für Bild-Upload per WiFi: Ja
Unterstützung für TF-Karte: Ja, bis zu 4 GB
Energiesparmodi: Deep-sleep, Modem-sleep, Light-sleep
Integrierter Software-Stack: LwIP und FreeRTOS
Betriebsmodi: STA / AP / STA+AP
Unterstützung für Smart Config / AirKiss: Ja
Unterstützung für FOTA: Ja
SPI-Flash: 32 Mbit
PSRAM: 4 Mbit
Programmierer: CH340G
Anschluss des Programmierers: Type-C
Abmessungen: 42 x 27 x 12 mm
Layout:

| Element | Funktion |
|---|---|
| OV5640-Kamera (auf dem ESP32-CAM-Board) | 5-MP-Optiksensor, über FPC-Band mit dem Board verbunden. |
| microSD-Kartensteckplatz (auf dem ESP32-CAM-Board) | Lokale Speicherung von Bildern, TF-Karte bis zu 4 GB. |
| Flash-LED (auf dem ESP32-CAM-Board) | Beleuchtungs-LED, gesteuert von GPIO4. |
| Reset-Taste (auf dem ESP32-CAM-Board) | Setzt den ESP32-Mikrocontroller zurück. |
| 5V-Pin-Header (auf dem ESP32-CAM-Board) | Versorgung und die von der microSD-Karte verwendeten Pins, markiert mit 5V, GND, IO12, IO13, IO15, IO14, IO2, IO4. |
| 3V3-Pin-Header (auf dem ESP32-CAM-Board) | 3,3-V-Ausgangspins, GPIO und UART, markiert mit 3V3, IO16, IO0, GND, VCC, U0R, U0T, GND. |
| Download-/IO0-Taste (auf dem CH340G-Modul) | Verbindet GPIO0 mit GND, um das ESP32-CAM-Board in den Code-Upload-Modus zu versetzen. |
| Versorgungsanzeige (auf dem CH340G-Modul) | LED leuchtet, wenn das Modul über USB versorgt wird. |
| Micro-USB-Schnittstelle (auf dem CH340G-Modul) | Verbindung zum Computer für Stromversorgung und serielle Kommunikation. |
| Reset-Taste (auf dem CH340G-Modul) | Setzt das auf dem Modul angeschlossene ESP32-CAM-Board zurück. |
| CH340G-Schaltkreis (auf dem CH340G-Modul) | USB-Seriell-Wandler, stellt die UART-Kommunikation mit dem Computer sicher. |
| Anschluss für ESP32-CAM (auf dem CH340G-Modul) | Zwei Buchsenleisten, in die das ESP32-CAM-Board eingesetzt wird, wobei die Pins 5V, GND, U0R, U0T und IO0 mit dem CH340G-Schaltkreis verbunden sind. |
Pinbelegung:

| Anschluss | Pin | Funktion |
|---|---|---|
| Linke Stiftleiste | 5V | Versorgung des Boards, 5 V, empfohlen mindestens 2 A |
| Linke Stiftleiste | GND | Masse |
| Linke Stiftleiste | IO12 (GPIO12) | SD-Karte Data2, HSPI_Q, ADC2_5, MTDI-Strapping-Pin |
| Linke Stiftleiste | IO13 (GPIO13) | SD-Karte Data3, HSPI_ID, ADC2_4 |
| Linke Stiftleiste | IO15 (GPIO15) | SD-Karte CMD, HSPI_CS0, ADC2_3, MTDO-Strapping-Pin |
| Linke Stiftleiste | IO14 (GPIO14) | SD-Karte CLK, HSPI_CLK, ADC2_6, MTMS-Strapping-Pin |
| Linke Stiftleiste | IO2 (GPIO2) | SD-Karte Data0, HSPI_WP, ADC2_2, Strapping-Pin |
| Linke Stiftleiste | IO4 (GPIO4) | SD-Karte Data1, HSPI_HD, ADC2_0, steuert die Flash-LED |
| Rechte Stiftleiste | 3V3 | 3,3-V-Ausgang des Spannungsreglers des Boards |
| Rechte Stiftleiste | IO16 (GPIO16) | U2_RXD, auch als Chip-Select für PSRAM verwendet |
| Rechte Stiftleiste | IO0 (GPIO0) | Startmodus-Auswahl, LOW beim Reset für den Code-Upload-Modus, auch als XCLK für die Kamera verwendet |
| Rechte Stiftleiste | GND | Masse |
| Rechte Stiftleiste | VCC | P_OUT-Ausgang, 3,3 V oder 5 V, das Board wird nicht über diesen Pin versorgt |
| Rechte Stiftleiste | U0R (GPIO3) | RX UART0, Datenempfang, bei der Programmierung verwendet |
| Rechte Stiftleiste | U0T (GPIO1) | TX UART0, Datenübertragung, bei der Programmierung verwendet |
| Rechte Stiftleiste | GND | Masse |
Verwendung:
Montieren Sie das ESP32-CAM-Board auf dem Programmiermodul mit CH340G so, dass die Pins 5V, GND, U0R, U0T und IO0 beider Boards übereinander liegen, oder verbinden Sie sie separat mit Kabeln, wenn Sie einen anderen USB-Seriell-Wandler verwenden.
Versorgen Sie die Baugruppe mit einer stabilen 5-VDC-Quelle, mindestens 2 A, an den Pins 5V und GND des ESP32-CAM-Boards, zum Beispiel über ein Netzteil mit DC-Stecker und einen DC-Klemmadapter. Versorgen Sie das Board nicht über den 3,3-V-Ausgang des USB-Seriell-Wandlers und verwenden Sie den VCC-Pin nicht als Versorgungseingang, da er ein Ausgang ist.
Montieren Sie einen Kühlkörper auf der Rückseite der OV5640-Kamera, befestigt mit Wärmeleitband oder -pad, und sorgen Sie für gute Belüftung rund um das Board, da sich die OV5640-Kamera im Betrieb stark erwärmt; dies ist ein normales Verhalten für diese Board-Kamera-Kombination und kein Defekt. Vermeiden Sie die Verwendung des Moduls in geschlossenen Gehäusen ohne Luftzirkulation und vermeiden Sie langes, kontinuierliches Streaming.
Laden Sie den passenden CH340G-Treiber für Ihr Betriebssystem aus dem Download-Bereich der Produktseite herunter und installieren Sie ihn, da das Board möglicherweise mit der neuesten Version des CH340-Treibers aus dem Jahr 2023 inkompatibel ist.
Fügen Sie in der Arduino IDE die ESP32-Boards über File -> Preferences hinzu, indem Sie unter Additional Boards Manager URLs die Adresse https://dl.espressif.com/dl/package_esp32_index.json, eintragen, und installieren Sie dann das Paket "esp32 by Espressif Systems" unter Tools -> Board -> Boards Manager.
Wählen Sie das Board "AI Thinker ESP32-CAM" unter Tools -> Board -> ESP32 aus und öffnen Sie das Beispiel CameraWebServer unter File -> Examples -> ESP32 -> Camera.
Lassen Sie im Code die Definition CAMERA_MODEL_AI_THINKER aktiv und tragen Sie den Namen des WiFi-Netzwerks und das Passwort in die Variablen ssid und password ein.
Bereiten Sie vor dem Hochladen des Programms ein Dupont-Kabel Buchse-Buchse vor, damit Sie bei Bedarf GPIO0 mit GND verbinden können.
Für das Hochladen des Codes halten Sie die Download-Taste auf dem CH340G-Modul gedrückt, während Sie mit dem Upload beginnen, oder verbinden Sie, falls das Modul keine solche Taste hat, GPIO0 mit GND über das Dupont-Kabel, versorgen Sie das Board, laden Sie den Code hoch und entfernen Sie dann die Verbindung, bevor Sie das Board erneut versorgen, um zum normalen Betrieb zurückzukehren.
Falls das Hochladen des Codes fehlschlägt, überprüfen Sie, ob unter Tools -> Flash Mode der Flash Mode DIO ausgewählt ist, und versuchen Sie es erneut.
Nach der Bestätigungsnachricht des Uploads drücken Sie die Reset-Taste, öffnen Sie den Seriellen Monitor mit 115200 Baud und warten Sie auf die Verbindung zum WiFi-Netzwerk; die IP-Adresse und die Server-Ports werden im Fenster angezeigt, wie unten zu sehen ist.
Öffnen Sie einen Browser und rufen Sie die im Seriellen Monitor angezeigte IP-Adresse auf, gefolgt vom Server-Port, um den Live-Video-Stream zu sehen und die Kameraparameter auf einer Seite ähnlich der im Bild unten zu regeln.
Wählen Sie für kontinuierliches Streaming eine reduzierte Auflösung, zum Beispiel SVGA oder HD, und das JPEG-Format; die maximale Auflösung verwenden Sie nur für Einzelaufnahmen.
Für periodische Aufnahmen schalten Sie den Sensor zwischen den Bildern ab, indem Sie GPIO32 auf HIGH setzen, um die Erwärmung der Kamera und den Verbrauch zu reduzieren.
Wenn das Board mit der Kamera-Variante mit Autofokus ausgestattet ist, benötigt die automatische Fokussierung 3,3 V am Pin 24 des Kameraanschlusses und eine spezielle Bibliothek. Ohne diese Versorgung und Bibliothek arbeitet die Kamera mit festem Fokus.
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].
/*
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);
}
Das ESP32-CAM-Board mit der 5-MP-Kamera OV5640 ist ein vollständiges ESP32-Entwicklungsboard mit Mikrocontroller, Kamera, microSD-Kartenslot und Antenne auf derselben Platine. Es ist für Videostreaming-Projekte, Überwachung, ereignisgesteuerte Fotografie und andere IoT-Anwendungen gedacht, bei denen ein Bild per WLAN an ein Smartphone, einen Computer oder einen lokalen Server gesendet werden soll.
Da es sich um ein ESP32-Board handelt, verwendet dieses Tutorial direkt das ESP32-CAM-Board, das in der Arduino IDE als "AI Thinker ESP32-CAM" programmiert wird, zusammen mit dem im Kit enthaltenen Programmiermodul CH340G. Ein weiteres Entwicklungsboard wird nicht benötigt.

So funktioniert es:
Die Kamera OV5640 sendet das Bild über einen parallelen 8-Bit-Bus (Pins D0-D7) an den ESP32, begleitet von den Synchronisationssignalen PCLK, VSYNC und HREF sowie vom I2C-kompatiblen SCCB-Bus (SIOD/SIOC), über den der Mikrocontroller Auflösung, Belichtung und Weißabgleich des Sensors konfiguriert. Der ESP32 übernimmt die Frames in den externen 4-MB-PSRAM, komprimiert sie mit dem integrierten Hardware-Encoder im JPEG-Format und stellt sie über einen per WLAN gestarteten HTTP-Server unter der vom Router zugewiesenen IP-Adresse bereit.
Die im Code gewählte Auflösung, zum Beispiel SVGA (800x600) oder VGA (640x480), bestimmt die Größe jedes JPEG-Frames und damit auch die Übertragungsgeschwindigkeit über WLAN. Deshalb verwendet man für einen kontinuierlichen Videostream eine niedrigere Auflösung, während die maximale Auflösung des Sensors OV5640, 2592x1944 (5 MP), nur für einzelne Fotos genutzt wird.
Anschluss:
Das ESP32-CAM-Board wird separat mit 5 V versorgt. Die Programmierung erfolgt über das Programmiermodul CH340G, das die seriellen Pins des Boards mit dem USB-Anschluss des Computers verbindet.
| Produkt-Pin | Wird verbunden mit | Funktion |
|---|---|---|
| 5V | Ausgang + des DC-Terminal-Adapters, versorgt vom 5-VDC-2-A-Netzteil | Stromversorgung des ESP32-CAM-Boards |
| GND (neben 5V) | Ausgang - des DC-Terminal-Adapters | Masse der Stromversorgung |
| IO0 | IO0 am Programmiermodul CH340G | Auswahl des Modus zum Hochladen des Codes |
| GND (neben U0T) | GND am Programmiermodul CH340G | Gemeinsame Masse mit dem Programmiermodul |
| U0R | U0R am Programmiermodul CH340G | Empfang serieller Daten (RX) |
| U0T | U0T am Programmiermodul CH340G | Senden serieller Daten (TX) |
Die gesamte Elektronik des Boards arbeitet mit 3.3 V und das Programmiermodul mit CH340G verwendet an den seriellen Pins denselben Logikpegel, daher ist zwischen den beiden Boards kein Pegelwandler erforderlich. Der Pin VCC am ESP32-CAM-Board ist ein Ausgang mit 3.3 V oder 5 V und darf nicht zur Versorgung des Boards verwendet werden. Eine Versorgung mit 5 V und mindestens 2 A ist für den stabilen Betrieb der Kamera OV5640 zwingend erforderlich. Ein USB-Anschluss am Computer reicht für den normalen Betrieb oft nicht aus, kann aber vorübergehend nur zum Programmieren verwendet werden.
Board und Bibliotheken:
Wählen Sie das Board "AI Thinker ESP32-CAM" im Menü Tools > Board aus, nachdem Sie das Paket "esp32 by Espressif Systems" über Tools > Board > Boards Manager installiert haben. Falls das Paket nicht in der Liste erscheint, fügen Sie die Adresse https://dl.espressif.com/dl/package_esp32_index.json unter File > Preferences bei Additional Boards Manager URLs hinzu.
Es muss keine zusätzliche Bibliothek aus dem Library Manager installiert werden. Die Bibliotheken esp_camera.h, WiFi.h und WebServer.h sind Teil des oben installierten esp32-Pakets.
Der Code:
Der Code initialisiert die Kamera mit der Pinbelegung des Modells AI Thinker, verbindet sich mit dem WLAN-Netzwerk und startet einen einfachen HTTP-Server mit einer Startseite und einer Adresse, unter der ein Foto im JPEG-Format heruntergeladen werden kann.
/*
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();
}
So funktioniert der Code:
Am Anfang der Datei sind die Pin-Konstanten der Kamera definiert, 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 und PCLK_GPIO_NUM, mit den festen Werten des AI-Thinker-Boards, dazu FLASH_LED_GPIO_NUM für die LED an GPIO4. Die Variablen ssid und password müssen mit den Zugangsdaten Ihres WLAN-Netzwerks ausgefüllt werden. Das Objekt server vom Typ WebServer wird auf Port 80 erstellt.
In der Funktion setup wird nach dem Start der seriellen Kommunikation die Struktur camera_config_t mit den Kamera-Pins, dem Bildformat PIXFORMAT_JPEG und, abhängig vom Ergebnis von psramFound, mit der Auflösung FRAMESIZE_SVGA und zwei Frame-Puffern befüllt, wenn das Board über PSRAM verfügt. Andernfalls werden FRAMESIZE_VGA und ein einzelner Puffer verwendet. Die Funktion esp_camera_init startet die Kamera und im Fehlerfall wird die Meldung auf Serial ausgegeben. Danach folgen die WLAN-Verbindung mit WiFi.begin, eine Warteschleife, bis WiFi.status den Wert WL_CONNECTED zurückgibt, und die Registrierung der beiden Routen, handleRoot für die Startseite und handleCapture für das Foto, bevor server.begin aufgerufen wird.
Die Funktion handleCapture fordert mit esp_camera_fb_get einen neuen Frame an, sendet ihn mit server.send_P unter Verwendung des Typs image/jpeg an den Browser und gibt anschließend den Speicher des Frames mit esp_camera_fb_return wieder frei. In der Funktion loop wird server.handleClient dauerhaft aufgerufen, um eingehende HTTP-Anfragen zu beantworten.
Ergebnis:
Im Serial Monitor bei 115200 Baud sehen Sie die Verbindung zum WLAN-Netzwerk und die vom Board erhaltene IP-Adresse, danach die Bestätigung, dass der HTTP-Server gestartet wurde. Wenn Sie in einem Browser die angezeigte IP-Adresse gefolgt von /capture aufrufen, wird ein Foto heruntergeladen, das die Kamera OV5640 in diesem Moment aufgenommen hat.
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
Häufige Probleme:
Im Serial Monitor erscheint nichts: Prüfen Sie, ob im Serial Monitor die Geschwindigkeit 115200 Baud eingestellt ist und ob das Programmiermodul richtig angeschlossen ist, mit nicht vertauschten Leitungen U0R und U0T.
Das Hochladen des Codes schlägt mit einer Verbindungs- oder Synchronisationsmeldung fehl: Halten Sie die Taste Download gedrückt oder verbinden Sie GPIO0 mit GND, bevor Sie den Upload starten, und prüfen Sie, ob unter Tools > Flash Mode die Einstellung Flash Mode DIO ausgewählt ist.
Die Kamera startet nicht und auf Serial erscheint ein Initialisierungsfehler: Prüfen Sie die Stromversorgung mit 5 V und mindestens 2 A, denn ein schwaches Netzteil führt beim Start der Kamera zu Resets (Brownout).
Das Bild ist weiß, dunkel oder hat Streifen: Lassen Sie der Kamera einige Sekunden Zeit, um Belichtung und Weißabgleich automatisch anzupassen, und prüfen Sie, ob das FPC-Flachbandkabel der Kamera richtig im Steckverbinder sitzt.
Das Board setzt sich während des Streamings selbst zurück: Reduzieren Sie die Auflösung und die JPEG-Qualität im Code und prüfen Sie erneut das Netzteil, denn ein Spitzenstrom von über 300 mA bei einem schwachen Netzteil führt zu wiederholten Resets.
Die Kamera wird bei Berührung sehr heiß: Das ist ein normales Verhalten des Sensors OV5640, bringen Sie aber unbedingt einen Kühlkörper auf der Rückseite an und vermeiden Sie kontinuierliches Streaming über lange Zeiträume.
Einschränkungen und Tipps:
Die maximale Auflösung von 5 MP des Sensors OV5640 eignet sich für Fotos, nicht für kontinuierliches Streaming, bei dem die Übertragungsgeschwindigkeit über WLAN und der PSRAM-Speicher die Auflösung praktisch auf SVGA oder HD begrenzen. Das Modul wird nicht für den ununterbrochenen 24/7-Betrieb empfohlen. Bei Projekten mit periodischen Aufnahmen sollten Sie die Kamera zwischen den Fotos über GPIO32 ausschalten, um Erwärmung und Stromverbrauch zu reduzieren. Ausgehend von diesem Code lässt sich das Board erweitern, etwa durch Speichern auf der microSD-Karte, Bewegungserkennung mit einem externen PIR-Sensor an einem der freien Pins oder die Integration in ein größeres Überwachungssystem mit mehreren ESP32-CAM-Boards.