Gesichtserkennung mit ESP32-WLAN-Kameraboards ab 15 Euro

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

Vorheriges Thema - Nächstes Thema

Papa Romeo

Sehe gerade, hab noch ein drittes "jungfräuliches" ESP32-Cam-Modul.
Hab morgen ne Augen-OP und denke werde den Rest der Woche dann zuhause sein.
Gibt dann bestimmt Gelegenheit das Ganze noch einmal durchzuspielen.

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

fh168

Zitat von: Papa Romeo am 16 Februar 2020, 21:46:49
Sehe gerade, hab noch ein drittes "jungfräuliches" ESP32-Cam-Modul.
Hab morgen ne Augen-OP und denke werde den Rest der Woche dann zuhause sein.
Gibt dann bestimmt Gelegenheit das Ganze noch einmal durchzuspielen.

LG

Papa Romeo

Papa, es eilt nicht.
Alles Gute für die OP.

Robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Papa Romeo

Also, ich hab´s nochmal durchgespielt.

Im Anhang die entsprechenden Bildern der Ausgaben im seriellen Monitor und sofern vorhanden auch im WEB.

Bild 1  : ... Aduino CameraWebServer Beispielsketch --> läuft --> Ausgabe WEB und seriell

Bild 2  : ... abgeänderte app_httpd.cpp --> Sketch: CameraWebServerPermanent --> läuft nicht --> es wird zwar
                  gemeldet WiFi-Verbindung würde bestehen aber keine IP Angabe --> Ausgabe nur seriell und Abbruch durch Fehlermeldung.

Bild 3  : ... ESP32_CAM Sketch ohne ein Gesicht gespeichert zu haben --> läuft --> Ausgabe WEB und seriell

Bild 4  : ... ESP32_CAM Sketch mit gespeichertem Gesicht  --> läuft --> Ausgabe WEB und seriell

Bild 4a: ... Ausschnitt der seriellen Ausgabe zu Bild 4 mit gezogenem Jumper (GPIO12 offen)


Softwaremäßig passt also alles, kann dann eigentlich nur noch an der Hardware liegen.

Dazu...ich hab z.B. eine rote LED für GPIO12 und keine Blaue ... nur ne Bauform...oder doch ne andere Hardware?

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

Papa Romeo

Robin,

mir fällt da gerade brennend heiß was ein. Ich habe fast die Vermutung dass du dir durch das ewige herumprobieren deine fr_flash-Partition zerschossen hast. Mir ist so was ähnliches bei Löschen von Gesichtern mal passiert. Ich hatte damals dann auch keinen Stream auf dem Webinterface und der ESP startet mit einer Fehlermeldung immer wieder neu.

Ich hab den betreffenden ESP32 gerade noch mal rausgesucht und mit der defekten Partition geflashed... und es ist tatsächlich so. Kein Stream auf der Weboberfläche, gleiche serielle Ausgabe wie du gepostet hast.

Also dann mach mal folgendes. Ändere deine board.txt wie folgt ab:

#esp32wrover.menu.PartitionScheme.rzo_partition=Face Recognition (2621440 bytes with OTA)
#esp32wrover.menu.PartitionScheme.rzo_partition.build.partitions=rzo_partitions
#esp32wrover.menu.PartitionScheme.rzo_partition.upload.maximum_size=2621440

esp32wrover.menu.PartitionScheme.paro_partition=Gesichtserkennung (2621440 bytes with OTA)
esp32wrover.menu.PartitionScheme.paro_partition.build.partitions=paro_partitions
esp32wrover.menu.PartitionScheme.paro_partition.upload.maximum_size=2621440


und kopiere den Inhalt der angehängte zip.Datei (PW hast du in deiner PM) in den Ordner partitions.

Scheme stellst du dann auf "Gesichtserkennung (2621440 bytes with OTA)" und dann flashen.

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

fh168

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
E (3805) fr_flash: No ID Infomation


geht auch nicht
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Papa Romeo

hmm...in deiner Fehlermeldung fehlt das http_start

... wenn du softwaremäßig alles nach Anleitung gemacht hast, bleibt offensichtlich nur eine fehlerhafte oder nicht kompatible Hardware.
Sehe da jetzt im Moment keine andere Option.
...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: fh168 am 19 Februar 2020, 14:10:20
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DOUT, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5816
entry 0x400806ac
E (3805) fr_flash: No ID Infomation


geht auch nicht

Bist Du Dir sicher, dass der Sketch "nicht geht"? Aus meiner Erinnerung hatte ich bei meinem Sketch die gleiche Ausgabe wie Du.
Ich hab aber zusätzlich einen entsprechenden MQTT-Topic in FHEM angelegt. Auf diesem wird mir eine Erkennung (m)eines Gesichts ausgegeben. Im Serial Monitor hingegen nicht...

Papa Romeo

#232
Zitat von: tomster am 19 Februar 2020, 17:00:22
Im Serial Monitor hingegen nicht...

...ist aber schon auch seltsam, da die Ausgaben eigentlich direkt hintereinander ausgeführt werden...


          Serial.print(f->id_name); Serial.print(" erkannt !"); match = match + 1; Serial.print(" Treffer: "); Serial.println(match);
          String idname = String(f->id_name) + " erkannt !";
          const char* Idname = idname.c_str();
          client.publish(FACE, Idname); dtostrf(match , 3, 0, msg); client.publish(BEATS, msg);


Aber das dürfte bei Robin wohl eher das kleinere Problem darstellen. Er bekommt ja, durch den fehlenden "http_start" schon mal gar keinen Video-Stream
im Web-Interface und kann somit keine Gesichter speichern. Der serielle Monitor dient ja in erster Linie nur zur Kontrolle ob auch alles ausgeführt wird, wie´s gedacht ist.

@Robin: bekommst du überhaupt eine IP-Ausgabe ?
...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

fh168

#233
Zitat von: Papa Romeo am 20 Februar 2020, 10:13:06
...ist aber schon auch seltsam, da die Ausgaben eigentlich direkt hintereinander ausgeführt werden...


          Serial.print(f->id_name); Serial.print(" erkannt !"); match = match + 1; Serial.print(" Treffer: "); Serial.println(match);
          String idname = String(f->id_name) + " erkannt !";
          const char* Idname = idname.c_str();
          client.publish(FACE, Idname); dtostrf(match , 3, 0, msg); client.publish(BEATS, msg);


Aber das dürfte bei Robin wohl eher das kleinere Problem darstellen. Er bekommt ja, durch den fehlenden "http_start" schon mal gar keinen Video-Stream
im Web-Interface und kann somit keine Gesichter speichern. Der serielle Monitor dient ja in erster Linie nur zur Kontrolle ob auch alles ausgeführt wird, wie´s gedacht ist.

@Robin: bekommst du überhaupt eine IP-Ausgabe ?

Es läuft, es läuft. Woran es gelegen hat, ich weiß es nicht.

Ich habe mehrfach ein Erase gemacht am MikroController. Mir ist aber aufgefallen, dass durch meine 100 Traces keine Änderungen vorgenommen wurden, bzw. am seriell-monitor war nichts sichtbar, obwohl einwandfrei geflashed wurde.
Ich habe danach meinen Mac neu gestartet, danach waren die Traces sichtbar. Anschließend funktionierte die Software einwandfrei.

Was sind die weiteren Schritte in deiner Software?

  • kann man den hardware jumper durch einen mqtt publish ersetzen?
    Kann man den wlan passwort-eingabe und mqtt-broker-ip durch web-manager ersetzen?
    kann man noch ein flag mqtt-topic zur Filterung face detection machen?

Grund: Ich habe die Cam in einem schnuckeligen Gehäuse untergebracht und möchte nicht dauernd dran.
https://www.thingiverse.com/RobinsBlog_de/collections/todo43dprint

Ich möchte in meinem Blog über diese Kamera schreiben. Besteht die Möglichkeit deinen code beziehungsweise den Link zum Forum zu übernehmen? Deinen code werde ich nicht veröffentlichen.


Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Papa Romeo

Hallo Robin,

freut mich das es geht. Wie sieht es bei dir mit den gelegentlich vorkommenden "sporadischen Neustart´s" aus. Hast du diese "Aussetzer" auch schon festgestellt? Bisher ist anscheinend noch keiner fündig geworden, zumindest mir nicht bekannt, warum das Modul so reagiert.

Gegen den Link zu diesem Beitrag im Forum in deinem Blog hab ich nichts.

Den Jumper auf einen "Softwareschalter" zu legen und über MQTT zu bedienen, dürfte kein Problem darstellen.
Ein FET oder Transistor an GPIO12 gegen Masse und diesen dann über GPIO2 (soviel ich weiß ist dieser noch frei) steuern
bzw. gleich über MQTT der Variablen "browser_out_enable" den entsprechenden Wert (0 oder 1) zuweisen oder übergeben.

Eingabe des Wlan-Passwort´s und der SSID über die WEB-Oberfläche geht bestimmt auch, müsste halt jemand dort implementieren. Ich bin da noch nicht so weit.
Was du mit dem Flag vor hast, ist mir auf Anhieb nicht ganz klar.

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

fh168

Zitat von: Papa Romeo am 23 Februar 2020, 10:46:40
Hallo Robin,

freut mich das es geht. Wie sieht es bei dir mit den gelegentlich vorkommenden "sporadischen Neustart´s" aus. Hast du diese "Aussetzer" auch schon festgestellt? Bisher ist anscheinend noch keiner fündig geworden, zumindest mir nicht bekannt, warum das Modul so reagiert.

Gegen den Link zu diesem Beitrag im Forum in deinem Blog hab ich nichts.

Den Jumper auf einen "Softwareschalter" zu legen und über MQTT zu bedienen, dürfte kein Problem darstellen.
Ein FET oder Transistor an GPIO12 gegen Masse und diesen dann über GPIO2 (soviel ich weiß ist dieser noch frei) steuern
bzw. gleich über MQTT der Variablen "browser_out_enable" den entsprechenden Wert (0 oder 1) zuweisen oder übergeben.

Eingabe des Wlan-Passwort´s und der SSID über die WEB-Oberfläche geht bestimmt auch, müsste halt jemand dort implementieren. Ich bin da noch nicht so weit.
Was du mit dem Flag vor hast, ist mir auf Anhieb nicht ganz klar.

LG

Papa Romeo

Nein, Neustarts sind mir noch nicht aufgefallen, ich teste auch nur gerade im Modus wie im Foto dargestellt. Ich nutze gute 5V von USB Power Supply.

Softwareschalter wäre prio 1, damit ich nicht immer das Gehäuse aufmachen muss.

Face detection: Wenn jemand vorm Monitor sitzt, soll er einschalten, wenn gesicht weg, dann geht er aus.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Papa Romeo

Zitat von: fh168 am 23 Februar 2020, 11:19:55
Nein, Neustarts sind mir noch nicht aufgefallen, ich teste auch nur gerade im Modus wie im Foto dargestellt. Ich nutze gute 5V von USB Power Supply.

Das hab ich natürlich jetzt noch nicht versucht. Ich hab das Teil bisher nur über den FTDI-Adapter betrieben, da ich es nur so als "Wochenendinteressenbastelprojekt" betrieben habe.

Zitat
Face detection: Wenn jemand vorm Monitor sitzt, soll er einschalten, wenn gesicht weg, dann geht er aus.

Dürfte auch kein Problem darstellen. Die Treffer aus dem Sketch als Schaltsignal (mit nachgeschalteter Retriggerfunktion und Ausschaltverzögerungszeit) zu verwenden. Über MQTT oder direkt über ein Relais, sofern sich noch ein freier GPIO, ausser GPIO2, finden lässt.
...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

fh168

Warum Relais? DOIF, Tasmota Gosund SP 111 und gut is.
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Papa Romeo

..klar geht auch. Waren nur weitere Optionen. Ich bin halt für´n direkten Weg. Gehört und weitergeben führt manchmal nicht immer zwingend zum Ziel... ??? ;D
...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

fh168

snip
Softwareschalter wäre prio 1, damit ich nicht immer das Gehäuse aufmachen muss.

Face detection: Wenn jemand vorm Monitor sitzt, soll er einschalten, wenn gesicht weg, dann geht er aus.

hey paparomeo,

programmierst Du es um oder soll ich mich dran setzen?
softwareschalter per mqtt wäre gut, über publish.


liebe Grüsse
robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-