Gesichtserkennung mit ESP32-WLAN-Kameraboards ab 15 Euro

Begonnen von JoWiemann, 09 Januar 2019, 18:54:53

Vorheriges Thema - Nächstes Thema

Papa Romeo

Hallo Tom,

sorry, aber da geht es mir wie dir. Ich hab mir das alles auch selber irgendwie durch probieren und "abgucken" angeeignet
und kann dir da leider nicht weiterhelfen.

Nur eben seltsam, dass es bei mir hier ohne Fehlermeldung durchläuft.
...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

Papa Romeo

Zitat von: tomster am 09 Januar 2020, 17:55:09
.... OK, ist ja auch keine SD-Karte im Slot.

...hab ich jetzt erst gerade gelesen....du brauchst keine SD-Karte...er schreibt auf den internen Speicher...deswegen die Änderung der "board-Datei" und die neue Partition,
die du beim Flashen auch einstellen musst.
...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

tomster

Zitat von: Papa Romeo am 22 August 2019, 15:01:51
Ich hab die app_httpd.cpp auch nicht mehr im Sketchordner.
Diese cpp-Datei wird von irgend einer h-Datei aufgerufen und soviel ich weiß,
reicht es wenn sie irgendwo in den "Libraries" zur Verfügung steht.

So, ein bissl weitergekommen. Wenn ich die app_httpd.cpp in den libraries-Ordner verschiebe, dann gibt es beim kompilieren keinen "multiple definitions"-Konflikt mehr. Der Sketch kompiliert damit anstandslos durch.
Leider scheint das aber keine positive Auswirkung auf die Funktion des Sketches an sich zu haben. Der ESP bootet zwar und das GUI ist erreichbar, aber Kamerabild erhalte ich immer noch keines...
Ich werde weiter versuchen.

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

eisman

1x FHEM Debian, Homematic,ZigBee,FS20 / 1X Raspberry, ConBee / 7x ESP
1x FHEM Debian, Homematic,Z2M             / 1X Raspberry, ConBee / 6x ESP
1x FHEM Debian,MQTT2                             / 1X Raspberry, i2c,onewire,gpio
1x auf Windows 2012 Hyper-V-S

Papa Romeo

Zitat von: eisman am 12 Januar 2020, 11:01:13
hier gibt es noch ein Project:
     https://forum.fhem.de/index.php/topic,107180.0.html

...ist zweifellos auch eine tolle Anwendung, hat aber eher weniger mit Gesichtserkennung zu tun  ::) :o ;)
...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

tomster

Zitat von: Papa Romeo am 10 Januar 2020, 21:15:29
..was hast du für eine Kamera ?

Es ist eine OV2640 V2.0. Wenn ich im Beispiel-Sketch aus der lib als Kameratyp "AI Thinker" angebe, dann gibt's damit ein Bild.
Auch wenn die GPIO-Einstellungen/camera pins dafür die Gleichen sind, wie in Deinem Sketch, klappt damit leider keine Bildausgabe.

Papa Romeo

Ich weiß nicht, ob´s was bringt, aber wie heißt´s so schön....."D´r Deifi is a Oichkatzerl"...

nimm die Kamera-Definitionen mal raus ...

/*
#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27
#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22
#define WIFI   2
*/


und trag dafür die Zeilen für die Kameras aus dem Beispiel-Sketch ein


// 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

#include "camera_pins.h"


Nicht vergessen, die original "camera_pins.h" und eventuell auch die "camera_index.h" ins Sketch-Verzeichnis zu kopieren und dann nochmal kompilieren.
...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

tomster

#188
Hat leider auch nix gebracht. Da war das Oachkatzl ned versteckt ;-)

Als ich jedoch das Youtube-Video zu dem Original-Sketch angeschaut habe, ist mir aufgefallen, dass das dort gezeigt Web-GUI gänzlich anders aussieht, als das von mir ursprünglich kompilierte:
https://www.youtube.com/watch?v=mu3-Sff0B9w
Also hab ich das ZIP-File aus dem auf YT verlinkten Blog-Eintrag genommen. Damit hat es auf Anhieb geklappt. Bild ist da, User kann ich anlegen und ich bin happy. OK, mit dem andere GUI gab es mehr Einstellmöglichkeiten, aber egal.


--edit--
Jetzt musst Du mir nur noch erklären, wie ich die MQTT-Messages "vernünftig" als Trigger verwende. Beim Erkennen eines Gesichts gibt es ja z.B. "Tom erkannt !" als Push. Dieser bleibt aber als Reading stehen bis (irgendwann) wieder ein Gesicht erkannt wird.  Für eine Auswertung in FHEM nicht optimal, oder?

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

tomster

#190
Ich hab grad gesehen, dass nach einem Neustart der Push "... warte ..." gesendet wird. Allerdings nur bis zum 1. Erkennen eines Gesichts. Danach bleibt das Reading wieder ewig auf "XXX erkannt !".  Wäre es nicht besser, wenn nach XX Sekunden als Push wieder "... warte ..." gesendet würde? Damit könnte man dann die Erkennung leichter auswerten oder auch einen watchdog in FHEM triggern, der sich dann nach (in FHEM konfigurierbarer Zeit) wieder resettet.
Was meinst?

Ach, und sollte man mit dem Jumper nicht zwischen Browser- und Detectionmodus hin- und herschalten können? Wenn der Sketch ohne gesetzten Jumper startet, dann gibt es keinen Zgriff auf das Web-GUI (braucht man ja dann auch nicht). Wenn ich aber den Jumper danach setze bleibt das Web-GUI leider immer noch abgeschaltet. Da hilft dann nur ein Reset...
Soll das so sein oder bin ich Mal wieder Bedienerfehler?

Papa Romeo

... mit dem "...warte..." müsste man im Sketch ändern und nach einem Ändern des Jumpers musst du neu starten,
da die Abfrage des Selbigen nicht in der "loop" Schleife erfolgt.

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

steffen83

So, mein Board ist heute gekommen und ich sollte mich auch anhand der Anleitung durchgekämpft haben.
Kompelieren hat geklappt... 100%
WARNUNG: Kategorie 'LED' in der Bibliothek CHT16K33 LED Matrix Library ist ungültig und wird auf 'Uncategorized' festgelegt
WARNUNG: Kategorie 'Input' in der Bibliothek MechInputs ist ungültig und wird auf 'Uncategorized' festgelegt
WARNUNG: Kategorie 'Input' in der Bibliothek SerialSensors ist ungültig und wird auf 'Uncategorized' festgelegt
Build-Optionen wurden verändert, alles wird neu kompiliert
Der Sketch verwendet 2166310 Bytes (68%) des Programmspeicherplatzes. Das Maximum sind 3145728 Bytes.
Globale Variablen verwenden 46244 Bytes (14%) des dynamischen Speichers, 281436 Bytes für lokale Variablen verbleiben. Das Maximum sind 327680 Bytes.
esptool.py v2.6
Serial port COM3
Connecting....
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: 24:62:ab:d5:c8:04
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 4369.0 kbit/s)...
Hash of data verified.
Compressed 17088 bytes to 11054...

Writing at 0x00001000... (100 %)
Wrote 17088 bytes (11054 compressed) at 0x00001000 in 0.3 seconds (effective 531.9 kbit/s)...
Hash of data verified.
Compressed 2166432 bytes to 1670039...

Writing at 0x00010000... (0 %)
...
Writing at 0x001a4000... (100 %)
Wrote 2166432 bytes (1670039 compressed) at 0x00010000 in 39.1 seconds (effective 442.8 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 1445.6 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...


Nach Reboot allerdings folgende Meldung:
21:20:27.396 -> ets Jun  8 2016 00:22:57
21:20:27.396 ->
21:20:27.429 -> rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
21:20:27.429 -> configsip: 0, SPIWP:0xee
21:20:27.429 -> clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
21:20:27.429 -> mode:DIO, clock div:1
21:20:27.429 -> load:0x3fff0018,len:4
21:20:27.429 -> load:0x3fff001c,len:1100
21:20:27.429 -> load:0x40078000,len:9564
21:20:27.429 -> ho 0 tail 12 room 4
21:20:27.429 -> load:0x40080400,len:6320
21:20:27.429 -> entry 0x400806a8
21:20:30.316 -> E (3930) fr_flash: Not found


Nun komme ich nicht weiter, jemand ne Idee/Lösung für mich?

Schönen Abend
Steffen
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

Papa Romeo

Hallo Steffen,

die Fehlermeldung:

fr_flash: Not found


ist normal ein Hinweis, dass der Speicher nicht richtig partitioniert oder beim Flashen ausgewählt wurde.
...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

holle75

... Papa, könnte auch ich das Passwort? ....

Danke und Gruß
H.

ps. top Alternative für RFID Gebastel bei Katzenanwendungen! ... wenns denn dann funktioniert wärs ein Highlight