ESP32 S3 Kamera - Live-Video auf einem TFT-Display anzeigen

Alle anderen Kameraprojekte benötigen WLAN und einen Webbrowser. Dieses benötigt keines von beiden. Der ESP32 S3 sendet das Live-Bild direkt an ein TFT-Display, das daneben sitzt. Sie erhalten eine kleine Kamera mit eigenem Bildschirm, und sie funktioniert ganz ohne Netzwerk.

ESP32 S3 Kamera - Live-Video auf einem TFT-Display anzeigen

Was Sie bauen werden:

  1. Eine ESP32 S3 Kamera mit einem TFT-Display
  2. Ein Live-Bild auf dem Bildschirm, ohne WLAN und ohne Router
  3. Einen Bildzähler im Seriellen Monitor, damit Sie sehen, wie schnell es läuft
  4. Eine kleine Kamera, die Sie überallhin mitnehmen können, nur mit einer Powerbank

Erforderliche Hardware

1×ESP32 S3 N16R8 OV5640 Camera
1×(Alternativ) ESP32 S3 N16R8 OV2640 Camera
1×TFT SPI Display
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×HC-SR501 Bewegungssensor
1×Verbindungskabel
1×(Optional) DC-Stromanschluss
1×(Empfohlen) Screw Terminal Expansion Board for ESP32 S3
1×(Empfohlen) Breakout Expansion Board for ESP32 S3
1×(Empfohlen) Power Splitter for ESP32 S3

Oder Sie können die folgenden Kits kaufen:

1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

※ Notiz:

Das ESP32 S3 Kamera-Board hat 40 Pins, aber der Schraubklemmenblock und das Breakout-Board haben 44 Pins. Sie funktionieren trotzdem zusammen. Setzen Sie das Kamera-Board in die Mitte des 44-Pin-Boards, sodass links 2 Pins und rechts 2 Pins frei bleiben.

Mit dem Schraubklemmenblock können Sie Drähte mit einem Schraubendreher anschließen, ganz ohne Löten. Das Breakout-Board bietet Ihnen einfache Stiftleisten für ein Steckbrett.

Wie es funktioniert

Ein Kamerabild und ein Displaybild sind fast dasselbe, wenn Sie die richtigen Einstellungen wählen.

EinstellungWertWarum
BildformatRGB565Das Display erwartet genau das. Zwei Bytes ergeben eine Farbe.
BildgrößeQVGA, 320 x 240Das Display im Querformat hat ebenfalls 320 x 240
Drehung1 (Querformat)Dreht das Panel vom Hochformat ins Querformat

Daher ist der Code kurz. Fragen Sie die Kamera nach einem Bild und geben Sie es dann an das Display weiter:

camera_fb_t *fb = esp_camera_fb_get(); TFT_display.drawRGBBitmap(0, 0, (uint16_t *)fb->buf, fb->width, fb->height); esp_camera_fb_return(fb);

※ Notiz:

Verwenden Sie für dieses Projekt nicht PIXFORMAT_JPEG. Ein JPEG ist komprimiert, und das Display kann es nicht lesen. PIXFORMAT_RGB565 liefert die Rohfarben, und genau das braucht der Bildschirm.

Warum die Farben falsch aussehen können

Eine Farbe besteht aus zwei Bytes, und die Kamera und das Display sind sich nicht einig, welches Byte zuerst kommt. Wenn Sie das Bild ohne Nachdenken senden, wird der Himmel orange und Gesichter werden blau.

Der Code vertauscht die zwei Bytes, bevor er zeichnet:

uint8_t *p = fb->buf; for (size_t i = 0; i < fb->len; i += 2) { uint8_t keep = p[i]; p[i] = p[i + 1]; p[i + 1] = keep; }

※ Notiz:

Wenn Ihr Bild seltsam aussieht, ändern Sie die Zeile #define SWAP_BYTES true in false. Einer der beiden Werte ist für Ihr Display richtig, und es kostet nichts, beide auszuprobieren.

Welche Pins sind noch frei?

Die Kamera verwendet 14 Pins, daher müssen Sie die Display-Pins sorgfältig auswählen:

Verwendet vonPins
KameraGPIO4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, 18
microSD-KartensteckplatzGPIO38, 39, 40
USBGPIO19, 20
Serieller MonitorGPIO43, 44
Boot (niemals verwenden)GPIO0, 3, 45, 46
Frei für das DisplayGPIO1, 2, 14, 21, 41, 42, 47 (wir verwenden 6 davon, GPIO14 bleibt frei)

Es gibt genügend freie Pins für das Display, sodass alles passt.

Andere Pins als im normalen Display-Tutorial

Wenn Sie bereits das Tutorial ESP32 S3 - TFT LCD Touch Display SPI durchgearbeitet haben: In diesem Projekt ändern sich zwei Drähte:

Display-PinNormales Display-TutorialDieses KameraprojektWarum
CSGPIO1GPIO1Gleich
DC / RSGPIO42GPIO42Gleich
RSTGPIO2GPIO2Gleich
SDI / MOSIGPIO11GPIO21GPIO11 ist ein Kamera-Datenpin
SCKGPIO12GPIO47GPIO12 ist ein Kamera-Datenpin
SDO / MISOGPIO13nicht verbundenGPIO13 ist der Pixeltakt der Kamera

※ Notiz:

GPIO11, GPIO12 und GPIO13 sind die normalen SPI-Pins des ESP32 S3, deshalb verwendet das andere Tutorial sie. Auf dem Kamera-Board gehören diese drei Pins zur Kamera, daher müssen wir andere wählen. Das ist der einzige Unterschied. Die drei Steuerleitungen CS, DC und RST bleiben genau gleich.

Wiring Diagram between TFT Display and ESP32 S3

ESP32 S3 TFT-Display Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

TFT-Display PinESP32 S3 PinBedeutung
VCC3.3VStromversorgung
GNDGNDMasse
CSGPIO1Chip Select
DC / RSGPIO42Daten oder Befehl
RESETGPIO2Reset
SDI / MOSIGPIO21Daten zum Display
SCKGPIO47Takt
LED / BLGPIO41Hintergrundbeleuchtung
SDO / MISOnicht verbundenNur zum Lesen vom Display erforderlich

Sicherheitshinweise

Verwenden Sie 3,3V für VCC, nicht 5V. Der ESP32 S3 arbeitet mit 3,3V, und ein 5V-Display kann die Pins des Boards beschädigen.

Der Pin LED oder BL ist die Hintergrundbeleuchtung. Dieses Board hat nur einen 3,3V-Pin, und der VCC-Draht verwendet ihn bereits. Daher legen wir die Hintergrundbeleuchtung stattdessen auf GPIO41, und der Code schaltet sie ein:

TFT_display.initBacklight(TFT_LED_PIN); // the backlight goes on

Das ist einfacher zu verdrahten, und Sie erhalten zwei kostenlose Extras: TFT_display.backlightOff() schaltet den Bildschirm aus, um Strom zu sparen, und TFT_display.setBacklight(128) macht ihn halb so hell.

Sie benötigen den Draht SDO / MISO nicht. Dieses Projekt schreibt nur auf das Display, es liest nie davon.

※ Notiz:

Verwenden Sie auch den microSD-Kartensteckplatz? Dann lassen Sie GPIO38, 39 und 40 frei. Die obigen Display-Pins berühren diese nicht, sodass Karte und Display zusammen funktionieren.

DIYables TFT SPI Bibliothek installieren

  1. Öffnen Sie die Arduino IDE.
  2. Klicken Sie auf das Symbol Libraries in der linken Leiste.
  3. Geben Sie DIYables TFT SPI in das Suchfeld ein.
  4. Suchen Sie die Bibliothek von DIYables.io und klicken Sie auf INSTALL.
  5. Wenn die IDE nach anderen Bibliotheken fragt, klicken Sie auf INSTALL ALL, da diese Bibliothek Adafruit GFX verwendet.
  • Search for DIYables TFT SPI created by DIYables.io and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
DIYables TFT SPI by DIYables.io
Works with both touch and non-touch versions of the same SPI TFT modules. Supports ILI9341 (240x320, 16-bit RGB565), ILI9488 (320x480, 18-bit RGB666), and ST7789 (240x320, 16-bit RGB565) displays over SPI. Includes built-in driver for XPT2046 / HR2046 / ADS7843 SPI touch controllers and 4-wire resistive touch panels - no separate touch library required. Use the display-only API for non-touch panels, or add initTouchSPI() to enable touch on modules that include a touch controller. Extends Adafruit GFX for full graphics support. Works with any Arduino-compatible board that has SPI. More info
1.0.3
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1

Die Bibliothek funktioniert mit drei Arten von Displays. Der Code verwendet das ST7789. Verwenden Sie die Zeile, die zu Ihrem eigenen Modul passt:

Ihr DisplayZeile im CodeGröße
ST7789 (in diesem Tutorial verwendet)DIYables_ST7789_SPI TFT_display(...)240 x 320
ILI9341DIYables_ILI9341_SPI TFT_display(...)240 x 320
ILI9488DIYables_ILI9488_SPI TFT_display(...)320 x 480

Für ein anderes Display setzen Sie // vor die ST7789-Zeile und entfernen das // aus der Zeile Ihres eigenen Displays. Sonst ändert sich nichts.

Arduino IDE Einstellungen für die ESP32 S3 Kamera

Die Kamera funktioniert nicht mit den Standardeinstellungen der Arduino IDE. Sie müssen einige Punkte im Menü Tools ändern, bevor Sie den Code hochladen.

Menüpunkt in ToolsDiese Option wählen
BoardESP32S3 Dev Module
Flash Size16MB (128Mb)
PSRAMOPI PSRAM
Partition SchemeHuge APP (3MB No OTA/1MB SPIFFS)
CPU Frequency240MHz (WiFi)
USB ModeHardware CDC and JTAG
Upload ModeUART0 / Hardware CDC
Upload Speed921600
USB CDC On BootEnabled

※ Notiz:

PSRAM ist hier sehr wichtig. Ein RGB565-Bild mit 320 x 240 belegt 153600 Bytes, was nicht in den normalen Speicher des Chips passt. Ohne PSRAM greift der Code auf ein sehr kleines Bild zurück.

Wie man das Kamera-Display programmiert

  • Binden Sie die Bibliothek ein und wählen Sie Ihr Display.
#include <DIYables_TFT_SPI.h> SPIClass tftBus(FSPI); DIYables_ST7789_SPI TFT_display(240, 320, TFT_CS_PIN, TFT_DC_PIN, TFT_RST_PIN, &tftBus);

※ Notiz:

Der ESP32 S3 hat mehr als einen SPI-Bus. Wir verwenden FSPI, damit das Display nie mit etwas anderem auf dem Board in Konflikt gerät.

  • Teilen Sie dem SPI-Bus mit, welche Pins er verwenden soll, und starten Sie dann das Display. Die beiden -1 bedeuten "wir lesen nicht vom Display".
tftBus.begin(TFT_SCK_PIN, -1, TFT_MOSI_PIN, -1); TFT_display.begin(); TFT_display.setRotation(1); // 1 means landscape TFT_display.fillScreen(BLACK);
  • Fragen Sie die Kamera nach dem Bild in dem Format, das das Display erwartet.
config.pixel_format = PIXFORMAT_RGB565; config.frame_size = FRAMESIZE_QVGA; // 320x240
  • Zeichnen Sie das Bild. Diese eine Zeile bringt das ganze Kamerabild auf den Bildschirm.
TFT_display.drawRGBBitmap(0, 0, (uint16_t *)fb->buf, fb->width, fb->height);
  • Geben Sie den Speicher zurück, sonst stoppt die Kamera nach wenigen Bildern.
esp_camera_fb_return(fb);
  • Sie können auch Text auf den Bildschirm schreiben, da die Bibliothek Adafruit GFX verwendet.
TFT_display.setTextColor(WHITE); TFT_display.setTextSize(2); TFT_display.setCursor(20, 110); TFT_display.print("Starting camera...");

ESP32 S3 Code

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-s3/esp32-s3-camera-show-live-video-on-a-tft-display */ #include <DIYables_TFT_SPI.h> // DIYables TFT SPI library #include "esp_camera.h" // Pins of the TFT display. // CS, DC and RST are the same as in the ESP32 S3 TFT LCD Touch Display SPI tutorial. // SCK and MOSI had to be moved, because the camera uses GPIO11, 12 and 13. #define TFT_SCK_PIN 47 #define TFT_MOSI_PIN 21 #define TFT_CS_PIN 1 #define TFT_DC_PIN 42 #define TFT_RST_PIN 2 #define TFT_LED_PIN 41 // the backlight. The board has only one 3.3V pin, so we use a GPIO. // The size of the panel when it stands up (portrait) #define TFT_WIDTH 240 #define TFT_HEIGHT 320 // The camera and the display do not agree about the order of the two bytes // of one pixel. Change this to false if the colours look wrong. #define SWAP_BYTES true // Camera pins of the ESP32-S3-N16R8 camera board. // The same pins work for the OV2640, OV3660 and OV5640 versions. #define PWDN_GPIO_NUM -1 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 15 #define SIOD_GPIO_NUM 4 #define SIOC_GPIO_NUM 5 #define Y9_GPIO_NUM 16 #define Y8_GPIO_NUM 17 #define Y7_GPIO_NUM 18 #define Y6_GPIO_NUM 12 #define Y5_GPIO_NUM 10 #define Y4_GPIO_NUM 8 #define Y3_GPIO_NUM 9 #define Y2_GPIO_NUM 11 #define VSYNC_GPIO_NUM 6 #define HREF_GPIO_NUM 7 #define PCLK_GPIO_NUM 13 // The ESP32 S3 has more than one SPI bus. We use FSPI for the display. SPIClass tftBus(FSPI); // Use the line that matches your display module DIYables_ST7789_SPI TFT_display(TFT_WIDTH, TFT_HEIGHT, TFT_CS_PIN, TFT_DC_PIN, TFT_RST_PIN, &tftBus); // DIYables_ILI9341_SPI TFT_display(TFT_WIDTH, TFT_HEIGHT, TFT_CS_PIN, TFT_DC_PIN, TFT_RST_PIN, &tftBus); // DIYables_ILI9488_SPI TFT_display(320, 480, TFT_CS_PIN, TFT_DC_PIN, TFT_RST_PIN, &tftBus); #define BLACK DIYables_TFT_SPI::colorRGB(0, 0, 0) #define WHITE DIYables_TFT_SPI::colorRGB(255, 255, 255) unsigned long frameCount = 0; unsigned long lastReport = 0; // Returns the name of the camera sensor that is installed on the board const char *getSensorName(int pid) { switch (pid) { case OV2640_PID: return "OV2640 (2 MP, max UXGA 1600x1200)"; case OV3660_PID: return "OV3660 (3 MP, max QXGA 2048x1536)"; case OV5640_PID: return "OV5640 (5 MP, max QSXGA 2592x1944)"; default: return "Unknown sensor"; } } bool initCamera() { 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.jpeg_quality = 10; config.fb_count = 1; config.fb_location = psramFound() ? CAMERA_FB_IN_PSRAM : CAMERA_FB_IN_DRAM; config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; // RGB565 gives the picture in the same form that the display wants. // QVGA is 320x240, which is exactly the size of the display in landscape. config.pixel_format = PIXFORMAT_RGB565; config.frame_size = FRAMESIZE_QVGA; if (!psramFound()) { Serial.println("WARNING: PSRAM not found. Please set PSRAM to OPI PSRAM in the Tools menu."); config.frame_size = FRAMESIZE_QQVGA; // 160x120, the only size that fits without PSRAM } esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x\n", err); return false; } sensor_t *s = esp_camera_sensor_get(); Serial.printf("Camera sensor: %s\n", getSensorName(s->id.PID)); // Each sensor needs slightly different settings switch (s->id.PID) { case OV2640_PID: s->set_vflip(s, 0); s->set_hmirror(s, 0); break; case OV3660_PID: s->set_vflip(s, 1); // the OV3660 image is upside down by default s->set_brightness(s, 1); // make the image a little brighter s->set_saturation(s, -2); // make the colors a little softer break; case OV5640_PID: s->set_vflip(s, 0); s->set_hmirror(s, 0); break; default: break; } return true; } void setup() { Serial.begin(115200); delay(1000); // Tell the SPI bus which pins to use. -1 means we do not read from the display. tftBus.begin(TFT_SCK_PIN, -1, TFT_MOSI_PIN, -1); TFT_display.begin(); TFT_display.initBacklight(TFT_LED_PIN); // switches the backlight on TFT_display.setRotation(1); // 1 means landscape, so the screen is 320 x 240 TFT_display.fillScreen(BLACK); TFT_display.setTextColor(WHITE); TFT_display.setTextSize(2); TFT_display.setCursor(20, 110); TFT_display.print("Starting camera..."); Serial.println("Display is ready"); if (!initCamera()) { TFT_display.fillScreen(BLACK); TFT_display.setCursor(20, 110); TFT_display.print("Camera failed"); while (true) delay(1000); } TFT_display.fillScreen(BLACK); Serial.println("Showing the live picture on the display"); lastReport = millis(); } void loop() { camera_fb_t *fb = esp_camera_fb_get(); if (!fb) { Serial.println("Frame capture failed"); delay(100); return; } // Turn the two bytes of every pixel around, if needed if (SWAP_BYTES) { uint8_t *p = fb->buf; for (size_t i = 0; i < fb->len; i += 2) { uint8_t keep = p[i]; p[i] = p[i + 1]; p[i + 1] = keep; } } TFT_display.drawRGBBitmap(0, 0, (uint16_t *)fb->buf, fb->width, fb->height); esp_camera_fb_return(fb); // give the memory back to the camera frameCount++; // Every 5 seconds, tell the Serial Monitor how fast we are if (millis() - lastReport >= 5000) { Serial.printf("%lu pictures in 5 seconds (%.1f per second)\n", frameCount, frameCount / 5.0); frameCount = 0; lastReport = millis(); } }

Schnelle Schritte

  • Neu beim ESP32 S3? Absolvieren Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3.
  • Installieren Sie die Bibliothek DIYables TFT SPI und klicken Sie auf INSTALL ALL, wenn die IDE fragt.
  • Ziehen Sie das USB-Kabel ab und verdrahten Sie dann das Display wie in der Tabelle oben.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Wenn Ihr Display kein ST7789 ist, ändern Sie die Display-Zeile. Siehe die Tabelle oben.
  • Ändern Sie die Einstellungen im Menü Tools. Siehe die Tabelle oben.
  • Kompilieren Sie den Code und laden Sie ihn auf das ESP32 S3 Board hoch, indem Sie in der Arduino IDE auf die Schaltfläche Upload klicken.
Arduino IDE Code hochladen
  • Öffnen Sie den Seriellen Monitor in der Arduino IDE.
Wie man den Seriellen Monitor in der Arduino IDE öffnet
  • Drücken Sie einmal die Taste RESET.
  • Der Bildschirm zeigt Starting camera..., dann erscheint das Live-Bild.
  • Profi-Tipp: Sehen die Farben falsch aus? Ändern Sie #define SWAP_BYTES true in false und laden Sie den Code erneut hoch.

Serieller Monitor

Der Serielle Monitor zeigt Ihnen, wie viele Bilder das Board zeichnet. Die folgenden Messwerte wurden im Jahr 2026 aufgezeichnet:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-09-28 14:00:01] Display is ready [2026-09-28 14:00:02] Camera sensor: OV5640 (5 MP, max QSXGA 2592x1944) [2026-09-28 14:00:02] Showing the live picture on the display [2026-09-28 14:00:07] 61 pictures in 5 seconds (12.2 per second) [2026-09-28 14:00:12] 63 pictures in 5 seconds (12.6 per second) [2026-09-28 14:00:17] 62 pictures in 5 seconds (12.4 per second)
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

※ Notiz:

Etwa 12 Bilder pro Sekunde sind normal. Der langsame Teil ist die SPI-Leitung zum Display, nicht die Kamera. Ein kleineres Bild ist schneller, ein größeres Bild ist langsamer.

Fehlerbehebung

Der Bildschirm ist dunkel, aber ich sehe ein schwaches Bild, wenn ich mit einer Lampe darauf leuchte.

Die Hintergrundbeleuchtung ist aus. Prüfen Sie den Draht LED / BL an GPIO41 und prüfen Sie, ob initBacklight() in Ihrem Code steht.

Die Hintergrundbeleuchtung ist schwach, oder das Board startet neu, wenn der Bildschirm aufleuchtet.

Ihr Display-Modul benötigt mehr Strom, als ein ESP32 S3 Pin liefern kann. Verbinden Sie LED / BL stattdessen zusammen mit VCC an 3,3V und löschen Sie die Zeile initBacklight(). Sie verlieren dann die Ein-/Aus-Steuerung, aber die Hintergrundbeleuchtung ist immer voll.

Der Bildschirm bleibt weiß oder bleibt schwarz.

  • Prüfen Sie die Drähte CS, DC und RESET. Diese drei werden am häufigsten vertauscht.
  • Prüfen Sie den Draht LED / BL an GPIO41. Ohne ihn bleibt die Hintergrundbeleuchtung aus und Sie sehen nichts, auch wenn das Bild tatsächlich da ist.
  • Prüfen Sie, ob VCC an 3,3V angeschlossen ist.

Die Farben sind falsch. Der Himmel ist orange, Gesichter sind blau.

Ändern Sie #define SWAP_BYTES true in false und laden Sie den Code erneut hoch.

Das Bild steht auf dem Kopf oder liegt auf der Seite.

Ändern Sie TFT_display.setRotation(1) in 0, 2 oder 3, bis es richtig aussieht.

Das Bild ist da, aber sehr klein in einer Ecke.

Ihr Display ist größer als das Bild, zum Beispiel ein ILI9488 mit 320 x 480. Das ist normal. Sie können das Bild in die Mitte verschieben, indem Sie die ersten beiden Zahlen von drawRGBBitmap(0, 0, ...) ändern.

Der Serielle Monitor zeigt Camera init failed with error 0x105.

Stellen Sie PSRAM im Menü Tools auf OPI PSRAM und prüfen Sie das Flachbandkabel der Kamera.

Das Video ist sehr langsam, nur 2 oder 3 Bilder pro Sekunde.

  • Stellen Sie sicher, dass PSRAM auf OPI PSRAM steht, nicht auf Disabled.
  • Verwenden Sie kurze Drähte. Lange Jumper-Kabel machen SPI langsam und unzuverlässig.
  • Probieren Sie FRAMESIZE_QQVGA (160 x 120), um zu sehen, ob die Verdrahtung das Problem ist.

Der Serielle Monitor zeigt nach den Boot-Meldungen nichts an.

Wenn Ihr USB-Kabel im Anschluss mit der Bezeichnung UART steckt, stellen Sie USB CDC On Boot auf Disabled. Wenn es im Anschluss mit der Bezeichnung USB steckt, stellen Sie es auf Enabled.

Anwendungen

Eine Kamera mit eigenem Bildschirm benötigt kein WLAN, keinen Router und kein Handy. Hier sind praktische Projekte, die Sie mit diesem Code bauen können:

  1. Tragbare Kamera: Eine Kamera und ein Bildschirm mit einer Powerbank, die Sie überallhin mitnehmen können.
  2. Digitale Lupe: Richten Sie sie auf kleinen Text oder eine Platine und lesen Sie ihn auf dem Bildschirm.
  3. Inspektionskamera: Schauen Sie in eine Maschine, ein Rohr oder eine dunkle Kiste und verfolgen Sie es auf dem Bildschirm.
  4. Türspion: Ein Bildschirm im Haus zeigt, wer draußen vor der Tür steht.
  5. Rückfahrkamera für ein Modellauto: Zeigen Sie das Bild der Rückseite auf einem kleinen Bildschirm.
  6. Mikroskop-Helfer: Setzen Sie die Kamera auf eine Linse und zeigen Sie das Bild vergrößert.
  7. Fotobox: Lassen Sie Personen sich selbst sehen, bevor das Foto aufgenommen wird.
  8. Roboter mit Gesicht: Geben Sie einem Roboter einen Bildschirm, der zeigt, was er sieht.
  9. Lehrmittel: Zeigen Sie Schülern, wie ein Kamerabild zu Pixeln auf einem Bildschirm wird.
  10. Kamera an einem Ort ohne Netzwerk: Eine Fabrik, ein Keller oder ein Feld, wo das WLAN nicht hinreicht.

Video Tutorial

Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.

Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.

Herausforderungen

  1. Einsteiger: Schreiben Sie den Text "LIVE" in die Ecke des Bildschirms, über das Bild.
  2. Fortgeschritten: Fügen Sie einen Taster hinzu. Wenn Sie ihn drücken, friert das Bild drei Sekunden lang ein, wie ein Foto.
  3. Profi: Fügen Sie den microSD-Kartensteckplatz hinzu. Wenn Sie den Taster drücken, speichern Sie das Bild als JPEG-Datei und zeigen Sie "Saved!" auf dem Bildschirm an. Denken Sie daran, esp_camera_reconfigure() zu verwenden, um zwischen RGB565 und JPEG zu wechseln.

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!