[Projekt] jukebox4kids (Jukebox für Kinder)

  • Hallo Hyle,


    das weiß ich auch. Da ich aber noch mehr in das Script einbinden möchte( z.B. auslesen des aktuellen Tracks) wollte ich den Shutdown bzw. die die damit verbunden Schritte in ein script packen. Ist halt noch im Fluss und es gibt sicherlich viele Lösungswege.


    Viele Grüße

    X-Ray

  • Hallo Leute,

    erst einmal Danke an alle die das Projekt so vorantreiben und fragen beantworten. Ich habe mir nun alle benötigten Komponenten zusammen gekauft und der Pi läuft auch schon. Was nun noch fehlt sind die Buttons und insbesondere die lötarbeiten. Hierzu gibt es ja auf git ein paar Bilder. Hier im Threads hatte auch einer bereits einen Eagle Schaltplan als Bild hinterlegt. Leider bin ich kein espezi und habe eher weniger Ahnung von der etechnik. Entsprechend wollte ich fragen ob es hierzu genauere Pläne gibt oder ob jemand einen fritzing oder Eagle Plan hat, den er mir zur Verfügung stellen könnte?


    Darüber hinaus habe ich noch ein Problem mit dem Webinterface. Dieses funktioniert zwar hinsichtlich des erstellens von neuen Kartenzuordnungen, jedoch geht keiner der Play Pause Nexus buttons im Interface. Auch die Lautstärke Einstellung via webinterface funktioniert nicht. Kann es eventuell daran liegen dass ich einen pi3 b+ nutze?


    lch würde mich sehr über eure Hilfe freuen!

  • Was nun noch fehlt sind die Buttons und insbesondere die lötarbeiten. Hierzu gibt es ja auf git ein paar Bilder. Hier im Threads hatte auch einer bereits einen Eagle Schaltplan als Bild hinterlegt. Leider bin ich kein espezi und habe eher weniger Ahnung von der etechnik. Entsprechend wollte ich fragen ob es hierzu genauere Pläne gibt oder ob jemand einen fritzing oder Eagle Plan hat, den er mir zur Verfügung stellen könnte?

    Anbei mal ein Fritzing-Plan den ich für meine Übersetzer-Platine erstellt habe, die ich auf einer Lochrasterplatine gelötet habe. Die dient als einfach wartbare Stecklösung zwischen dem Raspi und der angeschlossenen Peripherie, denn in meinem Gehäuseinneren kommen 2 Flachbandkabel an:

    1. Von den LEDs (da habe ich ein altes IDE-Kabel genommen und an ein abgeschnittenes Ende die LEDs gelötet)
    2. Von den Buttons (da habe ich ein ausgesägtes Stück von einer Frontplatine eines alten Receivers oder DVD-Players recycled)



    Wenn Du nur Buttons nutzen willst, kannst Du also die rechte Seite im Schaltplan (für die LEDs) ignorieren.


    Meine letzte Platine habe ich glaube ich auch vor 20 Jahren in der Schule gelötet, habs aber unter dem Strich ganz gut hinbekommen (musste auch nur 2 Teile zwischendurch wieder auslöten :P )


    Rückblickend hätte ich den Platz auf der Lochrasterplatine etwas ergiebiger ausnutzen können und auch zum Raspi eine zweizeilige Steckerleiste machen können, so dass man auch da beide Seiten einfach mit einem Flachbandkabel verbinden kann (aktuell nutze ich Jumperkabel)


    Darüber hinaus habe ich noch ein Problem mit dem Webinterface. Dieses funktioniert zwar hinsichtlich des erstellens von neuen Kartenzuordnungen, jedoch geht keiner der Play Pause Nexus buttons im Interface. Auch die Lautstärke Einstellung via webinterface funktioniert nicht. Kann es eventuell daran liegen dass ich einen pi3 b+ nutze?


    lch würde mich sehr über eure Hilfe freuen!

    Play, Pause, next geht bei mir (3B non-plus)


    Die Lautstärke geht bei mir auch nicht. Vermutlich, weil ich eine USB-Soundkarte benutze (?). Das Raspi-Audio musste ich deaktivieren, damit es nicht zu Konflikten kommt. Mich stört es nicht, denn für die Lautstärkeregelung habe ich eh das analoge Stellrädchen nach draußen gelegt. Doppelte Lautstärkeregler sorgen eh oft für Probleme...

    Edited once, last by tobi79 ().

  • Vielleicht könnte man das Problem mit dem potentiell ungünstigen Abschaltzeitpunkt aber noch anders lindern. Ich überlege gerade, ob man nach Zeitablauf das aktuelle Hörspiel noch bis zu Ende laufen lassen kann.

    So hat's geklappt. Wenn die Zeit abgelaufen ist, wird jetzt das laufende Hörspiel noch beendet bevor sich die Box herunterfährt.


    inzwischen hab ich auch das letzte Detail am laufen, dass das Kind nicht einfach die Box aus- und wieder anschalten kann, um wieder das defaultkontingent zu bekommen.


    Den Code poste ich dann morgen oder so, bin gerade nicht am pc.

  • Hey tobi79,


    vielen Dank erst Mal für deine Pläne. Leider sind die für mich als Laien noch schwieriger als die von MiczFlor im git. Deswegen bastel ich nun das von MiczFlor nach. Leider verstehe ich hier eine Sache nicht ganz. Die Pins laufen zunächst auf einen 1k Ohm Widerstan. Von da aus laufen sie sowohl auf den Eingang vom Button als auch auf den 10k Ohm widerstand der wiederum direkt auf 3,3vcc läuft. Der Button läuft dann mit einem Pin auf Grund. Wenn ich das richtig interpretiere liegt dann am Pin immer 3,3v an und über den Button wird das ganze dann auf gnd geschaltet. Macht das Sinn? Und was mache ich mit meinem dritten Anschluss am Button? Der wäre laut meiner Interpretation der Schaltung nun gar nicht genutzt. Also der, der im nicht geschalteten Zustand durch läuft im Button.


    Ich wäre für eure Hilfe echt dankbar.


    Gruß

  • Das ist genau der Schaltplan den ich meine :) das heißt am Button muss nur Eingang auf geschalteten Kontakt genutzt werden und der "ausgang" der dauerhaft bei nicht geschaltet mit Eingang kontaktiert ist, wird nicht gebraucht?


    Und dann habe ich das auch richtig verstanden, dass die 3,3v dauerhaft am Pin Anliegen und der gnd dann beim Schalten dazu geschaltet wird?


    Weil genau so habe ich es gemacht und wenn ich die paltine mit Pi verbinde, fährt Pi nicht mehr hoch.

  • Und dann habe ich das auch richtig verstanden, dass die 3,3v dauerhaft am Pin Anliegen und der gnd dann beim Schalten dazu geschaltet wird?

    Ich bin da auch mit ner Menge Halbwissen rangegangen, mit etwas Einlesen (und gerne auch Nachfragen) klappt das schon :)


    In Deiner Zeichnung sehe ich spontan erstmal keinen Fehler.


    Dennoch vielleicht doch kurz für Dich zum Verständnis betreffs Deiner Frage:

    Ja, hier liegen dauerhaft 3,3V (+) am Schalter an, und wenn man den drückt, wird das "einfach" auf (-) kurzgeschlossen.

    Das mag erstmal komisch klingen. Zum Sinn dahinter:

    Der Eingang am Raspberry wird so konfiguriert, dass er bei Spannung am Eingangs-Pin von "nicht gedrückt" ausgeht und bei keiner Spannung (0V) von "gedrückt". Deswegen liegt hier dauerhaft 3.3V Spannung an. Wenn man nun den Schalter drückt, sinkt die Spannung am GPIO-Pin durch den Kurzschluss auf 0V und der Raspi erkennt den Tastendruck. So viel zum Prinzip...


    Solche Kurzschlüsse sind aber nicht gesund oder verbraten bestenfalls noch zu viel Energie. Daher werden hier die Widerstände mit eingebaut.

    Man muss sich das also so vorstellen:

    Vom 3.3V Pin kommt Spannung in den Schaltkreis. Die muss aber erstmal durch den 10K Widerstand. Selbst wenn nun hinter dem Widerstand per Schalter ein Kurzschluss provoziert wird, fließt da nur ganz wenig Strom, so dass das unbedenklich ist.


    Der 1K Widerstand ist prinzipiell überflüssig, die o.g. Button-Schaltung funktioniert auch so.

    Falls man aber am Raspberry den GPIO-Pin versehentlich als Ausgang konfigurieren und auf High setzen würde - d.h. dort 3.3V aufschaltet - würde es beim Drücken des Buttons zu einem Kurzschlus kommen und ungesund viel Strom aus dem GPIO zu (-) (hinter dem Button) fließen. Dabei kann der Raspi kaputtgehen. Deswegen steckt man auch vor den GPIO-Pin noch einen (kleineren) Widerstand.

  • So hat's geklappt. Wenn die Zeit abgelaufen ist, wird jetzt das laufende Hörspiel noch beendet bevor sich die Box herunterfährt.


    inzwischen hab ich auch das letzte Detail am laufen, dass das Kind nicht einfach die Box aus- und wieder anschalten kann, um wieder das defaultkontingent zu bekommen.


    Den Code poste ich dann morgen oder so, bin gerade nicht am pc.


    Habe jetzt endlich mal meine Skripte inkl. 2 Readme-Dateien hier hochgeladen, sind ab heute 7 Tage online:


    https://we.tl/GLT4xzD9Cv


    Die wesentlichen Parameter lassen sich am Dateianfang nach Belieben konfigurieren, z.B. das beim Anschalten vergebene Default-Zeitkontingent sowie die nach Ablauf geltende Sperrzeit (überlebt auch ein Neustarten der Box). Ebenso, ob man LEDs mit benutzt oder nicht.


    Bei Fragen oder Anregungen einfach melden.


    Viele Grüße,

    tobi79

  • Mal die Datein für die Ewigkeit hier im Forum zum downloaden.

  • Hallo zusammen,


    bin schon eine ganze Weile an meiner persönlichen Jukebox für meine Kleine dran.

    Habe damals verschiedene Varianten getestet und habe mich letztendlich für MiczFlor/RPi-Jukebox-RFID entschieden.


    Mein persönliches Setup besteht aus:


    RPi3
    imuto 10000mAh Powerbank (für mich war dabei passthrough wichtig)
    RPi USV+ (damit beim Laden der Powerbank sich der RPi nicht einfach abschaltet)
    CSL - Externe USB Soundkarte
    Trust Leto 2.0 USB Lautsprecher Set
    I2C LCD 20 x 4 (aktuell mein Sorgenkind)
    125Khz RFID-Lesegerät EM4100


    Die grundlegenden Funktionen laufen einwandfrei und die einzelnen Alben werden über die RFID-Karten geladen.

    Nun wollte ich als letzten Step das LCD-Disyplay integrieren, nur bei diesem Thema bin ich ehrlich gesagt total aufgeschmissen.

    Habe das "gpio-buttons.py"-Script angepasst, sodass ich bei einem Button eine einfache Anzeige erhalten nur entspricht das nicht meinen Vorstellungen.


    Ich möchte über das Display das aktuelle Lied angezeigt bekommen und ein Symbol, ob es gerade abspielt oder pausiert.

    Zusätzlich soll über den Laut/Leiser-Button die aktuelle Lautstärke als Balken angezeigt werden.

    Falls es funktionieren sollte wäre es schön, wenn man den aktuelle Akkuzustand der Powerbank anzeigen könnte (aber laut Google sollte diese Funktion nicht realisierbar sein).

    Vielleicht noch das aktuelle Datum und Uhrzeit? Hättet Ihr noch Ideen für sinnvolle Funktionen?


    Ich hoffe Ihr könnt mir dazu weiterhelfen :danke_ATDE::danke_ATDE::danke_ATDE:


    Achso, ich verwende Stretch-Lite, falls dies für Euch wichtig ist.


    Edited once, last by deathly ().

  • Ich möchte über das Display das aktuelle Lied angezeigt bekommen und ein Symbol, ob es gerade abspielt oder pausiert.

    Zusätzlich soll über den Laut/Leiser-Button die aktuelle Lautstärke als Balken angezeigt werden.

    Die Info bekommst Du ebenfalls über das Remote Control Interface von VLC, das bereits auch für die Steuerung (vor, zurück, ...) verwendet wird.

    Code
    get_title . . . . . the title of the current stream
    is_playing . . . . 1 if a stream plays, 0 otherwise
    volume [X] . . . . . . . . . . set/get audio volume

    Wenn Du ein Beispiel für Skripte brauchst, die dieser Schnittstelle nicht nur Befehle schicken, sondern auch die Rückgabe auswerten, schau mal in meinen Code von 3 Beiträge weiter oben. Die Skripte scripts/vlc_*.py demonstrieren das.


    Bei "volume" bin ich mir gerade nicht sicher, ob die Lautstärkeeinstellung vom VLC dieselbe ist wie die die hier ansonsten verwendete, ggf. musst du die Lautstärke anders ermitteln.