ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Vorstellung von 3D-Druck-Teilen, Fragen zu 3D-Druckern, usw.
Discussion of 3D printed parts, Questions and answers on 3D printers and printing, etc.

Moderator: Jan3D

Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
juh
Beiträge: 547
Registriert: 23 Jan 2012, 13:48

ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von juh » 03 Apr 2021, 13:39

Hallo miteinander,

es gibt seit einer Weile schon diese sehr günstigen kleinen ESP-32-CAMs, die eine brauchbare Bildqualität in einstellbarer Auflösung bis UXGA 1600x1200 (OV2640 Kameraeinheit) liefern. Die Standard-Firmware verbindet sie als Webserver ins heimische WLAN, wo man die Kamera konfigurieren und das BIldsignal per Snapshot oder Stream abgreifen kann. Alles was es braucht, ist eine passende Stromversorgung:

web_DSC_3728.JPG
web_DSC_3728.JPG (114.5 KiB) 542 mal betrachtet

Da es sich um einen vollwertigen ESP32 handelt, kann das Bild auch direkt auf dem Modul weiterverarbeitet werden, z.B. zur Farb- oder Mustererkennung. Dafür wurden m.W. aber noch keine besonders leistungsfähigen Bibliotheken portiert, man muss derzeit also selbst Hand anlegen. Aber alleine die Webcam-Funktion ist ja schon sehr nett.

Die ESP32-Cams waren immer etwas umständlich mit extra zu verkabelndem FTDI-Adapter zu programmieren, seit einer Weile gibt es sie aber im Bundle mit einem pinkompatiblem FTDI-Adapter namens ESP-32-CAM-MB Modul, damit ist sie genau so leicht wie andere ESP- oder Arduino-Boards programmierbar.

web_DSC_3717.JPG
web_DSC_3717.JPG (55.35 KiB) 542 mal betrachtet

Mein Gehäuse im 30x15x45 Raster für die Ai-Thinker Variante des Moduls ermöglicht den externen Anschluss dieses MB Moduls für die Entwicklungsphase, im Modell muss und soll es nicht mit verbaut werden. Außerdem sind die Flash-LED (GPIO4 des ESP32), der SD-Kartenslot und die optionale externe Antenne nutzbar. Die Stromversorgung erfolgt direkt per 3,3V oder mit 4,8-12V über den board-eigenen ams1117 Spannungsregler. ft-typische 9V gehen also, allerdings mit leichter Wärmeentwicklung. Die Kontakte lassen sich gut direkt am Spannungsregler des Boards anlöten. Die Stromversorgung muss ausreichend sein, sonst kommt es zu Bildstörungen oder brown out (Absturz) des Boards.

web_DSC_3711.JPG
web_DSC_3711.JPG (74.72 KiB) 542 mal betrachtet
web_DSC_3679.JPG
web_DSC_3679.JPG (74.69 KiB) 542 mal betrachtet

Falls die Kamera selbst zusätzliche Steurungs- oder Sensoraufgaben übernehmen soll, gibt es eine Gehäusevariante mit ft-kompatiblem I2C-Anschluss. Ich habe ihn intern mit den Pins 26 (SDA) und 27 (SCL) des verbauten ESP32-S Moduls verbunden. Auf diesem Bus sitzt auch die kamerainterne Steuereinheit auf Adresse 0x30, nach meinen Tests verträgt die sich gut mit anderen I2C-Geräten auf dem gleichen Bus, obwohl sie einen speziell für Kameramodule entwickelten I2C-Dialekt spricht. Alternativ könnte man I2C auch auf beliebigen anderen Pins nutzen, leider sind auf dem Modul keine mehr frei, es sei denn man verzichtet auf die SD-Karte (Pins 12-15 und 2/4).

Druckdateien und mehr Fotos hier auf Youmagine:

https://www.youmagine.com/designs/esp32 ... hertechnik

vg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 03 Apr 2021, 16:05

Die Dinger gefallen mir echt gut und mit ein paar Filtern an Bord sollten sie die üblichen fischertechnik-Anwendungen wie Ball-finden und Farben-erkennen hinbekommen.

Entweder koppelt man die dann per WLAN oder Bluetooth mit dem eigentlichen Controller, aber I2C wäre natürlich besonders cool. Nur leider scheint I2C-Slave mit den ESP32 nicht so dolle zu klappen.

Ich denke das ist eine preisgünstige Alternative zur Pixy und auch zur ft-Kamera.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 03 Apr 2021, 16:09

Aber "leichte Wärmeentwicklung"? Bei 9V nach 3.3V gehen im Regler 2/3 der Leistung verloren. Bei den gut 300mA, die der ESP32 gerne aufnimmt sind das alleine 6*0.3 = zwei Watt am Regler. Der müsste eigentlich sehr heiss werden. Da würde ich ja vorschlagen, so einen kleinen billigen Schaltregler mit zu verbauen.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

juh
Beiträge: 547
Registriert: 23 Jan 2012, 13:48

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von juh » 03 Apr 2021, 16:59

MasterOfGizmo hat geschrieben:
03 Apr 2021, 16:05
Die Dinger gefallen mir echt gut und mit ein paar Filtern an Bord sollten sie die üblichen fischertechnik-Anwendungen wie Ball-finden und Farben-erkennen hinbekommen.
Ja, das denke ich auch, schon die mittleren Auflösungen sind mit bis zu 30 fps recht flott. Selbst habe ich damit erst angefangen, aber im Netz finden sich genug beispiele z.B. zum Punktezählen etc.
MasterOfGizmo hat geschrieben:
03 Apr 2021, 16:05
Entweder koppelt man die dann per WLAN oder Bluetooth mit dem eigentlichen Controller, aber I2C wäre natürlich besonders cool. Nur leider scheint I2C-Slave mit den ESP32 nicht so dolle zu klappen.
I2C habe ich eigentlich nur vorgesehen, falls die Kamera selbst als Controller das Projekt steuern soll, konkret dachte ich natürlich u.a. an meine WeFish-Module. Ansonsten finde ich BT oder z.B. ESPnow eigentlich eleganter. Einziges Problem könnte nur bei mobilen Modellen der hohe Verbrauch im WLAN-Betrieb sein.

Dennoch die Frage: Woher kommen Deine Zweifel zum Thema ESP32 als slave?
MasterOfGizmo hat geschrieben:
03 Apr 2021, 16:09
Aber "leichte Wärmeentwicklung"? Bei 9V nach 3.3V gehen im Regler 2/3 der Leistung verloren. Bei den gut 300mA, die der ESP32 gerne aufnimmt sind das alleine 6*0.3 = zwei Watt am Regler. Der müsste eigentlich sehr heiss werden. Da würde ich ja vorschlagen, so einen kleinen billigen Schaltregler mit zu verbauen.
Ich habe das nur ein paar Minuten und nur im eingebauten Zustand getestet, das Gehäuse ist jedenfalls noch nicht geschmolzen. :-) Platz ist in diesem Formfaktor definitiv keiner mehr, aber genau für sowas habe ich mir ja diese hier gemacht: viewtopic.php?f=38&t=6717&p=51057

vg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 04 Apr 2021, 10:27

Ich habe das zum Anlass genommen, meine seit ein paar Tagen hier herum liegenden Module in Betrieb zu nehmen.

Die vorinstallierte Firmware habe ich nicht zu einer Zusammenarbeit bewegen können. Sie hat sich als Hotspot ausgegeben, aber häufig gebootet und ich habe kein Webinterface ansprechen können. Auf Deinen Fotos sieht man m.E. das Webinterface der Arduino-Kamera-Demo. Hast Du noch andere Versionen probiert?

Konfiguriert der ESP die Kamera über I2C? Da kann man dann ja kaum den ESP zum Slave machen. Bestenfalls wenn er die Kamera einmal konfiguriert hat und sie dann in Ruhe lassen kann während er Bilder auswertet.

Generell fände ich was Pixy-artiges schon schön. I2C ist halt schon einfach für den User und man hat auch keine Probleme, wenn man nebenbei doch WLAN oder Bluetooth nutzen will. Auch mehrere gleiche Setups im gleichen Raum kollidieren nicht.

Wegen I2C-Slave am ESP muss ich mich nochmal schlau machen. Ich hatte im Hinterkopf, dass es eine reine Softwarelösung war und die eher unzuverlässig war. Aber das kann sich ja geändert haben.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

juh
Beiträge: 547
Registriert: 23 Jan 2012, 13:48

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von juh » 04 Apr 2021, 14:33

MasterOfGizmo hat geschrieben:
04 Apr 2021, 10:27
Die vorinstallierte Firmware habe ich nicht zu einer Zusammenarbeit bewegen können. Sie hat sich als Hotspot ausgegeben, aber häufig gebootet und ich habe kein Webinterface ansprechen können. Auf Deinen Fotos sieht man m.E. das Webinterface der Arduino-Kamera-Demo. Hast Du noch andere Versionen probiert?
Nein, ich habe nicht einmal das Vorinstallierte probiert, sondern gleich den Demo-Sketch bei den ESP32-Beispielen hochgeladen, lief auf Anhieb. Häufiges Booten könnte an einer zu schwachen Stromversorgung liegen, z.B. bei USB wenn das Kabel zu lang oder zu schlecht ist.
MasterOfGizmo hat geschrieben:
04 Apr 2021, 10:27
Konfiguriert der ESP die Kamera über I2C? Da kann man dann ja kaum den ESP zum Slave machen. Bestenfalls wenn er die Kamera einmal konfiguriert hat und sie dann in Ruhe lassen kann während er Bilder auswertet.
Jein, das ist wohl ein Protokoll speziell für Kameramodule, das zu 99% I2C-kompatibel ist und (aus Lizenzgründen?) nicht I2C heißt, ich finde die Seite gerade nicht, wo die wenigen Unterschiede mal reicht ausführlich diskutiert wurden. Im Datenblatt nennt es sich SCCB serial interface, pins SIO_D und SIO_C.

Ich habe einfach mal den Test gemacht, der I2C-Scanner findet die Kamera an diesem Interface unter 0x30 (bzw. 0x60 in 8-bit). Einen MPU6050 Lagesensor konnte ich problemlos gleichzeitig mit der Kamera ansprechen, darüber hinaus gingen meine Tests aber bisher nicht.

In jedem Fall kannst Du aber für den Slavebetrieb ja einfach einen zweiten I2C-Bus aufmachen, müsstest dann aber (beim Ai-Thinker Modul) zwei der Pins opfern, die für die SD-Karte genutzt werden, was aber bei den meisten Projekten wahrscheinlich kein Problem ist. Wäre auch einfacher zu löten, weil man die Pins an den Stiftleisten findet und nicht direkt ans ESP-S Gehäuse muss.
MasterOfGizmo hat geschrieben:
04 Apr 2021, 10:27
Generell fände ich was Pixy-artiges schon schön. I2C ist halt schon einfach für den User und man hat auch keine Probleme, wenn man nebenbei doch WLAN oder Bluetooth nutzen will. Auch mehrere gleiche Setups im gleichen Raum kollidieren nicht.
Ich habe das bisher noch nicht ausprobiert, aber ESP-Now adressiert direkt per MAC-Adresse, so dass da nichts kollidieren sollte. Will man gleichzeitig ins Netz funken, würde es natürlich komplexer. Und ganz so unzickig ist I2C ja auch nicht gerade. Für mich hätte die kabellose Variante daher erst mal mehr Charme, aber wie gesagt, mit eigenen Erfahrungen kann ich noch nicht aufwarten.
MasterOfGizmo hat geschrieben:
04 Apr 2021, 10:27
Wegen I2C-Slave am ESP muss ich mich nochmal schlau machen. Ich hatte im Hinterkopf, dass es eine reine Softwarelösung war und die eher unzuverlässig war. Aber das kann sich ja geändert haben.
Ich habe in einem anderen Kontext (Servo-Modul) die Erfahrung gemacht, dass beim ESP8266 die I2C-Timings sehr knapp an der Spezifikationsgrenze sind, was zu Problemen führte wenn das Partnergerät etwas zu schlampig programmiert ist. Keine Ahnung ob Expressif beim ESP32 die gleiche Implementation verwendet, falls ja, könnten die knappen Timings Teil des Problems sein.

vg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 04 Apr 2021, 18:02

Ist letztlich nebensächlich. Wenn jemand dem Ding nette Erkennungsmethoden beibringt dürfte die Anbindung kein ernsthaftes Problem sein.

So schrecklich viel gibt es da aber nicht. Meistens läuft die Bildbearbeitung wohl im Browser. Zu QR-Codes scheint es ein wenig zu geben, das ich bei Gelegenheit testen werde.

Aber zu Ball-, Linien- oder Bewegungserkennung gibt es nicht viel.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 05 Apr 2021, 15:00

Hier ist eine Version der Arduino-Firmware, die die "Flash"-LED unterstützt.

https://github.com/Hermann-SW/Raspberry ... al_shutter

Hast Du noch anderen interessante Versionen gefunden?
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

juh
Beiträge: 547
Registriert: 23 Jan 2012, 13:48

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von juh » 05 Apr 2021, 16:26

MasterOfGizmo hat geschrieben:
05 Apr 2021, 15:00
Hast Du noch anderen interessante Versionen gefunden?
Nein, wie gesagt nur den Beispielsketch, dort aber mal die Flesh-LED im Setup angeschaltet, um zu testen ob der Lichtkegel meines Gehäuses ausreichend weit ist (ist er), und festgestellt, dass die LEd in dunklen Ecken tatsächlich überraschend effektiv ist.

Ich hatte aber nochmal nach Echtzeit-Bildverarbeitungsbeispielen gesucht. Da gibt es immerhin Beispiele wie Gesichtserkennung, einfache Gegenstandserkennung (Äpfel vs. Orangen) und Bewegungserkennung, die nativ laufen. Werkstücke zählen oder Rubik's Cube erkennen, sollten von da aus weiterentwickelt kein so großes Ding sein. Interessant auch dieses Paper, das die grundsätzliche Tauglichkeit für Machine Learning analysiert und zum Schluss kommt, dass die Arduino IDE die Performance ausbremst:
ESP32 with camera can be used for some simple machine learning tasks and for camera picture taking and preparing for other more powerful processors. Arduino IDE still does not provide enough level of optimization for implemented PSRAM memory.
Ach ja und noch ein Nachtrag zum Thema welche Pins für I2C: Lt. https://github.com/alanesq/esp32cam-dem ... /README.md lassen sich Pins 12 und 13 für I2C gleichzeitig mit der Micro-SD verwenden, wären also vlt. die bessere Alternative als meine mit den Pins 26 und 27, da nicht zu teilen mit dem I2C-Bus der Kamera und leichter lötbar.

vg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 05 Apr 2021, 20:15

juh hat geschrieben:
05 Apr 2021, 16:26
Ach ja und noch ein Nachtrag zum Thema welche Pins für I2C: Lt. https://github.com/alanesq/esp32cam-dem ... /README.md lassen sich Pins 12 und 13 für I2C gleichzeitig mit der Micro-SD verwenden, wären also vlt. die bessere Alternative als meine mit den Pins 26 und 27, da nicht zu teilen mit dem I2C-Bus der Kamera und leichter lötbar.
Das glaube ich nicht so ganz. Ja, im SPI-Mode braucht man weniger Pins der SD-Karte. Aber laut u.a. http://elm-chan.org/docs/mmc/mmc_e.html, speziell

Bild

sind das nicht DATA2 und DATA3, sondern DATA1 und DATA2, die man im SPI-Mode nicht benötigt, also GPIO4 und GPIO12. Das gibt auch Sinn, denn an GPIO4 hängt die Flash-LED und genau die kann man nämlich damit unabhängig steuern, wobei es damit aber m.E. keinerlei Sinn macht, die Leitungen überhaupt an die SD-Karte zu legen, weil dann im 4-Bit-Modus die Flash-LED blinkt. Also ist nur GPIO12 dort problemlos abzweigbar. Siehe auch https://github.com/SeeedDocument/forum_ ... M_V1.6.pdf. Auf dem Erweiterungsstecker liegen sonst noch CSI-MCLK, was IO0 ist und benötigt wird, um in den Bootloader zu kommen. Und dann liegt da noch U2RXD aka GPIO16. Und was das da soll verstehe ich nicht. Das ist das CS für das PSRAM. Das lässt sich m.E. nicht zweckentfremden, solange das PSRAM wirklich vorhanden ist, da der Chip sonst angesprochen wird und dann dem ESP32-internen Flash ins Gehege kommen könnte. Also fehlt uns noch ein Pin. Ich würde dann eher U0RXD nehmen, da wir wahrscheinlich nichts über RS232 an die Kamera senden wollen. Aber für's Firmware-Flashen benötgt man den Pin halt leider auch. Kann man aber ggf. hinbiegen. In Ruhe liegt das z.B. auf High. Man kann also mit Diode und Pullup ggf. dafür sorgen, dass man die Leitung im Normalbetrieb als Ausgang und gleichzeitig während des Flashens als Eingang nutzt.

Wenn man die ESP32-CAM an dem ESP32-CAM-MB betreiben will sollte man übrigens ggf. genau auf die Platine schauen. Um den ESP32 zu flashen muss man nämlich dessen RESET-Leitung steuern und die liegt nur auf einigen neueren ESP32-CAM auf den Erweiterungspins. Bei den alten muss man halt Reset manuell drücken.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

juh
Beiträge: 547
Registriert: 23 Jan 2012, 13:48

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von juh » 05 Apr 2021, 22:06

MasterOfGizmo hat geschrieben:
05 Apr 2021, 20:15
Das glaube ich nicht so ganz. Ja, im SPI-Mode braucht man weniger Pins der SD-Karte.
Die Seite redet vom 1-bit mode, nicht SPI. Und da reicht offenbar Data0 (GPIO2), so dass sowohl die LED als auch I2C auf 12/13 kein Problem wären, s. z.B. Tabelle hier:

https://www.instructables.com/Select-SD ... for-ESP32/

MasterOfGizmo hat geschrieben:
05 Apr 2021, 20:15
Wenn man die ESP32-CAM an dem ESP32-CAM-MB betreiben will sollte man übrigens ggf. genau auf die Platine schauen. Um den ESP32 zu flashen muss man nämlich dessen RESET-Leitung steuern und die liegt nur auf einigen neueren ESP32-CAM auf den Erweiterungspins. Bei den alten muss man halt Reset manuell drücken.
Guter Hinweis, wusste ich nicht, ich hatte beide im Bundle bestellt, da sollte es in jedem Fall passen.

vg
Jan
Meine fischertechnik Designs für den 3D-Druck: https://www.thingiverse.com/juh/designs

Benutzeravatar
MasterOfGizmo
Beiträge: 2109
Registriert: 30 Nov 2014, 07:44

Re: ESP32-CAM Webcam Gehäuse (neues 3D-Bauteil)

Beitrag von MasterOfGizmo » 06 Apr 2021, 08:32

juh hat geschrieben:
05 Apr 2021, 22:06
Die Seite redet vom 1-bit mode, nicht SPI.
Ah, cool. Das war mir nicht bewusst, dass sie mit 1-Bit-Mode nicht den SPI-Mode meinen. In der Tat, wenn da die drei Pins frei werden, dann passt es genau.
Für fischertechnik: Arduino ftDuino http://ftduino.de, Raspberry-Pi ft-HAT http://tx-pi.de/hat

Antworten