Direkt zum Hauptbereich

Junior Jukebox - Der ultimative MP3 Player für Kinder mit Internetradio mit RFID


Einleitung


Hier stelle ich nun eine Schritt-für-Schritt Bauanleitung für ein MP3 Kinderradio vor.
Es sind keine technischen Kenntnisse notwendig um es nachzubauen. Lediglich etwas handwerkliches Geschick und ein geübter Umgang mit einem Lötkolben sollten vorhanden sein.

Hier könnt ihr euch schon mal ansehen wie es dann fertig aussieht.




Einkaufsliste


Alles was wir brauchen, können wir bequem bei Amazon bestellen

Technische Sachen

Raspberry Pi 3
64GB Speichkarte
Netzteil 3,1A
Pi Supply
Display
Mifare Reader
NFC Sticker
Jumper Kabel
Acrade Button (grün)
Arcade Button (rot)
Arcade Button (gelb)
Arcade Button (blau)
Logitech USB PC-Lautsprecher
kurzes USB Kabel
USB Verlängerung
Micro-USB Einbaubuchse
Powerbank

Ganz klar, wir brauchen einen Raspberry Pi 3. Er bietet uns genügend GPIO-Pins um alles anzuschließen und hat gleichzeitig WLAN an Board um unsere Junior-Jukebox mit neuer Musik zu versorgen.

Der Pi Supply ist eine kleine Platine, die ich nicht mehr missen möchte. Dadurch ist es möglich den Raspberry per Knopfdruck ein- und wieder auszuschalten. So wie man es von jedem handelsüblichen Radio ja kennt.

Diesmal habe ich nicht das original Netzteil von Raspberry genommen, sondern ein leistungsstärkeres (Netzteil 3,1A). Denn es muss ja nicht nur der Raspberry versorgt werden, sondern auch die anderen Bauteile. Gerade die Buttons und die Lautsprecher brauchen viel Saft.

Bei den Acrade Button kann man den Deckel abnehmen und mithilfe von Folie, die für den Drucker geeignet ist, mit den passenden Funktions-Icons versehen. Dadurch greifen sich die Logos nicht ab und es sieht etwas professioneller aus.

Das kurze USB Kabel, die USB Verlängerung und die Micro-USB Einbaubuchse sind später dafür da, damit man die Powerbank später laden kann, ohne den Koffer öffnen zu müssen. Alternativ kann so auch das Ladekabel direkt angeschlossen werden und somit wird der Akku geschont, wenn das Radio nur teilweise mobil sein soll.

Natürlich muss das Radio nicht mit einer Powerbank betrieben werden, aber somit ist es super mobil.

Empfehlen kann ich auch noch, dass du dir ein Dupont Set kaufst, denn so kann man die Stecker bequem als ein Bündel zusammenfassen bzw. auch mal defekte Stecker schnell neu crimpen ohne gleich das Kabel auszutauschen.

Gehäusebauteile

Alukoffer
Filz (weiß)
Filz (grün)
Rahmen fürs Display
Sprühkleber


Anstelle des Alukoffer kann natürlich auch etwas selbst entworfen werden. Aber wir hatten den Koffer noch übrig. Er hat zwei Vorteile. Er ist leichter als eine vergleichbare Holzkiste und durch den Griff kann er wunderbar durch ein Kleinkind transportiert werden.

Wir haben uns auch für Grün-Weiß entschieden, da es am besten zu den Möbeln unseres Kindes passt.

Den Sprühkleber brauchst du, um den Filz auf dem Koffer zu bekommen.


Gehäusebau


Damit wir die Kabellängen besser bestimmen können, fangen wir zuerst mit dem Gehäusebau an.
Wie man auf den ersten Bildern erkennen kann, haben wir noch ein altes kleines Schloss eingebaut. Dadurch ist es unserem Kind nicht möglich den Koffer zu öffnen und die Neugierde zu befriedigen ;-)

Raspberry Pi Jukebox Gehäuse


Raspberry Pi Jukebox Gehäuse


Raspberry Pi Jukebox Gehäuse

Wie man auf dem oberen Bild sehr gut sehen kann, mussten wir für den Reader etwas Filz raus schneiden, da sonst das Signal nicht mehr zuverlässig erkannt wurde.

Raspberry Pi Jukebox Gehäuse

Den Innenraum haben wir mit Nadelfilz ausgekleidet und Halterungen eingebaut, die das Innenleben sicher am Platz halten.


Raspberry Pi Jukebox Gehäuse

Wir haben erst sämtliche Öffnungen reingesägt und dann mit dem Sprühkleber den Filz rauf geklebt.
Dadurch haben wir nun perfekte Übergänge.

Raspberry Pi Jukebox Gehäuse

An der Seite haben wir für die Lautsprecher Öffnungen reingesägt. Als Blende für die Lautsprecher haben wir die Frontblende für das Display genommen und einfach ein paar Löcher reingemacht und mit Akustikstoff  bespannt.

Raspberry Pi Jukebox Gehäuse

Verkabelung


All unsere Teile wurden geliefert, das Gehäuse ist nach unseren Wünschen gebaut.
Und nun heißt es die Teile alle schön einzubauen und zu Verkabeln.

Aber wohin nur mit all den bunten Kabeln?!

Keine Angst, ich habe mal einen kleinen Plan aufgestellt, der genauso farbenfroh auch in echt dann aussieht.

Schaltplan
Links oben siehst du das Display, daneben die Köpfe für Skip next, Play/Pause und Skip prev. Dann kommt unser Reader, und unten natürlich der Raspberry Pi.

Und noch einmal eine tabellarische Übersicht, wo welches Kabel rangesteckt werden muss.

Display
Pin
     Raspberry
Pi Pin
1
6
2
2
3
9
4
26
5
14
6
36
7
-
8
-
9
-
10
-
11
29
12
31
13
32
14
33
15
4
16
20


Reader
Pin
       Raspberry
Pi Pin
1 (SDA)
24
2 (SCK)
23
3 (MOSI)
19
4 (MISO)
21
5 (IRQ)
-
6 (GND)
25
7 (RST)
22
8 (3,3V)
1


Buttons
   Raspberry
Pi Pin
3,3V
17
Funktion Skip prev
38
Funktion Play/Pause
12
Funktion Skip next
10
LED 5V
3
GND LED 5V
39
GND LED on/off
34


pi-supply 
Pin
    Raspberry
Pi Pin
7
7
8
8



Den Aufmerksamen unter uns ist jetzt sicherlich aufgefallen, dass der Pi-Supply und die On und Off-Buttons gar nicht in dem Plan vorkommen.
Das liegt daran, dass ich bei Fritzing kein Bauteil gefunden habe, das ich dafür nehmen kann. Aber auf der Webseite von pi-Supply kann man sich die Anleitung für das Bauteil runterladen und zusammen löten.

Hier mal ein Bild wie der pi-supply dann fertig zusammengelötet im Radio aussieht.

pi-supply

Das schwarze Kabel was rechts vom pi-supply wegführt, sind die on-/off Schalter, die am Gehäuse befestigt sind. Dafür habe ich zusätzliche Kabel an der Unterseite der kleinen Buttons (die ja im Lieferumfang vom pi-supply sind) angelötet.


Raspbian installieren


Um die kleine SD Karte mit Raspbian zu bespielen, brauchen wir Win32Disk Imager.
Das können wir uns bequem hier runterladen.
Das Programm mit den Standardeinstellungen installieren.

Nun brauchen wir natürlich auch noch das Raspbian.
Das laden wir uns hier runter.

Die im Lieferumfang enthaltende SD-Karte stecken wir in unserem PC und starten das Win32Disk Imager Programm, dass wir zuvor installiert haben,


Nun musst du auf den kleinen blauen Ordner klicken und zu dem Pfad navigieren, wo du das Image gespeichert hast. Wenn du in dem sich geöffneten Fenster dann auf "Öffnen" geklickt hast, sollte es nun so aussehen.


Nun noch auf "Write" klicken.

Bei der Meldung nicht erschrecken. Die ist normal und warnt uns nur.


Also da klicken wir dann einfach auf "Yes" und schon wird die SD-Karte beschrieben.


Nach kurzer Wartezeit kommt dann die Meldung, dass der Schreibvorgang erfolgreich war.


SSH und WLAN aktivieren


Wir haben nun die SD Karte fertig bespielt.
Aber anstatt sie direkt in den Raspberry Pi zulegen, lassen wir sie im PC und gehen über den Explorer zu der SD Karte.


In dem Verzeichnis erstellen wir nun zwei Dateien. Die eine nennen wir "ssh" und die andere "wpa_supplicant.conf". Eine Dateiändung wie "txt" muss natürlich entfernt werden.
Wenn ihr das gemacht habt, dann sieht es bei euch genauso aus wie auf dem oberen Bild.

Die ssh-Datei erlaubt es uns nun, uns mit dem Raspberry Pi per SSH zu verbinden (seit Raspbian Jessi ist das nicht mehr per Default aktiv) und die zweite Datei ist für unsere WLAN-Einstellungen und muss nach folgendem Schema gefüllt werden.

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
network={
 ssid="euer WLAN Name"
 psk="euer WLAN Passwort"
 key_mgmt=WPA-PSK
}
Natürlich können wir auch ein Display anschließen und uns mit Maus und Tastatur durch das Menü hangeln, aber so geht es schneller. :)

So nun kann die SD Karte in den Raspberry Pi gesteckt werden und sobald er mit Strom versorgt wird, startet er auch gleich.
Wenn wir nun alles richtig gemacht haben, können wir uns auch gleich mit Putty verbinden.

Der Benutzername ist pi und das Kennwort lautet raspberry.

Eine wichtige Einstellung ist, die SD zu erweitern. Wie das geht, zeige ich euch in dem Video.





Dadurch haben wir nun die volle Kapazität der Speicherkarte. Wem das Video zu schnell ging noch einmal die Befehle zum Kopieren.

Nach dem Einloggen geben wir 

sudo raspi-config

ein. Nun wird der Hintergrund blau und ein graues Menü wird sichtbar.
Dort navigieren wir zu 

Advanced Options

Im nächsten Menü geht es dann zu

Expand Filesystem

Die Meldung bestätigen wir mit 

OK

Und schließen das Menü mit

finish

Nun werden wir gefragt, ob wir neustarten möchten. Das bestätigen wir mit

Yes

Und nach dem der Raspberry Pi wieder gebootet ist, können wir nun Updates runterladen.
Auch dafür habe ich ein Video erstellt. Das Laden dauert eine Weile, deswegen ist das Video ist der 5-fachen Geschwindigkeit.





Folgende Befehle werden dafür der Reihe nach eingegeben.

sudo apt-get update

sudo apt-get upgrade

sudo rpi-update

sudo reboot

Nun haben wir sämtliche Updates geladen.

Installation Mifare RC522 Reader


Als nächstes installieren wir unseren Mifare RC522 Reader. Dazu habe ich mal ein kurzes Video erstellt, in dem ihr sehen könnt, welche Befehle ihr wann eingeben musst.



Wem die Befehle zu schnell gingen, hier dann noch mal die Schritt für Schritt Anleitung mit vielen bunten Bildern. :)

Als erstes verbinden wir uns mit Putty über SSH.

Dort geben wir als erstes

sudo raspi-config

ein.


Und navigieren zu

Interfacing Options


Im nächsten Menü wählen wir dann

SPI

aus.



Bestätigen mit YES und wählen OK aus. Und schon sind wir wieder bei unserer Shell.

Ob die Aktivierung geklappt hat, können wir ganz einfach überprüfen.

Dazu öffnen wir die config.txt mit

sudo nano /boot/config.txt

und dort muss dann fast ganz unten



dtparam=spi=on 

drin stehen. Wenn ein # davor steht, dann ist die Zeile auskommentiert. Dann einfach das # entfernen.

Mit STRG+O speichern und STRG+X die Datei schließen.

Ein nächster Test zeigt uns, ob der SPI nun wirklich funktionieren wird und wir alles richtig gemacht haben.

Dazu geben wir

lsmod | grep spi

ein und die Ausgage sollte so ähnlich wie diese aussehen.



Um eine möglich einfache Bedienung zu haben, nutzen wir die Erweiterung von Louis Thiery & Connor Wolf.

Um auf unseren SPI Bus nun zugreifen zu können, laden wir uns erstmal deren Bibliotheken herunter.

Dafür einfach folgende Befehle eingeben und warten bis sie erfolgreich ausgeführt wurden.

sudo apt.get install git python-dev --yes
sudo apt-get install python2.7-dev



git clone https://github.com/lthiery/SPI-Py.git



Nun wechseln wir mit

cd SPI-Py

in unseren neuen Ordner und unsere Shell sieht nun so aus


Von dort starten wir nun die Installation mit

sudo python setup.py install



Wir verlassen den Ordner mit

cd ..

und laden uns die nächste notwendige Bibliothek mit

git clone https://github.com/mxgxw/MFRC522-python.git


herunter.

Nun wechseln wir wieder in unseren neu erstellten Ordner mit

cd MFRC522-python 



und bearbeiten dort die MFRC522.py mit

sudo nano MFRC522.py

In Zeile 10 finden wir ein 22 in eine 11 geändert werden muss.




Und in Zeile 113 ändern wir wieder die 22 in eine 11.



Mit STRG+O speichern und mit STRG+X beenden


Nun starten wir den Raspberry Pi mit

sudo reboot 

neu.

Die Installation des RFID/NFC Readers ist damit abgeschlossen.

Um zu Testen einfach wieder mit

cd MRFC522-python

in den Ordner wechseln und

sudo python Read.py

eingeben.

Nun könnt ihr eure Tags vorhalten und bekommt eine Ausgabe.

MPD installieren


Natürlich soll unsere Jukebox auch Musik abspielen können. Das machen wir mit MPD.

Wir ihr das bei dem Raspberry Pi macht, zeige ich euch in dem Video.




Wem die Befehle zu schnell waren, folgt jetzt wie gewohnt die bebilderte Schritt-für-Schritt-Anleitung.

Als erstes geben wir

sudo apt-get install mpd mpc alsa-utils

ein, um die benötigten Pakete zu installieren


 

Nach kurzer Zeit wird eine Bestätigung von uns gefordert, da einfach 

Y

für YES (Ja) eingeben


 und weiter gehts.


sudo modprobe snd_bcm2835

eingeben, um das Modul der Soundkarte zu laden


Da unsere Lautsprecher über den Klinkenschluss am Raspberry verbunden werden sollen, muss die Soundausgabe noch auf diesem mit den Befehl

sudo amixer cset numid=3 1

umgestellt werden.

mit sudo amixer cset numid= 3 2 (für HDMI-Ausgabe) und sudo amixer cset numid=3 0 (automatische Auswahl), kann die Einstellung auch verändert werden.


Wollen wir, dass unsere Lautstärkeinstellungen auch nach dem Neustart immer gleich sind, dann müssen wir folgenden Befehl eingeben

sudo alsactl store


Mit

sudo nano /etc/mpd.conf

die Konfigurationsdatei von mpd aufrufen.


Bei Bedarf die Pfade anpassen. Und mit STRG+O speichern und mit STRG+X schließen.


Wenn die Pfade für die Playlisten und der mp3 nicht geändert wurden, müssen natürlich noch die Berechtigungen gesetzt werden.

Dafür einfach

sudo chmod g+w /var/lib/mpd/music /var/lib/mpd/playlists/
sudo chgrep audio /var/lib/mpd/music /var/lib/mpd/playlists/

eingeben.

Nun noch den Dienst mit

sudo /etc/init.d/mpd

neustarten.


Und die Datenbank aktualisieren.

sudo mpc update

Playlisten den NFC-Tags zuordnen

Als erstes installiert ihr euch FileZilla und startet es.

Nun tragt ihr bei Server oben die IP-Adresse von euren Raspberry Pi ein, Username ist im Standard "Pi" und Kennwort "raspberry". Der Port ist 22 für SFTP.

Dann auf Verbinden und schon seht ihr sämtliche Ordner von eurem Raspberry Pi auf der rechten Seite und auf der linken Seite die Ordner von eurem PC.

Auf dem PC navigiert ihr zu eurer Musik und auf der rechten Seiten nach

/var/lib/mpd/Music

Nun schiebt ihr einfach die Musik von links nach rechts.

Je nachdem wie viele MP3s ihr übertragen wollt, kann dieser Vorgang einige Minuten in Anspruch nehmen.

Währenddessen verbinden wir uns mit Putty um die Playliste zu erstellen.

Sobald du dich eingeloggt, hast gibst du

cd /var/lib/mpd/playlists/

ein


nun erstellen wir eine neue Playliste mit

sudo nano playliste.m3u

Natürlich kannst du auch statt playliste.m3u irgendein anderen Namen geben.

Nun füllst du die Datei nach folgendem Schema.


Ich habe in dem Ordner "music" einen Unterordner "Asterix" mit einem Unterordner "Folge 3_ Asterix als Gladiator" und in dem sind dann sieben mp3s.


Nun mit

STRG+O speichern und mit STRG+X beenden.

Nun gebt ihr in der Konsole folgende Befehle nach einander ein (sofern die mp3-Übertragung erfolgreich abgeschlossen wurde)

mpc stop
mpc clear
mpc update


Nun ist die Playliste und die mp3s dem Raspberry bekannt und wir können mit

mpc load playliste
mpc Play

die Playliste abspielen.
Sollte keine Musik abgespielt werden, müsst ihr die playliste.m3u überprüfen, ob sich ein Tippfehler eingeschlichen hat. Diesen dann korrigieren und wieder die Datenbank mit

mpc stop
mpc clear
mpc update

aktualisieren.

Um nun ein Tag dazu zu nutzen die Playliste abzuspielen, wechseln wir in den Ordner wo unsere Read.py liegt

cd ~
cd /MFRC522-python


Mit

sudo python Read.py

starten wir das Script und halten das Tag davor. Nun wird uns eine ID angezeigt, diese merken wir uns. Das Schema der ID ist 123,456,789,123

drücken

STRG+C

um das Script zu beenden.

nun öffnen wir die Read.py mit

sudo nano Read.py

und ergänzen es am Ende pro Playliste mit folgenen Zeilen

        if uid == [123,456,789,123]:
                os.system("mpc stop")
                os.system("mpc clear")
                os.system("mpc load playliste")
                os.system("mpc play")


das if muss auf derselben Höhe stehen wie das else: in der vorletzten Zeile.

Nun noch den Raspberry Pi mit

sudo nano reboot

neustarten und schon könnt ihr das Tag vorhalten (sofern das Ready.py im Autostart ist) und die passenden Playliste wird abgespielt.


LCD Display


Nun können wir schon Musik hören und unsere Tags werden auch erkannt. Nun ist es an der Zeit, dass unser Display noch mehr kann als nur leuchten.


Da python schon auf unserem Raspberry Pi installiert ist, müssen wir nur ein neues Script schreiben, was mit unserem Display.

Dafür einfach 

sudo nano LCD.py 

eingeben und die Datei mit folgenden Inhalt füllen


#! /usr/bin/python
# -*- coding: utf-8 -*-
import time
import RPi.GPIO as GPIO
import sys
import glob
import subprocess
from RPLCD import CharLCD, cleared, cursor
from RPLCD import Alignment, CursorMode, ShiftMode

GPIO.setwarnings(False)

subprocess_list = subprocess.check_output(('ps', '-A'))
subprocess_list_mpd = subprocess_list.find("mpd")
Dauerschleife = True
framebuffer = [
 '',
 '',
]

def write_to_lcd(lcd, framebuffer, num_cols):
 lcd.home()
 for row in framebuffer:
  lcd.cursor_pos = (1, 0)
  lcd.write_string(row.ljust(num_cols)[:num_cols])
  lcd.write_string('\r\n')
  lcd.cursor_pos = (0, 0)
  lcd.write_string ("%s" %time.strftime("%d.%m.%Y %H:%M"))
  
lcd = CharLCD(cols=16, rows=2, pin_rs=26, pin_e=36, pins_data=[29, 31, 32, 33])
write_to_lcd(lcd, framebuffer, 16)
def loop_string(string, lcd, framebuffer, row, num_cols, delay=0.5):
 padding = ' ' * num_cols
 s= padding + string + padding
 for i in range(len(s) - num_cols + 1):
  framebuffer[row] = s[i:i+num_cols]
  write_to_lcd(lcd, framebuffer, num_cols)
  time.sleep(delay)

while Dauerschleife:
 mpd_info = " "
 if subprocess_list_mpd == -1:
  mpd_info = "Player nicht gestartet!"
 else:
  process = subprocess.Popen('mpc', shell=True, stdout=subprocess.PIPE)
  status = process.communicate()[0]
  statusLines = status.split('\n')
  if len(statusLines) > 2:
   mpd_title = statusLines[0]
   mpd_info = mpd_title
  else:
   mpd_info = "Musik pausiert"
  print mpd_info
  #time.sleep(100)
  loop_string(mpd_info, lcd, framebuffer, 1, 16)

Nun mit STRG+O speichern und mit STRG+X beenden

Mit 

sudo python LCD.py

können wir das Script starten und nun sehen wir in der oberen Zeile das aktuelle Datum und die Uhrzeit und in der unteren Zeile den aktuellen Titel in einer Laufschrift.


Buttons

Nun haben wir unser Radio schon fast fertig. Lediglich unsere Buttons sind noch ohne Funktion.

Aber dafür habe ich mir ein einfaches Python-Script geschrieben, was die notwendigen Aktionen ausführt.

Da das Script nun nicht nur die Buttons steuern soll, sondern auch noch im Display anzeigen soll, ob ein Titel gerade pausiert oder nicht, sind auch noch ein paar Zeilen vom Display dabei.

Zu nächst geben wir wieder

Sudo nano Button.py

ein und füllen es mit folgendem Inhalt.

#!/usr/bin/env python
from RPLCD import CharLCD
import sys
import time
import RPi.GPIO as GPIO
import os
from subprocess import call
#PLAY_SWITCH = 12
#NEXT_Switch = 38
#Prev_Switch = 10
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(38, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(10, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
#lcd= CharLCD(cols=16, rows=2, pin_rs=26, pin_e=36, pins_data=[29, 31, 32, 33])
GPIO.output(3,GPIO.HIGH)
while True:
 #lcd.write_string("%s" %time.strftime("%H:%M" " " "%d.%m.%Y"))
 input_state = GPIO.input(12)
 if input_state == True:
  os.system("mpc toggle")
  time.sleep(2)

 if(GPIO.input(10)):
  os.system("mpc next")
  time.sleep(2)
 if(GPIO.input(38)):
  os.system("mpc prev")
  time.sleep(2)

Mit

sudo python Button.py

können wir das Script starten und nun das Radio bedienen.

Kommentare

  1. Guten Morgen
    Ich wollte Fragen wie man die Karten beschreibt das die zum Beispiel eine Playlist abspielen (zum Beispiel alle alle Folgen einer Hörspielreihe ). Gibts da ein Tutorial für?

    AntwortenLöschen
    Antworten
    1. Hallo Marcel,
      ich bin gerade dabei dazu auch noch eine Anleitung zu schreiben. Weil das ja für die Jukebox sehr interessant ist. :) Ich denke Ende März werde ich damit fertig sein.

      Löschen
  2. Das ist Super dann bedanke ich mich schon einmal

    AntwortenLöschen
  3. Anleitung wäre Spitze - vor allem scheitere ich am Display. Box läuft, aber Display wäre schon fein. Aktuell in der Variante von hailogugo mit vlc - aber da wäre ich flexibel :)

    AntwortenLöschen
    Antworten
    1. Hallo Tom,
      als nächstes wollte ich die Anleitung schreiben wie man den Titel auf dem Display anzeigt. Ich denke in 1-2 Wochen habe ich die Anleitung fertig.

      Löschen
  4. Hallo,
    ich danke dir für deine Anleitung, bin auch noch dran das Ding fertigzustellen.
    Hat mir sehr geholfen und auf jeden Fall inspiriert.

    Bin eben drauf gekommen, dass die Arcade Buttons 3,3V oder max. 5V haben dürfen, ansonsten eigenes Netzteil brauchen. Hab nicht die von GOZAR bestellt (lange Lieferzeit und die Volt stehen auch nicht dabei) sondern welche von Arcade4you, die Dinger haben jedoch 12V, komplett übersehen :(
    Es sind Kabelschuhe 2,8mm von Vorteil, wenn die Buttons angeschlossen werden sollten.

    Übrigens noch bei Punkten an denen ich gehangen habe als Neuling:

    1) es gibt NFC tags zu kaufen, die einen Error (AUTH Error!) beim Scannen vom Mifare Reader ausgeben. Die Dinger sind von NXP. Es scheint einen Unterschied von 4bytes und 7bytes tags zu geben. Jedenfalls erkennt er nur die eigenen, die mitgeliefert werden. Das ist so eine Check-Karte und ein blauer Art Anhänger, die funktionieren.
    Die NXP Tags erkennt er zwar die UID, jedoch mit dem Error danach ist kein Befehl mehr im Anschluss möglich.

    2) beim Bearbeiten vom Read.py unbedingt "import os" in den ersten Zeilen dazuschreiben, ansonsten erkennt er den Befehl nicht mit den playlisten.

    lg Chris

    AntwortenLöschen
  5. Hallo, kann ich hier auch ein RFID-Reader mit USB anschließen? Wenn ja, wo muss ich dann den Befehl ändern, dass er den dann auch erkennt?

    AntwortenLöschen
  6. Hi
    cooles Projekt. Ich verstehe nur nicht ganz, wie du das mit den On-Off-Buttons am Gehäuse gelöst hast. Hast du da im Prinzip die entsprechenden Buttons auf der Platine einzeln "verlängert" oder gibt es die Möglichkeit eines einzigen Power-Buttons.
    VG
    Martin

    AntwortenLöschen
  7. Hallo,
    ich bekomme leider nicht den NFC-Tag mit der Playliste verknüpft. Ist es möglich ein Screenshot vom Beispiel an zu sehen?

    AntwortenLöschen
  8. Hi, wird die Abspielposition gespeichert?

    AntwortenLöschen
  9. Hallo - schliesse mit der Anfrage von Tom an: "Anleitung wäre spitze" :)

    AntwortenLöschen
  10. Ich hatte leider keinen Erfolg mit der If-Abfrage, bin allerdings in einem Forum fündig geworden. Vielleicht hilft es ja dem nächsten, der diese Anleitung liest:

    oben im Play.py-script muss zuallererst das Subprozess-Modul mit
    import subprocess
    eingebunden werden. Die If-Abfrage sieht dann so aus (Einrückungen nicht vergessen):

    if uid[0] == 134 and uid[1] == 97 and uid[2] == 75 and uid[3] == 31:
    print "Karte erkannt"
    subprocess.call("mpc stop", shell=True)
    subprocess.call("mpc clear", shell=True)
    subprocess.call("mpc load lieder", shell=True)
    subprocess.call("mpc play", shell=True)

    AntwortenLöschen
  11. Hallöchen,
    ich bin gerade dabei solch eine Box für meine Kleine als Weihnachtsgeschenk zu basteln. Mit kleineren Problemen klappt auch schon einiges ... aber LCD Display und Buttons sind komplett außen vor, das bekomme ich nicht hin. Ich nehme die Skripte wie angegeben und es gibt Fehlermeldungen die mir rein gar nix sagen.

    Gäbe es die Möglichkeit dass ich Ihnen mal eine E-Mail schreibe?

    Besten Dank

    AntwortenLöschen
  12. Hallo ich habe die Anleitung genau befolgt und bekomme das Display leider nicht zum laufen.
    Gibt es das Skript für das Display als Download?

    AntwortenLöschen
  13. Hallo,
    vielen lieben Dank für die Anleitung - ohne hätte ich mich nicht an das Projekt getraut.
    Hier ein paar evtl. wichtige Ergänzungen:
    - Das PI-Supply funktioniert bei mir in diesem Setup nicht:
    Grundsätzlich macht es was es soll, aber wenn der Status länger als 5 min "off" ist kann man nicht mehr einschalten - erst wenn man das Kabel von der Powerbank abzieht und wieder einsteckt gehts wieder. Grob geraten: Die Powerbank ist selbst "intelligent" und schaltet den Port ab.
    Alternative: Ich habe einen echten Unterbrecherschalter in's USB Kabel eingebaut und eine NFC-Karte für einen sauberen "shutdown now -h" reserviert". Meine 4-Jährige macht das ganz brav...

    - Mifare RC522 Reader
    Im Read.py fehlt import os
    Ausserdem ist die UID der NFC Karten bei mir anders. Beispiel: [121, 244, 125, 86, 166]
    Wenn man
    print "Meine UID:" + str(uid)
    in Read.py eingefügt bekommt man eine bessere Ausgabe als das was das Script sonst auswirft.

    Und eine kleine Erweiterung wenn's interresiert.
    Ich habe sehr viel Kinder Hörbücher auf meiner Box und wollte das sie immer an der letzten Position weiter spielen und nicht von vorn Anfangen.
    Wenn man "save_pos.sh" vor jedem Abspielen einer neuen Playlist ausführt wird die letzte Position in den Ordner der entsprechenden Liste geschrieben.
    "play_pos.sh" kommt dann zum Einsatz wenn die letzte Abspielposition gewünscht ist - ansonsten beleibt "mpc play".

    save_pos.sh:
    #!/bin/bash
    folder=`mpc -f %file%|head -1|awk -F '/' '{printf $1}'`
    echo $folder
    mpc -f %position%|head -1>/var/lib/mpd/music/$folder/lastpos.txt
    mpc |head -2|tail -1|awk '{printf $3}'|awk -F '/' '{print $1}'>>/var/lib/mpd/music/$folder/lastpos.txt

    play_pos.sh:
    #!/bin/bash
    if [ -f /var/lib/mpd/music/$1/lastpos.txt ]
    then
    mpc play `head -1 /var/lib/mpd/music/$1/lastpos.txt`
    mpc seek +`tail -1 /var/lib/mpd/music/$1/lastpos.txt`
    else
    mpc play
    fi

    Anwendungsbeispiel:
    if uid == [80, 219, 139, 187, 187]:
    os.system("/home/pi/scripts/save_pos.sh")
    os.system("mpc stop")
    os.system("mpc random off")
    os.system("mpc clear")
    os.system("mpc load ")
    os.system("/home/pi/scripts/play_pos.sh ")

    AntwortenLöschen
  14. Hi ,
    bin deiner Anleitung gefolgt , jedoch habe ich nun ein Problem.
    Habe den Reader installiert , und rebootet, jedoch komm ich dann an dem Punkt wo ich den Reader testen möchte nicht weiter.
    Wenn ich mit : cd mfrc522-python
    -bash: cd: mfrc522-python: Datei oder Verzeichnis nicht gefunden
    in das Verzeichnis wechseln möchte , sagt er es gäbe das Verzeichnis nicht.
    Über WinSCP habe ich dies kontrolliert , die Ordner gibt es dort.
    Was kann ich noch machen ?
    Viele Grüße
    Mario

    AntwortenLöschen

Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

Raspberry Pi Webseite im Kiosk Modus

Manchmal möchte man einfach, dass auf einem Bildschirm nichts weiter sehen ist als eine Webseite. Die Umsetzung dafür ist sehr einfach. Wir installieren und ein Raspbien. In meiner Anleitung habe ich das Raspbian Buster mit Desktop vom 26.09.2019 genommen. Wenn das fertig installiert ist und SSH aktiviert wurde, können wir uns nun mit dem Raspi verbinden. Als erstes installieren wir Chromium als Browser das geht einfach mit sudo apt-get install chromium-browser In normal Fall sollte dieser Browser bereits installiert sein. Wer keinen störenden Mauszeiger haben möchte, der muss sich noch unclutter installieren. Das geht mit sudo apt-get install unclutter Nun müssen wir dem Chromium-Browser sagen, dass er im Vollbildmodus starten soll und welche Webseite er anzeigen soll. Also führen wir folgenden Befehl aus: sudo nano /etc/xdg/lxsession/LXDE-pi/autostart Nun passen wir die Datei so an, dass diese Informationen alle drin stehen. Die ersten 3 Zeilen deakti...

Datum und Uhrzeit auf LCD Display anzeigen

Manchmal ist es gar nicht so schlecht ein paar Basic-Informationen vom Raspberry Pi auf einem Display zu erhalten. Deswegen zeige ich euch nun wie ihr ein Display am Raspberry Pi anschließt und Datum und Uhrzeit euch darauf anzeigen könnt. Als erstes gehen wir einkaufen. Display Jumperkabel Drehpotiometer Wenn alles geliefert wurde, schließen wir das nach folgendem Schema an. LCD Pin LCD Funktion RasPi Funktion RasPi GPIO-Pin 01 GND GND GPIO Pin 6 02 +5V +5V GPIO Pin 2 03 Contrast GND GPIO Pin 6 04 RS GPIO7 GPIO Pin  26 05 RW GND GPIO Pin  6 06 E GPIO8 GPIO Pin  24 07 Data 0 08 Data 1 09 Data 2 10 Data 3 11 Data 4 GPIO25 GPIO Pin 22 12 Data 5 GPIO24 GPIO Pin 18 13 Data 6 GPIO23 GPIO Pin 16 14 Data 7 GPIO18 GPIO Pin 12 15 +5V GPIO Pin 2 16 GND GPIO Pin 6 Da wir das LCD Display via Python steuern werden, müssen wir als erstes die notwendigen Programme installieren. Das machen wir am besten über SSH und Putty. Wenn wir uns dann...

die neue Junior-Jukebox 2.0

Gerade ist die Anleitung für die Junior Jukebox fertig geworden, und schon habe ich etwas weiter gebastelt und die verbesserte Version 2.0 gebaut. Die beiden Jukeboxen unterscheiden sich in den Punkten: Display  - nun mit Coveranzeige, statt Text Optimierung Read-Script  - bei der alten Version lies sich das Script nach 100 Karten leider nicht mehr starten, weil es einfach zu lang wurde, deswegen werden nun die NFC-Tags beschrieben und das Problem somit gelöst Night-Modus  - das ist ein Zusätzliches Script, dass die Beleuchtung der Buttons nach 18:30 automatisch ausschaltet und die Lautstärke allmählich auf 80% reduziert. Somit ist es nun auch ideal zum Einschlafen geeignet. Und hier nun ein kleines Video wie das Radio nun aussieht. Natürlich findet ihr auch  wieder eine Anleitung zum Nachbauen.