ESP32-Cam programmieren - Die Einrichtung als Livestream-Server

von cooper.bin
veröffentlicht am 27.02.2024 aktualisiert am 27.02.2024

Der ESP32 ist wie der ESP8266 ein 32-bit ausgeführter Mikrocontroller. Neben einer integrierten WLAN-Funktion hat der ESP32 aber noch einiges mehr zu bieten. Zum Beispiel ein zusätzliches Bluetooth-Modul. Mit diesem kann man unter anderem BLE Beacons orten. Der ESP32 ist dem ESP8266 nicht nur hardwaretechnisch überlegen: Auch an Geschwindigkeit gibt der ESP32 mit einer Taktfrequenz von bis zu 240 MHz weitaus mehr her. Und genau das machen wir uns heute mit der ESP32-Cam zu Nutze.

Die ESP32-Cam ist kein Modul zum Aufstecken, sondern ein eigenständiges ESP32-Board mit integriertem Kamera- und SD-Kartenmodul. Mit der Kamera können Bilder geschossen, Videos aufgenommen oder sogar einen Livestream eingerichtet werden. Letzteres ist perfekt geeignet für eine Low-Budget Überwachungskamera. Unser heutiges Projekt.

Zum Kapitel springen Hardware

Für dieses Projekt werden folgende Komponenten benötigt:

Ein Breadboard ist zwar nicht unbedingt notwendig, aber es erleichtert die Bedienung und Verdrahtung bei der Programmierung. Bei dem USB-TTL-Converter ist darauf zu achten, dass er in der Lage ist 5V Spannung zu liefern, anderenfalls kann die ESP32-Cam nicht programmiert werden.

Zum Kapitel springen Entwicklungsumgebung einrichten

Zum Kapitel springen Zugang zu zusätzlichen Boardverwalter-URLs

Wie beim ESP8266 muss auch für den ESP32 ein zusätzlicher Boardverwalter innerhalb der Arduino IDE installiert werden. Nur so können ESP32 Boards programmiert werden können. Wie du einen zusätzlichen Boardverwalter hinzufügst kannst du aus dem Kapitel Zugang zu zusätzlichen Boardverwalter-URLs entnehmen.

Zum Kapitel springen Installation des ESP32 Boardpakets

Boards lassen sich über den Boardverwalter installieren. Dieser ist unter folgendem Menüpunkt innerhalb der Arduino IDE zu finden:

Arduino IDE
└───Werkzeuge
    └───Board
        └───Board-Verwaltung...

Suche im Boardverwalter anschließend nach "ESP32 ESPRESSIF" und installiere das offizielle Paket von ESPRESSIF Systems, dem Hersteller der ESP-Chips.

Arduino IDE Board-Verwaltung - ESP32 ><

Nach der Installation des ESP32-Boardpakets ist die Arduino IDE eingerichtet um sämtliche ESP32-Boards programmieren zu können.

Zum Kapitel springen ESP32-Cam Einstellungen

Bevor die ESP32-Cam programmiert werden kann müssen ein paar Einstellungen getroffen werden. Geht dazu innerhalb der Arduino IDE auf folgendes Menü und wählt den passenden ESP32 aus:

Arduino IDE
└───Werkzeuge
    └───Board
         └───esp32
              └───ESP32 Wrover Module

Zum Kapitel springen Anpassungen

Sobald ihr das ESP32 Modul ausgewählt habt, befinden sich die zugehörigen Einstellungen unter dem Menüpunkt Werkzeuge.
Verschiedene Boards erfordern unterschiedliche Einstellungen. Bei der ESP32-Cam kann dabei nicht auf die Standardeinstellungen zurückgegriffen werden.

Besonders wichtig sind diese Einstellungen, da ansonsten Fehler beim Hochladen auf den ESP32 auftreten:

  • Upload Speed: 115200
  • Partition Scheme: Huge APP (3MB No OTA/1MB SPIFFS)

ESP32-Cam Einstellungen Arduino IDE ><

Zum Kapitel springen Verdrahtung

Die ESP32-Cam besitzt keine integrierte serielle Schnittstelle, deshalb wird für die Programmierung wird der bereits genannte USB-TTL Converter benötigt.

Wie auch bei anderen Mikrocontrollern, die über eine serielle Schnittstelle programmiert werden, müssen die ESP32-Cam und der USB-TTL Converter folgendermaßen verdrahtet werden:

ESP32-Cam USB-TTL Programmer
5V 5V
UOR TxD
UOT RxD
GND GND

Zusätzlich dazu müssen an der ESP32-Cam die Pins IO0 und GND gebrückt werden. Diese Brücke versetzt die ESP32-Cam in den sogenannten Flash-Modus.

ESP32-Cam Pinout Programmierung ><

Zum Kapitel springen Livestream Webserver

Glücklicherweise gibt es beim auch beim ESP32 wieder sehr viele Beispiele, an denen man sich bedeinen kann. Auch einen Livestream-Webserver finden wir in den Beispielen. Navigiert dazu innerhalb der Arduino IDE über das Menü zu folgendem Punkt:

Arduino IDE
└───Datei
    └───Beispiele
        └───ESP32
                └───Camera
                      └───CameraWebServer

Zum Kapitel springen Anpassungen im Programmcode

Es gibt lediglich zwei Stellen im Programm, die für dieses Tutorial geändert werden müssen. Zum einen ist es das Kameramodell:
Wir nutzen das Kameramodell von AI_THINKER. Ändert die Kommentare also so ab, dass define CAMERA_MODEL_AI_THINKER wirksam wird.

// 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

Danach müssen noch die WLAN-Daten eingepflegt werden. Dazu werden die beiden folgenden Zeilen angepasst:

const char* ssid = "WLAN-SSID";
const char* password = "WLAN-PASSWD";

Zum Kapitel springen Hochladen des Programms

Stellt sicher, dass die Brücke zwischen IO0 und GND gesetzt ist. So bootet die ESP32-Cam in den Flash-Modus. Verbindet anschließend den USB-Programmer mit angeschlossender ESP32-Cam mit dem Computer. Wählt den passenden COMx Port aus. Nun könnt ihr das Programm wie gewohnt via Arduino IDE kompilieren und auf den Mikrocontroller laden.

Nach dem Hochladen werden ein paar Meldungen über den seriellen Monitor ausgegeben. Diese Meldungen bestätigen, dass eine Verbindung zum WLAN hergestellt wurde und der Web- sowie Streamserver läuft.

WiFi connected
Starting web server on port: '80'
Starting stream server on port: '81'
Camera Ready! Use 'http://192.168.178.116' to connect

Wenn wir nun auf die ausgegebene Adresse navigieren, können wir die Web-UI des Livestreams erreichen.
Um den Livestream zu starten, muss lediglich im Menü ganz unten den passenden Button ‘Start Stream’ betätigt werden.

ESP32-Cam Livestream WebUI ><

Das Bild der Kamera erscheint im Webbrowser und kann beobachtet werden.

ESP32-Cam Livestream Preview ><

Zum Kapitel springen Zusätzliche Informationen

Zum Kapitel springen Kamera Einstellungen

Sämtliche Einstellungen der Kamera können über das Menü im Webbrowser vorgenommen werden. Darunter fallen unter Anderem:

  • Die Auflösung
  • Die Qualität
  • Die Helligkeit des Bildes
  • Der Kontrast des Bildes
  • Die Sättigung des Bildes
  • Der Weißabgleich der Kamera
  • ... und noch vieles mehr, sogar eine Gesichtserkennung ist möglich

Zum Kapitel springen Einbinden auf einer lokalen Webseite

Nicht nur die mitgelieferte Weboberfläche eignet sich zum ansehen des Livestreams. Der Stream kann genauso gut auf einer lokalen Webseite eingebunden werden. Dazu kann der HTML-Tag für Bilder verwendet werden:

<img src="http://192.168.178.116:81/stream">

Die Anzeige des Bildes auf der HTML Seite erfolgt dabei dann automatisch in der Größe des Streams.

Man sieht also: Die ersten Schritte für den eigenen Livestream-Server sind gar nicht so schwer. Naja, wir hier nur mit dem Beispiel gearbeitet aber das Beispiel lässt sich verwenden, um eigene Projekte darauf zu realisieren. Es war sozusagen das bekannte Blink der ESP32-Cam.

Die Themen arduino-ide und smarthome gibt es auch auf dem makesmart Discord-Server! Trete bei, um dich auszutauschen.

mehr erfahren

Teile diesen Beitrag



Diese Artikel könnten dich auch interessieren

ESP32-Cam als HomeKit Kamera via RTSP-Stream & Homebridge

Mit einem RTSP-Stream von der ESP32-Cam lässt sich die Übertragung in vielen Plattformen einbinden. Unter anderem auch im eigenen Smarthome wie HomeKit.

Titelbild ersetzen Bearbeiten

cooper.bin am 08.04.2024

ESP8266 Webserver mit echten HTML Dateien

Mit dem ESPAsyncWebserver kann man einen dateibasierten Webserver auf dem ESP8266 realisieren. Dieser kann HTML, CSS, Javascript und jede andere Art von Datei ausliefern.

Titelbild ersetzen Bearbeiten

cooper.bin am 28.04.2024

ESP8266 D1 Mini WLAN-Relais mit HTTP API

Mit diesem einfachem Webserver auf dem ESP8266 mit HTTP API kannst du ein Relais smart machen! Steuere das Relais über deinen Webbrowser oder automatisiert durch andere Dienste.

Titelbild ersetzen Bearbeiten

cooper.bin am 20.02.2024

ESP8266 Webserver: GET-Variablen auslesen

GET-Parameter sind Variablen, die über die URL übergeben werden. Diese Variablen können auf einem ESP8266 ausgelesen werden, um bestimmte Aktionen in der Software auszulösen.

Bearbeiten

cooper.bin am 17.02.2024

ESP8266 - Ein einfacher Webserver mit mDNS

Während Webserver wie Apache2 oder NGNIX auf Rechnern laufen, kann man auch auf einem ESP8266 einen Webserver verwenden. In diesem Tutorial werden wir ein Grundgerüst implementieren.

Titelbild ersetzen Bearbeiten

cooper.bin am 13.02.2024