ESP32-Cam Probleme beheben

Für weniger als 10 Euro bekommt man einen ESP32 Mikrocontroller samt Kamera, die auch streaming und Gesichtserkennung beherrscht. Leider ist das Teil ziemlich zickig. So habe ich die Fehler behoben.
Bitte beachte: Dieser Beitrag ist mehr als 3 Jahre alt. Manche Links, Preise, Produkte und Aussagen sind vielleicht nicht mehr aktuell!

Die ESP-Familie von Espressif ist durch den ESP8266 bekannt geworden, der sich in vielen WLAN-Steckdosen, Lampen und anderen Geräten findet. Eine günstige Variante kommt mit einer Kamera und lässt sich zur Überwachungskamera umbauen. Es ist sogar eine Gesichtserkennung möglich. Die Kamera liefert einen Live-Stream und bietet jede Menge Einstellungsmöglichkeiten per Web-Interface:

Das Web-Interface des ESP32-CAM Beispiels
Das Web-Interface des ESP32-CAM Beispiels

ESP32-Cam mit der Arduino-IDE flashen

Die ESP-Mikrocontroller lassen sich mit der Arduino-IDE flashen und programmieren. Hier in aller Kürze die wichtigsten Einstellungen.

In der Arduino-IDE wird zunächst die Quelle für die Board-Informationen eingebunden:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!

Zusätzliche Board-Verwalter URLs in der Arduino IDE eintragen
Die URL wird unter „Zusätzliche Boardverwalter-URLs“ eingetragen

Mehrere Einträge werden mit einem Komma getrennt. Damit kann man im Anschluss unter Werkzeuge->Board->Boardverwalter die Definitionen für die ESP32 Boards installieren. Einfach ESP32 in der Suche eingeben und das Board installieren.

ESP32 Board installieren
ESP32 Board installieren

Nach der erfolgreichen Installation wählt man das Board ESP32 Wrover Module aus. Die Board-Einstellungen erfolgen normalerweise automatisch und sollten wie im Screenshot aussehen:

ESP32 Wrover Module auswählen
ESP32 Wrover Module auswählen

Zur Programmierung der günstigen ESP32-Cam Boards braucht man einen FTDI-Adapter. Der 3,3 Volt und GND-Anschluss des FTDI-Adapters kommt auf den 3,3 V und GND auf dem Board, dabei nicht vergessen, den Jumper für die Spannung auf dem FTDI-Adapter auch auf 3,3 Volt zu stecken, sonst killt ihr euren ESP32! Der RX-Anschluss des Adapters kommt auf den UOT-Anschluss am ESP32 und der TX-Anschluss auf den UOR-Anschluss des ESP. Wenn ihr den FTDI-Adapter an eurem Rechner anschließt, zeigt er sich als neuer COM-Port (PC). Diesen COM-Port stellt ihr in den Board-Einstellungen (letzter Screenshot) unter Port ein. Um den ESP32 flashen zu können, braucht ihr eine Brücke zwischen GND und IO0, nur dann kann der ESP32 programmiert werden.

Unter Datei->Beispiele->ES32->Camera könnt ihr nun das CameraWebServer Script laden. Hier müssen folgende Zeilen angepasst werden:

#include "esp_camera.h"
#include <WiFi.h>

//
// WARNING!!! Make sure that you have either selected ESP32 Wrover Module,
//            or another board which has PSRAM enabled
//

// Select camera model
//#define CAMERA_MODEL_WROVER_KIT
//#define CAMERA_MODEL_ESP_EYE
//#define CAMERA_MODEL_M5STACK_PSRAM
//#define CAMERA_MODEL_M5STACK_WIDE
#define CAMERA_MODEL_AI_THINKER

#include "camera_pins.h"

const char* ssid = "DEINE-SSID";
const char* password = "DEIN-WLAN-PASSWORT";

void startCameraServer();

void setup() {
  Serial.begin(115200);
  Serial.setDebugOutput(true);
  Serial.println();

Code-Sprache: C++ (cpp)

Hat man das Script wie oben geändert und abgespeichert, kann der ESP32 geflasht werden. Dazu klickt ihr auf den Pfeil oben links in der Arduino-IDE und gleich danach die Reset-Taste auf dem ESP32. Nun sollte das Programm zum ESP32 hochgeladen werden. Die IDE bestätigt euch den erfolgreichen Upload. Das sollte in etwa so aussehen:

Erfolgreicher ESP32-Cam Flash-Vorgang
Erfolgreicher ESP32-Cam Flash-Vorgang

Nun entfernt ihr die Brücke zwischen GND und IO0 wieder, da sonst das Programm nicht gestartet wird (der ESP32 bleibt dann im Programmiermodus). Danach öffnet ihr die serielle Konsole in der IDE und drückt erneut die Reset-Taste. Wenn ihr nun nach einigen Zeilen

WiFi connected
Starting web server on port: '80'
Starting stream server on port: '81'
Camera Ready! Use 'http://192.168.1.34' to connectCode-Sprache: Zugriffs-Log (accesslog)

seht, lief alles super und ihr könnt über die angegebene IP-Adresse das Setup-Interface aufrufen und über http://192.168.1.34:81/stream (natürlich mit eurer IP-Adresse) das Live-Bild der Kamera betrachten.

Probleme mit dem ESP32-Cam Modul beheben

Eines der größten Probleme des Moduls ist der „Brownout“. Als Brownout wird ein kurzzeitiges Absinken der Spannung bezeichnet und genau das passiert bei vielen ESP32-Cam Clones, sobald das WLAN starten möchte. Viele FTDI-Programmer und die dazu angeschlossenen USB-Kabel können die kurzzeitig hohen Ströme beim Start der WLAN-Verbindung nicht liefern und in der seriellen Konsole der Arduino IDE wird dann „Brownout detector was triggered rst:0xc …“ angezeigt.

Erste Abhilfe schaffen bessere USB-Kabel. Zudem sollte man im Echtbetrieb den ESP32 über den 5 Volt-Anschluss mit Strom versorgen. Ebenso ist ein 220 µF Elko am 5V- und GND-Pin hilfreich.

Elko am ES32

Ein weiteres Problem ist aber die Stromversorgung selbst. Viele USB-Ports und Powerbanks liefern gerade mal so 5 Volt. Bei dem kurzzeitigen Strombedarf des ESP32 brechen diese aber schnell auf 4,8 Volt und weniger ein. Auf dem ESP32 befindet sich jedoch ein Spannungsregler vom Typ AMS1117, der nicht zu den allerbesten seiner Art gehört. Zwar kann er die gewünschte Ausgangsspannung von 3,3 Volt noch bis zu einer Eingangsspannung von 4,35 Volt (laut Datenblatt) stabil erzeugen. In der Praxis klappt das jedoch nicht wirklich und der Brownout wird provoziert.

In einem Test an meinem Rigol DP832 Labornetzteil habe ich festgestellt, dass der ESP32 erst ab 5,4 Volt am Eingang stabil arbeitet. Einige billige China-USB-Netzteile liefern genau diese überhöhten Spannungen und damit funktioniert der ESP32-Cam einwandfrei.

Da der AMS1117 Spannungsregler Eingangsspannungen bis 15 Volt verträgt, kann man den ESP32 mit 6 oder 7 Volt betreiben und vermeidet damit die genannten Probleme. Höhere Spannungen führen bei dem Linear-Regler natürlich auch zu mehr Verlusten und Abwärme.

Streifen im Bild

Ebenfalls mit einer zu niedrigen Versorgungsspannung hängen die horizontalen Streifen im Bild zusammen, die häufig bemängelt werden. Auch hier hilft eine einfache Anhebung der Versorgungsspannung am 5 Volt Eingang des ESP32 auf 5,5 Volt oder mehr.

Mangelnde WLAN-Reichweite

Die EPS32 Clones sind keine Reichweiten-Monster, wenn es um die WLAN-Verbindung geht. Allerdings befindet sich auf dem Board eine Mini-Coax-Buchse (MHF IV, I-PEX, HSC MXHP32). Das Problem daran ist, dass sie nicht einfach so genutzt werden kann. Um eine externe Antenne am ESP32 anschließen zu können, muss ein Bauteil umgelötet werden, das die Coax-Buchse statt der eingebauten Antenne verbindet.

Dabei handelt es sich um eine einfache SMD-Brücke im 0402 (01005) Format. Wir reden hier also von einem Bauelement, das weniger als einen halben Millimeter lang ist. So ein Teil von Hand aus- und wieder einzulöten ist selbst mit der besten Ausstattung praktisch unmöglich. Da es sich nur um eine Brücke handelt, kann man das Teil aber einfach auslöten und mit viel Fingerspitzengefühl gegen ein Stückchen Draht aus einer Ader einer Litze ersetzen. Ein Mikroskop macht diese Arbeit deutlich leichter.

Einfacherer Umbau für eine externe Antenne

Wer es einfacher möchte, trennt die interne Antenne an der Speiseleitung auf und lötet da die externe Antenne an. Ich habe übrigens die Antenne samt Coax-Kabel einer alten Fritzbox recycelt.

Fazit

Abgesehen von kleineren Quirks, ist die ESP32-Cam ein wirklich hilfreiches und preiswertes Teil, für die es jede Menge Anwendungen gibt.

Melde dich zu meinem Newsletter an!

Du kannst dich jederzeit abmelden und ich verspreche: Kein Spam!


Die mit Sternchen (*) gekennzeichneten Verweise sind sogenannte Provision-Links. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.Wenn du auf so einen Verweislink klickst und über diesen Link einkaufst, bekomme ich von deinem Einkauf eine Provision. Für dich verändert sich der Preis nicht und du unterstützt damit meine Arbeit. Preisänderungen und Irrtümer vorbehalten.

17 Kommentare

  1. Hallo, vielen Dank erstmal für die nützlichen Tipps. Die Anhebung der Spannung hat bei mir bewirkt, dass keine Streifen mehr im Bild sind. Ich habe jedoch das Problem, dass meine ESP Cam nach wenigen Minuten immer einen eingefrorenen Stream anzeigt und dann nicht mehr erreichbar ist – also vermutlich abstürzt. Es hilft dann immer nur ein Reset bzw. kurz Spannung weg und wieder dran für einen Neustart. Hast du dafür noch Tipps bzw. könnte das der Elko lösen?

    Beste Grüße Tom

  2. Hallo Markus, danke für die hilfreichen Infos! Ich habe noch 2 Fragen. Man kann ja die LED einschalten, indem ich den Code anpasse. das funktioniert bei mir. Ich würde allerdings den „Lichtschalter“ gerne in das Bildschirmmenü mit eingebaut haben. Hast Du einen Tip dazu, wie es zu realisieren ist?

    Weiterhin würde ich die Kamera gerne in den ioBorker mit einbauen. Hast Du dafür ggf Infos darüber, die Du mir zur Verfügung stellen könntest?

    Danke und Gruß

    Ingo

    • Ich setze seit über 2 Jahren auf Home Assistant (HA) und mit der perfekten Integration der ESPHome-Plattform spart man sich viel Aufwand. Mit ioBroker hatte ich mich mal vor 4 Jahren beschäftigt, aber schnell wieder verworfen, sodass ich dir da keine Tipps geben kann.

      Als ESPHome Skript würde die komplette Kamera-Integration samt „Lichtschalter“ so aussehen:

      
      esphome:
        name: espcam1
        platform: ESP32
        board: esp-wrover-kit
      
      
      wifi:
        ssid: "asdfasdfadsf"
        password: "asdfasdfasdfasdf"
      
        # Enable fallback hotspot (captive portal) in case wifi connection fails
        ap:
          ssid: "Esp Cam1 Fallback Hotspot"
          password: "asdfasdfsd"
      
      captive_portal:
      
      # Enable logging
      logger:
      
      # Enable Home Assistant API
      api:
        password: "meinpasswort"
      
      ota:
        password: "einpasswort"
      
      esp32_camera:
        name: My Camera
        external_clock:
          pin: GPIO0
          frequency: 20MHz
        i2c_pins:
          sda: GPIO26
          scl: GPIO27
        data_pins: [GPIO5, GPIO18, GPIO19, GPIO21, GPIO36, GPIO39, GPIO34, GPIO35]
        vsync_pin: GPIO25
        href_pin: GPIO23
        pixel_clock_pin: GPIO22
        power_down_pin: GPIO32
      
          
      output:
        - platform: gpio
          pin: GPIO4
          id: licht
      
      light:
        - platform: binary
          output: licht
          name: "$hostname Kameralicht"
      Code-Sprache: PHP (php)

      Damit hat man in Home Assistant das Live-Bild, einen Schalter für das Kameralicht und weitere Sensoren wie Uptime etc.
      Ich kann HA wärmstens empfehlen, da es allen anderen Plattformen haushoch überlegen ist. Es ist nicht umsonst eines der 10 größten Opensource-Projekte auf GitHub.

  3. Das ist doch mal ein wertvoller Tipp mit dem Elko. Was mich jedoch noch mehr interessiert ist wie es mit der Gesichtserkennung bzw. Objekterkennung geht.
    Grüße aus Meerbusch

  4. Hallo.
    Also ich habe das Problem mit dem WLAN und zwar setze ich einen Ping auf die CAM ab erhalte ich immer wieder Unterbrüche. Der RSSI-Wert lese ich alle paar Sekunden aus dme Sketch aus und liegt immer zwischen 50-60db. Also der Empfangspegel ist Perfekt.
    Die Unterbrüche können durch leichten Druck auf die Platine behoben werden….
    Kennt jemand ein solches Verhalten?

  5. Hallo, der Stützkondensator funktioniert noch besser wenn er an die 3V3 gehängt wird. Daraus wird dann der Prozessor versorgt. Gruß Klaus

      • Hallo, ich bastele gerne diese Projekt nach, habe aber elektronisch keine Kenntnisse 🙁
        Was für einen Kondensator genau muß ich da verwenden ? Habe bei Ebay da verschiedene gefunden, wo die Volt unterschiedlich sind… Man möge meine Unkenntnisse verzeihen, aber es macht mir dennoch viel Spaß … Vielen Dank

        • Hallo, die Elektrolyt-Kondensatoren (Elko) haben zwei Werte: die Kapazität (z.B. 220mikroFarad wie oben genannt) und die maximale Spannung. Bei Haushaltsgeräten müssen die ja mindesten 230 V aushalten, hier beim ESP32 eigentlich nur 5V. Zur Sicherheit also etwas höher wählen, also 10 bis 20 V sollten reichen. Die Elkos mit kleinerer maximalen Spannung sind dann auch billiger. Auf die Polung muss man achten, sonst gehen sie kaputt (also Plus an Plus). Zu groß darf man den Stützkondensator auch nicht wählen, denn bis er sich geladen hat wirkt er wie ein Kurzschluss für die Spannungsquelle. Ich hatte mal einen riesigen Elko aus einer Waschmaschine übrig und habe damit ein kleines 5V-Netzteil geschrottet. Ein riesiger Kondensator ersetzt also nicht ein gutes Netzteil.

        • Genau so isses. Überlicherweise nimmt man hier 16 V Typen – die bekommt man einfach und billig.

          Ich würde auch einen Blick ins https://www.elektronik-kompendium.de/ werfen. Für Elektronik-Einsteiger ideal!

          Die Sache mit dem Kondensator aus der Waschmaschine verstehe ich aber nicht: Anlaufkondensatoren haben meist nur wenige Mikrofarad (5-10 uF). Damit kann man eigentlich kein Netzteil schießen -außer wenn er defekt war …

        • Doch, wenn der Kondensator noch so richtig viel Spannung drauf hatte.

        • Das hätte er sicher schon vor dem Einbau heftig gespürt 🙂

Schreibe einen Kommentar zu Manfred ZimmerAntworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert