Digiskop mit Raspi, RaspiCam und Display

  • Besteht Interesse sich ein Digiskop mit Raspi und Kleinteilchen zu bauen? Sonst spar ich mir die Zeit.


    Grund:
    Nicht jeder Stand hat schon hochmoderne elektronische Scheibenanlagen mit und oder Scheibenbeobachtungskameras und auf manchen Ständen, Outdoor z.B., ist es auch nicht so einfach möglich. Spektiv ist schon was feines aber jedes mal beim durchs Spektiv schauen wird auch die Schusshaltung aufgebrochen und man muss sich an andere Lichtverhältnisse anpassen.
    Ich jedenfalls nutze es gerne beim Kurz- und Langwaffe schiessen selbst bei 10m zu Hause.


    Kosten:
    1* RaspberryPi (ein oller 1er genügt so lange er einen Anschluss für die RaspiCam hat, ein Zero geht aber zur Not auch)
    1* Raspicam, egal welche so lange sie funktioniert
    1* uSD Karte für das Betriebssystem so ab 2GB. Nehmen würde aber eher eine etwas neuere, grössere und schnellere...
    1* USB-Keyboard, wer möchte kann natürlich auch drahtlos arbeiten
    1* Spektiv, es sollte schon ein gut durchkorrigiertes Spektiv mit guter Linienauflösung sein das ruhig etwas lichtstärker sein sollte und die passende Vergrösserung anbietet
    diverse Kabel, Netzteil, alter LCD-Monitor...


    Also alles über alles zwischen 70€ bis nach oben offen.


    Zeitaufwand:
    der grösste Zeitfaktor ist die Anpassung der RaspiCam an das Spektiv. Da braucht man Geduld, Einfühlungsvermögen, Vorstellungskraft, Durchsetzungsvermögen, sagte ich schon Ausdauer?
    Den Raspi herrichten schafft man so in etwa 15-20 Minuten. Wenn man weiss wie es geht.


    Warum so und nicht anders:
    Weil mir die Handymontagen am Spektiv zu wackelig sind und ich bis jetzt noch keine Lösung gefunden habe die das Bild in derart hoher Auflösung mit einer derartig geringen Latenz auf den Bildschirm zaubert und dabei alle Parameter, zumindest die notwendigen wie Zoom, Shift, Helligkeit, Kontrast, Schärfe einfach einzustellen lässt.
    Ja, ich weiss, USB-WebCam an PC, Laptop, Tablet... anschliessen. USB ist leider ein sehr bandbreitenlimitiertes Medium was bedeutet das man sich zwischen Auflösung oder Bildwiederholrate entscheiden muss. Von der Latenz mal zu schweigen. Dann könnte man sicher auf eine WebCam mit USB3.0 umsteigen. Das löst das Bandbreitenproblem aber auch den Geldbeutel auf. Eine Cam mit h264 oder h265 wäre/ist super doch leider verliert man durch das für die Kompression gewählte Profil Details. Darf jeder selber ausprobieren.
    Dann gibt es noch den usability Faktor. Das Teil muss hingestellt, angeschaltet und fertig sein. Ich will da nicht erst eine PC Reparaturwerkstatt mit dutzend Geräten aufbauen müssen. Zu Hause den Akku laden und gut.

  • Die Idee ist ja nicht ganz neu, Comerzgandalf hat das auf WO
    schon praktiziert und eine komplette Anleitung incl. der Software
    zusammengestellt.
    Der Haken ist halt immer noch die Anzeigesoftware. Wenn es gelänge
    den Raspi dazu zu bringen eine Bullseys Camera zu simulieren
    könnte man diese Software verwenden - das wäre TOP!

    Weise einen intelligenten Menschen auf einen Fehler hin und er wird sich bedanken.
    Zeige einem dummen Menschen einen Fehler und er wird dich beleidigen.

  • Bullseye ist noch mal was anderes. Das zu "emulieren" ist "eigentlich" ziemlich simpel. Nimm OpenCV, vergleiche aufeinanderfolgende Pictureframes, wenn die Differenz grösser ist als ein vordefinierter Schwellwert und nicht wieder verschwindet, durchfliegende Fliege und so, hast du ein neues Einschussloch, stell das Zentrum der Änderung fest, lege einen farbigen Kreis um das Zentrum der Änderung, fertig.
    Ist aber nicht Teil des Digiskopaufbaues. Da haste eher so Probleme das sich Leute an den Tisch lehnen auf dem das Stativ steht und alles verschiebt sich und so. Aber auch dafür würde es Lösungen geben.
    Hier geht es nur und ausschliesslich nur um den Komfortgewinn den man erreicht wenn man nicht mit einem Auge durchs Spektiv blinzeln muss und andere Personen können gleichzeitig gucken und so.
    Aber wie gesagt, dann lass ich es.

  • ...und davon mal ganz abgesehen wäre es schon schön wenn wenigstens nicht immer Äpfel mit Birnen verglichen werden würden.
    Die Lösung von Commerzgandalf ist nett wenn ich auch eher EZ-Wifibroadcast bevorzugen würde.
    Falls jemand Gandalfs Lösung nachbauen möchte, ich würde an die Kamera ein langbrennweitigeres Objektiv schrauben. So ca. 25-50mm und dann die Cam weiter weg von der Scheibe. Das reduziert die Verzeichnung ganz gewaltig. Die Antennen so hoch wie möglich. Möglichst aus der Fresnelzone raus. Wenn es irgendwie geht lieber ein Netzwerkkabel ziehen. Das erspart vor allem Frust wenn mehrere Cams gleichzeitig betrieben werden sollen.

  • Nun ist ja ein bisschen Zeit vergangen und ich musste einiges umbauen weil natürlich während der Nutzung sich neue Erkenntnisse ergaben. Logisch, immer wenn man denkt man ist fertig kommt das Leben und haut einem sowas von in die ... Ausserdem bin ich eher Perfektionist.


    Also, Raspicam ist gut aber nicht gut genug. Man braucht eine alternative Raspicam mit M12 Objektivanschluss denn man will ja mit der Cam in etwa das sehen was man auch sehen würde wenn man mit eigenen Augen durch das Spektiv sieht. Okularprojektion ist nett wenn man heftig mit Croppingfaktor und Abbildungsproblemen kämpfen möchte. Wollen wir nicht. Wir wollen in etwa das Sehen des menschlichen Auges nachbilden.
    An meinem Spektiv hat sich eine alternative Raspicam mit M12 Objektivanschluss und 8mm Objektiv als guter Kompromiss herausgestellt. Damit kann ich in der kleinsten Vergrösserung des Spektives die Kurzwaffenscheibe auf 25m komplett sehen und in der grössten Vergrösserung kann ich die Langwaffenscheibe auf 50m komplett abbilden und das mit durchaus akzeptabler Abbildungsleistung.


    Ja, ich schiesse so schlecht.


    Das ist mit der KK Kurzwaffe auf 50m auf die Langwaffenscheibe. Egal...
    Wichtig war mir der Komfort. WIe schon geschrieben, hinstellen, anstellen, justieren, fertig. Helligkeit, Kontrast, Exposurekompensation, Zoom und Shift können über ein kabelloses und/oder kabelgebundenes Numpad während des Betriebes angepasst werden. Ich kann Aufnahmen, Bilder, machen und ich kann das Bild flippen. Gut letzteres braucht man nicht so oft aber gut wenn man es hat.
    Das Programm hat inzwischen ein paar Nettigkeiten erhalten weil ich öfter über Unzulänglichkeiten von Hardware und oder Software gestolpert bin wie z.B. eine Abfrage nach der nativen Auflösung des Monitores weil es öfter dazu gekommen ist das gar nichts angezeigt wurde, ausserhalb des Anzeigebereiches, oder in schlecht scalierter runtergerechneter Auflösung. Dann wird die Kamera immer in der höchsten Auflösung benutzt die meist wesentlich grösser als die native Displayauflösung ist. Das ist gut weil ich damit den VideoCore des Raspi zum skalieren benutzen kann und ich bekomme die Möglichkeit einen ... na sagen wir Softwarezoom zu benutzen bei dem ich das Abbildungsfenster durch die Gegend schieben kann. Anders ausgedrückt, ich kann mir Teile der Zielscheibe in höherer Auflösung ansehen und das über die gesamte Sensorfläche.
    Ein bisschen OSD hab ich auch gebastelt weil ich in der Anfangszeit immer vergessen hatte auf welchen Tasten Helligkeit und Kontrast uns so liegen :-)


    Gut, wer damit rumspielen will, ich hänge das Teil mal an.


    Als .zip tarpi994.zip
    Als .txt der wieder in .py umbenannt werden muss tarpi994.txt



    Es läuft derzeit auf Buster lite funktionierte aber auch auf Stretch lite. Als uSD Karte würde ich keine uSD unter 4GB nehmen weil man ja möglicherweise auch mal ein paar Bilder machen möchte und die sind gross. Ausserdem sind moderne uSD mit mindestens A1 zu empfehlen was so Bootgeschwindigkeit angeht. Als Raspi geht alles ab PiZero weil der Raspi praktisch nix macht als warten. Alle Funktionen werden im Wesentlichen im VideoCore ausgeführt.


    Noch so ein, zwei Sachen vergessen. Es gibt folgende Abhängigkeiten:
    python3-pip, picamera
    Also erst auf dem Raspi mit:

    Code
    sudo apt-get install python3-pip
    
    
    pip3 install picamera

    die Vorraussetzungen schaffen sonst läuft das Skript nicht.

  • Um mal zu zeigen welche Möglichkeiten der Digitalzoom bietet habe ich mal ein paar Aufnahmen mit dem Bruder des Programmes, mit "Mikrosko-Pi" gemacht.
    Benutzt habe ich eine 8M-Pixel Kamera mit 12mm Objektiv bei einem Arbeitsabstand von ca 21cm. Beleuchtung ist leider mies aber ausreichend. Die Bilder sind über den Video-Kanal der Raspi-Camera aufgenommen und somit immer exakt so groß wie das Darstellungsdevice es zulässt also 1280x1024. Ich habe lediglich die Farbtiefe reduziert und eine etwas höhere Kompression im JPG gewählt.










    Natürlich kann man auch Bilder in maximaler Auflösung über den Still-Picture-Kanal aufnehmen, macht aber für Zielscheibenbeobachtung so gar keinen Sinn. Schon einfach mal weil man ja dokumentieren möchte was man sieht und, nicht zu unterschätzen, die Größe des belegten Speichers auf der uSD Karte.

  • Heute beschäftigen wir uns damit ein laufendes System zu erzeugen.


    Als erstes eine aktuelle Version von Raspbian Buster lite von der offiziellen Homepage:


    Raspbian Buster Downloadpage


    und folgen der Anleitung von der offiziellen Anleitungsseite:


    Installation How to


    Wenn ihr mit Balena etcher arbeitet müsst ihr noch 2 Sachen machen:


    1. die uSD Karte kurz aus dem Reader entfernen und neu einlegen
    2. in der Boot-Partition folgende Änderungen durchführen:
    -wenn ihr nur über SSH auf den PI zugreifen wollt müsst ihr eine leere Datei "ssh" erzeugen
    -wenn ihr nur über WLan auf den PI zugreifen könnt müsst ihr eine Datei "wpa_supplicant.conf" mit folgendem Inhalt:


    Code
    country=DE
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    network={
           ssid="wlan-bezeichnung"
           psk="passwort"
           key_mgmt=WPA-PSK
    }

    in der Bootpartition erzeugen.
    Das funktioniert aber nur wenn der Editor in der Lage ist Zeilenenden Unixkonform zu erzeugen. Notepad++ wäre eine Möglichkeit. Direkt und Linux geht natürlich auch.
    Wer jetzt clever ist kopiert sich auch noch gleich das Tarpi-Skript in die Bootpartition weil dann muss man nicht erst noch mit SSH, SCP, WGET oder Ähnlichem herumbasteln.


    Jetzt könne wir mal riskieren den PI mit der erzeugten uSD Karte zu booten. Beim ersten BOOT sollte dias Filesystem automatisch expandiert werden und der PI nochmal booten.
    Jetzt kommt der spannende Teil. Wir operieren den Pi im laufenden System.


    Wie auch immer ihr auf den Pi zugreift, also direkt über Tastatur und Bildschirm oder per SSH, als erstes MUSS der Pi sicher gemacht werden. Dazu MUSS das Nutzerpasswort geändert werden und dazu ist es nötig sich mit dem Standardpasswort einzuloggen:

    Code
    User: pi
    Pass: raspberry

    Doch Obacht, die Tastatur ist eher nicht auf deutsch also müssen wir entsprechend der amerikanisch/englischen Belegung:

    Code
    Pass: raspberrz

    eingeben.
    Ist diese Hürde genommen werden wir ein Tool benutzen um in einer leidlich grafischen Umgebung wichtige Voreinstellungen zu treffen.
    Mit:

    Code
    sudo raspi-config

    gehen wir in das Konfigurationsprogramm und stellen als erstes die Tastatur auf deutsch um. Es sei denn ihr bevorzugt die englische Belegung. Ach ja, und wer das "-" Zeichen sucht, das ist auf der Fragezeichentaste. :-)


    Das sind die Menüpunkte die abzuarbeiten sind.
    Wichtig auch das die Kamera aktiviert wird sonst führt das zu merkwürdigen Fehlern die schwer zu lokalisieren sind.
    Nach dem Reboot und dem Enloggen mit dem neu vergebenen Passwort werden wir erst einmal das System Updaten.

    Code
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt-get autoremove
    sudo apt-get autoclean
    #und wieder ein Neustart:
    sudo reboot

    Und ja, das ist notwendig. Gerade bei Buster.
    Jetzt sind wir soweit uns an Tarpi heranzuwagen.


    Mit:

    Code
    sudo apt-get install python3-pip
    pip3 install picamera

    installieren wir die Abhängigkeiten ohne die Tarpi nicht funktionieren kann. Ausserdem installiere ich gerne den MidnightCommander der viele Dinge vereinfacht.

    Code
    sudo apt-get install mc

    Wenn ihr euch im Nutzerverzeichnis von pi befindet und ihr so clever wart das tarpi994.py Skript in der Bootpartition zu hinterlegen dann könnt ihr jetzt mit:

    Code
    cp /boot/tarpi994.py .

    das Skript ins Nutzerverzeichnis kopieren. Hier muss es noch ausführbar gemacht werden:

    Code
    chmod +x tarpi994.py

    Wer mutig ist kann es jetzt bereits testen:

    Code
    ./tarpi994.py

    Wenn es läuft, alles gut, wenn nicht, die Selbstzerstörung wurde eingeleitet...


    Eigentlich ist die Bedienung ziemlich einfach. Es gibt nur eine Bedingung. Wer es über den Zehnerblock der Tastatur bedienen möchte, dafür ist es konzipiert, der MUSS den Numlockmodus aktivieren sonst funktionieren einige Tasten im Zehnerblock nicht so wie sie sollen. die normalen Nummerntasten funktionieren immer.


    Zu Anfang bekommt man das Kamerabild und in der Mitte Oben wird für etwa 3 Sekunden die Programmversion und die Bildschitrmauflösung des angeschlossenen Bildschirms eingeblendet.
    Rudimentäre Hilfe gibt es wenn man die [Enter] Taste drückt. Drückt man sie noch mal ist der Bildschirm wieder sauber. Wenn kein OSD eingeblendet ist kann mit [+] bzw. [-] rein oder raus zoomen. Wenn man reingezoomt hat kann man den Bildschirmausschnitt mit den Tasten [8][4][6][2] durch die Gegend schieben. Die [5] stellt die ursprüngliche Auflösung wieder her. Die Tasten [/] ändern die Exposurecompensation. [1][7] sind für den kontrast sowie [3][9] für die Helligkeit verantwortlich. Mit der [0] werden die Anzeigeparameter gespeichert und mit der [,] Taste kann der Bildschirm geflippt werden. Letzteres ist wichtig wenn man die Kamera über Kopf montieren muss.
    Wenn man mit der [Enter] Taste das OSD aktiviert hat kann man mit [+][-] die Schriftgrösse des OSD an den Bildschirm anpassen. Mit der [5] wird ein Bild im Unterverzeichnis ~/pictures aufgenommen. Dabei werden die Bilder durchnummeriert und wenn eine Serie bereits existiert wird durch erhöhen um 100 eine neue Serie gestartet.
    Weiterhin kann man in diesem Mode durch drücken der [0] das System-Menü aufrufen aus dem heraus man neu booten [8], ins System wechseln [5] oder aber herunterfahren [2] kann.
    Wenn man Tarpi also verlassen möchte drückt man [Enter] um das blaue OSD anzuzeigen, [0] um ins Systemmenü zu kommen und [5] um wieder auf der Shell zu landen.

    Edited once, last by WhiteSAndS: irgendwie sind da Leerzeilen im Text gelandet die mich irritieren. Die Schreibfehler lasse ich drin. ().

  • Falls bis hierher alles geklappt hat, und ich zweifele nicht daran, dann werden wir jetzt das System so anpassen das es automatisch nach dem booten in Tarpi landet.


    Weil es häufig vorkommt das man am Skript rumschraubt, man die alten Skripte aus Sentimentalität oder zur Sicherheit behalten möchte man aber nicht überall den Aufruf anpassen möchte erzeugen wir uns einen verallgemeinernden Link auf das Skript mit:

    Code
    ln tarpiXXX.py tarpi.py


    Wenn es eine neue Version gibt wird einfach nur der Link angepasst, alles andere funktioniert aber wie zuvor.
    Da es störend ist bei jedem Boot das Passwort eingeben zu müssen aktivieren wir mit raspi-config

    Code
    sudo raspi-config

    die Autologin-Funktion:

    Code
    # 3 Boot Options         Configure options for start-up 
    #       B1 Desktop / CLI            Choose whether to boot into a desktop environment or the command line 
    #             B2 Console Autologin Text console, automatically logged in as 'pi' user

    Jetzt würden wir nach jedem Boot bereits eingeloggt auf der Shell landen. Das ist gut aber wir wollen ja das Tarpi automagisch startet also editieren wir die sich im Nutzerverzeichnis befindliche .profile mit nano:

    Code
    nano .profile

    und hängen dort ganz ans Ende folgendes an:

    Code
    #Autostart von Tarpi auf der lokalen Console
    if ! [ -n "$SSH_CLIENT" ] && ! [ -n "$SSH_TTY" ]; then
      ./tarpi.py
    fi

    Das würde bereits genügen um Tarpi zu starten aber wir möchten auch noch das Numlock auf dieser Konsole aktiviert wird also editieren wir auch noch die .bashrc:

    Code
    nano .bashrc

    und hängen hier ans Ende:

    Code
    #Tastatur NumLock setzen
    setleds -D +num

    Ganz Mutige können jetzt neu booten und hoffen das jetzt sofort nach dem Start Tarpi läuft. Wenn nicht, es gibt ein schönes langes Wochenende zum debuggen....

  • Wegen der überwältigenden Resonanz habe ich das Projekt mal nach Github Mikrosko-Pi transferiert. Dort liegen auch ein paar fix und fertig Images aber noch keine tiefergehenden Beschreibungen.
    Wer Lust hat das mal auszuprobieren hat 3 Möglichkeiten:
    1. entsprechend der hier hinterlegten Informationen per Hand alles schön selber eintippern
    2. entsprechend der auf Github hinterlegten Skripte und Packages ein selbst downgelodetes Raspbian Buster lite selbst vorkonfigurieren
    3. eines der vorkonfigurierten Images mit Balena Etcher auf eine mindestens 4GB große uSD packen, in den Raspi stecken und booten und wenn am Raspi eine Kamera angeschlossen ist und niemand die Selbstzerstörungssequenz ausgelöst hat sollte nach dem zweiten Boot alles gut sein....wenn nicht, License lesen und selbst Abhilfe schaffen.

  • ...und um mal das Thema Kamera über Funkstrecke und Long Range abzuhandeln, entgegen der Bastelei von CommerzGandalf würde ich zu einer 5GHz Bridge mit zwei locoM5 von Ubiquiti tendieren. Die sind perfekt legal, einfach in der Anwendung und haben eine hohe Transferrate. Beide Stationen schön hoch montieren so das die Fresnellzone1 frei bleibt, ist entfernungsabhängig, und schon kann man seine Kamera locker bis 300m weit weg aufstellen. Kostet auch nur so ab 110€ für ein Pärchen.


    Kein Antennenbasteln und kein Softwareschrauben.