Vogelalbum 1.0.0
Eine Kamera am Vogelhaus, ein Rechner der erkennt wer da war — und eine Sammlung, die sich von allein fuellt. Zwei neuronale Netze: eines findet den Vogel im Bild, eines bestimmt die Art. 148 heimische Arten, auf Deutschland eingeschraenkt und neu normiert — ohne diese Einschraenkung wird aus einer Kohlmeise eine nordamerikanische Schwesterart. Daraus entsteht ein Sammelalbum: nummerierte Seiten, gefundene Arten in Farbe, fehlende als Schatten, dazu Erstfang, Punkte, Stufen und 15 Abzeichen. Laeuft vollstaendig auf eigener Hardware. Kein Cloud-Dienst, kein Konto, keine Telemetrie; die Bilder verlassen das eigene Netz nicht. Zwei getrennt deploybare Teile: die Sammlung als Django-Anwendung, die Erkennung als eigener Dienst. Der Erkennungs-Dienst fragt selbst an und braucht deshalb weder eine erreichbare Adresse noch einen offenen Port — er laeuft hinter einem gewoehnlichen Router. Dabei: Firmware fuer Raspberry Pi und ESP32-S3, Anbindung an Home Assistant ueber MQTT, Oberflaeche auf Deutsch und Englisch, Einstellungen je Kamera aus dem Browser, und ein Weg fuer Fotos von unterwegs. AGPL-3.0.
This commit is contained in:
commit
cc9e0786c2
189 files changed
+29792
No files matched your search
@@ -0,0 +1,124 @@
|
||||
menu "Vogelkamera"
|
||||
|
||||
# ⚠ Hier standen bis zum 23.09.2026 WLAN-Name und Passwort. Sie sind
|
||||
# bewusst entfernt: Zugangsdaten, die beim Bauen eingebacken werden,
|
||||
# zwingen jeden Nutzer dazu, die Firmware selbst zu uebersetzen. Fuer
|
||||
# ein veroeffentlichtes Repo ist das untauglich.
|
||||
#
|
||||
# Stattdessen: Das Geraet macht beim ersten Start ein eigenes WLAN auf
|
||||
# und fragt im Browser danach. Siehe netz.c, uebernommen aus Hey Fred.
|
||||
|
||||
config VK_PORT
|
||||
int "HTTP-Port"
|
||||
default 8080
|
||||
help
|
||||
Gleicher Port wie am Pi. Der Detector erwartet
|
||||
http://<kamera>:8080/stream.
|
||||
|
||||
choice VK_BOARD
|
||||
prompt "Pinbelegung der Kamera"
|
||||
default VK_BOARD_S3_WROOM
|
||||
help
|
||||
Die Pins haengen am Board, nicht am Sensor. Stimmt die Belegung
|
||||
nicht, scheitert esp_camera_init mit 0x105 (ESP_ERR_NOT_FOUND) —
|
||||
dann ist es die falsche Wahl hier, nicht die Kamera.
|
||||
|
||||
config VK_BOARD_S3_WROOM
|
||||
bool "ESP32-S3-WROOM CAM (Freenove, Heemol und Klone)"
|
||||
|
||||
config VK_BOARD_XIAO_S3
|
||||
bool "Seeed XIAO ESP32S3 Sense"
|
||||
|
||||
config VK_BOARD_AI_THINKER
|
||||
bool "AI-Thinker ESP32-CAM (klassisch, ESP32 statt S3)"
|
||||
endchoice
|
||||
|
||||
config VK_FRAMESIZE
|
||||
int "Bildgroesse"
|
||||
default 13
|
||||
range 0 21
|
||||
help
|
||||
⚠ Die Zahlen sind Positionen in framesize_t aus dem
|
||||
Kameratreiber -- und die haben sich schon einmal verschoben.
|
||||
Am 23.09.2026 stand hier "9 = XGA 1024x768"; tatsaechlich war
|
||||
9 laengst HVGA 480x320. Die Kamera lief daraufhin monatelang
|
||||
auf einem Sechstel der Flaeche, ohne dass etwas gemeldet haette.
|
||||
|
||||
Nach einem Treiber-Update deshalb gegen sensor.h pruefen:
|
||||
managed_components/espressif__esp32-camera/driver/include/sensor.h
|
||||
|
||||
Stand des Treibers vom 23.09.2026:
|
||||
11 = SVGA 800x600
|
||||
12 = XGA 1024x768
|
||||
13 = HD 1280x720 (Vorgabe, wie der Pi am Futterhaus)
|
||||
14 = SXGA 1280x1024
|
||||
15 = UXGA 1600x1200
|
||||
|
||||
Mehr ist nicht besser: ueber WLAN ist die Bildrate
|
||||
bandbreitenbegrenzt, nicht rechenbegrenzt. Aber zu klein
|
||||
findet keine Voegel -- unter 5-8 % Bildflaeche erkennt das
|
||||
Modell sie nicht mehr.
|
||||
|
||||
config VK_JPEG_QUALITAET
|
||||
int "JPEG-Qualitaet (10 = gut, 63 = grob)"
|
||||
default 12
|
||||
range 4 63
|
||||
help
|
||||
Kleinere Zahl heisst besseres Bild und groessere Dateien. Bei
|
||||
knapper Funkstrecke bringt eine hoehere Zahl mehr Bilder pro
|
||||
Sekunde — und mehr Bilder finden mehr Voegel als schoenere.
|
||||
|
||||
config VK_HFLIP
|
||||
bool "Bild horizontal spiegeln"
|
||||
default n
|
||||
|
||||
config VK_VFLIP
|
||||
bool "Bild vertikal spiegeln (Kamera haengt ueber Kopf)"
|
||||
default n
|
||||
|
||||
config VK_MAX_FPS
|
||||
int "Bilder je Sekunde hoechstens senden (0 = ohne Bremse)"
|
||||
range 0 30
|
||||
default 5
|
||||
help
|
||||
Ohne Bremse sendet die Kamera so schnell die Funkstrecke
|
||||
hergibt -- gemessen 16 Bilder/s. Das heizt den Chip und
|
||||
saettigt bei schwachem Empfang die Strecke.
|
||||
|
||||
Gebraucht wird es nicht: Ein Vogelbesuch dauert Sekunden bis
|
||||
Minuten, und der Detector bestimmt nur jedes sechste Bild.
|
||||
Fuenf sind reichlich.
|
||||
|
||||
Gemessen am 25.09.2026 an der Traenke, in der Sonne:
|
||||
17 B/s -> Plateau 78,8 °C, Empfang -69 dBm
|
||||
5 B/s -> Plateau 76,7 °C, Empfang -57 dBm
|
||||
Zwei Grad kuehler, und zwoelf dB mehr Reserve auf der
|
||||
Funkstrecke. Letzteres war nicht beabsichtigt und ist der
|
||||
groessere Gewinn.
|
||||
|
||||
config VK_SAETTIGUNG
|
||||
int "Farbsaettigung (-2 bis 2)"
|
||||
range -2 2
|
||||
default 2
|
||||
help
|
||||
Der Sensor liefert von Haus aus ein flaues Bild. Neben der
|
||||
Pi-Kamera am Futterhaus faellt das sofort auf. Farbe ist hier
|
||||
nicht nur Geschmack: Die Arterkennung arbeitet damit.
|
||||
|
||||
config VK_KONTRAST
|
||||
int "Kontrast (-2 bis 2)"
|
||||
range -2 2
|
||||
default 1
|
||||
help
|
||||
Nicht ans Maximum. Zu viel Kontrast frisst die Zeichnung im
|
||||
dunklen Gefieder — und genau die braucht der Erkenner.
|
||||
|
||||
config VK_HELLIGKEIT
|
||||
int "Helligkeit (-2 bis 2)"
|
||||
range -2 2
|
||||
default 0
|
||||
help
|
||||
Nur anfassen, wenn das Bild durchweg zu dunkel oder zu hell
|
||||
ist. Gegen Gegenlicht hilft eher das Ausrichten.
|
||||
|
||||
endmenu
|
||||
Reference in new issue
Block a user