Einrichten der ESP32-CAM und erster betrieb

In diesem Tutorial möchte ich dir zeigen, wie du die ESP32-CAM einrichtest und mit einem kleinen Beispiel betreibst.

Bezug

Die ESP32-CAM für dieses Tutorial habe ich über ebay.de für knapp 8€ inkl. Versandkosten erstanden. 

Diesen Mikrocontroller erhält man bei aliexpress.com oder auch banggood.com für einen deutlich günstigeren Preis, jedoch sind diese Portale nicht die zuverlässigsten und meine Erfahrung hat ergeben, dass es ein großes Glücksspiel ist, ob die Teile überhaupt oder heile ankommen.

Damit ein Sketch auf diesen Mikrocontroller geladen werden kann, benötigt man zusätzlich ein FTDI Modul, dieses Modul erhält man wiederum bei ebay.de für knapp 4 €.

Technische Daten der ESP32-CAM

  • 32Bit Dual Core CPU mit 240 MHz Taktgeschwindigkeit
    • Rechenleistung bis zu 600 DMIPS
  • Speicher
    • SRAM – 520 KB
    • PSRAM – 4 MB
  • Schnittstellen
    • Bluetooth / Bluetooth Low Energy (BLE) ,
    • WiFi (802.11 b/g/n/e/i),
    • UART,
    • SPI,
    • PWM,
    • ADC & DAC
  • Kameramodul
    • OV2640* oder OV7670
  • SD Kartenslot für Micro SD Karten bis zu 4GB
  • Abmaße (L x B x H) 40 mm x 27 mm x 18 mm

* In meinem Fall ist das Modul OV2640 mit 2MP verbaut.

Pinout der ESP32-CAM

Der Mikrocontroller ESP32-CAM verfügt über 16 Pins einer Schnittstelle für das Kameramodul und ein SD Kartenslot für Micro SD-Karten bis zu 4 GB.

Pinout des Microcontrollers ESP32-CAM
Pinout des Mikrocontrollers ESP32-CAM

Anschluss und Schaltung

Wie bereits erwähnt, wird ein FTDI Modul benötigt. 

FTDI Modul
FTDI Modul

Da wir die ESP32-CAM über 5V betreiben wollen, müssen wir zusätzlich auf dem FTDI Modul den Jumper auf 5V einstellen.

FTDI Modul - Jumper für die Spannungswahl
FTDI Modul – Jumper für die Spannungswahl

Wir benötigen also für den Aufbau neben dem FTDI Modul & dem ESP32-CAM Modul noch 4 Breadboardkabel (20 cm, weiblich – männlich) und 1 Breadboardkabel (10 cm, männlich – männlich), sowie ein Breadboard mit min. 400 Pins.

FTDI Modul ESP32-CAM
RX UOT
TX UOR
GND GND
VCC 5V

Das 10 cm Breaboardkabel wird von IOT auf GND des ESP32-CAM gesteckt.

Aufbau der Schaltung ESP32 - CAM mit FTDI Modul
Aufbau der Schaltung ESP32 – CAM mit FTDI Modul

Jedoch wird diese Brücke nur für den Upload des Sketches benötigt, für den betrieb muss diese wieder entfernt werden.

Schematischer Aufbau der Schaltung "ESP32-CAM mit FTDI Modul"
Schematischer Aufbau der Schaltung „ESP32-CAM mit FTDI Modul“

Programmieren des ESP32

Einrichten des Boardtreibers

Damit der ESP32 mit der Arduino IDE programmiert werden kann, muss zusätzlich ein Treiber für das Board installiert werden. Dieser Treiber wird über den Boardverwalter hinzugefügt. Jedoch muss man zuvor die „Board Manager URLs“ unter den Voreinstellungen um die Adresse „https://dl.espressif.com/dl/package_esp32_index.json“ erweitern.

Arduino IDE - erweitern der "Board Manager URLs" in den Voreinstellungen
Arduino IDE – erweitern der „Board Manager URLs“ in den Voreinstellungen

Wenn dieses geschehen ist, so kann der Boardverwalter über „Werkzeuge“ > „Board: xyz“ > „Boardverwalter…“ geöffnet werden. In dem Fenster des Boardverwalters wird nun nach dem Begriff „esp32“ gesucht (1), es sollte genau einen Treffer geben, welchen wir mit der Schaltfläche „Installieren“ (2) installieren. Nachdem der Treiber installiert wurde (dieses kann je nach Internet & Rechnergeschwindigkeit des Computers etwas dauern) können wir dieses Fenster mit der Schaltfläche „Schließen“ (3) schließen.

Arduino IDE - Boardverwalter, ESP32 installieren
Arduino IDE – Boardverwalter, ESP32 installieren

Obwohl ich eine 50Mbit Leitung habe, dauerte der Download des ca. 32 MB großen Paketes ungewöhnlich lange, daher bitte etwas mehr Zeit für diesen Vorgang einplanen.

Einrichten des Boards in der Arduino IDE

Wenn du den Boardtreiber nun installiert hast, dann musst du diesen auswählen und ein paar Standardwerte ändern.

Konfiguration des Microcontrollers ESP32-CAM in der Arduino IDE
Konfiguration des Microcontrollers ESP32-CAM in der Arduino IDE

Upload des Beispielsketches aus dem ESP32 Paket

Dem ESP32 Paket liegt ein Beispiel für die ESP32 – CAM bei, solltest du dieses nicht haben so kannst du dir das kostenfrei vom GitHub Repositor espressif/arduino-esp32 herunterladen. Alternativ biete ich dir ein fertig konfiguriertes Sketch am Ende dieses Beitrages an.

Wenn du dieses Beispiel hochgeladen hast, dann musst du diesen einmal neu starten. Diesen Neustart kannst du entweder über den Verbauten Resetknopf machen oder aber du entfernst einmal die Stromversorgung und steckst diese erneut ein.

In dem seriellen Monitor der Arduino IDE kannst du folgende Ausgabe sehen.

Ausgabe auf dem seriellen Monitor der Arduino IDE (nach dem Upload des Sketches))
Ausgabe auf dem seriellen Monitor der Arduino IDE (nach dem Upload des Sketches)

Diese Ausgabe bleibt etwas länger stehen, d.h. man muss etwas warten bis es weitergeht.

Wenn der Vorgang abgeschlossen ist, dann wird die Verbindung zum Wi-Fi Netzwerk aufgebaut und die IP-Adresse des ESP32-CAM Moduls wird angezeigt. 

Aufbau einer WiFi Verbindung
Aufbau einer WiFi Verbindung

Webseite im Browser

Wenn die WiFi Verbindung aufgebaut wurde, dann kannst du über die angezeigte IP-Adresse im Browser eine Seite anzeigen lassen, auf welcher man zbsp. einen Stream starten kann.

Webpage im Browser der ESP32-CAM
Webpage im Browser der ESP32-CAM

Streamen mit dem VLC-Player

Der kostenfreie VLC-Player ist ein wahrer Alleskönner, wenn es um das Abspielen von Multimediadateien geht. Dieser kann auch Netzwerkstreams öffnen und wiedergeben. Dieses habe ich bereits bei der Raspberry PI Camera B01 vorgestellt und möchte ich nun auch für diese ESP32-CAM zeigen.

Die Adresse für den Stream lautet http://<IP-ADRESSE>:81/stream, die IP-Adresse kannst du entweder aus deinem Router auslesen oder aber auf dem seriellen Monitor der Arduino IDE ablesen.

Im VLC Player navigierst du über das Hauptmenü „Medien“ > „Netzwerkstream öffnen…“ um den Dialog „Medien öffnen“ zu starten. In diesem Dialog musst du nun die oben gezeigte Adresse eingeben (natürlich mit deiner IP-Adresse), in meinem Fall lautet diese „http://192.168.178.51:81/stream“.

starten des Netzwerkstreams im VLC-Player
starten des Netzwerkstreams im VLC-Player

Der Netzwerkstream im VLC Player kann aber nur gestartet werden, wenn kein weiterer gestartet ist (zbsp. über die Webseite im Browser).

Aufnahme eines Bildes

Man kann sich auch ein einzelnes Bild von der aktiven ESP32-CAM holen, dazu muss man nur die Adresse statt mit „/stream“ , mit „/capture“ beenden. Es wird jetzt ein Foto aufgenommen und für 10 Sekunden angezeigt. 

VLC Player , ESP32-CAM capture Image
VLC Player, ESP32-CAM capture Image

Downloads

 

Weitere Beiträge mit der ESP32-CAM

Zu dieser nützlichen CAM habe ich bereits einige weitere Beiträge erstellt, welche du unter folgenden Links findest:

44 Kommentare

  1. Hi
    Besteht auch die Möglichkeit das Videosignal via Bluetooth z.B. an ein Handy zu senden?
    Ich denke auf ein Projekt herrum bei dem ich ein Bildsignal übermitteln möchte, dieses aber ohne WiFi.

    mfg
    Lars

    1. Hi,

      das ist eine gute Frage.
      Da muss ich mal die Suchmaschine Google bemühen, an diesen Anwendungsfall habe ich noch nicht gedacht.

      Gruß,

      Stefan

  2. Hallo Stefan,
    ich hab mir die ESP32-CAM mit dem CH340G Anhängsel geleistet. Über USB an den PC angeschlossen, in deinem Code in der Arduino-IDE SSID und Passwort eingestellt, den Code geladen, Browser geöffnet und… alles läuft perfekt. VLC Player tut natürlich auch. Dank deiner Anleitung war das in einer Viertelstunde ohne Schweißperlen auf der Stirn erledigt. Ich hab erst tagelang einer OV7670 rumgedocktert. Das machte nicht wirklich Spaß. Also vielen Dank für die perfekte Anleitung!
    Gruß Gerd
    PS: Ich hab noch keine schlechte Erfahrung mit China-Import gemacht

  3. Hallo Stefan,

    ich denke ich habe Deine Anleitung soweit nachgestellt. Nach dem Upload des Sketches und einem Reset erscheint auch im seriellen Monitor „… waiting for download“.
    Doch dann passiert nichts weiter. Was kann ich gegebenen Falles noch tun?

    Danke im Voraus und Grüße

    1. Hi,

      das habe ich bei einem meiner ESP32 CAM Module auch da musste ich die Verbindung von IO0 und GND (in der Grafik die graue Brücke) trennen.
      Diese dient dazu den Mikrocontroller in den Flash zustand zu versetzen.

      Gruß,

      Stefan

  4. Hallo Stefan,
    vielen Dank für deine gute Anleitung: ich habe einige ausprobiert, dies ist die erste, die funktioniert 🙂 Vielleicht lag es am geänderten Partition Scheme. Und es dauerte wirklich lange, bis das Teil sich mit dem Router (Fritzbox) verbunden hatte, ich wollte eigentlich schon aufgeben…
    Viele Grüße
    Holger

    1. Hi,

      bei der von mir vorgestellten ESP32-CAM brauchst du keinen zusätzlichen Mikrocontroller. Es ist bereits ein ESP32 verbaut.

      Einzig benötigt man noch ein FTDI Modul zum programmieren.

      Gruß Stefan

  5. Hallo, ein frohes,neues Jahr. Ich bin auf diese interesannte Seite gestoßen.Ich habe einen ESP32-cam erworben und möchte ihn mit meinen Wlan verbinden. Ich bin mir aber noch nicht sicher, welche Sachen ich in dem Sketch ändern bzw einstellen soll. Ich habe alles nach der Vorgabe auf der Seite ausgeführt und der Sketch ist in der IDE geladen und steht zur Verfügung zum hochladen. Ich hoffe auf Tipps, LG Mike

    1. Zur Routerverbindung müssen die folgenden beiden Konstanten im Quellcode angepasst werden. Danach verbindet sich das Board mit dem WLAN. Die IP Adresse kann z.B. im Router dann überprüft werden. Der Zugriff auf den ESP erfolgt dann über den Webbrowser.

      const char *ssid_Router
      const char *password_Router

  6. Moin Stefan,

    danke erst einmal für den Beitrag. Ich habe eine ESP32-WROVER-DEV mit OV2460 im Test, aber die Bilder sind total unscharf, die Qualität ist unterster Bereich. Wie waren deine Erfahrungen? Auch ist die Geschwindigkeit bei einer höheren Auflösung im Streaming Modus schlecht. Ich habe das Gefühl da fehlen ein paar PS unter der Haube.

    Danke

    Christoph

  7. Hallo , habe den Sketch geflasht . Dann kommt die meldung Hard reset via Rts Pin . Habe aber das Entwickler Board . Auf diesem und auf dem Camera Board habe ich schon die reset Knöpfe gedrückt, es passier leider nichts . Auf dem seriellen Monitor kommen nur komische Zeichen wie zb. >))_!?

    1. Hi,

      hast du im seriellen Monitor die korrekte Baudrate eingestellt?

      Ggf. auch einmal auf 57200 stellen und prüfen ob hier debug Ausgaben angezeigt werden.

      Gruß

      Stefan Draeger

      1. Ja hatte im monitor die falsche Baudrate , hat alles funktioniert . jedoch ist das bild so unscharf das es nicht zu gebrauchen ist .

        1. Hi,

          welche Einstellungen hast du denn im Browser für die Kamera getroffen?
          Schicke mir doch mal ein Screenshot. (ggf. auch einmal mit einem Wattestäbchen und etwas Alkohol die Linse reinigen).

          Gruß

          Stefan Draeger

    1. Hi,

      wenn du das default Sketch für die ESP32-CAM verwendest, dann kannst du das Bild über die Weboberfläche einstellen.

      Gruß

      Stefan Draeger

      1. Hallo und danke für die Antwort. Nützt nur nichts, solange du nicht verrätst WIE. Ich kann unter …/control nur 180 Grad einstellen, sowohl horizontal, als auch vertikal. Aber wie 90 Grad??? Oder geht es über ein Anhängsel an die URL? Wie lautet das?

        1. Hi,

          sorry ich hätte gedacht das geht über die Weboberfläche. Leider ist dieses nicht so, es gibt laut der Dokumentation im GitHub Repository keine Möglichkeit das Bild zu drehen.
          Du müsstest also die Kamera physisch um 90° drehen.

          Gruß

          Stefan Draeger

          1. Ok, danke. Das war bisher auch meine Information. Eigentlich schade, dass es so ist. Bei der Raspikamera kann man aufs Grad genau drehen. Kann eigentlich nur ein Softwareproblem sein bei der ESP32 Cam. Vielleicht kommt da mal was. Nochmals danke!

          2. Man kann jedoch zu dem dem jpg Bild einen EXIF Header generieren und den vor das Bild hängen. Damit hat man dann auch die Möglichkeit weitere Metadaten wie CreationDate, Bildnummer und vor allem „orientation“ hinzuzufügen. Die Exif Definition von orientation kennt nämlich nicht nur ‚vflip‘ und ‚hmirror‘ sondern auch ‚rotate 90‘ (CW und CCW).
            Das Problem ist dass dieser exif header nicht konstant ist, sondern dynamisch an das Bild angepasst werden muss. Ich kann nur warnen: es ist ein ziemliches Gefrickel – aber es funktioniert.

  8. Moin
    Zur Info:
    Ich habe eine 64 GB SD-Karte eingesetzt. Diese wurde ohne Probleme akzeptiert.
    Natürlich habe ich sie als FAT32 formatiert (Partition gelöscht und neu erstellt als FAT32).
    LG
    Heinz-Peter

  9. Hi,
    das kleine Dreckding für Paareurofuffzich macht tatsächlich ein für den Preis mehr als angemessenes Bild. Nächste Frage wäre jetzt: Kann man das auch so konfigurieren, dass der ESP32 ein eigenes WLAN aufbaut, in das man sich einloggen kann und dann auf den Stream zugreifen? Ich weiß, dass man einen „normalen“ ESP32 so konfigurieren kann – Hintergrund ist eine Anwendung im Fernsteuerbereich, da habe ich schon den ESP32 als Lösung für das Schalten zusätzlicher Funktionen bei Schiffsmodellen per Standalone-Wifi und Smartphone angetroffen. Das Teil mit Kamera könnte man ja dann als Onboard-Cam benutzen…
    LG
    Harald

  10. Hallo Stefan,

    wie kann man die Schaltflächen des Webservers ergänzen? Konkret möchte ich die LED auf GPIO4 per „Schiebeschalter“ schalten können. Ich habe aber nicht so viel Ahnung von Arduino – Programmierung. Ich wüßte auch nicht wie ich die Hex Daten der Site in HTML umwandle. Oder gibt es da andere Wege?

    LG

    Jens

  11. Hi.. ich bin Anfänger..
    Ist es möglich das Board gleichzeitig mit dem Kamera Code und gleichzeitig dem WiFi repeater Code (mit Kamera Modul) zu betreiben.. also zwei Fliegen mit einer Klappe.. also die Integration von zwei Scripten. wäre halt effizient.. ???!!

    1. Hi,

      probiert habe ich es noch nicht, aber da der Mikrocontroller nicht die große Performance hat, denke ich, wirst du hier nicht sauber Streamen können wenn der gleichzeit noch als Wifi Repeater / AccessPoint arbeit.

      Hier könnte man mit einem sehr kleinen ESP12S einen entsprechenden AccessPoint aufbauen und somit sich das Problem für nur 4€ sparen.

      Gruß,

      Stefan

  12. Hallo
    unten stehende Fehlermeldung erscheint, wenn ich den Sketch hochladen will. Die SSID und das Psswd habe ich geprüft. Alles OK. Kannst du einen Hinweis geben, was hier nicht richtig läuft?
    Danke und Grüße
    Norbert Fischer

    Der Sketch verwendet 2594790 Bytes (82%) des Programmspeicherplatzes. Das Maximum sind 3145728 Bytes. Globale Variablen verwenden 56256 Bytes (17%) des dynamischen Speichers, 271424 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

    esptool.py v3.0-dev
    Serial port COM11
    Connecting…….._____….._____….._____….._____….._____….._____….._____

    A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

    1. Hi,

      bei der ESP32-CAM musst du den GPIO0 und GND beim Upload verbinden.
      Manchmal musste ich auch noch zusätzlich, nachdem die Zeile „Connecting…….“angefangen hat den Reset Taster am Board betätigen.

      Gruß,

      Stefan

      1. Danke Stefan,
        der Hinweis mit dem Reset Taster hat weitergeholfen. Nun warte ich auf die Rückmeldung des
        Connect. Die will nicht kommen.

        Grüße
        Norbert Fischer

  13. Hi,
    ich habe eine ESP32cam mit der USB-Board-Erweiterung (Com7),
    wie bekomme ich denn da den lauffähigen Code drauf?
    Geht das auch nur mit der Arduino-IDE ?
    Oder get das auch mit einem ESP-flasher oder Imager-Programm?

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht.