FotoBox Projekt für den Raspberry Pi [C++/Qt/wiringPi/gphoto2]

  • Hi Raspberry Pi Nutzer,


    ich würde gerne mein Open Source namens "FotoBox" kurz vorstellen. Wie der Name schon sagt, ist es eine kleine GUI Anwendung (in C++/Qt entwickelt) mit der man eine Fotokamera (Spiegelreflexkamera oder das Raspberry Pi Camera Module support) ansteuern kann um eine Foto zu schießen, es abzuspeichern und es auf einem Bildschirm anzuzeigen.


    Man kann die FotoBox/Countdown mit einer Maus, einer Tastatur, einem Touchscreen oder ein Buzzer der mithilfe der GPIO abgefragt wird, starten. Die Anwendung startet zuerst einen Einstellungsdialog. Hier kann man alles notwendige konfigurieren oder man wartet einfach 10 Sekunden bis sich der Einstellungsdialog automatisch schließt und die FotoBox startet.



    Den sourcecode mit einer kleinen Anleitung sowie den Releases der Software für Raspbian und macOS findet ihr auf gitlab oder auf github.



    FotoBox Features:

    • Unterstützung für Spiegelreflexkameras (gphoto2 supported cameras) und das Raspberry Pi Camera Module
    • Unterstützung für einen Buzzer (GPIO wiringPi)
    • in deutscher und englischer Sprache
    • Einstellungsdialog (persistieren der Einstellungen in eine INI Datei) z.B. um unter anderem die Länge oder die Farbe des Countdowns festzulegen
    • läuft unter Raspbian/Linux und macOS
    • abspeichern der geschossenen Fotos auf der Speicherkarte des Raspberry Pi und der SD Karte der Kamera
    • Vollbild/Fullscreen Anwendung
    • schnell, stabil und mit geringem Speicherverbrauch
    • Interessant für Entwickler: multi threading, docker build, continuous integration, doxygen Dokumentation

    Ideen für zukünftige Releases:

    • hilfreiches Skript zur Installation der Anwendung mit allen Abhängigkeiten
    • Neues Design
    • "Bildschirmschoner" mit den bereits aufgenommenen Bildern
    • Live Bild/View der Kamera
    • Unterstützung für Drucker
    • Sprachsteuerung
    • ...


    Wenn jemand gerne das Projekt unterstützen oder mitentwickeln möchte, darf sich herzlich gerne bei mir melden :)


    Viele Grüße, Thomas

  • tomikais

    Hat den Titel des Themas von „Fotobox für den Raspberry Pi [C++/Qt/wiringPi/gphoto2]“ zu „FotoBox Projekt für den Raspberry Pi [C++/Qt/wiringPi/gphoto2]“ geändert.
  • Magst Du vielleicht noch ein paar Screenshots von der Anwendung selbst dazupacken? Das würde es m.E. anschaulicher machen. Wie das Ganze von außen aussieht, würde mich auch interessieren.

  • Klar! :)


    Einstellungsdialog: Man kann eine Hintergrundfarbe wählen, Buttons aktivieren/deaktivieren, die Farbe und die Dauer des Countdowns wählen. Alle Einstellungen werden nach bestätige des "OK" Buttons oder nach Ablauf von 10 Sekunden (mit Mauszeiger in den Dialog fahren, stoppt den Timer) in einer INI Datei gespeichert. Beim nächsten Start werden diese gespeicherten Einstellungen wieder geladen. Man kann alle Einstellungen auch wieder auf die Standardeinstellungen zurücksetzen. Bild des Einstellungsdialog unter macOS:


    photo folder: Ordner in dem die Bilder gespeichert werden.

    photo name: Als prefix erhält das Bild das aktuelle Datum und danach kommt der Name der hier angegeben wird.

    countdown: Anzahl der Sekunden (max 9 Sekunden) und die Schriftfarbe.

    buttons: Aktiviert oder Deaktiviert die Buttons auf der FotoBox Oberfläche.

    background color: Die Hintergrundfarbe der Fotbox.

    input/output PIN: Pins auf der GPIO Leiste die abgefragt werden.

    query intervall: Legt fest wie oft der PIN abgefragt wird. Das ganze findet in einem thread start und beeinflusst den main thread nicht.

    camera mode: "gphoto2" (Spiegelreflex oder andere Kameras) oder "raspistill" (Raspberry Pi Camera Modul) kann hier gewählt werden.

    argument line: Befehle die an die Entsprechende Kamera Applikation übergeben werden.

    timeout value: Wie lange gewartet wird bis die Anwendung die die Kamera ansteuert abgebrochen wird.


    Nach dem Starten des Countdowns, wird ein Foto gemacht und dieses bleibt bis zum nächsten auslösen der Kamera sichtbar. Bild des Countdowns:


    FotoBox: Die Oberfläche der FotoBox Anwendung ist recht schlicht. Das geschossene Foto wird möglichst bildschirmfüllend (evtl. skaliert) dargestellt aber ohne es zu beschneiden. D.h. im besten Fall ist sehr wenig oder kein schwarzer Hintergrund mehr zu sehen oder eine andere Hintergrundfarbe die man gewählt hat.


    Aufbau des Gehäuse: Die Box hat oben eine Halterung für ein Biltzschuh der ins Innere der Box zur Kamera führt. Ist quasi eine Art Verlängerungskabel für die Steuerung des Blitzes. Der Bildschirm in der Mitte zeigt die Oberfläche des Betriebssystems und somit der Anwendung an. Das Bild bleibt stehen, bis das nächste Foto geschossen wird. Im Fehlerfall wird eine Leiste zur Ausgabe der Fehlermeldungen im unteren Bildschirmbereich angezeigt. Unter dem Monitor ist ein Loch für die Kamera.



    Innenleben: Im Inneren der Box ist oben zur Stromversorgung eine Steckerleiste angebracht. Da wir in einen Notausknopf einen Funksender eingebaut haben, ist im Innenleben der Box, unterhalb der Steckerleiste, der entsprechende Empfänger verankert. Dieser wir auf die GPIO leiste des Raspberry Pi gesteckt. Natürlich ist hier ein Raspberry Pi 3 verbaut (links). Der Foto ist per USB mit dem Raspberry Pi verbunden und erhält über ein Netzteil dauerhaft Strom (kein Akku). Auf dem Raspberry Pi ist noch eine Bilder Gallery aktiv. Somit wurde auch ein entsprechend starker Access Point (rechts, blau beleuchtet) mit offenem WLAN in die Box gebaut.



    Testgerät: Da ich nicht immer die ganze Box aufbauen kann, habe ich mir ein kleines Testgerät gebaut. Ein Touchscreen mit Raspberry Pi 2 auf der Rückseite ist zusammen in ein Gehäuse eingebaut. Ein kleiner Kabelgebundener Knopf löst die Fotobox aus. Das Raspberry Pi Camera Modul oben auf dem Gehäuse dient zum Schießen der Bilder.



    Ich hoffe ich konnte einen besseren Einblick geben ;-)

  • Hey,


    ich bin echt begeistert von deinem Projekt. Suche schon ewig nach so einer Lösung. Das Problem ist nur, das ich bis jetzt nur theoretisch Freude an deinem Projekt habe. Bekomme es nicht ans laufen. Muss aber dazusagen das ich nicht der mega Fuchs bin in Sachen Rasp. Hab deine Anleitung bis zu dem Punkt wo ich deine " Programm" starten muss. Ich habe kein Plan wie ich es starten soll.

    Bin den Punkt das erstmal überflogen und habe den Scrennsaver deaktiviert und dann die Autostart Befehle eingetrage, in der Hoffnung das sich das Pogramm autoamtisch nach einem Reboot starten. Aber auch nicht. Jetzt schreib ich dir weil ich jetzt echt am Ende bin aber gerne dein Programm mal probieren möchte.. Wäre super wenn du mir antworten könntest und "eben" helfen würdest. ;-)


    Vielen Dank vorab.


    Notch

  • Hi Notch,


    schön das du über mein Projekt gestolpert bist und das du dich bei einem Problem auch gleich gemeldet hast. Prinzipiell kannst du die Anwendung für den Pi auch nur herunterladen (GitLab oder GitHub), die tar Datei entpacken und dann direkt per doppelklick starten. Hast du das schon einmal probiert?


    Viele Grüße, Thomas

  • Natürlich! Im Moment ist es hard codiert (siehe fotobox.cpp)

    Foto schießen --> Return + Enter Taste (Num Block)

    [IMG:https://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Enter.png/193px-Enter.png]

    Beenden der Anwendung --> Escape

    Einstellungsdialog wieder anzeigen --> Taste P + S + E


    Bei Bedarf könnte ich es konfigurierbar machen (INI Datei).

  • Hi,


    sorry für die späte Antwort! Irgendwie kam die Benachrichtigung nicht an, dass hier ein neuer Post gemacht wurde. Gerade durch Zufall dein Post entdeckt^^

    Du kannst die GPIO Pins die genutzt werden sollen, auch am Anfang konfigurieren. Default sind diese PINs konfiguriert: 17 / 18 (siehe Bild)