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:
- Eine ESP32-Cam
- Einen USB-TTL Converter zum Programmieren
- Ein paar Jumper-Kabel für die Verdrahtung
- Ein Breadboard um die Verdrahtung leichter zu gestalten
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.
Verwende für den zusätzlichen Boardverwalter folgende URL, um Zugriff auf die ESP32 Boards zu erhalten:
https://dl.espressif.com/dl/package_esp32_index.json
Öffne den Link in deinem Browser um zu sehen, wie die Daten für die Arduino IDE bereitsgestellt werden.
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.
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)
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.
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
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:
Produktempfehlungen und -suche in Verbindung mit dem Amazon Partnerprogramm:
¹ Angaben ohne Gewähr. Bei einem Kauf über den Link erhalten wir eine Provision.
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.
Fehlt die Brücke zwischen IO0
und GND
, so kann kein Programm hochgeladen werden.
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.
Die ESP32-Cam muss vor jedem neuen Hochladen erneut in den Flash-Modus versetzt werden. Anstatt das USB-Kabel immer weider zu trennen kann für den Reset auch die dafür vorgesehene Reset-Taste seitlich an der ESP32-Cam betätigt werden.
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
Sollte diese Ausgabe nicht auf dem seriellen Monitor erscheinen so kann die Brücke zwischen IO0
und GND
entfernt werden. Damit bootet die ESP32-Cam in den Normalbetrieb.
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.
Das Bild der Kamera erscheint im Webbrowser und kann beobachtet werden.
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
Wusstest du, dass du an der Linse der Kamera drehen kannst, um den Fokuspunkt einzustellen? Probiere es aus, wenn das Bild unscharf ist.
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.