[Projekt] jukebox4kids (Jukebox für Kinder)

  • Ich baue die Jukebox grade in einem Feuerwehrauto. Dieses besitzt blau beleuchtete Knöpfe (als Blaulicht verbaut [GPIO5/GPIO6], standardmäßig an), gelb beleuchtete Knöpfe (als "Fernlicht" verbaut, in Reihe geschaltet [GPIO13], standardmäßig aus) und einen "Spezial-Knopf". Wenn dieser Knopf gedrückt wird, soll ein Martinshorn erklingen und die Knöpfe blinken. Dazu würde ich gerne abfragen, ob VLC grade ein Lied spielt, damit ich dieses pausieren und am Ende wieder starten kann.

    Laut https://n0tablog.wordpress.com/2009/02/09/con…no-programming/ sollte der Befehl dazu is_playing sein. Wie kann ich diese Abfrage in mein Script einbauen?

    Das Script ist bisher nur geschrieben aber völlig ungetestet, da ich die LEDs der Knöpfe erst einmal anschließen muss. Gerne kann also einmal jemand drübergucken, ob es so überhaupt funktionieren würde.

    Starten wollte ich den Ablauf durch eine angepasste Version von diesem Beitrag:

    [Projekt] jukebox4kids (Jukebox für Kinder)

    Funktioniert das denn überhaupt? Denn wie gesagt, ist das komplett ungetestet, da ich die Knöpfe bisher noch nicht anschließen konnte.

    2 Mal editiert, zuletzt von Geliras (10. Dezember 2017 um 23:26)

  • Kurzanleitung zu den Buttons:

    Um das richtige Modul zu nutzen erstmal folgende Befehle ausführen:

    sudo apt update

    gpiozero Python 3

    sudo apt install python3-gpiozero

    gpiozero Python 2

    sudo apt install python-gpiozero

    Dann den Skipt mit den Buttons in das Home-Verzeichnis einfügen.

    Skript kannst du bei Micz Flor runterladen GPIO Sample Button

    Link

    Hier im Skript ggf. modifizieren, je nach dem woher der Sound nachher kommen soll. Ich habe auch nicht die Widerstände vom pi genutzt sonder eigene eingelötet.

    Jetzt muss man den Skript ausführbar machen mit:

    chmod a+x button.py (button.py ist der Dateinname des Skriptes)

    Jetzt das Skript mit in den Autostart.

    sudo nano /etc/rc.local

    hier vor exit das folgendes eintragen:

    /home/pi/buttons.py (wieder Name des Skriptes)

    so sollte es dann funktionieren.

    Du kannst das Skript auch erstmal ausprobieren ohne das du es in den Autostart legst. Dafür musst du es einfach mit Python starten. Auf dem Desktop im Raspbian oben auf Entwicklung gehen und dann die Datei darin öffnen.

  • Achtung Falle. Im von dir verlinkten Script ist _kein_ Shebang enthalten, ergo wird die Ausführung ohne explizite Übergabe des Scripts an einen Python-Interpreter sondern über chmod +x und direkte Ausführung nicht funktionieren.

  • Mein Sohn und ich brauchen dringend Eure Hilfe.

    Wir würden gerne dieses Projekt umsetzten, wissen aber nicht wie wir anfangen sollen.

    Mein Sohn möchte es für die Schule als Projekt präsentieren, benötigt dies aber

    erst im Frühsommer.

    Seit dem Sommer haben wir uns zunächst intensiv mit dem Raspberry auseinander gesetzt.

    Moment beschäftige ich mich intensiv mit einem Python-Grundkurs.

    Unsere Vorstellungen wären diese:

    Einlesen der CD über RFID, steuern von PI MusicBox über Buttons. Perfekt wäre die Anzeige über ein LCD-Display.

    Um das Projekt vermeintlich einfacher zu gestalten, habe ich mir den Neuftech USB Reader für EM4100 gekauft. Wir haben sehr viel im Internet nach einfachen Scripten gesucht, sind aber nicht richtig fündig geworden oder waren einfach noch mit dem Code überfordert.

    Wir würden gerne ein einfaches Script erstellen, um vom Transponder die ID einzulesen.

    Oder wie würdet Ihr das Projekt angehen?

    Mein Sohn Ole und ich haben total Lust auf das Projekt.

    Wer von Euch hätte Lust, Zeit und Geduld uns bei diesem Wunschprojekt zu unterstützen?

    Ich habe dafür einen extra Thread im Bereich „laufende Projekte und Ideen“ mit dem Titel „Jukebox mit RFID“ angelegt. Netterweise wollte man uns auch schon weiterhelfen, waren aber einfach mit den Antworten überfordert.

    Ich habe auch schon ein Forummitglied, der das Projekt erfolgreich umgesetzt hatte, hier direkt angeschrieben, aber keine weitere Antwort mehr erhalten.

    Mein Sohn und ich würden uns über jede Hilfe sehr freuen.

    Nette Grüße, Ole und Frank

  • @hailogugo: Vielen Dank für die Kurzanleitung für die Einbindung der Button. Funktioniert perfekt. Das Button Skript habe ich entsprechend angepasst und es wird über den Cron Job beim Starten austomatisch mitgestartet. Funktioniert bestens. Ist in Deiner finalen Anleitung auch eine Beschreibung wie man ein LCD Display ansteuert?

  • KingKahn ich habe kein LCD was ich anschließen werde, da die Kids ehe noch nicht lesen können.

    Du müsste ja für die LCD Anzeige den Titel von VLC bekommen. Da hilft die vielleicht diese Befehlsliste weiter.

    VLC Befehle

    Irgendwo hatte ich aber hier im Forum schon was gelesen mit der LCD Anzeige auch wie ein Bespielskript aussehen sollte.

    Aus meiner jetzigen Erfahrung muss du dafür das Modul subprocess verwenden, weil dieser auch Rückantworten von Befehlen verwerten kann.

    Einmal editiert, zuletzt von hailogugo (12. Dezember 2017 um 09:30)

  • hailogugo, ich bin sprachlos!

    Ich habe die Anleitung nur kurz überflogen.

    Sie ist sehr detailliert und verständlich aufgebaut.

    Die wird uns bestimmt zum Ergebnis führen.

    Du hast Dir sehr viel Mühe gegeben, wirst damit bestimmt noch so einige Anwender

    glücklich machen.

    Mein Sohn Ole und ich sagen schon einmal „Vielen Dank“!

    Die eine oder andere Frage wird bestimmt noch folgen ?

    LG,

    Ole und Frank

  • Habe mein Feuerwehr Spezial zum laufen bekommen. Eine VLC Abfrage "is_playing" liefert übrigens immer 1. Auch wenn auf Pause. Daher mute ich zu Beginn einfach den VLC und mache ihn am ende wieder laut.

    Eine Sache klappt leider nicht. Die gelben LEDs leuchten nicht. Das liegt aber nicht am Code, denn am 3v3 Pin leuchten sie auch nicht, am 5V jedoch schon. Sind die Widerstände zu groß? Vor jeder LED jeweils 470ohm, also:

    GPIO13 -> 470ohm -> LEDgelb1 -> 470ohm LEDgelb2 -> GND

    Irgendwo weiter vorne wurde mir dazu geraten vor jede LED einen Widerstand zu löten. Vor den blauen ist natürlich auch je einer, dort läuft es ja bestens:

    GPIO5 -> 470ohm -> LEDblau1 -> GND

    GPIO6 -> 470ohm -> LEDblau2 -> GND

    Diese LEDs bzw Knöpe sind es: https://www.adafruit.com/product/1441

    Bilder und Video vom fertigen Projekt folgen die Tage, ist nämlich echt cool geworden :)

    Einmal editiert, zuletzt von Geliras (12. Dezember 2017 um 23:52)

  • Dellex Danke für die Blumen. Da ich selber mit dem Thema neu angefangen habe und ich so eine Anleitung nicht gefunden habe, außer über Projekte wie schalte ich eine LED an und aus, wollte ich eine detaillierte Anleitung machen. Dies ist auch dadurch entstanden, dass ich bestimmt noch ein zweites bauen muss.

    Geliras Bei einer Parallelschaltung musst du vor jeder LED einen Widerstand setzen. Wenn du die LEDs in Reihe hast, musst du über deren Widerstände den Spannungsabfall hinbekommen.

    Für das einfache System würde ich die Parallelschaltung bevorzugen.

    Vorwiderstand berechnen LED

    3.3V als Betriebsspannung wählen oder 5V je nachdem welchen Pin du nutzt und dann die LED Farbe wählen und du bekommst unten den passenden Widerstand ausgerechnet. Man kann ruhig etwas mehr Ohm nehmen.

  • Moin


    Als erstes, Super tolle Arbeit hier.

    Habe meine Jukebox am Laufen, Weihnachtsgeschenk für meine 2Jährige Tochter

    Ich bin Neuling in Sachen Raspberry Pi und hab Folgendes Problem:

    Habe für die Soundausgabe eine Externe Soundkarte dran, LogiLink UA0053.

    Die funktioniert einwandfrei, nur die Lautstärke Regelung funktioniert nicht über die RFID´s

    über den Raspi Klinkenanschluss JA aber nicht über die USB Soundkarte.

    Im alsamixer kann ich sie problemlos verstellen.

    Wäre Dankbar für einen Tipp wie ich das Problem lösen könnte.

  • Ich hab nen Drehpotentiometer und Amplifier angeschlossen daher kann ich es nicht testen. Aber welche Befehle sendest du denn um die Lautstärke zu ändern? Normalerweise wird doch die Ausgabelautstärke vom VLC geändert oder?

    Code
    def def_volU():
        check_call("amixer sset PCM 1.5db+", shell=True)
    def def_volD():
        check_call("amixer sset PCM 1.5db-", shell=True)
    def def_vol0():
        check_call("amixer sset PCM 0db", shell=True)

    Achso du machst das damit oder?

    Alternativ könntest du es damit machen:

    Code
    def def_volU():
        check_call("echo 'volup X' | nc.openbsd -w 1 localhost 4212", shell=True)
    def def_volD():
        check_call("echo 'voldown X' | nc.openbsd -w 1 localhost 4212", shell=True)
    def def_vol0():
        check_call("echo 'volume 0' | nc.openbsd -w 1 localhost 4212", shell=True)

    Wobei du X jeweils durch eine Zahl ersetzen müsstest. Die VLC Standard-Lautstärke ist 256.

    Schöner wäre es jedoch, wenn es mit amixer gehen würde, leider kann ich aber nicht sagen, warum es bei dir nicht geht.

    Einmal editiert, zuletzt von Geliras (13. Dezember 2017 um 15:24)

  • Alsa Anleitung Geliras Ja mit 0,851ma bei 450ohm

    Gerry 478 im Standard Skript wird pbc angesteuert. Hier musst du entweder irgendwie pbc auf deine usb Karte bekommen also den Befehl.

    Wenn du in meiner Anleitung guckst wird ALSA eingerichtet guck mal nach den Begriffen und externe USB Soundkarte. Es gibt Anleitungen im Netz. Dabei musst du wissen welche Nummer die Hardware hat und weiteres.

    Alternativ könnte vielleicht auch gehen anstelle des pbc die Bezeichnung des Reglers zu nehmen wir der in dem desktop Modus heißt.

    Ich muss aber sagen ich kenne mich damit nicht wirklich aus. Ich war in einer Anleitung wo viel stand über ALSA.

    Alsa Anleitung

    Sorry mit dem Handy geschrieben

  • Ein Fehler ist mir in meinem "Spezial" noch untergekommen. Dort setze ich ja die VLC Lautstärke kurzzeitig auf 0. Dies klappt jedoch nur, wenn VLC auch läuft. Kann ich dies vorab prüfen? Oder kann ich alternativ bei Systemstart schon einmal VLC mit einer leeren mp3 starten?

    Edit: Dürfte hiermit klappen oder? Werde es natürlich schnellstmöglich selbst testen.

    Code
    import commands
    output = commands.getoutput('ps -A')
    if 'vlc' in output:

    SOLVED:

    2 Mal editiert, zuletzt von Geliras (15. Dezember 2017 um 20:14)

  • Hi Zusammen,

    bin eigentlich ziemlich fertig und wollte jetzt noch eine LED nachrüsten. Die LED soll anzeigen wan der Pi eingeschaltet ist.

    Hier habe ich mir gedacht ist ja ganz einfach. Löte ich einfach einen Widerstand und die LED zwischen Pin 17 3,3V und GND und dann zeigt er mir es an. Da ich den Pi über den Ein/Austaster anschalte und der Pi immer an einer Powerbank sitzt gibt es immer 3,3V. Jetzt leuchtet die LED trotz, das der Pi ausgeschaltet ist.

    Wie könnte ich das nun umsetzen? Wenn ich das jetzt wie bei den Tastern mache liegt dort auch immer eine Spannung an.


    mhhhhhhhh????

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!