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.

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

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

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 connect

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.

0 0 vote
Article Rating

Der kostenlose nachbelichtet-Newsletter für dich

Abonnieren
Benachrichtige mich bei
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments

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