ESP32 CAM mit OV5640

Begonnen von TomLee, 22 Dezember 2023, 13:59:23

Vorheriges Thema - Nächstes Thema

TomLee

Hallo,

hab mir ohne mich damit zuvor wirklich zu beschäftigen/ einzulesen dieses Fischauge bestellt. Ich war der Hoffnung dass das schon irgendwie klappen wird iVm. dem CameraWebServer-Sketch, spätestens halt wenn ich Pin 24 mit 3,3 Volt verbinde.
Auf einem ESP32-Kameramodul das bereits mit Tasmota geflasht war hab ich das OV2640-Modul einfach mal gegen das OV5640-Modul getauscht, da wurde dann einfach kein Stream mehr angezeigt.
Mit dem CameraWebServer-Sketch bekomme ich den Stream angezeigt, der aber nur ein "verschwommenes" Bild zeigt, egal ob mit oder ohne Verbindung des 24. Pin mit 3,3V.

Hat sich hier irgendwer schon damit beschäftigt und kann was dazu sagen ?

Gruß

Thomas

Papa Romeo

#1
Zitat von: TomLee am 22 Dezember 2023, 13:59:23Auf einem ESP32-Kameramodul das bereits mit Tasmota geflasht war hab ich das OV2640-Modul einfach mal gegen das OV5640-Modul getauscht ...

Hallo Thomas,
wird so nicht funktionieren, da der bestehende Sketch auf dem ESP mit der camera_index.h für das OV2640-Modul kompiliert und geflashed wurde.
Vor dem Kompilieren musst du dem Sketch bzw. ESP mitteilen, mit welchem Kamera-Modul er zusammenarbeiten soll.
Dazu ist es aber auch erforderlich, das du eine camera_index.h im Sketch-Ordner hinterlegst, welche die entsprechenden Daten für das OV5640-Modul enthält.

... eventuell noch zur Info:  https://forum.fhem.de/index.php?topic=95604.0

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

TomLee

Vielen Dank für die Antwort.

Deine angehängte camera_index.h, mein ich, sieht auf den ersten Blick genauso aus, wie die die schon in dem Sketch-Ordner standardmäßig vorhanden ist.

Die Frage die ich mir dazu sowieso schon zuvor stellte ist die, wo ich jetzt in dem Sketch (denke doch mal in CamerWebServer.ino) genau mitteile das er für das OV5640 kompilieren soll, ich sehe/finde die Stelle in keiner der Dateien in dem Sketch-Ordner ?

frober

Bei mir ist in der camera_index.h nur die verwendete Kamera enthalten.

Also alles was nicht benötigt wird entfernen.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

Hi,

wenn ich nur das define und die zugehörige Variable für OV5640 in der camera_index.h lasse bekomme ich den Fehler beim kompilieren:
Compilation error: 'index_ov3660_html_gz' was not declared in this scopeDie Arduino IDE "springt" in die Zeile 1192 der Datei app_httpd.cpp und die Zeilen 1192 und 1196 werden rot hinterlegt.

Das ist die Funktion:

Zitatstatic esp_err_t index_handler(httpd_req_t *req)
{
    httpd_resp_set_type(req, "text/html");
    httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
    sensor_t *s = esp_camera_sensor_get();
    if (s != NULL) {
        if (s->id.PID == OV3660_PID) {
1192        return httpd_resp_send(req, (const char *)index_ov3660_html_gz, index_ov3660_html_gz_len);
        } else if (s->id.PID == OV5640_PID) {
            return httpd_resp_send(req, (const char *)index_ov5640_html_gz, index_ov5640_html_gz_len);
        } else {
1196        return httpd_resp_send(req, (const char *)index_ov2640_html_gz, index_ov2640_html_gz_len);
        }
    } else {
        ESP_LOGE(TAG, "Camera sensor not found");
        return httpd_resp_send_500(req);
    }
}

Papa Romeo

#5
..dann lass die Daten für die OV3660 auch mal drin.

 Edit: nee...geht nicht ... du musst die if-Anweisungen für die nicht genutzten Kameras rauslöschen.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

TomLee

Mehr oder weniger das gleiche Verhalten, nur das jetzt nur noch die fehlenden Daten zu dem OV2640 angeprangert werden:

Zitatstatic esp_err_t index_handler(httpd_req_t *req)
{
    httpd_resp_set_type(req, "text/html");
    httpd_resp_set_hdr(req, "Content-Encoding", "gzip");
    sensor_t *s = esp_camera_sensor_get();
    if (s != NULL) {
        if (s->id.PID == OV3660_PID) {
            return httpd_resp_send(req, (const char *)index_ov3660_html_gz, index_ov3660_html_gz_len);
        } else if (s->id.PID == OV5640_PID) {
            return httpd_resp_send(req, (const char *)index_ov5640_html_gz, index_ov5640_html_gz_len);
        } else {
1196        return httpd_resp_send(req, (const char *)index_ov2640_html_gz, index_ov2640_html_gz_len);
        }
    } else {
        ESP_LOGE(TAG, "Camera sensor not found");
        return httpd_resp_send_500(req);
    }
}

Es muss doch irgendwo im Code eine Stelle geben wo man einstellt für welches Modul kompiliert werden soll ?

frober

Ich vermute das die Kamera automatisch erkannt wird.
Hast du das richtige Board ausgewählt?

Laut camera_pins.h gibt es da einige Unterschiede.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

#8
Ja, die Frage welches ESP-Board man wählen muss und ob es davon abhängig ist, stell ich mir auch. Mit dem OV2460 hab ich bisher #define CAMERA_MODEL_AI_THINKER genommen, damit klappts mit dem OV5640 eben nicht.

Ein Bild von meinem ESP ist mal im Anhang.

Hier das :
#elif defined(CAMERA_MODEL_ESP_OV5640)

#define RESET_GPIO_NUM     5
#define XCLK_GPIO_NUM     15
#define SIOD_GPIO_NUM     22
#define SIOC_GPIO_NUM     23

#define Y9_GPIO_NUM       39
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       33
#define Y6_GPIO_NUM       27
#define Y5_GPIO_NUM       12
#define Y4_GPIO_NUM       35
#define Y3_GPIO_NUM       14
#define Y2_GPIO_NUM        2

#define VSYNC_GPIO_NUM    18
#define HREF_GPIO_NUM     36
#define PCLK_GPIO_NUM     26

#define LED_GPIO_NUM      25

hab ich eben mal in der camera_pins.h ergänzt und in der CamerWebServer.ino #define CAMERA_MODEL_ESP_OV5640.
Damit gibt es einen Kompilierfehler Compilation error: 'PWDN_GPIO_NUM' was not declared in this scope, daraufhin hab ich in CAMERA_MODEL_ESP_OV5640 PWDN_GPIO_NUM    32 ergänzt (wie in CAMERA_MODEL_AI_THINKER).Damit klappt dann zwar das kompilieren, in der Oberfläche startet aber kein Stream.

frober

Laut Berrybase
ZitatUnterstützt Kameras des OV2640 und OV7670

Das habe ich auch schon wo anders gelesen.

https://www.berrybase.de/en/esp32-cam-development-board-inkl.-ov2640-kameramodul
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

::) THX

Dann werd ich mal schauen wo ich ein kompatibles ESP-Modul bestelle.


frober

Da ich zufällig drauf gestoßen bin...

https://www.reddit.com/r/esp32/comments/r7fs6l/i_did_a_simple_test_by_attaching_the_ov5640_to/

ZitatThis is the default example source. You can get it by setting the ESP version to 2.x.


Es sollte also mit einer aktuellen ESP Version funktionieren.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

#12
Hi,

bin heute nicht wirklich dazu gekommen mich mit zu beschäftigen. Fest steht für mich (jetzt nachdem ich mir das Video angeschaut habe), daß das Kamera-Modul schon "richtig" erkannt wird (ich hab ja auch ein Bild, nur unscharf), aufgrund der zusätzlich möglichen "Advanced Settings" unten links (siehe Screenshot), welche die OV2640 nicht hat.


Beim nächsten Treffen steht für mich jetzt fest, nicht ohne mein Laptop und dem Kameramodul (ich hatte noch überlegt es gestern mitzubringen).

Papa Romeo

... bist du dir sicher, dass die vom Werk aus eingestellte Fokussierung passt.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

frober

Soweit ich das gelesen habe, hat die OV5640 einen Autofokus, den man aktivieren kann.
https://www.arduino.cc/reference/en/libraries/ov5640-auto-focus-for-esp32-camera/
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Papa Romeo

Zitat von: frober am 07 Mai 2024, 10:44:20Soweit ich das gelesen habe, hat die OV5640 einen Autofokus, den man aktivieren kann.

...scheint bei ihm aber nicht zu funktionieren oder ist nicht aktiviert.

Wenn es mit dem Beispiel-Sketch des Libraries, das du verlinkt hast, nicht funktioniert, könnte ich mir vorstellen, dass die Grundeinstellung der Linse eventuell soweit daneben liegt, dass auch der Auto-Focus nicht mehr greifen kann oder es funktioniert
nur mit dem AI-Thinker-Board. Meine auch was gelesen zu haben, dass man bei anderen Board die Pinbelegung beachten muss.

LG
Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

frober

Zitat von: Papa Romeo am 07 Mai 2024, 14:07:46...scheint bei ihm aber nicht zu funktionieren oder ist nicht aktiviert.

Keine Ahnung, ob Thomas nochmal den ESP neu geflacht hat...
Aber ich gebe dir Recht mit dem nicht passenden Fokus, das war auch mein Gedanke.

Bisher hatten wir die Esp32-Boards von Espressif (aktuell V1.06) für die ESPCams verwendet, in dem Video müssten das die "Arduino ESP32 Boards" sein (V2.x), bzw. der Bsp.-Sketch davon und für den Autofokus muss man zusätzlich die verlinkte Lib benutzten.

Gerade die "Arduino ESP32 Boards" installiert, die Bsp. sind zu finden unter "...\packages\arduino\hardware\esp32\2.0.13\libraries\ESP32\examples".
In der camera_index.h ist die OVP5640 hier schon enthalten und im Sketch '#define CAMERA_MODEL_ESP_EYE' als Board ausgewählt.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

TomLee

#17
Zitatund für den Autofokus muss man zusätzlich die verlinkte Lib benutzten

Ich hab gerade Pin 24 an 3,3V gelötet und diesen Sketch geflasht.

Damit bekomm ich im seriellen Monitor diese Ausgaben:

...
FW_STATUS = 0x20
FW_STATUS = 0x20
FW_STATUS = 0x20
FW_STATUS = 0x20
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
Focusing!
FW_STATUS = 0x0
...

Für mich ist das dann jetzt ein Zeichen dafür das es an dem ESP-Board liegt, oder nicht ?

So sollte es aussehen:
https://youtu.be/922BWy3OOoQ?t=256

Allerdings nutzt er da doch das gleiche Board wie ich habe ?
Kann das von Berrybase wirklich anders sein ?

Papa Romeo

#18
... hast du die OV5640 Version C ?

Version A und B haben kein Autofocus.

LG
Papa Romeo

EDIT: Sollte in etwa so aussehen ...
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

TomLee


frober

Die Cam benötigt PSRAM, wobei ich davon ausgehe, dass die ESP32-Cam Boards das haben...
Des Weitern habe ich gelesen, dass es nur mit einer "geringen" Auflösung funktioniert. Steht, glaube ich, in den Posts zum Video.

Teste doch erstmal mit dem Demosketch aus dem Video (ohne Autofokus).
Also "Arduino ESP32 Boards" installieren.
Raspi 3b mit Raspbian Bullseye und relativ aktuellem Fhem,  FS20, LGW, PCA301, Zigbee, MQTT, MySensors mit RS485(CAN-Receiver) und RFM69, etc.,
einiges umgesetzt, vieles in Planung, smile

********************************************
...man wächst mit der Herausforderung...

Papa Romeo

#21
... ich denke dass das Fischauge keinen Autofokus kann.

Schau dir hier mal die Spezifikationen an. Nur bei der Version C ist Pin24 belegt und somit Auto-Fokus fähig.

https://www.waveshare.com/wiki/OV5640_Camera_Board_(C)

LG
Papa Romeo

Edit: ... und hier dann zur kompletten Verwirrung ... OV5640`er die es z.B. bei AMAZON gibt und bei denen ausdrücklich
      vermerkt ist, dass Diese für das ESP32-Cam-Modul sind: 
      Pin 23 --> Auto-Focus VDD
      Pin 24 --> Auto-Focus GND

und nu ?????


Edit2: ... bzw. wenn man bei den Kundenbewertungen beim selben Artikel
(https://de.aliexpress.com/item/1005004072836395.html?spm=a2g0o.productlist.seoads.2.31f4qEvvqEvv5f&p4p_pvid=2024050811282511227900484036000001730856_1&s=p)

             einmal das                                                      -->    Ihre Pinout ist anders als üblich. Wenn es an esp32cam angeschlossen wird, ist es sehr heiß.
                                                                                              Hat sich schon jemand mit diesem Problem befasst?
             und bei "Fragen und Antworten" dann das    -->    Sehr gute Kamera, braucht kein extra Kabel und funktioniert direkt auf dem               
                                                                                              AI Thinker board

             liest ... macht man sich doch Gedanken, ob das Modul zu anderen ESP-CAM-Board`s überhaupt kompatibel ist ? (Pin24  GND oder VDD ?)


...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary