ESP32 Cam Livestream Tutorial – Kamera Modul f├╝r den ESP8266

Mit der ESP32 Cam gibt es eine g├╝nstige und kompakte Alternative zu den g├Ąngigen IP Kameras, die ├╝blicherweise zur ├ťberwachung eingesetzt werden. Dadurch kann man entweder einen Livestream einrichten und diesen permanent ansehen, oder z.B. regelm├Ą├čige Standaufnahmen (Wildkamera) aufnehmen und speichern.

Dabei ist der ESP gleichzeitig auch f├╝r weitere Projekte einsetzbar, da noch viele IO Pins frei sind. In diesem Tutorial schauen wir uns die Schritte an, die daf├╝r notwendig sind und flashen die ESP32 Cam Software. Anschlie├čend konfigurieren wir die Kamera und erstellen einen Livestream, der in verschiedene Smart Home Systeme eingebunden, sowie vom Smartphone aus aufgerufen werden kann.

 

Zubeh├Âr

Wer bereits einen ESP8266 mit gen├╝gend Pins hat, kann theoretisch eine OV2640 oder eine OV7670 nehmen und verbinden. Dies ist aber in den seltensten F├Ąllen von Vorteil, da dies mehr Arbeit ist und in den meisten F├Ąllen auch teurer wird. Allerdings gibt es f├╝r wenig Geld bereits kombinierte Module (ESP32 + Camera). Hier muss nichts mehr gel├Âtet werden und man kann direkt starten. Lediglich ein serieller USB Adapter wird ben├Âtigt.

Ich habe folgende Komponenten benutzt:

Oft gibt es auch Sets mit allen Teilen zu kaufen, aber einige Bastler werden Jumper Kabel sowie einen USB-TTL Adapter sowieso rumliegen haben.

 

Anschluss und Verkabelung der ESP32 Cam per seriellem USB Port

Das ESP32 Modul mit Kamera hat im Gegensatz zu dem NodeMCU Development Board keinen USB Anschluss und muss daher ├╝ber einen Adapter an den Computer angeschlossen werden. Daf├╝r nutzen wir den roten FT232 USB-TTL Serial Adapter. Dieser kann 3.3V oder 5V Spannung abgeben. Achte darauf, dass der Jumper auf 5V eingestellt ist. Von Oben sieht das ESP Board folgenderma├čen aus:

ESP32 Cam Pinout

Seitliche Beschriftung der IO Pins des ESP32 Boards mit Kamera

Die Kamera ist ├╝brigens sehr einfach zu montieren. Dazu musst du nur die Halterung um 90┬░ aufklappen und das Ende des Flachbandkabels hineinlegen. Anschlie├čend schlie├čen wir die Halterung wieder und die kleine Kamera ist befestigt.

Die Verkablung mit dem seriellen USB Adapter ist wie folgt:

ESP32 Cam Modul FT232 USB-TTL Serial Adapter
5V VCC (5V)
UOR Tx
UOT Rx
GND GND

Hier siehst du das ganze noch einmal als schematischen Aufbau:

Steckplatine schematicNun kannst du den FT232 Adapter an deinen Computer anschlie├čen. Es sollte sofort ein neues Ger├Ąt erkannt worden sein.

 

ESP32 Cam Code anpassen und flashen

Falls du bisher noch keinen ESP8266 mit der Arduino IDE geflasht hast, solltest du zun├Ąchst einen Blick in dieses Tutorial werfen, welches die Grundlagen erkl├Ąrt.

ESP8266: Arduino IDE f├╝r den ESP32 installieren

  1. In der Arduino IDE navigieren wir zu Preferences > Additional Board Manager URLs und f├╝gen folgendes ein (zwei Links mit Komma getrennt):
    https://dl.espressif.com/dl/package_esp32_index.json, http://arduino.esp8266.com/stable/package_esp8266com_index.json
  2. Anschlie├čend wechseln wir zu Tools > Board > Board Manager und installieren „ESP32 by Espressif Systems“ (suche nach ESP32).
  3. Zu guter Letzt w├Ąhlen wir unter Tools > Board dieses Board aus: DOIT ESP32 DEVKIT V1. Unter Tools > Port solltest du au├čerdem sehen, wo der ESP angeschlossen ist (bspw. COM11).

Nun sind wir bereit unseren Code zu ├╝bertragen. Hierf├╝r gibt es bereits ein fertiges Beispielprojekt, welches einen Kamera-Server auf dem NodeMCU aufsetzt. Das Projekt kannst du folgenderma├čen importieren:

File > Examples > ESP32 > Camera > CameraWebServer

Hier m├╝ssen wir ein paar Zeilen anpassen. Zun├Ąchst einmal muss #define CAMERA_MODEL_WROVER_KIT mit zwei Slashes (//) auskommentiert werden und #define CAMERA_MODEL_AI_THINKER wiederum einkommentiert werden:

//#define CAMERA_MODEL_WROVER_KIT
#define CAMERA_MODEL_AI_THINKER

Zuletzt m├╝ssen die Werte f├╝r ssid (Name deines Wlan Netzes) und password angepasst werden. Danach kannst du den Code bereits kompilieren (Haken /┬á Verify) und anschlie├čend auf den verbunden ESP32 hochladen.

 

Erster Test der Kamera

Sobald der Upload erfolgreich war, kannst du den seriellen Monitor ├Âffnen (unter Tools). Falls hier nichts sichtbar ist, kannst du den ESP mit dem Reset Knopf (RST) auf der R├╝ckseite neu starten. Anschlie├čend siehst du folgenden Screen:

ESP32 CAM Arduino Serial LogAm Ende ist die interne IP Adresse sichtbar (192.168.1.12 in meinem Fall). Diese IP geben wir im Browser eines anderen Ger├Ąts, das im selben Netz ist, ein.

Auf der linken Seite sind nun viele Optionen sichtbar. So k├Ânnen wir zum Beispiel die Aufl├Âsung anpassen (eine h├Âhere Aufl├Âsung f├╝hrt zu einer niedrigeren Frame Rate). Nat├╝rlich k├Ânnen Helligkeit, Kontrast, S├Ąttigung und viele weitere Optionen gesetzt werden. Dies ist auch noch m├Âglich, w├Ąhrend der Stream bereits l├Ąuft.

Klicke nun auf „Start Stream“, woraufhin du rechts eine Live-Vorschau der Kamera siehst:

ESP8266 Camera UI Screenshot

ESP8266 Kamera UI Screenshot

Wenn du bspw. Kontraste besser erkennen willst, oder die Einstellungen zu dunkel sind, kannst du auch das Negativbild anzeigen lassen, so wie ich von einem Raspberry Pi:

Negative Camera Setting ESP

Negativbild (Raspberry Pi Logo ist deutlich besser erkennbar)

├ťbrigens: All diese Einstellungen k├Ânnen auch per REST API gesetzt werden. Dazu wird ein GET des /control Endpunkts mit entsprechenden Query Parametern gesendet. Die einzelnen Parameter findest du am einfachsten ├╝ber die Entwicklertools in deinem Browser (F12) heraus.

 

Infrarotfilter entfernen: Nachtaufnahmen / Wildkamera

Die Kamera, welche mitgeliefert wird, hat einen Infrarotfilter verbaut, wie die allermeisten Kameras (nicht so die NoIR Raspberry Pi Kamera). Dadurch gelangt etwas weniger Licht zur Linse, weshalb gerade bei dunklen Szenen nur wenig zu sehen ist. Dieser IR-Filter l├Ąsst sich allerdings auch entfernen, wodurch bei Aufnahmen bei D├Ąmmerung u.U. mehr zu sehen ist. Wie man den Infrarotfilter entfernen kann und worauf zu achten ist, ist hier genauer beschrieben.

 

ESP8266 Kamera Livestream einbinden (Smart Home Systeme)

Nachdem wir unsere Kamera-Einstellungen so weit angepasst haben, m├Âchten wir den Stream auch noch in andere Anwendungen einbinden. Das praktische dabei ist, dass der Stream im MJPEG Format gesendet wird (aktualisierendes Einzelbild). Dadurch kann er z.B. mittels <img /> HTML Tag auf Webseiten eingebunden werden. Der Link des Streams befindet sich unter Port 80 unter der Adresse /stream (in meinem Fall also http://192.168.1.12:81/stream).

Somit l├Ąsst sich der Livestream auch in Smart Home Systeme wie OpenHAB einbinden. Dies schauen wir uns im folgenden Beispiel an.

Zun├Ąchst einmal brauchen wir eine Sitemap. In diese kommt dann unser Bild-Stream. Hiermit kannst du eine neue Datei ├╝ber das Terminal erstellen:

sudo nano /etc/openhab2/sitemaps/cameras.sitemap

Die Datei bekommt folgenden Inhalt:

sitemap demo label="Camera Livestreams" {
    Frame label="Demo" {
        Image url="http://192.168.1.12:81/stream" label="Livestream Garden"
    }
}

Speichern kannst du die Datei anschlie├čend mit STRG+O. Nun siehst du den Stream in deinem OpenHAB Dashboard. Auf die gleiche Weise k├Ânnen wir ebenfalls Videos, Maps, usw. in die ├ťbersicht einbinden.

9 Kommentare

  1. Hallo Felix,
    besten Dank f├╝r das coole Tutorial.
    Ist es auch m├Âglich die cam ohne WLAN laufen zu lasssen und sich dann z.B. mit einem Laptop
    darauf einzuloggen ?
    VG
    mikel

    Antworten
    • M├Âglich w├Ąre evtl. das die Cam ein eigenes WLAN ├Âffenet mit dem du von Notebook verbinden kannst. Das Speichern von Bildern/Videos sollte auch gehen, da die ESP32 Cam ein SD Slot hat. Die Idee gef├Ąllt mir ­čśë

      Antworten
  2. Funktioniert leider nicht…

    Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: „DOIT ESP32 DEVKIT V1, 80MHz, 921600, None“

    text section exceeds available space in boardDer Sketch verwendet 2053883 Bytes (156%) des Programmspeicherplatzes. Das Maximum sind 1310720 Bytes.

    Globale Variablen verwenden 53488 Bytes (16%) des dynamischen Speichers, 274192 Bytes f├╝r lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.

    Der Sketch ist zu gro├č; unter http://www.arduino.cc/en/Guide/Troubleshooting#size finden sich Hinweise, um die Gr├Â├če zu verringern.

    Fehler beim Kompilieren f├╝r das Board DOIT ESP32 DEVKIT V1.

    Antworten
  3. Hallo,
    habe das gleiche Problem „Der Sketch ist zu gro├č“.
    Mit dem Link und der Beschreibung komme ich nicht weiter.
    Gibt es eine L├Âsung?

    Antworten
    • Helmut, das gleiche Problem hatte ich auch. Ich habe das Wrover Board ausgew├Ąhlt und dann kam ich auch an die Einstellungen, um mit gro├čen sketches klarzukommen, wie in dem genannten link dargestellt.

      Antworten
  4. Ich habe nun das Problem das er nicht Connected. „Wrover Module“ hat zwar daf├╝r gesorgt das der Sketch nicht mehr zu gro├č ist, nun funktioniert aber das Connecten zum ESP32 nicht. Hab es mit unterschiedlichen Ports/USB/COM versucht und an unterschiedlichen Ger├Ąten, mit Unterschiedlichen YP-05 Devices usw … Ich komme nicht weiter.

    Antworten
    • Update: Ich habe es geschafft. „Wrover Module“ und dann muss man am ESP den SO0 mit GND ├╝berbr├╝cken, damit schaltet man den ESP32 in ein Write Modus. Ich hatte dann noch RX und TX getauscht und schon lief es. =)

      Antworten

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht ver├Âffentlicht.

Blog abonnieren

Abonniere Raspberry Pi Tutorials, um kein Tutorial mehr zu verpassen!