• 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 dem man unter anderem BLE Beacons orten kann. Nicht nur hardwaretechnisch ist der ESP32 dem ESP8266 überlegen - auch an Geschwindigkeit gibt der ESP32 weitaus mehr her. Und genau das machen wir uns heute mit der ESP32-Cam zu nutzen.

    Die ESP32-Cam ist kein Modul sondern ein eigenständiges ESP32-Board mit integriertem Kamera- und SD-Kartenmodul. Mit der Kamera kann man Bilder schießen, Videos aufnehmen oder sogar einen Livestream einrichten, auf den man über den Webbrowser zugreifen kann. Perfekt geeignet für eine Low-Budget Überwachungskamera. Unser heutiges Projekt.

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

    Ein Breadboard ist zwar nicht unbedingt nötig, erleichtert aber wie immer die Bedienung und Verdrahtung. 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.

    Arduino IDE Libraries installieren

    Wie beim ESP8266 muss auch für den ESP32 ein zusätzlicher Boardverwalter innerhalb der Arduino IDE installiert werden, damit das Board und die Dateien dafür gefunden werden können.

    Zusätzliche Boardverwalter kann man unter Arduino -> Einstellungen hinzufügen.

    In der Textbox Zusätzliche Boardverwalter-URLs muss folgender Link eingetragen werden: https://dl.espressif.com/dl/package_esp32_index.json.

    Sollte in der Textbox bereits ein Boardverwalter-Link für z.B den ESP8266 gespeichert sein, könnt ihr das erweiterte Fenster öffnen, in dem ihr auf das folgende Icon klickt:

    arduino_ide_zusaetzliche_boardverwalter_urls.png

    Nachdem ihr 2x auf Ok gedrückt habt, kann das Board und die Einstellungen dafür installiert werden.

    Arduino IDE ESP32 Board installieren

    Boards lassen sich über den Boardverwalter installieren. Ihr findet ihn unter

    Werkzeuge -> Board -> Boardverwalter

    Sucht im Boardverwalter anschließend nach ESP32 und installiert das offizielle Paket von ESPRESSIF Systems.

    arduino_ide_esp32_espressif_systems.png

    Nach der Installation habt ihr in der Liste eurer Boards sämtliche ESP32-Boards aufgelistet, die ihr auswählen und programmieren könnt.

    Geht innerhalb der Arduino IDE auf Werkzeuge -> Board und wählt als zu programmierendes Board das ESP32 Wrover Module aus.

    Damit es während dem Hochladen zu keinen Problemen kommt, solltet ihr die Einstellungen mit euren vergleichen und diese dementsprechend ändern, falls nötig.

    arduino_ide_esp32-cam_einstellungen.png


    Besonders wichtig sind diese Einstellungen:

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

    Da sonst Fehler beim Hochladen auftreten.

    Das war es soweit schon zur Vorbereitung der Entwicklungsumgebung. Kommen wir zum elektrischen Teil.

    Die Verdrahtung zum Programmieren

    Für die Programmierung wird ein USB-TTL-Converter benötigt, da die ESP32-Cam keine USB-Schnittstelle besitzt. Wichtig ist wie bereits erwähnt, dass der Programmer 5V Spannung liefert.

    Wie auch bei ESP8266 Modulen und anderen Mikrocontrollern die über eine serielle Schnittstelle programmiert werden, muss folgendermaßen verdrahtet werden:

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

    Zusätzlich müssen an der ESP32-Cam noch die Pins IO0 und GND miteinander gebrückt werden, um die ESP32-Cam in den Flash-Modus zu versetzen. Fehlt diese Brücke, so kann kein Programm hochgeladen werden.

    esp32-cam_programming_pinout.png

    Der Livestream Webserver

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

    Datei -> Beispiele -> ESP32 -> Camera -> CameraWebServer

    und öffnet das Beispiel.

    Anpassungen im Code

    Es gibt lediglich zwei Programmpassagen, die wir ändern müssen. Einmal ist es das Kameramodell. Wir nutzen das Kameramodell von AI_THINKER. Ändert die Kommentare 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
    

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

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

    Das Hochladen

    Stellt sicher, dass die Brücke zwischen IO0 und GND gesetzt ist. Trennt die USB-Verbindung zum PC und stellt sie anschließend wieder her, damit die ESP32-Cam im Flash-Modus bootet. Anschließend könnt ihr das Programm wie gewohnt via Arduino IDE auf das Board laden.

    Die beiden Schritte USB Kabel trennen / wieder verbinden müssen vor jedem Hochladen erfolgen (da sonst nicht im Flash-Modus). Alternativ kann auch der Reset-Knopf an der ESP32-Cam betätigt werden.

    Nach dem Hochladen erscheint folgende Meldung im seriellen Monitor:

    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 das nicht passieren, löst die Brücke zwischen IO0 und GND, damit die ESP32-Cam normal bootet und nicht im Flash-Modus startet. 👍


    Wenn wir nun auf die angegebene Adresse navigieren, können wir die Web-UI des Livestreams erreichen.

    Um den Livestream zu starten, müssen wir lediglich im Menü ganz unten den passenden Button ‘Start Stream’ klicken.

    esp32-cam-livestream-web-ui.png

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

    esp32-cam-livestream-image.png


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

    • Auflösung
    • Qualität
    • Helligkeit
    • Kontrast
    • Sättigung
    • Weißabgleich
    • und vieles mehr

    sogar Gesichtserkennung ist möglich.


    Einbinden auf einer lokalen Webseite

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

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

    Die Anzeige des Bildes erfolgt dabei automatisch in der Größe des Streams.


    Man sieht also, die ersten Schritte für den eigenen Livestream-Server sind gar nicht so schwer. Natürlich haben wir hier nur mit dem Beispiel “gearbeitet”. Aber das Beispiel lässt sich verwenden, um eigene Projekte darauf zu realisieren. Es war sozusagen das “Blink” der ESP32-Cam. Mal sehen, was man damit noch so alles anstellen kann. Vielleicht ja sogar eine native Überwachungskamera für das smarte Zuhause.

    ¹Produktempfehlungen

    Produkte zum Warenkorb hinzufügen



    Gehäuse

    Nach der Programmierung und dem Setup der Kamera fehlt eigentlich nur noch ein passendes Gehäuse. Glücklicherweise hat @dixondsc ein Gehäuse für die #ESP32-Cam konstruiert und hier im Forum geteilt. Lasst ihm gerne ein Dankeschön da! 🙂

    Das Gehäuse gibt es in zwei Varianten:
    Klicke auf den 3D-Würfel um die Modelle anzuschauen.

    1. ESP32-Cam Gehäuse mit GoPro-Halterung
    2. ESP32-Cam Gehäuse ohne GoPro-Halterung

    Und dazu wird jeweils dann noch der Deckel benötigt:

    Das Gehäuse ist so konstruiert, dass es über eine MicroUSB-Buchse bestromt wird. Dazu für ein ¹USB - DIP Adapter benötigt. Mehr dazu im Thread von @dixondsc.

    #Arduino #Arduino-IDE #ESP32 #ESP32-Cam #Livestream #Webserver #Smarthome

    ¹Affiliate Link. Affiliate Links sind Referenzen des Autors. Bei Kauf wird eine Provision ausgeschüttet. Mehr Informationen.


  • Hallo, ich habe den Sketch versucht wie beschrieben aufzuspielen, aber egal wie ich es drehe und wende, ich bekomme keinerlei Ergebnis.
    Die Brücke zwischen IO0 und GND ist gesetzt, aber wenn ich auf “Hochladen” gehe, bleibt er mit dieser Meldung hängen:

    Wrote 2594896 bytes (2073478 compressed) at 0x00010000 in 187.9 seconds (effective 110.5 kbit/s)...
    Hash of data verified.
    Compressed 3072 bytes to 119...
    Writing at 0x00008000... (100 %)
    Wrote 3072 bytes (119 compressed) at 0x00008000 in 0.0 seconds (effective 768.0 kbit/s)...
    Hash of data verified.
    
    Leaving...
    Hard resetting via RTS pin...
    

    und im seriellen Monitor erfolgt keine Ausgabe.

    Die Einstellungen für das WLAN sind korrekt und auch

    // Select camera model
    //#define CAMERA_MODEL_WROVER_KIT // Has PSRAM
    //#define CAMERA_MODEL_ESP_EYE // Has PSRAM
    //#define CAMERA_MODEL_M5STACK_PSRAM // Has PSRAM
    //#define CAMERA_MODEL_M5STACK_V2_PSRAM // M5Camera version B Has PSRAM
    //#define CAMERA_MODEL_M5STACK_WIDE // Has PSRAM
    //#define CAMERA_MODEL_M5STACK_ESP32CAM // No PSRAM
    #define CAMERA_MODEL_AI_THINKER // Has PSRAM
    //#define CAMERA_MODEL_TTGO_T_JOURNAL // No PSRAM
    

    das Kamermodel ist korrekt eingestellt.

    Was mache ich falsch?

    Bin für jede Hilfe dankbar.
    LG
    Franz-Georg


  • Ok, bin daraufgekommen dass dies kein Fehler ist, es wird einfach ein Reset-Signal an den ESP32 gesendet und das war es auch schon.

    Einfach die Brücke zwischen IO0 und GND aufheben, den Reset Knopf gedrückt und im seriellen Monitor sollte die Verbindung ersichtlich sein. Warum sollte, weil er bei mir noch immer nur weiterläuft und anscheinend das WLAN nicht findet

    SeriellerMonitor

    Also weitersuchen was hier falsch läuft.


  • @fneurieser Wenn die WLAN-Daten 100%ig korrekt eingegeben sind, dann könntest du mal versuchen, etwas näher an den Router zu gehen mit deiner ESP32-Cam. Habe schon mal gehört, dass der Empfang ohne Antenne teilweise nicht so gut ist… Vielleicht ist das das Problem…

    PS: Danke für die “Fehler”-Beschreibung…Werde das später gleich mal noch oben mit aktualisieren bzw. anmerken, damit andere nicht noch über das selbige stolpern. 👍 PSPS: War ja doch schon angemerkt. :heh:


  • Guten Tag, weiß jemand wie ich den Stream in Fhem einbinde ?


  • @taskkill vielleicht mit dem selben Link von der anderen Anleitung:

    https://my.makesmart.net/topic/133/esp32-cam-als-homekit-kamera-via-rtsp-stream-homebridge-tutorial/1

    so ein Stream sollte eigentlich gut supported werden. Egal welches System. Das Stichwort wäre RTSP Stream FHEM. 👍🏻 Kannst ja mal berichten. 🙂


  • Hallo zusammen, toll dass es dieses Forum mit den vielen Informationen gibt! Ich habe nach der Anleitung dem Kamera Webserver für den ESP32-Cam zum Laufen bekommen.
    Das Licht leuchtet auch, aber schöner wäre es, wenn es sich von der Webserverseite an und aus schalten lässt. Hat jemand einen Tip dazu?

    Danke und viele Grüße!


  • Hallo tueftler,
    vor einiger Zeit habe ich auch ein derartiges Projekt begonnen. Zunächst nur mit dem Beispiel von ESP, aber einige Versuche haben dann “Begehrlichkeiten” geweckt:

    • Steuerung der Onboard-LED über das Web-Interface
    • automatisches Reconnect bei Abbruch der WLAN-Verbindung

    Nach mehreren Versuchen ist es mir gelungen, beides in den Code einzuarbeiten.
    Bei Interesse kannst du alles in meiner Projektbeschreibung nachlesen:
    http://bluetchen.de/Technik/DIY/WLAN-Kamera.pdf
    oder dich auf die Kamera schalten:
    http://fma97lggxxxgakzw.myfritz.net/
    Die Kamera ist allerdings z.Zt. nur für Versuchszwecke online und deshalb nicht immer erreichbar.
    Auf Anfrage schicke ich dir auch gern den Sketch zum Ausprobieren.
    Viele Bastlergrüße

Ähnliche Themen

  • 1
  • 3
  • 11
  • 1
  • 1