NEWS
Wasserzähler - Version 2 - all-in-device
Wasserzähler - Version 2 - all-in-device
-
@jomjol an dem stl hätte ich ja auch interesse

was mir noch einfällt .. wird es mit der spiegelung evtl besser wenn man nicht 45 grad macht sonder leicht schräg guckt?
oder mag das das netz dann eher nicht?@d0m1n1qu3 Schräck nutzt auch nichts, solange die LED nahe an der Bildachse liegt. Ich arbeite gerade an einem Upgrade, mit welchem man dann externe LEDs ansteuern kann. Die kannst du dann beliebig anbringen.
-
@d0m1n1qu3 Schräck nutzt auch nichts, solange die LED nahe an der Bildachse liegt. Ich arbeite gerade an einem Upgrade, mit welchem man dann externe LEDs ansteuern kann. Die kannst du dann beliebig anbringen.
@jomjol bei meinem stromzähler erkennt es die zahlen nicht immer richtig warum kann das sein.Gaszähler und wasserzähler läuft besser.

[MakeImage]
LogImageLocation = /log/source
WaitBeforeTakingPicture = 5
LogfileRetentionInDays = 7
Brightness = 1
;Contrast = 0
;Saturation = 0
ImageQuality = 5
ImageSize = VGA
FixedExposure = true[Alignment]
InitialRotate = 180
InitialMirror = false
SearchFieldX = 20
SearchFieldY = 20
AlignmentAlgo = default
FlipImageSize = false
/config/ref0.jpg 279 232
/config/ref1.jpg 196 25[Digits]
Model = /config/dig1210s2q.tflite
;LogImageLocation = /log/digit
;LogfileRetentionInDays = 3
ModelInputSize = 20 32
;ExtendedResolution =
main.dig1 143 285 36 65
main.dig2 188 285 36 65
main.dig3 233 280 36 65
main.dig4 273 280 40 72
main.dig5 315 277 41 74
main.dig6 359 275 45 81;[Analog]
Model = /config/ana0700s1lq.tflite
;LogImageLocation = /log/analog
;LogfileRetentionInDays = 3
ModelInputSize = 32 32
ExtendedResolution = true[PostProcessing]
main.DecimalShift = 0
PreValueUse = true
PreValueAgeStartup = 720
AllowNegativeRates = false
main.MaxRateValue = 5
ErrorMessage = true
CheckDigitIncreaseConsistency = true
;IgnoreLeadingNaN =[MQTT]
Uri = mqtt://192.168.10.100:1689
MainTopic = stromzaehler
ClientID = strom
user = xxxxxx
password = xxxxxx
;[GPIO]
;IO0 = input disabled 10 false false
;IO1 = input disabled 10 false false
;IO3 = input disabled 10 false false
;IO4 = built-in-led disabled 10 false false
;IO12 = input-pullup disabled 10 false false
;IO13 = input-pullup disabled 10 false false[AutoTimer]
AutoStart = true
Intervall = 4.85[Debug]
Logfile = false
LogfileRetentionInDays = 3[System]
TimeZone = CET-1CEST,M3.5.0,M10.5.0/3
;TimeServer = undefined
;AutoAdjustSummertime = false
;Hostname = undefined
;SetupMode = false -
@jomjol bei meinem stromzähler erkennt es die zahlen nicht immer richtig warum kann das sein.Gaszähler und wasserzähler läuft besser.

[MakeImage]
LogImageLocation = /log/source
WaitBeforeTakingPicture = 5
LogfileRetentionInDays = 7
Brightness = 1
;Contrast = 0
;Saturation = 0
ImageQuality = 5
ImageSize = VGA
FixedExposure = true[Alignment]
InitialRotate = 180
InitialMirror = false
SearchFieldX = 20
SearchFieldY = 20
AlignmentAlgo = default
FlipImageSize = false
/config/ref0.jpg 279 232
/config/ref1.jpg 196 25[Digits]
Model = /config/dig1210s2q.tflite
;LogImageLocation = /log/digit
;LogfileRetentionInDays = 3
ModelInputSize = 20 32
;ExtendedResolution =
main.dig1 143 285 36 65
main.dig2 188 285 36 65
main.dig3 233 280 36 65
main.dig4 273 280 40 72
main.dig5 315 277 41 74
main.dig6 359 275 45 81;[Analog]
Model = /config/ana0700s1lq.tflite
;LogImageLocation = /log/analog
;LogfileRetentionInDays = 3
ModelInputSize = 32 32
ExtendedResolution = true[PostProcessing]
main.DecimalShift = 0
PreValueUse = true
PreValueAgeStartup = 720
AllowNegativeRates = false
main.MaxRateValue = 5
ErrorMessage = true
CheckDigitIncreaseConsistency = true
;IgnoreLeadingNaN =[MQTT]
Uri = mqtt://192.168.10.100:1689
MainTopic = stromzaehler
ClientID = strom
user = xxxxxx
password = xxxxxx
;[GPIO]
;IO0 = input disabled 10 false false
;IO1 = input disabled 10 false false
;IO3 = input disabled 10 false false
;IO4 = built-in-led disabled 10 false false
;IO12 = input-pullup disabled 10 false false
;IO13 = input-pullup disabled 10 false false[AutoTimer]
AutoStart = true
Intervall = 4.85[Debug]
Logfile = false
LogfileRetentionInDays = 3[System]
TimeZone = CET-1CEST,M3.5.0,M10.5.0/3
;TimeServer = undefined
;AutoAdjustSummertime = false
;Hostname = undefined
;SetupMode = false- Deine ROIs sind insbesondere bei den letzten Ziffern viel zu groß. Als Orientierung gibt es 2 Rechtecke. Das innere soll genau um die Ziffern gehen, dann ist der Rand okay.
- Der Kontrast ist relativ schwach, dass könnte auch zu Problemem führen --> mal an der Beleuchtung noch etwas optimieren.
-
- Deine ROIs sind insbesondere bei den letzten Ziffern viel zu groß. Als Orientierung gibt es 2 Rechtecke. Das innere soll genau um die Ziffern gehen, dann ist der Rand okay.
- Der Kontrast ist relativ schwach, dass könnte auch zu Problemem führen --> mal an der Beleuchtung noch etwas optimieren.
Flasht hier jemand über Windows via flash download tool?
Habe es in der Version 3.8.8 (ältere finde ich leider nicht zum Testen) und bekomme folgende Fehlermeldungen:File "path_panel.py", line 926, in OnButton_BinPath1Button File "path_panel_method.py", line 64, in set_file_path UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 10-11: illegal multibyte sequenceSchon beim Auswählen der Flashdateien via dem "..." Button - aber auch wenn ich den Pfad manuell angebe, kommt dieser Fehler beim Flashen.
Flashversuch via Ardiuno Uno und auch mit USB FTDI Adapter.Kennt jemand das Problem und hat evtl Abhilfe?
Danke im Voraus!
-
Flasht hier jemand über Windows via flash download tool?
Habe es in der Version 3.8.8 (ältere finde ich leider nicht zum Testen) und bekomme folgende Fehlermeldungen:File "path_panel.py", line 926, in OnButton_BinPath1Button File "path_panel_method.py", line 64, in set_file_path UnicodeDecodeError: 'gb2312' codec can't decode bytes in position 10-11: illegal multibyte sequenceSchon beim Auswählen der Flashdateien via dem "..." Button - aber auch wenn ich den Pfad manuell angebe, kommt dieser Fehler beim Flashen.
Flashversuch via Ardiuno Uno und auch mit USB FTDI Adapter.Kennt jemand das Problem und hat evtl Abhilfe?
Danke im Voraus!
-
Hallo Jomjol
Meine etwas spezielle Nummer 3 von meinem Wasserzähler scheint jetzt doch nicht so beliebt zu sein

In 90% der Fälle erkennt er eine 5. Könntest du diese Bilder in die nächste Runde mit aufnehmen? Habe schwarze und rote Ziffern:Besten Dank!
Michael -
Hallo Jomjol
Meine etwas spezielle Nummer 3 von meinem Wasserzähler scheint jetzt doch nicht so beliebt zu sein

In 90% der Fälle erkennt er eine 5. Könntest du diese Bilder in die nächste Runde mit aufnehmen? Habe schwarze und rote Ziffern:Besten Dank!
Michael@michaeljoos Mache ich!
-
- Deine ROIs sind insbesondere bei den letzten Ziffern viel zu groß. Als Orientierung gibt es 2 Rechtecke. Das innere soll genau um die Ziffern gehen, dann ist der Rand okay.
- Der Kontrast ist relativ schwach, dass könnte auch zu Problemem führen --> mal an der Beleuchtung noch etwas optimieren.
-
@jomjol
Hallo,
Ich habe 4 esp am laufen allen laufen super , habe mir gedacht bestell dir noch 3 aus China sind auch angekommen .Mein Problem Flaschen alles klappt wunderbar aber es möchte einfach nicht Booten habe ich evtl. Falsch bestellt??

-
@exitus Du musst die serielle Schnittstelle (COMx) während des Bootvorgangs mitlesen (z.B. mit Putty, Arduino oder irgendeinem anderen Schnittstellenprogramm).
@jomjol hier von arduino ist in einer schleife
Re-enable cpu cache. Rebooting... ets Jun 8 2016 00:22:57 rst:0xc (SW_CPU_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:DIO, clock div:2 load:0x3fff0030,len:4 load:0x3fff0034,len:7248 ho 0 tail 12 room 4 load:0x40078000,len:13856 load:0x40080400,len:4052 entry 0x40080688 [0;32mI (30) boot: ESP-IDF 3.40100.200827 2nd stage bootloader[0m [0;32mI (31) boot: compile time 18:56:57[0m [0;32mI (31) boot: chip revision: 1[0m [0;32mI (34) boot_comm: chip revision: 1, min. bootloader chip revision: 0[0m [0;32mI (41) boot.esp32: SPI Speed : 40MHz[0m [0;32mI (46) boot.esp32: SPI Mode : DIO[0m [0;32mI (51) boot.esp32: SPI Flash Size : 4MB[0m [0;32mI (55) boot: Enabling RNG early entropy source...[0m [0;32mI (61) boot: Partition Table:[0m [0;32mI (64) boot: ## Label Usage Type ST Offset Length[0m [0;32mI (71) boot: 0 nvs WiFi data 01 02 00009000 00004000[0m [0;32mI (79) boot: 1 otadata OTA data 01 00 0000d000 00002000[0m [0;32mI (86) boot: 2 phy_init RF data 01 01 0000f000 00001000[0m [0;32mI (94) boot: 3 ota_0 OTA app 00 10 00010000 001db000[0m [0;32mI (101) boot: 4 ota_1 OTA app 00 11 001f0000 001db000[0m [0;32mI (109) boot: End of partition table[0m [0;32mI (113) boot_comm: chip revision: 1, min. application chip revision: 0[0m [0;32mI (120) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x51048 (331848) map[0m [0;32mI (273) esp_image: segment 1: paddr=0x00061070 vaddr=0x3ffb0000 size=0x0504c ( 20556) load[0m [0;32mI (283) esp_image: segment 2: paddr=0x000660c4 vaddr=0x40080000 size=0x00404 ( 1028) load[0m [0;32mI (284) esp_image: segment 3: paddr=0x000664d0 vaddr=0x40080404 size=0x09b48 ( 39752) load[0m [0;32mI (310) esp_image: segment 4: paddr=0x00070020 vaddr=0x400d0020 size=0x122ec8 (1191624) map[0m [0;32mI (826) esp_image: segment 5: paddr=0x00192ef0 vaddr=0x40089f4c size=0x12c68 ( 76904) load[0m [0;32mI (880) boot: Loaded app from partition at offset 0x10000[0m [0;32mI (880) boot: Disabling RNG early entropy source...[0m [0;32mI (881) psram: This chip is ESP32-D0WD[0m [0;31mE (885) cpu_start: Failed to init external RAM

Hier ein Eindruck der graphischen Benutzeroberfläche:

Die Hardware ist wieder auf Thingiverse veröffentlicht, die Software könnt ihr als Firmware oder zum selber kompilieren auf GitHub finden. Dort gibt es auch ein Wiki mit Installations- und Konfigurationsanleitung.
-
Software/Wiki: https://github.com/jomjol/AI-on-the-edge-device/wiki
Ich stehe hier gerne wieder für Feedback, Fragen oder einfach zur Hilfe zur Verfügung und freue mich, wenn dieser Thread genauso intensiv genutzt wird, wie bei der Version 1 (>1k Beiträge und >22k Aufrufe).
Beste Grüße und viel Spass beim Nachbauen,
Jomjol
P.S.: die neue Software ist sehr flexibel aufgebaut und kann grundsätzlich auch Bildererkennung / Neuronale Netze für andere Zwecke eingesetzt werden. Wer eine gute Idee oder Anregung hat oder bei eine Modifikation Unterstützung braucht - bitte auch gerne einfach hier posten.
bisher hatte ich hier nur sporadisch mitgelesen weil es mir an Phantasie fehlte das Ganze ohne 3D Drucker zu realisieren.
Irgendwo oben hat mich das Bild einer Blechdose auf dem Wasserzähler aufgeweckt.
Der Versuchsaufbau mit einer Lolli - Kunstoffdose klappte auf anhieb, hatte echt Spaß gemacht. Vielen Dank auch von mir für das erstklassige Projekt.

Aber - gut es wurde vor einigen Wochen angekündigt - gestern Nachmittag klingelte der Monteur des Wasseranbieters und baute uns einen neuen Zähler ein. Und damit will es nicht mehr so einfach,

Da die letzte Ziffer meist gekippt ist und zudem noch mittig einen Strich haben werde ich erstmal mit 1-2 Nachkommastellen weitermachen.
Meine Frage wäre aber, weshalb die 4 hier als 5 erkannt wird. Kann ich hier noch etwas optimieren?
-
bisher hatte ich hier nur sporadisch mitgelesen weil es mir an Phantasie fehlte das Ganze ohne 3D Drucker zu realisieren.
Irgendwo oben hat mich das Bild einer Blechdose auf dem Wasserzähler aufgeweckt.
Der Versuchsaufbau mit einer Lolli - Kunstoffdose klappte auf anhieb, hatte echt Spaß gemacht. Vielen Dank auch von mir für das erstklassige Projekt.

Aber - gut es wurde vor einigen Wochen angekündigt - gestern Nachmittag klingelte der Monteur des Wasseranbieters und baute uns einen neuen Zähler ein. Und damit will es nicht mehr so einfach,

Da die letzte Ziffer meist gekippt ist und zudem noch mittig einen Strich haben werde ich erstmal mit 1-2 Nachkommastellen weitermachen.
Meine Frage wäre aber, weshalb die 4 hier als 5 erkannt wird. Kann ich hier noch etwas optimieren?
@senior1418 Klick mal obern auf "Recognition", dann siehst du was wirklich erkannt wurde. Ansonsten könnte es auch sein, dass da im Training noch etwas nicht ganz passt. Du kannst mir Trainingsdaten erzeugen (mit den Logfiles) und je Ziffer 2-3 Beispiele schicken (nicht mehr!
) Dann nehme ich die ins nächste Training. -
@exitus Laut dem Link hat es alles, was du brauchst. Du kannst mal versuchen, ein anderes Programm zu flashen, erstmal ohne und dann mit PSRAM.
-
@senior1418 Klick mal obern auf "Recognition", dann siehst du was wirklich erkannt wurde. Ansonsten könnte es auch sein, dass da im Training noch etwas nicht ganz passt. Du kannst mir Trainingsdaten erzeugen (mit den Logfiles) und je Ziffer 2-3 Beispiele schicken (nicht mehr!
) Dann nehme ich die ins nächste Training.@jomjol
hi, danke für die Antwort. Mache ich gern. Recognition erzeugt:
Trainigsdaten erzeugen mit :

so richtig?
-
@jomjol
hi, danke für die Antwort. Mache ich gern. Recognition erzeugt:
Trainigsdaten erzeugen mit :

so richtig?
@senior1418 ja und wenn du von jeder ziffer 2-3 bilder hast einfach schicken.