USB-Mikroskop über python steuern

  • Hallo zusammen,


    ich habe ein USB-Mikroskop für meinen Raspberry Pi, das alle 10s ein Bild aufnehmen soll. Momentan funktioniert dies über das folgende Programm:


    ffmpeg -y -f v4l2 -video_size 1280x720 -i /dev/video0 \

    -r 0.1 \

    -vf "drawtext=text=%{localtime}:fontcolor=white@1.0:fontsize=26:borderw=1:x=980:y=25" \

    -qscale:v 2 /home/pi/img%%-%d.jpg


    Wie kann ich alle Funktionen erhalten und das Programm in Thonny schreiben/ausführen?

    Ich will das Programm nicht mit Thonny aus dem nano-Editor öffnen, sondern ein neues Programm quasi schreiben, dass ich direkt in Thonny ausführen kann.


    Ich bin noch recht unerfahren und bräuchte Jemanden, der mir das verständlich schritt für schritt erklärt.

    Danke schon mal im Voraus!


    LG guesswho462

  • Moinsen,

    Du nimmst doch bestimmt Bezug auf diesen Beitrag ?
    Hat die Programmänderung mit :

    from subprocess import Popen


    process = Popen(['/home/pi/Mikroskop.sh'])


    nicht funktioniert ?

    Wenn du sagst, daß aller Zeit Einheit X ein Photo gemacht werden soll, warum machst du das nicht so:

    Python
    from subprocess import Popen
    
    Anzahl_Bilder = 5
    for _ in range(Anzahl_Bilder):
        relais.on()
        Popen(['/home/pi/Mikroskop.sh',])
        sleep(5) # Belichtungszeit
        relais.off()
        sleep(1) # Verweilzeit zwischen den Bildern

    Und dabei änderst du deinen SH-Script dahingehen, das nur 1 Bild aufgenommen wird.


    Franky

    Franky

  • Hi Franky,


    Doch es funktioniert grundsätzlich schon, aber bei vielen Bildern hintereinander kommt der Lichtring mit dem Bildermachen aus dem Takt quasi. Es ist dann nur jedes zweite oder dritte Bild beleuchtet, weil sich das von der Zeit her irgendwie verschiebt. Deshalb wollte ich einen WEg finden, die sh-Datei los zu werden um die Zeit zwischen den Bildern besser bestimmen zu können. Es braucht immer etwas Zeit bis die sh-Datei ausgeführt wird und bis die Schleife wieder von neu los geht.


    Die "Schleife" in der sh-Datei brauche ich aber, da bei einer einzelnen Aufnahme das Bild schwarz ist nur nur nach drei Bildern ein normales Bild raus kommt.


    Verstehst du was ich mein?

  • Moinsen,

    Siehe #2 .

    Hast du schon versucht Pro Bildaufnahmebefehl aus der Shell , d.h. in der Shell wird nur ein Bild aufgenommen, in dieser Form einer Schleife auszuführen, dass der Python-Script das Taktsignal dahingehend vorgibt.
    Schleife
    Licht an, ggf. Wartezeit, Shellbefehl für 1 Bild, irgendwas auch immer, Licht aus, eigentliche Verweilzeit zwischen den Bildern


    Franky

    Franky

  • Hast du schon versucht Pro Bildaufnahmebefehl aus der Shell , d.h. in der Shell wird nur ein Bild aufgenommen, in dieser Form einer Schleife auszuführen

    Ja, aber das funktioniert nicht, weil die Bilder schwarz sind.... Da es nicht klappt wenn die Schleife in python ausgeführt wird. Es klappt immer nur in der Shell...

  • Moinsen,

    Du sollst doch den Shellbefehl, diese Miroskop.sh Datei dazu dahingehend anpassen, oder abändern, dass dieser SH Script nur eine einzige Aufnahme macht.

    Ja das habe ich schon ausprobiert und die Bilder werden schwarz wenn man das dahingehend verändert. Ich brauche in der Sh-Datei diesen Befehl, dass mehrere Bilder hintereinander gemacht werden, sonst werden sie nix.


    Ich davhte auch, dass das eigentlich egal sein müsste, in welchem Programm ich sage wie viele Bilder es sein sollen... Ist es aber leider irgendwie nicht....

  • Moinsen,


    jetzt mal eine Frage, bevor ich hier einem Phantom hinterher jage.
    Dieser SH Code mit FFMPEG stammt aus welcher Quelle ?
    Ist der so in der Anleitung zu diesem Mikroskop beschrieben, oder hast du dir den selbst zusammen getüttelt ?

    Franky

  • Hallo,


    `popen` ist non-blocking, d.h. wenn das Ausführen länger als 5 Sekunden dauert geht das Licht aus, während die Aufnahme noch läuft.


    Ersetz' doch mal `popen` durch `run` und entferne das `sleep` danach.


    Gruß, noisefloor

  • Hallo,


    ich bin noch auf microscope gestoßen. Erfahrung habe ich damit nicht, aber eventuell kannst du dein Mikroskop damit vollständig über Python steuern. Kannst dich ja mal einlesen.

    Wobei ich zuvor die Idee von noisefloor testen würde und dabei nocht check=True setzen. Sollte nach dem ausführen des Codes eine Fehlermeldung kommen, bitte vollständig hier posten.


    run(['/home/pi/Mikroskop.sh',], check=True)


    Grüße

    Dennis

    Das Leben ist kein Ponyhof, es ist ne Pferdebraterei! 🎧

  • Ersetz' doch mal `popen` durch `run` und entferne das `sleep` danach.

    Hi noisefloor,


    Dann ist das Problem, dass das Programm in der sh-Datei "stecken" bleibt, da das ja eine Schleife ist, die kontinuierlich Bilder macht. Der Lichtring geht weder an noch aus dann..weils gar nicht dazu kommt.

  • Hallo,

    Der Lichtring geht weder an noch aus dann..weils gar nicht dazu kommt.

    kannst du mal deinen Code zeigen? In dem Code hier im Thread wird das Relaise auf 'on' gesetzt bevor du die *.sh-Datei aufrufst.

    Du musst ja in der *.sh - Datei auch keine Dauerschleife laufen lassen, wenn das zweite Bild immer gut ist, dann lass das Mikroskop zwei Bilder machen und dann wird die *.sh-Datei verlassen und in Python schälst du das Relaise wieder aus.


    Oder eben alles in einer Sprache, dazu gabs ja schon Hinweise.


    Grüße

    Dennis

    Das Leben ist kein Ponyhof, es ist ne Pferdebraterei! 🎧