ESP32 S3 Kamera - Mit Deep Sleep Akku sparen

Alle anderen Kameraprojekte brauchen ständig ein USB-Kabel. Dieses Tutorial ist anders. Der ESP32 S3 schläft und verbraucht fast keinen Strom. Wenn der Bewegungssensor jemanden sieht, wacht das Board auf, nimmt ein Foto auf, speichert es auf der microSD-Karte und schläft wieder ein. Da das Board jeweils nur etwa zwei Sekunden wach ist, verbraucht es sehr wenig Strom. So können Sie es mit einem Akku betreiben und die Kamera an einem Tor, in einem Garten oder an einer Paketbox anbringen.

ESP32 S3 Kamera - Mit Deep Sleep Akku sparen

Was Sie bauen werden:

  1. Eine Kamera, die schläft, bis etwas passiert
  2. Ein Foto, das bei jedem Aufwachen auf der microSD-Karte gespeichert wird
  3. Einen Zähler, der den Deep Sleep übersteht, sodass die Fotonummern nie wieder bei 1 beginnen
  4. Eine Kamera, die mit einem Akku oder einer Powerbank funktioniert, ganz ohne Kabel

Erforderliche Hardware

1×ESP32 S3 N16R8 OV5640 Camera
1×(Alternativ) ESP32 S3 N16R8 OV2640 Camera
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×microSD Card
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 auf der linken Seite 2 Pins frei bleiben und auf der rechten Seite 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 Breadboard.

Wie es funktioniert

Alle anderen Kameraprojekte laufen im Kreis: Das Board ist ständig wach und fragt immer wieder, ob etwas passiert ist. Das ist einfach, verbraucht aber den ganzen Tag Strom für nichts.

Dieses Projekt dreht die Idee um. Das Board schläft, und der Sensor weckt es auf.

Hier ist das ganze Leben der Kamera:

SchrittWas passiertWie langeStrom
1Das Board schläft. Nur ein kleiner Teil darin überwacht einen Pin.Stunden oder TageFast keiner
2Jemand geht vorbei. Der PIR-Sensor zieht GPIO21 auf HIGH.SofortKeiner, der Sensor ist nicht das Board
3Dieses HIGH weckt das Board. Es startet wieder von vorne, wie nach einem RESET.Etwa 1 SekundeVoll
4Kamera und Karte starten. Das Board nimmt ein Foto auf und schreibt es auf die Karte.Etwa 1 SekundeVoll
5Das Board schaltet Kamera und Karte aus und schläft wieder ein.SofortWieder fast keiner
So funktioniert die ESP32 S3 Deep-Sleep-Kamera

Das Board ist also für jeden Besucher nur etwa zwei Sekunden wach. Die ganze übrige Zeit schläft es. Das ist der ganze Trick, und deshalb kann diese Kamera ohne Kabel arbeiten.

※ Notiz:

Der PIR-Sensor schläft nie. Er überwacht den Raum ständig und braucht dafür nur einen sehr kleinen Strom. Der Sensor ist der Teil, der entscheidet, wann das Board gebraucht wird.

Drei Dinge sorgen dafür, dass es funktioniert

WasWarum es nötig ist
esp_sleep_enable_ext0_wakeup()Teilt dem Board mit, welcher Pin es wecken darf und bei welchem Pegel
RTC_DATA_ATTRHält den Fotozähler während des Schlafs am Leben. Normale Variablen verlieren ihren Wert.
esp_camera_deinit() und SD_MMC.end()Schalten Kamera und Karte aus, damit sie während des Schlafs nichts verbrauchen

Jeder dieser Punkte wird unten erklärt.

Überblick über Deep Sleep

Deep Sleep schaltet fast alles im ESP32 S3 ab: die beiden Prozessoren, das WLAN und den Speicher. Nur ein sehr kleiner Teil bleibt wach, und seine einzige Aufgabe ist es, einen Pin zu überwachen.

ZustandWas läuftStromaufnahme
Normal, WLAN anAllesetwa 150 mA
Normal, WLAN ausZwei Prozessorenetwa 40 mA
Deep SleepFast nichtsweniger als 1 mA

※ Notiz:

Diese Zahlen sind ein Richtwert, kein Versprechen. Ihr Board, Ihr Sensor und Ihre Powerbank verändern das Ergebnis. Viele Powerbanks schalten sich außerdem selbst ab, wenn der Strom sehr klein ist. Das ist das häufigste Problem bei Akkuprojekten.

Das Board startet jedes Mal neu

Das ist der Teil, der alle überrascht: Nach dem Deep Sleep macht das Board nicht dort weiter, wo es aufgehört hat. Es startet wieder ganz von vorne, genau wie nach einem RESET. setup() läuft erneut, und loop() läuft überhaupt nie.

Deshalb befindet sich das ganze Programm in setup():

void setup() { // wake up, take the photo, save it goToSleep(); // this line never returns } void loop() { // Empty. This board never reaches loop(). }

Wie man sich während des Schlafs etwas merkt

Normale Variablen verlieren im Deep Sleep ihren Wert. Variablen mit der Markierung RTC_DATA_ATTR nicht, weil sie in dem kleinen Teil liegen, der wach bleibt:

RTC_DATA_ATTR int photoNumber = 1; RTC_DATA_ATTR int wakeCount = 0;

※ Notiz:

RTC_DATA_ATTR behält den Wert durch den Deep Sleep, aber nicht bei einem Stromausfall oder einem RESET. Der Code prüft außerdem die Karte auf freie Dateinamen, sodass nie ein Foto überschrieben wird.

Aufwachen über einen Pin

ext0 weckt das Board, wenn ein Pin einen von Ihnen gewählten Pegel erreicht. Die Zahl 1 bedeutet "aufwachen, wenn der Pin HIGH ist":

esp_sleep_enable_ext0_wakeup(GPIO_NUM_21, 1); esp_deep_sleep_start();

※ Notiz:

Nur die Pins GPIO0 bis GPIO21 können den ESP32 S3 aus dem Deep Sleep wecken. Sie heißen RTC-Pins. GPIO21 ist einer davon, also funktioniert es. Ein Pin wie GPIO40 würde das Board nie wecken.

Überblick über PIR Motion Sensor

Ein PIR-Bewegungssensor erkennt die Wärme eines menschlichen Körpers. Sein OUT-Pin geht auf HIGH, wenn sich etwas Warmes vor ihm bewegt, und dieses HIGH weckt den ESP32 S3.

PIR-Bewegungssensor HC-SR501

Der Sensor hat zwei kleine orangefarbene Schrauben. Drehen Sie die Schraube für die Verzögerungszeit ganz nach links, sodass der Ausgang nur etwa 3 Sekunden lang HIGH bleibt. Weitere Details finden Sie im Tutorial ESP32 S3 - Bewegungssensor.

※ Notiz:

Der PIR-Sensor selbst schläft nie. Er verbraucht etwa 50 µA, was sehr wenig ist, und er muss wach bleiben, weil er der Teil ist, der das Board weckt.

Schaltplan zwischen PIR-Bewegungssensor und ESP32 S3

ESP32 S3 Deep-Sleep-Kamera Schaltplan

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

PIR-Sensor-PinESP32 S3 Pin
VCC5V
GNDGND
OUTGPIO21

Stecken Sie dann die microSD-Karte in den Steckplatz auf dem Board.

Sicherheitshinweise

Der PIR-Sensor braucht 5V an seinem VCC-Pin, nicht 3,3V. Sein OUT-Pin liefert 3,3V, was für den ESP32 S3 korrekt ist.

Der OUT-Pin muss an GPIO21 angeschlossen werden, weil nur GPIO0 bis GPIO21 das Board aus dem Deep Sleep wecken können.

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 Auswahl treffen
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

So programmieren Sie die schlafende Kamera

  • Finden Sie heraus, warum das Board aufgewacht ist. Das ist nützlich, weil der erste Start kein Aufwachen ist.
esp_sleep_wakeup_cause_t reason = esp_sleep_get_wakeup_cause(); if (reason == ESP_SLEEP_WAKEUP_EXT0) Serial.println("The PIR sensor saw a movement"); else Serial.println("The board was switched on");
  • Geben Sie der Kamera einen Moment Zeit. Die ersten Bilder nach einem Start sind immer zu dunkel, weil die Kamera das Licht noch nicht eingestellt hat.
delay(400); for (int i = 0; i < 2; i++) { camera_fb_t *old = esp_camera_fb_get(); if (old) esp_camera_fb_return(old); }

※ Notiz:

Das ist der häufigste Fehler bei Deep-Sleep-Kameras: Das Foto ist schwarz. Die Kamera braucht etwa eine halbe Sekunde Licht vor dem ersten guten Bild.

  • Schalten Sie Kamera und Karte vor dem Schlafen aus, damit sie keinen Strom verbrauchen.
esp_camera_deinit(); SD_MMC.end();
  • Halten Sie den Pin während des Schlafs auf LOW, damit ein schwebender Pin das Board nicht von selbst weckt.
rtc_gpio_pulldown_en(GPIO_NUM_21); rtc_gpio_pullup_dis(GPIO_NUM_21);

※ Notiz:

Ohne dies fängt ein unbeschalteter Pin elektrisches Rauschen auf, das Board wacht hunderte Male auf, und der Akku ist in einer Nacht leer.

  • Gehen Sie schlafen. Nichts nach dieser Zeile wird jemals ausgeführt.
esp_deep_sleep_start();

ESP32 S3 Code

Die Fotos heißen wake_00001.jpg, wake_00002.jpg und so weiter. Der Zähler liegt in RTC_DATA_ATTR, daher zählt er durch jeden Schlaf hindurch weiter.

/* * 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-save-battery-with-deep-sleep */ #include "esp_camera.h" #include "FS.h" #include "SD_MMC.h" #include "driver/rtc_io.h" #define PIR_PIN GPIO_NUM_21 // the PIR motion sensor is connected to GPIO21 #define WARMUP_TIME 400 // give the camera 400 ms to set the light // 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 // Pins of the microSD card slot on the board #define SD_CLK_GPIO_NUM 39 #define SD_CMD_GPIO_NUM 38 #define SD_D0_GPIO_NUM 40 // RTC_DATA_ATTR keeps the value during deep sleep. // Normal variables lose their value, these do not. RTC_DATA_ATTR int photoNumber = 1; RTC_DATA_ATTR int wakeCount = 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.pixel_format = PIXFORMAT_JPEG; config.frame_size = FRAMESIZE_SVGA; // 800x600 - smaller photo, shorter awake time config.jpeg_quality = 12; // 0 to 63, a lower number means a better image config.fb_count = 1; config.fb_location = CAMERA_FB_IN_DRAM; config.grab_mode = CAMERA_GRAB_WHEN_EMPTY; if (psramFound()) { config.fb_location = CAMERA_FB_IN_PSRAM; config.jpeg_quality = 10; config.fb_count = 2; config.grab_mode = CAMERA_GRAB_LATEST; } else { config.frame_size = FRAMESIZE_QVGA; Serial.println("WARNING: PSRAM not found. Please set PSRAM to OPI PSRAM in the Tools menu."); } 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; } bool initSDCard() { SD_MMC.setPins(SD_CLK_GPIO_NUM, SD_CMD_GPIO_NUM, SD_D0_GPIO_NUM); // true means 1-bit mode. The camera uses the other pins, so we cannot use 4-bit mode. if (!SD_MMC.begin("/sdcard", true)) { Serial.println("SD card not found. Please check the card and push it in again."); return false; } if (SD_MMC.cardType() == CARD_NONE) { Serial.println("No SD card inside the slot"); return false; } return true; } // Makes a file name like /wake_00001.jpg String makeFileName(int number) { char name[32]; sprintf(name, "/wake_%05d.jpg", number); return String(name); } void takeAndSavePhoto() { // The first pictures after a start are too dark, so we throw two away for (int i = 0; i < 2; i++) { camera_fb_t *old = esp_camera_fb_get(); if (old) esp_camera_fb_return(old); } camera_fb_t *fb = esp_camera_fb_get(); if (!fb) { Serial.println("Photo capture failed"); return; } // The counter may be behind after a card change, so find a free name while (SD_MMC.exists(makeFileName(photoNumber))) photoNumber++; String fileName = makeFileName(photoNumber); File file = SD_MMC.open(fileName.c_str(), FILE_WRITE); if (file) { file.write(fb->buf, fb->len); file.close(); Serial.printf("Saved %s (%u bytes)\n", fileName.c_str(), fb->len); photoNumber++; } else { Serial.printf("Cannot write the file %s\n", fileName.c_str()); } esp_camera_fb_return(fb); } // Turns everything off and goes to sleep until the PIR sensor goes HIGH void goToSleep() { Serial.println("Going to sleep. Bye."); Serial.flush(); esp_camera_deinit(); SD_MMC.end(); // Wake up when the PIR pin becomes HIGH (the number 1 means HIGH) esp_sleep_enable_ext0_wakeup(PIR_PIN, 1); // Hold the pull-down during sleep, so the pin does not float rtc_gpio_pulldown_en(PIR_PIN); rtc_gpio_pullup_dis(PIR_PIN); esp_deep_sleep_start(); // Nothing after this line ever runs. The board starts again at setup(). } void setup() { Serial.begin(115200); delay(500); wakeCount++; esp_sleep_wakeup_cause_t reason = esp_sleep_get_wakeup_cause(); if (reason == ESP_SLEEP_WAKEUP_EXT0) Serial.printf("Wake up number %d: the PIR sensor saw a movement\n", wakeCount); else Serial.printf("Wake up number %d: the board was switched on\n", wakeCount); if (!initCamera()) { Serial.println("The camera failed. Sleeping anyway."); goToSleep(); } if (!initSDCard()) { Serial.println("The card failed. Sleeping anyway."); goToSleep(); } delay(WARMUP_TIME); takeAndSavePhoto(); goToSleep(); } void loop() { // Empty. This board never reaches loop(), because setup() ends in deep sleep. }

Schnelle Schritte

  • Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
  • Formatieren Sie Ihre microSD-Karte auf Ihrem Computer als FAT32.
  • Ziehen Sie das USB-Kabel ab. Stecken Sie die Karte in den Steckplatz und verdrahten Sie den PIR-Sensor wie in der Tabelle oben.
  • Kopieren Sie den obigen Code und fügen Sie ihn in die Arduino IDE ein.
  • Ä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.
So öffnen Sie den Seriellen Monitor in der Arduino IDE
  • Drücken Sie einmal die Taste RESET. Das Board nimmt ein Foto auf und schläft.
  • Bewegen Sie Ihre Hand vor dem Sensor. Das Board wacht auf, Sie sehen eine neue Zeile, und es schläft wieder.
  • Wenn alles passt, ziehen Sie das USB-Kabel ab und verwenden Sie stattdessen eine Powerbank.
  • Profi-Tipp: Lassen Sie den Seriellen Monitor während des Tests geöffnet. Nur so sehen Sie, dass das Board wirklich aufwacht.

Serieller Monitor

Jedes Aufwachen gibt zwei Zeilen aus. 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 11:00:01] Wake up number 1: the board was switched on [2026-09-28 11:00:02] Camera sensor: OV5640 (5 MP, max QSXGA 2592x1944) [2026-09-28 11:00:03] Saved /wake_00001.jpg (51353 bytes) [2026-09-28 11:00:03] Going to sleep. Bye. [2026-09-28 11:04:41] Wake up number 2: the PIR sensor saw a movement [2026-09-28 11:04:43] Saved /wake_00002.jpg (52180 bytes) [2026-09-28 11:04:43] Going to sleep. Bye. [2026-09-28 11:19:07] Wake up number 3: the PIR sensor saw a movement [2026-09-28 11:19:09] Saved /wake_00003.jpg (50992 bytes) [2026-09-28 11:19:09] Going to sleep. Bye.
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

※ Notiz:

Das Board ist jedes Mal nur etwa 2 Sekunden wach. Die ganze übrige Zeit schläft es und verbraucht fast nichts. Das ist die ganze Idee dieses Projekts.

So sparen Sie noch mehr Strom

Der Akku wird auf zwei Arten beansprucht: ständig eine sehr kleine Menge, während das Board schläft, und eine viel größere Menge während der zwei Sekunden jedes Fotos. Es gibt also nur zwei Wege, weniger zu verbrauchen:

Was zu tun istWieWarum es hilft
Kürzer wach bleibenVerwenden Sie eine kleinere FRAME_SIZE, zum Beispiel FRAMESIZE_VGAEin kleineres Foto wird schneller aufgenommen und geschrieben
Seltener aufwachenDrehen Sie die Empfindlichkeits-Schraube des Sensors herunter und richten Sie ihn von der Straße wegJedes Aufwachen kostet viel mehr als eine Stunde Schlaf

Beobachten Sie den Seriellen Monitor, um zu sehen, wie lange Ihr Board wirklich wach ist. Die Zeit zwischen Wake up number ... und Going to sleep. Bye. ist der Teil, der Strom kostet. Alles zwischen zwei Aufwachvorgängen ist fast kostenlos.

※ Notiz:

Wir sagen hier nicht, wie viele Tage oder Wochen ein Akku hält, denn das hängt von zu vielen Dingen ab: welcher Akku, wie alt er ist, wie kalt die Nacht ist, wie oft jemand vorbeigeht und wie viel Ihre eigene Powerbank selbst verbraucht. Messen Sie es an Ihrem eigenen Ort, mit Ihrem eigenen Akku.

※ Notiz:

Viele Powerbanks schalten sich selbst ab, wenn ein Gerät fast keinen Strom zieht, und genau das tut der Deep Sleep. Wenn Ihre Kamera in der Nacht aufhört zu arbeiten, ist das meist der Grund. Verwenden Sie eine Powerbank, die einen "Low-Current-Modus" unterstützt, oder einen Akku mit einer passenden Halterung.

Fehlerbehebung

Das Board wacht nie auf.

  • Der OUT-Pin des Sensors muss an GPIO21 liegen. Ein Pin über GPIO21 kann das Board nicht wecken.
  • Prüfen Sie, ob der Sensor 5V bekommt, nicht 3,3V.
  • Warten Sie nach dem ersten Start eine Minute. Der PIR-Sensor wärmt sich noch auf.

Das Board wacht immer wieder auf, obwohl nichts davor ist.

  • Der Sensor ist zu empfindlich. Drehen Sie die Empfindlichkeits-Schraube ein wenig nach links.
  • Richten Sie den Sensor von Fenstern, Heizungen und Klimaanlagen weg.

Jedes Foto ist schwarz oder sehr dunkel.

Die Kamera hatte keine Zeit, das Licht einzustellen. Erhöhen Sie WARMUP_TIME von 400 auf 800 und ändern Sie die Schleife von 2 auf 3 Bilder.

Die Fotos hören nach einigen Stunden an einer Powerbank auf.

Die Powerbank hat sich selbst abgeschaltet, weil der Deep Sleep zu wenig Strom für sie zieht. Verwenden Sie eine Powerbank mit Low-Current-Modus oder einen Akku.

Der Serielle Monitor verliert nach jedem Schlaf die Verbindung.

Das ist am nativen USB-Anschluss normal, weil das Board verschwindet, wenn es schläft. Verwenden Sie zum Testen den UART-Anschluss und stellen Sie USB CDC On Boot auf Disabled.

Die Nummern beginnen nach einem Stromausfall wieder bei 1.

RTC_DATA_ATTR übersteht keinen Stromausfall. Das ist kein Problem: Der Code sucht den ersten freien Namen auf der Karte, sodass nie ein Foto überschrieben wird.

Anwendungen

Eine Kamera, die kein Kabel braucht, kann dorthin, wo die anderen Projekte nicht hinkommen. Hier sind praktische Projekte, die Sie mit diesem Code bauen können:

  1. Wild- und Tierkamera: Stellen Sie sie in einen Wald oder auf ein Feld ganz ohne Strom.
  2. Paketbox-Kamera: Ein kleiner Akku in der Box und kein Kabel durch die Wand.
  3. Gartentor-Beobachter: Überwachen Sie ein Tor weit weg vom Haus, ohne ein Kabel verlegen zu müssen.
  4. Fahrrad- und Garagenkamera: Bewahren Sie ein Foto von jedem auf, der in die Nähe kommt, ganz ohne Verdrahtungsarbeit.
  5. Ferienhauskamera: Lassen Sie sie in einem leeren Haus, während Sie weg sind.
  6. Hof- und Scheunenkamera: Beobachten Sie Tiere oder eine Maschine weit weg von jeder Steckdose.
  7. Baustellenkamera: Stellen Sie sie jeden Tag um, denn es gibt nichts einzustecken.
  8. Bienenstock-Beobachter: Beobachten Sie den Bienenstock ohne ein Kabel quer durch den Garten.
  9. Autokamera: Nehmen Sie ein Foto auf, wenn sich jemand Ihrem geparkten Auto nähert.
  10. Temporäre Sicherheitskamera: Stellen Sie sie für eine Weile irgendwo auf und nehmen Sie sie dann wieder mit.

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: Ändern Sie die Fotogröße von FRAMESIZE_SVGA auf FRAMESIZE_UXGA und sehen Sie, wie viel länger das Board wach bleibt.
  2. Fortgeschrittene: Fügen Sie zusätzlich ein Aufwecken per Timer hinzu, sodass das Board auch ohne Bewegung jede Stunde ein Foto aufnimmt. Verwenden Sie esp_sleep_enable_timer_wakeup().
  3. Profis: Verbinden Sie nach dem Aufwachen das WLAN, senden Sie das Foto an Telegram und schlafen Sie dann. Beobachten Sie den Seriellen Monitor und sehen Sie, wie viel länger das Board wach bleiben muss.

※ 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!