TonUINO

TonUINO, DIE DIY Musikbox (nicht nur) für Kinder

Man nehme einen Arduino, ein MP3 Modul, einen RFID-Leser, eine Micro-SD-Karte, etwas Kabel und Zeugs und einen alten (oder neuen) Regallautsprecher… und schon habt ihr den TonUINO!

In der Zwischenzeit ist viel passiert! Ich habe zusammen mit drei Freunden aus der TonUINO-Community die Leiterkartenpiraten GmbH gegründet. Hier findet ihr viel nützliches Zubehör rund um das TonUINO-Projekt. Das Highlight ist die TonUINO All-in-One Platine. Hier müsst ihr nicht mehr löten, könnt einen LiFePo Akku (=sicher!) anschließen, es gibt direkt einen Kopfhöreranschluss, und, und, und …

Warum TonUINO

Ich habe lange nach einer günstigen und vor allem komfortablen Lösung für eine Kindermusikbox gesucht. Es gibt natürlich die kommerziellen Lösungen und schon einige DIY Projekte im Netz. Die kommerziellen Lösungen sind aber für meinen Geschmack zu unflexibel und die meisten DIY Lösungen basieren auf einem Raspberry Pi und sind in der Regel recht klobig. Ausserdem konnte bisher keine dieser Lösungen eine clevere Lösung für das Programmieren der RFID-Karten bieten.

Der DFPlayer Mini besitzt bereits einen kleinen Mono-Verstärker. Damit könnt ihr einen passiven Lautsprecher direkt antreiben und ich finde es klingt sogar richtig gut! Wem das nicht reicht: das Modul gibt zusätzlich noch ein Stereosignal aus. Wenn ihr noch einen kleinen Verstärker einbaut könnt ihr damit noch mehr Klang rausholen und vor allem zwei Boxen als Stereo-Paar verwenden.

Der TonUINO nimmt so wenig Platz weg, ihr könnt ihn zum Beispiel direkt in einen passiven Regallautsprecher einbauen. Ansonsten sind eurer Kreativität keine Grenzen gesetzt. Ich bin gespannt auf was für Ideen ihr kommt.

Ein weiterer Vorteil des Arduinos im Vergleich zu einem Raspberry Pi ist, dass der Arduino in 1-2 Sekunden startklar ist und auch nicht heruntergefahren werden muß um ihn auszuschalten. Er braucht deutlich weniger Strom und kann daher super über ein Akku-Pack betrieben werden.

Karten bedrucken

Weil immer wieder Nachfragen zu dem Video kamen: Die Karten im Video habe ich mit einem Canon Selphy Drucker und passenden Stickern bedruckt. Die Sticker passen genau auf die Karten und sind wasserfest und sehr langlebig.

Wer keinen Fotodrucker hat kann die Fotosticker von Foto Paradies versuchen. 4 Sticker im Format von 57 x 82 mm kosten 1,95 Euro. Bis auf ein paar mm sollten die auf die RFID Karten passen.

Jürgen hat noch einen Tipp gehabt: wer auf einem „normalen“ Drucker Etiketten drucken möchte sollte sich die Universal Etiketten im Visitenkartenformat 5028 von Herma mal anschauen. Ist auf jeden Fall die günstigste Alternative.

Um aus einem quadratischen Cover ein für die Sticker passendes Format zu generieren habe ich ein kleines Online-Tool erstellt.

Benötigte Komponenten


AZ-Delivery war so nett ein „TonUINO Set“ bestehend aus Arduino Nano, DFPlayer Mini und RFID Kit RC522 sowie 10 extra RFID Karten zum absoluten Sonderpreis von 12,99 Euro anzubieten.  AZ-Delivery ist für mich die beste Adresse um schnell und günstig an Arduinos und andere Bauteile zu kommen.


Einige werden sagen, mein Lautsprecher sähe häßlich aus… und da haben sie nicht ganz Unrecht. Allerdings klingt er wirklich top. Vor allem wenn man bedenkt, dass man ihn quasi für 22 Euro bekommt (Setpreis 44 Euro). Sie klingen für meinen Geschmack ausgewogen und auch die Tiefen kommen gut durch. Man spart auch die Arbeit ein eigenes Gehäuse zu entwerfen was ja auch wieder Zeit und Geld kosten würde. Das Gehäuse kann sicher mit etwas Fantasie noch etwas kindgerechter gestaltet werden.

Ich habe alle möglichen „Bastellautsprecher“ probiert und die funktionieren natürlich ebenfalls sehr gut. Vor allem wenn TonUINO in ein sehr kleines Gehäuse oder Spielzeug eingebaut werden soll ist der Klang vielleicht ja auch nur zweitrangig. Mir fehlten meistens die Tiefen. Preislich liegen solche Lautsprecher zwischen 50 Cent und 10 Euro. Aber wie gesagt, guter Klang hat eben auch seinen Preis.

Passendes Zubehör

Die Links zu Amazon sind Affiliate-Links. Wenn ihr darüber bestellt unterstützt ihr mein Projekt. VIELEN DANK dafür!!!

TonUINO Platine

Die Platine verbindet alle Komponenten miteinander

Die TonUINO Platine erleichtert euch den Zusammenbau und macht es natürlich etwas „professioneller“. Ihr könnt aber auch genauso gut einfach eine Lochrasterplatine oder direkt Jumperkabel (female-female) verwenden um alle Komponenten miteinander zu verbinden. Vor allem wenn sehr wenig Platz in euerer TonUINO Box ist sind Jumperkabel super.

 

Arduino Nano und DFPlayer Mini werden entweder direkt auf die Platine gelötet oder ihr könnt Buchsenleisten verwenden und so die Komponenten später wieder herausnehmen. Insgesamt können bis zu 8 Knöpfe angeschlossen werden – auch wenn mein Programm aktuell nur 3 verwendet. Lautsprecher können genau wie die Knöpfe an die Stiftleiste angeschlossen werden. Ebenso gibt es dort die Ausgänge für einen Verstärker.

Die Platine gibt es nun im Onlineshop der Leiterkartenpiraten! Dort findet ihr unter anderem die hier beschriebene DIY Platine (TonUINO Classic). Beachtet bitte die Produktbeschreibung im Shop.

Die neue Platine samt Zubehör.

Zusammenbau

Ja, ihr braucht einen Lötkolben und etwas handwerkliches Geschick. Letztes ist bei mir aber auch nur minimal vorhanden und auch am Lötkolben bin ich nicht sonderlich gut. Habt also keine Angst dass der Zusammenbau sonderlich kompliziert ist. Dank der TonUINO Platine kann man nicht viel falsch machen.

Um Platz und Zeit zu sparen habe ich bisher immer Arduino Nano und DFPlayer Mini direkt auf die Platine gelötet. Als Anschlüsse für das RFID Modul, die Lautsprecher und die Knöpfe habe ich Stiftleisten eingelötet. Es gibt vier Anschluss-PINs für die Audioausgabe. + und – kommen vom 3 Watt Mono-Verstärker des DFPlayer Moduls und L und R können verwendet werden um einen Verstärker anzusprechen. Dann halt in Stereo und mit so viel Watt wie ihr einbauen möchtet.

Ihr könnt die Platine entweder mit Buchsenleisten bestücken um die Hardware wieder sicher herausnehmen zu können …
… oder Arduino und DFPlayer direkt auf die Platine löten – so kommt ihr von unten besser an die Pins vom Arduino heran (für Mods) und es ist etwas platzsparender

So klein, passt direkt in einen passiven Regallautsprecher

Schaltplan

Theoretisch könnt ihr die Pin-Belegung auch im Sketch nachlesen aber so dürfte es einfacher sein.

Wer seinen TonUINO selber verdrahten möchte findet hier alle nötigen Infos.
Mit Platine wird es einfacher; Stromversorgung per USB Kabel mit Netzteil oder Powerbank; Wichtig: der äußerste Pin für den RFID Reader ist der 3v3 Pin

Firmware aufspielen

Um die Firmware zu kompilieren und auf den Arduino aufzuspielen braucht ihr die Arduino IDE. Diese könnt ihr auf arduino.cc herunterladen.

Je nach Arduino benötigt ihr einen Treiber damit er via USB erkannt wird. Die meisten günstigen Arduino Klone verwenden den CHG340G/CHG341G Chip. Auf der Herstellerseite des Chips wch.cn (Google Translate) findet ihr den passenden Download für Windows, macOS oder Linux. Installiert bitte den passenden Treiber für euer Betriebssystem und verbindet den Arduino via USB Kabel mit Eurem Rechner.

Nach der Installation solltet ihr die von mir verwendeten Bibliotheken installieren. Dies geht direkt in der IDE über Sketch -> Bibliothek einbinden -> Bibliotheken verwalten.

Bibliotheken können einfach gesucht und dann installiert werden.

Ihr benötigt folgende Bibliotheken für Euren TonUINO:

  • MFRC522
  • DFPlayer Mini Mp3 by Makuna
  • JC_Button

Nun müsst ihr den Sketch TonUINO.ino aus meinem GitHub Repository mit der Arduino IDE öffnen.

Um den Sketch erfolgreich auf Euren Arduino übertragen zu können müsst Ihr nur noch ein paar letzte Einstellungen vornehmen.

  • Werkzeuge -> Board : „Arduino Nano“
  • Werkzeuge -> Prozessor : „ATmega328P (Old Bootloader)
  • Werkzeuge -> Port : „/dev/cu.wchusbserial???“ (je nach Betriebssystem könnte es anders aussehen)

Zuletzt drückt ihr den Hochladen-Button und die Firmware wird auf den Arduino geladen und macht ihn zum TonUINO.

Struktur auf der SD-Karte

Ihr könnt die Unterordner 01 bis 99 auf der SD-Karte anlegen. In jeden dieser Ordner könnt ihr dann bis zu 255 Dateien ablegen. Sie heißen entsprechend 001.mp3 bis 255.mp3.

Bitte lasst weder bei den Ordnern noch bei Dateinamen Lücken, damit würde die Software nicht zurecht kommen!

Zusätzlich gibt es noch den Ordner /mp3. Hier werden einige Dateien für den Konfigurationsdialog abgelegt. Den Ordner findet ihr zusammen mit einer Liste in einem GitHub Repository (siehe Quellcode). Vielleicht möchtet ihr ja auch hier kreativ werden und eigene Sprachdateien ablegen.

Wichtiger Hinweis!!!

Das DFPlayer Mini Modul ist sehr zickig wenn es um die SD-Karte geht. Dort dürfen keine unnötigen Dateien herumliegen wie sie zum Beispiel von MacOS dort abgelegt werden (Spotlight und Co.). Besser ihr nehmt Linux oder Windows um die SD-Karte zu bespielen.

Unter MacOS könnt ihr Notfalls versuchen mit folgendem Befehl aufzuräumen:

$ dot_clean /Volumes/SD-Karte

Quellcode

Der Sourcecode steht auf meinem GitHub Repository bereit und unterliegt der GPL Lizenz. Wenn ihr Erweiterungen oder Verbesserungen habt würde ich mich sehr freuen wenn ihr mir diese zurück schickt.

An dieser Stelle sei erwähnt, dass dies mein erstes Arduino Projekt ist und ich das letzte mal vor 20 Jahren etwas in C programmiert habe. Alles funktioniert und ist absichtlich sehr simpel gehalten.

Change Log

Version 2.0 (26.08.2018)

  • Lautstärke wird nun über einen langen Tastendruck geändert
  • bei kurzem Tastendruck wird der nächste / vorherige Track abgespielt (je nach Wiedergabemodus nicht verfügbar)
  • Während der Wiedergabe wird bei langem Tastendruck auf Play/Pause die Nummer des aktuellen Tracks angesagt
  • Neuer Wiedergabemodus: Einzelmodus
    Eine Karte kann mit einer einzelnen Datei aus einem Ordner verknüpft werden. Dadurch sind theoretisch 25000 verschiedene Karten für je eine Datei möglich
  • Neuer Wiedergabemodus: Hörbuch-Modus
    Funktioniert genau wie der Album-Modus. Zusätzlich wir der Fortschritt im EEPROM des Arduinos gespeichert und beim nächsten mal wird bei der jeweils letzten Datei neu gestartet. Leider kann nur der Track, nicht die Stelle im Track gespeichert werden
  • Um mehr als 100 Karten zu unterstützen wird die Konfiguration der Karten nicht mehr im EEPROM gespeichert sondern direkt auf den Karten – die Karte muss daher beim Anlernen aufgelegt bleiben!
  • Durch einen langen Druck auf Play/Pause kann eine Karte neu konfiguriert werden
  • In den Auswahldialogen kann durch langen Druck auf die Lautstärketasten jeweils um 10 Ordner oder Dateien vor und zurück gesprungen werden
  • Reset des MP3 Moduls beim Start entfernt – war nicht nötig und hat „Krach“ gemacht

FAQ

Frage: Ich bekomme jede Menge Meldungen wenn ich den Sketch kompiliere.
Antwort: Das ist „normal“. Es handelt sich nur um Warnungen und das Programm wird ohne Probleme auf den Arduino übertragen.

Frage: Ich bekomme nur Hieroglyphen im Debugger angezeigt.
Antwort: Bitte den Debugger auf „115200 Baud“ und „Sowohl NL als auch CR“ umstellen.

Frage: Ich kann einige Karten nicht beschreiben. Es kommt immer die Fehlermeldung: „Oh, das hat leider nicht geklappt.“
Antwort: Bisher konnten alle die das Problem hatten es lösen indem sie entweder ein anderes Netzteil für den Arduino verwendet haben oder den Abstand zwischen RFID-Modul und Karte vergrößert haben oder einfach etwas dazwischen gelegt haben.

Frage: Einige Dateien werden nicht abgespielt.
Antwort: Es kann sein, dass das Dateisystem der SD-Karte (FAT) ein Problem hat. Da hilft neu formatieren und die Dateien neu aufspielen.
Marcel hatte noch den Tipp, dass man auch 64 GB Karten mit dem Tool H2format und Diskpart als FAT32 formatieren kann.

Frage: Der DFPlayer „macht nichts“.
Antwort: Bitte prüft den eingelöteten Widerstand. Es sollte ein 1K Ohm Widerstand (Farbcode z.B.: Braun, Schwarz, Schwarz, Braun, Braun) sein.

Frage: Obwohl ich den Treiber installiert habe wird der Arduino nicht erkannt.
Antwort: Einige Kabel können nur zum Laden verwendet werden. Versuch daher bitte ein anderes USB-Kabel.

Gallery

Ich bin einfach überwältigt von eurer tollen Resonanz auf mein Projekt und freue mich über jeden der es nachbaut.

TonUINO Case aus dem 3D Drucker

 

Reinhold hat sich einen eigenen Case für seinen TonUINO entworfen und ich finde das sieht richtig schick aus. Als Lautsprecher kommt ein Visaton FR 10 HM zum Einsatz.

Ihr könnt seine STL Dateien auf Thingiverse herunter laden!

LED- und IR-Mod von Stephan

Stephan war einer meiner ersten „Beta-Tester“ und hat sich eine komplett eigene Firmware gebaut. Ihr könnt diese ebenfalls auf GitHub finden.

„CubieKid“ von Jens

Jens hat ein tolles Gehäuse entworfen und auf dem MaXYposi aus der Make: hergestellt. In seinem GitHub Repository erfahrt ihr mehr!

Upcycling

Christophers TonUINO

Für die ganz Kleinen

 

Daniel hat seinen TonUINO in einen alten Spielwürfel gebastelt. Er hat sogar noch einen LiPo Akku mit Ladeelektronik reinbekommen. Als nächstes wird er noch Neigungsschalter statt der Taster probieren.

Gleich zwei Gehäuse aus dem 3D-Drucker von Martin

.

Martin hat bereits zwei verschiedene Gehäuse für seine Tochter entworfen. Das untere verfügt auch über einen Akku und man kann die SD-Karte von außen erreichen. Die Pläne findet ihr auf Thiniverse!

Christians 6 jähriger löst ab jetzt jeden Fall

Christian hat auch tolle Box gebaut. Er hat eine Powerbank eingebaut (Zitat: „Läuft ewig“) und das USB-Kabel für die Stromversorgung schaltbar gemacht.

TonUINO im Schafspelz

Auch im Kinderzimmer von Klemens Sohn hat seine Box schon einen Ehrenplatz. Dank Mamas Nähkünsten ein echter Hingucker.

Ich und mein Holz

Bastian zeigt, dass es nicht immer ein Gehäuse aus dem Lasercutter oder 3D-Drucker sein muß. Alles schön übersichtlich und sauber in einem Holzkasten verstaut.

Pretty in Pink

Hier seht ihr die Box von Sönkes Tochter. Die dreijährige hat viel Spaß damit.

IKEA DRAGAN Bambusbox von Johannes

Johannes hat so einiges in die Box seines Sohnes gepackt: LiPo-Akku, LED, Ladeelektronik und Boost-Konverter.

Box von Stefan

Seine beiden Töchter (2 und 4 Jahre) sind begeistert.

Mikes Box

Mike hat einen alten PC-Lautsprecher umfunktioniert und eine Powerbank eingebaut. Auch er sagt: „Sein Kleiner liebt das Teil.“

Stefans Geburtstagsgeschenk

Auch Stefan hat eine tolle Box für seine Tochter gebaut! Als Lautsprecher hat er einen Visatron BF 45S 4 Ohm verbaut und verwendet Wemos 18650 Battery Shield.

Nochmal was aus Holz von Markus

Markus hat eine 14x14x14cm Box aus massiver Buche gebaut. Als Lautsprecher kommt der Visaton FR 10 HM mit der passenden Abdeckung zum Einsatz.

Tivoli Albergo Stereo Speaker

Wer schnell ist kann diesen schönen  Tivoli Albergo Stereo Speaker  noch zum Sonderpreis von 39 Euro anstelle der üblichen 99 Euro ergattern. Danke an Dennis für den Link und das Foto. Sieht echt sehr edel aus!

TonUINO von Ingrid

Eine schöne Box von Ingrid mit USB-Buchse und Power-Taste. Für die Holzfiguren hat sie Abziehbilder auf das Holz übertragen.

Extras

Um aus einem Multi-Track-MP3 eine einzelne MP3 Datei für den Hörspielmodus zu machen hat Bastian das Tool Mp3Wrap empfohlen.  Ihr könnt es auf der Seite für Windows und Linux herunterladen. Unter macOS könnt ihr es via Homebrew installieren.

Alternativ könnt ihr dies zumindest unter macOS oder Linux mit diesem Script, ffmpeg und id3v2 tun. Das klappt solange die MP3s die Angabe Track x von Y in den ID3 Tags haben und die Dateinamen den Track ebenfalls enthalten.

Die Dateien werden in eine 128 kb MP3 Datei recodiert. Wer das nicht möchte sollte „-acodec copy“ anstelle von „-acodec libmp3lame -b:a 128k“ verwenden. Dann werden die Dateien nicht neu encodiert sondern einfach nur aneinander gehängt ohne dass die Qualität darunter leidet (empfohlen).

#!/bin/bash

for dir in *; do
    if [ -d "${dir}" ]; then
    
    MP3=`ls "$dir/"*mp3 | head -n 1`
    TRCK=`id3v2 -l "$MP3" | grep TRCK | sed -e 's/.*: .*\///g'`
    ACT=`ls -l "$dir/"*.mp3 | wc -l`
    
    string=""
    cd "$dir"
    for i in `seq 1 $TRCK`; do
	FILE=`ls  $i\ -\ *mp3`
	string="$string|$FILE"
    done

    string=${string:1}

    ffmpeg -i "concat:$string" -acodec libmp3lame -b:a 128k "../$dir.mp3"
#    ffmpeg -i "concat:$string" -acodec copy "../$dir.mp3"

    cd ..
    fi
done

Alternativ könnte es auch so klappen (einstellige Tracks müssen mit einer führenden 0 benannt sein (01,02,03, …). Eventuell müsst ihr mit dem Suchmuster „*$i.*mp3“ etwas herum experimentieren:

#!/bin/bash

for dir in *; do
    if [ -d "${dir}" ]; then
    
    ACT=`ls -l "$dir/"*.mp3 | wc -l`
    
    string=""
    cd "$dir"
    for i in `seq 1 $ACT`; do
	i=$(printf "%02d" $i)
	FILE=`ls *$i.*mp3`
	string="$string|$FILE"
    done

    string=${string:1}

    ffmpeg -i "concat:$string" -acodec libmp3lame -b:a 128k "../$dir.mp3"

    cd ..
    fi
done

Ähnliche Projekte

  • ghmartin77/KidsMP3Player: sehr gelungene  Bauanleitung für einen komplett eigenen Kinder MP3 Player jedoch mit vielen Knöpfen anstelle der RFID Karten – verwendet ebenfalls den DFPlayer mini aber einen ATTiny85 anstelle des Arduinos
  • PHONIEBOX: RFID Jukebox mit einem Raspberry Pi – 100% Plug and Play, kommt komplett ohne Löten aus, dank WLAN sind auch Radiostreams und Podcasts abspielbar.
  • TheNitek/RfidShelf: Claus hat eine ganz ähnliche Lösung direkt in ein Ikea Regal eingebaut. Er verwendet einen Esp8266 bzw. NodeMCU und ein anderes MP3 Modul (VS1053).
  • Put’n’Play Cube: Bei diesem Projekt kann man sehr schön sehen was alles möglich ist. „Up to eleven!“
  • BReaBox II: Stefan hat das  Nostalgieradio TERRIS NRB 264  mit einem Raspberry Pi Zero in einen Hörbuch Player mit IR Fernbedingung umgebaut

TonUINO unterstützen

Mein Projekt soll natürlich in erster Linie Spaß machen. Mir hat es das von der ersten Idee, über diverse Prototypen, bis hin zum fertigen „Produkt“.

Wie ihr euch sicher denken könnt habe ich viele verschiedene Wege probiert und daher nicht ganz wenig Zeit aber eben auch Geld in das Projekt gesteckt.

Wenn ihr mich unterstützen wollt könnt ihr dies auf folgenden Wegen tun:

  • Feedback geben, Bugs suchen, andere auf das Projekt aufmerksam machen
  • Am Quellcode weiterentwickeln
  • Komponenten über die Affiliate Links bestellen
  • Die „TonUINO Platine“ bei mir bestellen
  • Wer gerne etwas in meinen digitalen Hut schmeißen möchte kann dies über PayPal tun

Medien

TonUINO wurde in einem Make: Artikel auf heise.de vorgestellt!
ifun.de hat bereits einen kurzen Artikel über das TonUINO Projekt geschrieben und wird noch einen Erfahrungsbericht nachliefern.

 

126 Antworten auf „TonUINO“

  1. Hi Thorsten,

    ein super Projekt, vielen Dank auch noch mal für deine Arbeit, den Bausatz und deine ganze Unterstützung.

    Ich als Papa hatte beim basteln mindestens so viel Spaß wie unsere Tochter jetzt beim spielen und hören!

    Grüße,

    Rey

  2. Hallo Thorsten,
    super Projekt !!!

    Nachdem mein Neffe letzen Sonntag eine Toniebox bekommen hat, hatte Ich sofort das verlangen das für meinen Sohn selber zu bauen. Die Idde mit dem Arduino und DFPlayer ist super, sowas wie den DFPlayer hatte ich bis dato gar nicht auf dem Schirm. Da Ich alles bis auf DFPlayer, SD Card und ein par TAGs alles zuhause hatte war die Entscheidung deine Version nach zu bauen relativ einfach 🙂

    Am Donnerstag um 21 Uhr kam dann endlich der DFPlayer und 3,5h später war die Box fertig. Der Nachbau war wirklich nicht schwer und es sollte sich keiner sorgen machen das er das nicht hin bekommt.

    Was mir jetzt aufgefallen ist, ist das du im Change Log oben die erweiterte Funktion der Lautstärketasten beschreibst, was aber im Quellcode auf GitHub nicht enthalten ist.

    Ich habe jetzt noch ein paar Brocken in der Bastelkiste und werde mal versuchen das in das Projekt zu integrieren.
    1. Anstelle des Arduino eine ESP8266 NodeMCU und damit dann ein Webinterface für die Jukebox zur Fernsteuerung, Kartenverwaltung und Equalizer einstellung oder sowas
    2. 3-Achs Beschleunigungssensor um Lageabhängige aktionen auszulösen, ähnlich der Toniebox.

    Liebe Grüße
    Chris

    1. Hallo Chris,

      die neue Version ist jetzt auf Github. Ich musste noch den Hörbuch-Modus testen. NodeMCUs habe ich auch einige hier liegen. Allerdings bieten die nur die 3,3 Volt. Ich habe beim DFPlayer etwas Probleme gehabt wenn der keine 5 Volt bekommt. Im Prinzip hättest du die ja aber durch die USB Stromversorgung – müsste man dann dort abzweigen und aufpassen, dass man genug Wiederstände in die Leitungen zwischen DFPlayer und ESP8266 setzt.

      … und natürlich danke für dein Feedback. Ich würde mich noch sehr über Fotos der fertigen Box für die Galerie freuen!

    2. Ich finde das Projekt auch super!!!

      @Christopher: Hast Du das Projekt mit dem ESP8266 umgesetzt???

      Wenn ja könnte man dann ja noch zusätzlich Internetradiosender einbinden (aktivieren des jeweiligen Streams mit der RFID Karte)

      Liebe Grüße

      Danny

      1. Hallo Danny,
        musste den Plan mit dem ESP8266 verwerfen da nicht alle IO verwendet werden konnten. Ich habe jetzt einen ESP32 genommen und bin mit der Umsetzung fast fertig, es fehlen noch ein paar Feinheiten damit alle Funktionen die Ich mir vorgestellt habe auch funktionieren. Wie Thorsten schon geschrieben hat funktioniert der DFPlayer aber nur mit 5V was aber kein größeres Problem ist.

        Zusätzliche Funktionen:
        -Web Interface zum:
        1. Fernsteuern (Laut, Leise, Play, Stop…)
        2. Ambilight an/aus und Farbe ändern (WS2812 LEDs, das ganze kommt in einen milchigen Kunsstoffwürfel)
        3. Timer zum Ein- und Ausschalten, wahlweise mit Sonnenauf- / untergangs Simulation (100 Schritte Farbverlauf über 1800 Sekunden)
        4. Einstellen des DFPlayer Equalizer
        5. Ändern von Karten

        Sobald Ich fertig bin wollte Ich Thorsten den Quellcode zuschicken, aktuell Arbeite Ich noch an den Punkten 3 (Sonnensim.) und 5.

        Liebe Grüße
        Christopher

  3. super sache
    ich war schon eine weile daran sowas zu bauen. ich habe zum ein und ausschalten eine flipflop schaltung. dadurch kann sich der arduino nach einer gewissen zeit ohne nutzung selbst ausschalten. wenn du das mal noch einfügen könntest wäre super😊

  4. Mir gefällt dieses Projekt sehr gut! Ganz vielen Dank für die geleistete Arbeit und Anregungen. Bevor ich mich an den Nachbau im eigenen Gehäuse mache habe ich aber noch Fragen hinsichtlich der Stromversorgung:
    Wie hoch ist die Stromaufnahme im Durchschnitt (Standby?)
    Wie wird das Gerät ein-/ausgeschaltet?
    Läuft die Schaltung auch mit 3x 1,5V NiMH Zellen in Reihe?

    Danke schonmal.

    Jens

    1. Hallo Jens,

      die Stromversorgung läuft ganz einfach über das USB Kabel des Arduinos und entweder ein USB-Netzteil oder eine Powerbank. Darüber werden dann alle Komponenten versorgt. Die Stromaufnahme ist sehr gering. Ich hatte mal gemessen und kam auf 500 mAh in 24h Dauerwiedergabe – im Standby halt noch deutlich weniger.

      Der Ansatz beim Entwurf des Projekts war alles so einfach wie möglich zu halten. Wenn man in Richtung Betrieb mit Batterien oder Akkus geht muss man auf sehr vieles achten. Meist bieten die keine konstante Spannung sondern die Spannung nimmt mit schwindender Ladung weiter ab. Das Verhalten ist je nach Batterie oder Akku-Typ unterschiedlich.

      Schau mal ins KidsMP3Player-Projekt welches ich oben verlinkt habe. Die Lösung für die Spannungsversorgung kannst du von dort übernehmen. Theoretisch kann man sogar weiterhin das TonUINO Board verwenden da ja alle Pins vom Arduino auch direkt von oben oder unten direkt an der Stiftleiste angesprochen werden können (in dem Fall dann VIN und GND).

      1. Hallo Thorsten
        Bin absoluter Fan deiner Dokumentation
        ich möchte dieses Projekt als Schülerprojekt machen, muss es aber selber mal erst nachbauen. Bei einer Ausgabe von max 3W für den Lautsprecher und 5V Input für den Arduino komme ich auf 600mA. Das wäre ja ein bisschen mehr als der Arduino eigentlich liefern können sollte. Bin ich paranoid wenn ich befürchte, dass der Arduino schaden nehmen könnte?

        Ich habe mir den Nachfolger des dfplayer mini gekauft: MP3-TF-16P

        1. Hallo Stefan, ich bin ja nicht der erste der auf die Idee gekommen ist einen DFPlayer Mini an den 5V vom Nano anzuschließen, und bisher habe ich nie gehört oder gelesen dass da was schief gegangen wäre.

          Aber da ja ein USB-Netzteil verwendet wird sollte doch der Spannungsregler auf dem Nano gar nicht verwendet werden – ich glaube der wäre eher das Problem wenn man zu viel Leistung ziehen will.

          Ausserdem wären die 3 Watt ja nur das Maximum bei voller Lautstärke – die wirst du eh nie einstellen wollen bzw. man könnte die auch im Sketch begrenzen.

  5. Hallo Thorsten,

    sehr schönes Projekt!!! Brilliante Idee, die Elektronik direkt in ein fertiges Lautsprechergehäuse einzusetzen 🙂
    Habe letztes Jahr auf ähnlicher technischer Basis ebenfalls einen Player gebastelt. Falls Du mal vorbeischauen magst: https://github.com/ghmartin77/KidsMP3Player/

    Habe auf der Seite Dein GitHub-Repository verlinkt, falls jemand dort aufschlägt, aber einen Player mit RFID-Reader sucht.

    Viele Grüße
    ghmartin77

    1. Hallo Martin,

      das Kompliment kann ich nur zurück geben. Deine Box sieht toll aus und man könnte vieles davon in eine selbstgebaute TonUINO Box übernehmen.

      P.S.: das mit dem fertigen Lautsprecher war mehr ein Versehen. Ich hatte eine davon zu Testzwecken mal an den DFPlayer gepackt und war vom Klang echt überrascht. So kam dann eins zum anderen.

  6. Fehlt nur noch ne kleine Android App um die MiFare Karte „bequem“ zu beschreiben. Ich mach das immer mit den MiFare Classic Tools, ist aber etwas umständlich.

    1. Hallo Daniel,

      dass die Box die Karten selbstständig beschreiben kann finde ich eigentlich besser als eine Android App 😉
      Die MiFare Classic Karten werden auch nicht von vielen Handys unterstützt oder hast du da andere Erfahrungen?

      Was ich jedoch gerne noch nachliefern würde ist ein Sketch um ein „Massenbeschreiben“ von Karten zu ermöglichen. Wobei man das sogar auch mit der Box hinbekommen würde… mal sehen wo ich das verstecke, eventuell über eine der geplanten Admin-Karten. Nach dem Motto: „Mach mir doch mal bitte eine Karte für jede Folge in Ordner XY“. Die Karten bekommt man ja im 100er Pack für 30 Euro. Man sollte sie nur VORHER beschriften oder bekleben.

      1. Meine Handys können das (OPO und Nokia 6). Und ich nutze die Mifare Classic Tools, aber ich habe auch USB reader. Ansonsten könnte man ja auch die NFC Tags nehmen, die sollten von allen NFC Handy lesbar/beschreibbar sein. Du hast schon recht, Mifare Classic ist da teilweise etwas kompliziert und für die paar Byte auch etwas überdimensioniert 😉 Aber dann müsste man erst mal das Programm anpassen so das beide Tags verwendet werden können.

        1. Hallo Daniel,

          ich habe neben den Mifare Classic noch einen Ultra Light Aufkleber den ich gerne Testen würde, bzw alternative Karten.
          Hast du schon etwas ausprobiert mit anderen Typen?
          Soweit ich mal Abends etwas Zeit finde, probiere ich nochmal etwas rum. Hab bisher den originalen 2.0 drin und bin von der Umsetzung erstmal begeistert.

          Bzgl meiner Umsetzung:
          Ich habe meine TonUnio Box gestern Fertig gestellt, habe alles in eine Bluetooth Box (mit AUX) eingebaut. Ich hatte das Problem dass diese innen doch recht klein ist und keine 5V verfügbar waren. Jetzt klappt aber alles und nutze die Ladeeinheit der Bluetooth Box.

      2. Hallo Thorsten.

        Erst einmal vielen Dank für dieses wirklich tolle Projekt, ein Super Idee! Ich bin gerade dabei es für meinen kleinen Neffen nach zu bauen.
        Bis jetzt hat auch alles soweit geklappt, die Elektronik funktioniert, zumindest mit der Karte und dem Anhänger, welche dem RFID-Set bei liegen.

        Nun habe ich mir bei Conrad/Völkner MIFARE RFID-Karten 1k von MarkerFactory gekauft, da mir die 100 Stk. erstmal zuviele waren.

        Nun funktionieren diese leider nicht, bzw. vielleicht hast du oder jemand anderes eine Idee was ich probieren könnte um sie doch noch zum Laufen zu bekommen, für jede Hilfe wäre ich sehr dankbar.

        Folgendes Problem:
        Neue Karte wird erkannt, serielle Ausgabe sieht normal aus (im Vergleich mit der funktionierenden)

        Card UID: 40 FA 2A A4
        PICC type: MIFARE 1KB
        Authenticating using key A…
        Current data in sector:
        (Daten spare ich mir jetzt)

        Reading data from block 4 …
        Data in block 4:
        54 65 6E 67 20 42 6F 00 00 00 00 00 00 00 00 00

        Beim speichern der Einstellungen dann folgende Fehlermeldung:
        Writing data into block 4 …
        13 37 B3 47 01 02 02 00 00 00 00 00 00 00 00 00
        MIFARE_Write() failed: A MIFARE PICC responded with NAK.

        Im Voraus vielen Dank für jede Hilfe.
        Gruß Marc

        1. Hallo Marc,

          was mir direkt auffällt: eigentlich sollte Block 4 vor dem anlernen leer sein. Bei dir steht aber was drin und eventuell ist das mit einem anderen Key B (schreiben) gesperrt als bei den wirklich leeren Karten die z.B. beim RFID Reader dabei waren.

          Du könntest mal probieren im Sourcecode einen anderen Block auszuwählen. Aber Achtung: jeder 4te Block (3,7,11,…) DARF NICHT BESCHRIEBEN WERDEN!

          Im Code also folgendes ändern:
          aus:

          byte sector = 1;
          byte blockAddr = 4;
          byte trailerBlock = 7;

          machst du:
          byte sector = 2;
          byte blockAddr = 8;
          byte trailerBlock = 11;

          oder

          byte sector = 3;
          byte blockAddr = 12;
          byte trailerBlock = 15;

          und so weiter…

          1. Hallo Thorsten,

            vielen Dank für deine Hilfe, ich habe das Problem inzwischen anders gelöst.
            Ein Umstellen auf „Key A“ zum Schreiben löst das Problem. Offenbar sind die Bereiche bei Verwendung von „Key B“ bei einigen Karten schreibgeschützt (reine Vermutung).
            Mittlerweile ist die Box auch fertig und zu Weihnachten verschenkt und wird auch gut angenommen.

  7. Hallo Thorsten!

    Danke für die tolle Projektidee! Ich hab in den letzten Tagen einen Tonuino für meinen zweijährigen Sohn gebaut.

    Als Gehäuse habe ich – wie ghmartin77 – eine IKEA DRAGAN Bambusbox (die kleine mit 10x15x11cm) und darin einen kleinen Deckeneinbaulautsprecher verbaut.
    Eigentlich wollte ich eine kleine Powerbank im Gehäuse verbauen, aber von denen, die ich da hatte, konnte keine gleichzeitig geladen werden und dabei Strom liefern. Deswegen habe ich eine kleine Schaltung gebaut, bestehend aus LiPo-Lader (TP4056), Boost-Konverter (MT3608) und einem p-channel Mosfet (IRLML6402), um das „load sharing“ zu realisieren (ähnlich wie hier: https://electronics.stackexchange.com/questions/293353).
    Von außen zugänglich ist eine Micro-USB Buchse, deren D+ und D- Pins ich direkt an USB+/USB- des DFPlayers geführt habe. So kann ich die SD-Karte direkt bespielen, ohne sie aus dem Gehäuse entfernen zu müssen (wenn auch nur mit ein paar 100kb/s).

    Softwaremäßig werde ich wohl noch ein paar kleinere Anpassungen vornehmen, um die Bedienung etwas für einen zweijährigen tauglicher zu machen, z.B. den Ladestand des LiPo per LED anzeigen oder die Dauer für den langen Tastendruck hochsetzen etc., aber das wird die Praxis zeigen, was da noch nötig ist.

    Nochmals danke fürs Entwickeln und Teilen des Codes! Falls gewünscht kann ich dir gerne ein paar Bilder für die Galerie schicken.

    Beste Grüße
    Johannes

    1. Hallo Johannes, WordPress hat deinen Kommentar in den Spam verschoben – sorry.

      Bilder immer gerne per Mail… und vielen Dank für dein Feedback und deine Anregungen.

    2. Hallo
      Probiere im Moment auch eine ähnliche Box zu versorgen .
      Habe auch die beiden Module benutzt und es funktioniert .
      ABER !!! laut Datenblatt ist der TP4056 nicht geeignet eine Schaltung zu speisen und gleichzeitig zu laden . Ist mir zu riskant und ich habe das dann verworfen und probiere jetzt was anderes aus .

      Gruß Willmar

      1. Hallo Willmar,

        du hast recht, das TP4056 Modul kann kein load sharing (=gleichzeitig laden und entladen). Deswegen habe ich ja eine kleine Schaltung gebaut, bei der der Mosfet (hier ein IRLML6402) den Ausgang des Lademoduls, genauer des nachgeschalteten Boost-Konverters trennt, sobald an der externen USB-Buchse Spannung anliegt. Hier mein Schaltplan für die Stromversorgung: https://www.dropbox.com/s/a73xmyf4aa4zq65/power_schaltplan.png?dl=0

        Beste Grüße
        Johannes

    3. Hallo Johannes,
      ich bin über den oben erwähnten Put’n’Play Cube (auch sehr toll!) auf das WeMos D1 Battery Shield aufmerksam geworden und hab mir ein paar davon gekauft. Das Teil hat einen Micro-USB-Anschluß, über den der 3.7 Volt Akku geladen und/oder die Schaltung mit 5 V versorgt wird. Das Teil kostet rund 1 Euro und spart viel Arbeit. Was fehlt ist ein Schutz gegen Tiefentladung des Akkus. Um dies zu vermeiden, verwende ich zur Zeit geschützte 18650er Zellen. Sobald ich die passenden MOSFETs für die Soft Power Off Schaltung habe, möchte ich die Stromzufuhr vom Arduino aus gesteuert trennen (bei längerer Inaktivität oder bei Unterschreiten der Mindestspannung)

      1. Hallo Bancbanus,

        von dem WeMos Battery Shield habe ich tatsächlich auch ein paar Exemplare rumliegen, aber der fehlende Tiefentladungsschutz ist leider für mich ein no-go, und geschützte Zellen habe/hatte ich nicht da. Klar, die Spannung kann man auch per Software überwachen, aber habe mich stattdessen für ein TP4056 Lademodul mit integrierter Battery Protection entschieden, von dem ich eh noch ein paar Stück auf lager hatte.

        Beste Grüße
        Johannes

    4. Hallo Johannes,

      habe ich dich richtig verstanden: Du hast einmal die USB-Stromversorgung des Arduino, die du auch nutzt – und zusätzlich zum Datentransfer eine Micro USB-Buchse nach außen gelegt? Wenn ja: Taucht die SD-Karte dann als Massenspeicher auf?

      Ich bin Anfänger auf dem Gebiet und noch etwas unsicher, wie du siehst (;

      Viele Grüße
      Lasse

      1. Hallo Lasse,

        ich habe eine externe USB-Buchse verbaut, bei der die +/- Anschlüsse mit dem Batterielademodul verbunden sind (welches wiederum dann mit dem 5v Eingang des Arduinos verbunden ist). Die D+/D- der Buchse gehen dann an die ensprechenden Anschlüsse (USB+/USB-) des MP3-Moduls.
        Beim Anschließen an den PC erscheint das MP3-Modul als Wecheldatenträger, sofern die SD-Karte eingelegt ist. Nach dem Trennen der USB-Verbindung muss der Arduino neu gestartet (reset) werden, damit er das MP3-Modul erkennen kann.

        Beste Grüße
        Johannes

        PS: Meine Schaltpläne (achtung, habe teilweise andere Pins am Arduino benutzt als im „Original“): https://www.dropbox.com/s/a73xmyf4aa4zq65/power_schaltplan.png?dl=0 und https://www.dropbox.com/s/oqvdfkmt9vu6g0w/sound_schaltplan.png?dl=0

  8. Hi Thorsten,

    vielen Dank für dieses super Projekt. Basteln macht nicht nur mir Spaß, sondern auch meinem Sohn.
    Leider sind meine Kenntnisse im Umgang mit Arduinos praktisch nicht vorhanden. Habe Deine Anleitung unter Windows 10 genau befolgt, leider hakts beim Upload der Tonuino.ino Datei auf den Arduino nano. Folgende Fehlermeldung wird von der IDE ausgegeben:
    stray ‚\302‘ in program
    und folgende Zeile wird rot hervorgehoben:
    TonUINO/Tonuino.ino at master · xfjx/TonUINO · GitHub

    Was mache ich nur falsch ?
    Über Unterstützung Deinerseits würde ich mich sehr freuen.

    Vielen Dank und viele Grüße
    Markus

  9. Hallo Thorsten,

    Deine Platine ist wohlbehalten angekommen und alles funktioniert bestens. Vielen Dank dafür!

    Bezüglich einer passenden Lautsprecherbox habe ich lange hin und her überlegt (nicht zu groß und nicht zu klein…und nicht zu häßlich 😉 und bin am Ende bei JBL „Control One“ gelandet…die ist ziemlich robust, lässt sich super auseinander bauen und „bearbeiten“, hat Frequenzweiche und ist „gedämmt“ und das Beste zum Schluss, es gibt sie für kleines Geld massenhaft gebraucht auf Ebay (auch mitunter einzeln) zu kaufen. Der Neupreis wäre mit ca. 75-80€ (dank Rabattcode) jetzt auch nicht extrem teuer.

    Zur Optik der Box ein kurzer Tipp: Einfach eine passende Stoffhülle schneidern (von Oma oder einer handwerklich begabten Lebensabschnittsgefährtin 🙂

  10. Hi Thorsten,

    sehr interessantes Projekt, gibt auf jeden Fall ein Weihnachtsgeschenk für meinen Sohn. 🙂

    Hast du mal darüber nachgedacht, es irgendwie zu implementieren, dass man die SD-Karte vielleicht über WLAN beschreiben kann? Das würde die Verwaltung der Dateien deutlich einfacher machen. Vielleicht gibt es auch noch andere Möglichkeiten. Dazu reichen leider meine Erfahrungen mit dem Arduino nicht aus. 😉

    Werde es aber auf jeden Fall nachbauen. Wenn ich mich für einen Lautsprecher entschieden habe, bestelle ich ggf auch die Platine. 🙂

    VG, Jens

    1. Das wäre echt eine große Sache. WLAN zur Steuerung könnte man mit einem ESP8266 noch nachrüsten – oder man wechselt direkt zu einem NodeMCU.
      Um jedoch auf die SD-Karte zu kommen müsste man über die USB-Schnittstelle des DFPlayer Mini darauf zugreifen. Das könnte man mit einem Arduino Leonardo denke ich hinbekommen, aber es würde doch sehr dem KISS Ansatz (der eh seit Version 2.0 der Firmware nicht mehr ganz so streng genommen wird) widersprechen.

      Ansonsten halt eine zweite USB Buchse an die Box und dort direkt die USB-Schnittstelle des DFPlayer herausführen. Dürfen dann nur nie beide gleichzeitig angeschlossen werden!!

  11. Hallo und vielen Dank schon mal für das nette Projekt und das Teilen der Früchte Deiner Arbeit.

    Hier noch ein Tip zu den oben erwähnten Problemen mit manchen Karten:
    Auch wir hatten lange Probleme mit den beiliegenden Karten und auch mit den nachbestellten Aufklebern. Zufällig haben wir aber gestern festgestellt, dass alle Tags die wir bis jetzt haben wunderbar funktionieren, wenn man nur etwa 1 cm Abstand vom Leser gehalten hat. Vielleicht hilfts jemandem, der Dank geht an A.!

    Schöne Grüße,
    Sebastian.

  12. Hallo Thorsten,

    habe gerade alles auf dem Steckbrett zusammen gestöpselt, funktioniert soweit. Allerdings habe ich mit den Karten Probleme. Ich habe drei Sets vom RC522 mit jeweils einer Karte und einem blauen Schlüsselanhänger. Zusätzlich habe ich noch 10 RFID Karten gekauft. Die drei Schlüsselanhänger funktionieren wie erwartet und von den drei Karten aus den Sets funktioniert nur eine. Alle anderen 12 Karten werden zwar als neu Karten erkannt und ich kann einen Ordner auswählen, nach der Auswahl vom Wiedergabemodus kommt jedoch immmer die Fehlermeldung „Oh je, hat leider nicht geklappt“. Irgend eine Idee woran das liegen könnte?

    Gruß
    Markus