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 €.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
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.
Anschluss und Schaltung
Wie bereits erwähnt, wird ein FTDI Modul benötigt.
Da wir die ESP32-CAM über 5V betreiben wollen, müssen wir zusätzlich auf dem FTDI Modul den Jumper auf 5V einstellen.
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 Breadboardkabel wird von IOT auf GND des Mikrocontrollers gesteckt.
Jedoch wird diese Brücke nur für den Upload des Sketches benötigt, für den betrieb muss diese wieder entfernt werden.
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.
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.
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 soeben installiert hast, dann musst du diesen auswählen und ein paar Standardwerte ändern.
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 herunterladen. Alternativ biete ich dir ein fertig konfiguriertes Sketch am Ende dieses Beitrages an. arduino-esp32
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.
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 zugewiesene IP-Adresse wird angezeigt.
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 zum Beispiel einen Stream starten kann.
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 diesen Mikrocontroller mit Kamera 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 jetzt die oben gezeigte Adresse eingeben (natürlich mit deiner IP-Adresse), in meinem Fall lautet diese “http://192.168.178.51:81/stream”.
Der Netzwerkstream im VLC Player kann aber nur gestartet werden, wenn kein weiterer gestartet ist (zum Beispiel über die Webseite im Browser).
Aufnahme eines Bildes
Man kann sich auch ein einzelnes Bild von der aktiven 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.
Downloads
Weitere Beiträge
Zu dieser nützlichen CAM habe ich bereits einige weitere Beiträge erstellt, welche du unter folgenden Links findest:
- ESP32 CAM als Access Point einrichten
- ESP32 CAM – Vergleich der verfügbaren Kameralinsen
- DIY ESP32 CAM FTDI Adapter
- ESP32-CAM – Bewegung ermitteln mit Python3
- Python – ESP32 CAM Bild speichern
Fazit
Der Mikrocontroller ESP32 mit Kameramodul ist ein cooler kleiner Mikrocontroller, mit welchem man passable Bilder aufnehmen kann. Mit dem Boardtreiber beigefügten Beispiel kann man ohne viel Programmieraufwand bereits Bilder und einen Stream aufzeichnen.
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
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
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
Hallo Gerd,
vielen Dank für deinen positiven Kommentar.
Gruß,
Stefan Draeger
Hi Stefan,
super Anleitung. Hat mir sehr geholfen.
Gruß Uwe
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
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
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
Danke Dir.
Jetzt brauche ich nur noch ein Gehäuse, sonst werden die Hühner mir die Cam kaputt machen 🙂
Mit freundlichen Grüßen
Hallo
Kann ich den ESP32 Cam auch mit einen Wemos D1 mini pro betreiben?
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
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
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
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
Hi,
ja das stimmt die Qualität ist nicht wirklich überragend, es gibt zwar zusätzliche Linsen
https://draeger-it.blog/esp32-cam-vergleich-der-verfuegbaren-kameralinsen/
jedoch lösen diese nicht das Problem im Stream.
Ich habe jedoch mit der VGA Auflösung (640×480) ein recht brauchbares Ergebnis hinbekommen.
Gruß,
Stefan
Moin Christoph,
hast Du das Freenove ESP32-Wrover CAM Board oder einen Nachbau?
Bei meinem Nachbau vom Ali musste ich die beiden Spannungsregler für die CAM 2,8V (54FK) mit dem 1,2V (65BX) auf dem Board vertauschen.
siehe Foto –> https://community-assets.home-assistant.io.s3.dualstack.us-west-2.amazonaws.com/original/4X/a/5/d/a5d0fe8f1b61a2e39d502354380d51127bafeaae.jpeg
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. >))_!?
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
Ja hatte im monitor die falsche Baudrate , hat alles funktioniert . jedoch ist das bild so unscharf das es nicht zu gebrauchen ist .
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
Weiß jemand, wie man das Bild der ESP32 cam um 90 Grad drehen kann?
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
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?
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
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!
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.
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
Hallo,
funktioniert einwandfrei und vielen Dank für die Anleitung!
Grüße
Herbert Gramsch
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
Hi,
Danke für deinen Kommentar, schau doch mal in den Beitrag
https://draeger-it.blog/esp32-cam-als-accesspoint-einrichten/
Da zeige ich dir wie man die ESP32-CAM als Access point einrichtet und mit dem Handy verbindet.
Gruß,
Stefan Draeger
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
Hi,
mmh, das müsste ich mir mal anschauen, so auf Anhieb habe ich da keine Lösung.
Gruß,
Stefan
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.. ???!!
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
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
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
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
Hi,
welche Nachricht kommt denn nicht?
Du kannst deinen Code sowie ein Foto von deinem Aufbau an info@draeger-it.blog schicken und ich schaue mir das mal an.
Gruß,
Stefan
Hallo, gibt es dein fertiges Sketch noch irgendwo zum runterladen (der Link ist leider nicht mehr verfügbar)?
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?
Hi,
für den ESP32 gibt es eine extra IDE welche hier https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/#installation beschrieben wird.
Auch gibt es eine Erweiterung für Eclipse sowie VS Code.
Wenn du das Sketch von dem Beitrag verwenden möchtest, dann benötigst du die Arduino IDE.
Gruß,
Stefan
hi,
bei mir funktionierte das flashen nur mit GND direkt neben 5V (oben links)
Gruß
Peter
Hallo,
wirklich ein super gut verständliches Tutorial, vielen Dank dafür!
Eine Frage zur Erweiterung der html-Seite:
Kann man hier auf dieser auch html-Buttons einfügen (z.B. zum Ein/Ausschalten von LEDs) und evtl. auch Sensor-Messwerte anzeigen lassen (z.B. von Temperatur-Sensor)?
Viele Grüße
Helmut
Hi,
das ist eine gute Frage.
Müsste man sich mal genauer anschauen, aber denke das müsste klappen.
Am einfachsten wäre es jedoch den Videostream in eine Seite per iframe zu integrieren und dort dann die Aktionen ausführen.
Gruß
Stefan
Hallo zusammen,
ich nutze die ESP32-Cam-mb, das Teil mit der zusätzlichen/ansteckbaren USB-Platine.
Nach kopieren meiner IP aus dem seriellem Monitor der Arduino IDE, in einen beliebigen Browser gibt es keine Verbindung!
1. Verbindung nicht sicher
2. Verbindungsaufbau dauert zu lange…..waren die Hinweise im Browser.
Die angezeigte IP steht in der FritzBox 7590 unter…ungenutzte Verbindungen… die ich als immer gleiche IP festgelegt habe.
Inzwischen ist die ESP32 Cam nur noch am Netzteil. Wie bekommt man eine WLAN Verbindung zum PC, oder Smartphone im Browser?
Wie beseitigt man das Problem? Ein Tipp wäre toll
Hallo,
habe heute 3x diese Teile von ALIEXPRESS bekommen:
# ESP-32S WIFI+ BT SoC inside ISM 2.4G 802.11/b/g/n
# ESP32-CAM
# ESP32-CAM-MB micro usb esp32 seriell zu wifi esp32 cam
# entwicklungs board ch340 ch340g 5v bluetooth + ov2640 kamera
# 2.4GHz Antenne
… leider funktioniert das bei mir gar nicht, bei allen 3 nicht.
– Arduino IDE 2.1.1 (MAC)
– Flash Mode QIO
– Partition… Huge …
– #define CAMERA_MODEL_AI_THINKER // Has PSRAM
Ich habe mit im Youtube sehr viele Anleitungen angeschaut und auch ausprobiert, ohne Erfolg, vieleich übersehe ich was…
wenn ich das Beispielprogramm hochlade kommt jedes Mal folgende Meldung:
13:47:59.519 -> rst:0x8 (TG1WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
13:47:59.519 -> configsip: 0, SPIWP:0xee
13:47:59.519 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
13:47:59.555 -> mode:DIO, clock div:1
13:47:59.555 -> load:0x3fff0030,len:1344
13:47:59.555 -> load:0x40078000,len:13964
13:47:59.555 -> load:0x40080400,len:3600
13:47:59.555 -> entry 0x400805f0
13:48:00.042 -> E (629) esp_core_dump_flash: No core dump partition found! (kann man ja ignorieren)
Es geht kein Wifi …
Mit einem Testprogramm, dem Wifi Scanner kann ich aber alle Wifi Netze sehen !
Blinktest geht auch …
Diese Angaben sind von dem ESP32-Cam:
esptool.py v4.5.1
Serial port /dev/cu.usbserial-1470
Connecting…..
Chip is ESP32-D0WD-V3 (revision v3.1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: e0:5a:1b:d2:a5:88
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 460800
Changed.
Erasing flash (this may take a while)…
Chip erase completed successfully in 15.5s
Hard resetting via RTS pin…
… bin ratlos :-((
Falls jemand eine Idee hat …
Hey Volker,
ich hatte das selbe Problem. Die Lösung war bei mir ein Downgrade des esp32 Boardverwalters. Dort habe ich die Version 1.0.4 installiert, ansonsten so wie es hier im Blog beschrieben eingestellt. Hoffe das hilft dir.
Vielen Dank an den Autor, ich versuche schon seit Tagen das Ding zum laufen zu bringen.
Viele Grüße