Juuke - a RFID Music Player for Elderly and Kids

50,764

485

99

Introduction: Juuke - a RFID Music Player for Elderly and Kids

This is the Juuke box. The Juuke box is your own musical friend, made to be as easy as possible to use. It is especially designed to be used by elderly and kids, but can of course be used by all other ages. The reason we created this, is because of my girlfriend's grandmother.
She told me that her and her grandma sitting in the kitchen, listening to music, dancing and laughing. Sadly, through the last years, her grandma has been in and out from hospital. On her worst days, however, music is one of the few things that still makes her smile. And music players like CD players are just too hard to use for her. That’s why we created the Juuke.

The Juuke Box works by using RFID cards to play specific songs from an SD card. You could also play the songs randomly using the green button, or play and pause with the red button.

This way, it is really simple for everyone to play music.

Step 1: Watch the Video!

We made a video showing how me made it:)

Step 2: Gather the Parts:

We got all the parts from AliExpress, and links to the parts are listed below:

Parts:

Arduino UNO AliExpress& Amazon

DFPlayer Mini AliExpress & Amazon

Micro SD card AliExpress & Amazon

Arduino UNO DIY Shield AliExpress & Amazon

RC522 - Buy 2 to be sure, some of them arrive broken AliExpress & Amazon

RFID Cards AliExpress & Amazon

AUX Stereo Jack AliExpress & Amazon

22 mm Momentary Push Button - 1 Red and 1 green - 3-6V AliExpress

10K Potentiometer AliExpress & Amazon

Wires AliExpress & Amazon

1K Resistor AliExpress & Amazon

Pin headers AliExpress & Amazon

Breadboard - Optional AliExpress & Amazon

Jumper wires - Optional AliExpress & Amazon

5V power supply -AliExpress & Amazon
Power Jack - AliExpress & Amazon



Tools:

3D printer AliExpress & Amazon

Soldering Kit AliExpress & Amazon

Wire Stripper AliExpress & Amazon

Step 3: Test the Parts

I recommend connecting everything up, and test if it all works before starting.

To do that, I used a breadboard and some jumper wires to quick and easy check that it all worked as intended. I had some problems with the first RC522 module I bought, it just didn’t work even though it came straight from the factory. So I had to get a new one… That’s why I recommend getting 2 of them, that way you are sure that if you break one of them, you have a spear.


Connect everything according to the circuit diagram here (Link), or see the attached pictures.

Remember to use a 1K resistor between RX on the DFPlayer Mini and the Arduino.

To check if the card reader works, you can use the “Dump card” example sketch from the library. (See step 4)

Step 4: The Code - Programming the Cards


To get a better understanding of how the code works with the DFPlayer mini, I will try to explain it as easy as possible. The DFPlayer mini works by playing songs from a micro SD card. To know which song to play, the songs has to be stored as a number to the SD card. Song number 1 is stored as “0001 - SONG NAME”, song number 2 is stored as “0002 - SONG NAME”, and so forth. We can write a number to the RFID cards, so if we write the number 2 to one of the cards and place it on the reader, the Arduino will read the number and say to the DFPlayer mini, “play song number 2”.

The number we write to the card has to be the same number as the name of the song we store on the SD card.

If you would like to learn more about the DFPlayer mini, visit this page with lots of great information

You can now open Arduino and upload the code for the card programming. I have divided the code into two parts. One for programming the cards, and one for the actual player. In this step, we will start by programming the cards. The code is published to GitHub, and added below. You will also need to download the following libraries:

- MFRC522

- DFRobotDFPlayerMini.h

I have tried to explain the code with comments as much as possible, but if you have any questions, don’t be afraid to ask them in the comment section!

Also, I am not a great programmer but I would like to become one, so if you see any mistakes in the code a comment would be great!

To upload the code to the Arduino, see this article. To add libraries, see this article.

MODES:

The card programmer has two modes, automatic and manual.

Manual mode: Writes the number you want to write to the card. Type in a number, and it will store it.

Automatic mode: Starts at the number you specify in the code, and increases it by 1 every time you place a card on.

HOW TO USE THE CARD PROGRAMMER:

Connect the Arduino Open Serial monitor (top right corner) Write “manual” for manual mode and “auto” for automatic mode. (See above) Place a card on the reader, and make sure it says succeeded.

Step 5: The Code: Player Mode

Once you have programmed the cards, you can upload the music player code. This is the code that reads the card and plays the associated song.
The process is exactly the same as for the card programmer code. Upload the sketch, and start using it!

PS: IMPORTANT! To disable the serial communication where you can see what the program is doing in the serial monitor, you have to comment out “Serial.begin(115200); “. Just add“//” in front of the line. I had some problems where the program would not run if it was enabled. (It was waiting for a serial connection before it would start)

Step 6: Download Songs to the SD Card

As said previously, you have to give the music files on your SD card a specific name for it to work. Every song has to start with a number. The number also has to be 4 digits (1 is 0001 for example).
After these digits, you are free to add the name of the song. For example: “0035 - Frank Sinatra - Fly me to the moon”

It uses standard MP3 files, so it’s simple to copy them over to SD card and rename them.

Step 7: Test, Then Solder

When you have tested that everything is working as intended, you can start soldering the parts to the Arduino UNO shield.


Just follow the circuit diagram wire for wire. It is smart to print it out, and use a colored marker to mark which wires you have soldered on. I also recommend to use pin headers for the DFPlayer Mini so you don’t damage it under soldering.

I also desoldered the RC-522 Led, because it was showing through the print.

Step 8: Make the Enclosure

In this step I am going to show you how I made the enclosure.
I designed it using Fusion 360, and 3D printed it. I also made one using a CNC machine, and some plywood.

If you don't have a 3d printer or a CNC machine, don't worry! It's also possible to make an enclosure out of cardboard or using a project box

You can find all the files here:

3D printed:

STL: CULTS 3D | Thingiverse

FUSION 360: Ananords.com

The settings I used to 3D print it is:

Infill: 15%

Layer height: 0.2mm

Supports: YES

Just insert the UNO and the RC522 into the pins on the 3D print. They should fit snugly. I recommend using a drop of glue to secure them in place. Do the same with the audio jack. For the buttons, potentiometer and power socket, use the included hex nuts.

When you are done, just snap the bottom plate and the “face” together.

Step 9: Make the Cards

Start with the design.
I made the designs in Adobe Spark, where I used the card dimensions (85 mm x 54 mm) as the custom size

I found the pictures on google and imported them into Adobe Spark, set the song title and artist, and done!

Since I don’t have an id card printer, I had to find another way to make the print on the cards. I went the simple route, and just printed it on paper then glued it to the cards.

You can also just use a pen and write directly on the cards.

Step 10: Done!

You are now done!

If you make this project, please post a make:)

Any questions? Just ask, and I will try to answer them.

For updates about the Juuke, sign up to the newsletter!

Follow me on Instagram for updates on upcoming projects!


Instagram: https://www.instagram.com/ananordss/

Contact me: Ananords@outlook.com


••• Support me •••

Patreon: https://www.patreon.com/ananords

Donations: https://ananords.com/products/donation/

Buy me a coffee: https://www.buymeacoffee.com/Ananords/

Robots Contest

Participated in the
Robots Contest

8 People Made This Project!

Recommendations

  • Clocks Speed Challenge

    Clocks Speed Challenge
  • Toys & Games Contest

    Toys & Games Contest
  • Big vs Small Challenge

    Big vs Small Challenge

99 Comments

0
stevenb185
stevenb185

Question 8 days ago on Step 10

Hello,
First of all I want to congratulate you for this awesome project I am a litlle bit stuck with Ultralight mifare chip. This isn't Ultralight classic so the programmer do not want to work with them but when I use the example from the library in this case NTag216 it work well.
I want to use this kind of nfc tag because it is small sticker that i can stick on other stuff.
Can you help me out regarding this issues ?
Just under a link to the tag.
https://fr.aliexpress.com/item/1005001403928630.ht...

1
Mamvcivm
Mamvcivm

Question 9 months ago on Step 4

Hiya, I now have writable cards! Unfortunately, I'm getting an error with programming the cards. When I try to programme I get the following in the Serial Monitor:-
Write manual for Manual mode or auto for Automatic mode

("auto" entered)
Device is now in auto mode
Place the card on the reader and hold it there to write song number data to the card
Wrong value, write auto or manual

("manual" entered)
Device is now in manual mode
Place the card on the reader and hold it there to write song number data to the card
Wrong value, write auto or manual

("fred" entered)
Device is now in fred mode
Place the card on the reader and hold it there to write song number data to the card
Wrong value, write auto or manual

It's as if it doesn't recognise the words auto or manual as acceptable inputs
I have managed to program the cards using the "ChangeUID" example sketch from the library.

Can you please advise?

1
ananords
ananords

Answer 9 months ago

It's a weird bug, I will try to fix it soon. In the meantime, try deleting everything except the code for manual mode if you want manual mode, or auto if you want automatic mode. (Separate manual mode to one arduino code, and auto mode to one arduino code)

0
Mamvcivm
Mamvcivm

Reply 9 months ago

I think I'm not programming the cards correctly - I used the ChangeUID example sketch and I've programmed two cards - in theory one is UID 00 00 00 02 and the other is UID 00 00 00 03.
I'm assuming it's only the UID that needs to be changed...?

I've now built the whole circuit and uploaded the Juuke player sketch.
On presenting a card I get the following output:

Initializing DFPlayer ... (May take 3~5 seconds)
DFPlayer Mini online. Place card on reader to play a specific song
**Card Detected:**
Card UID: 00 00 00 02
Card SAK: 08
PICC type: MIFARE 1KB
Number: <--------------- should there be a number here?
**End Reading**

No music plays. Am I formatting the UID number incorrectly?

The Shuffle and Pause buttons work. And I notice the blue LED on the DFPlayer doesn't light up until I hit the Shuffle button.

UPDATE
As per your suggestion I modified the card programmer sketch to only do automatic and presented it with 5 cards and got the following output:

Card UID: BD E0 8D 3D PICC type: MIFARE 1KB
PCD_Authenticate() success:
MIFARE_Write() success:
Put a new card on the reader to write the number: 2
Card UID: 21 E9 8D 3D PICC type: MIFARE 1KB
PCD_Authenticate() success:
MIFARE_Write() success:
Put a new card on the reader to write the number: 3
Card UID: 90 55 8E 3D PICC type: MIFARE 1KB
PCD_Authenticate() success:
MIFARE_Write() success:
Put a new card on the reader to write the number: 4
Card UID: 00 00 00 02 PICC type: MIFARE 1KB
PCD_Authenticate() success:
MIFARE_Write() success:
Put a new card on the reader to write the number: 5
Card UID: 00 00 00 03 PICC type: MIFARE 1KB
PCD_Authenticate() success:
MIFARE_Write() success:
Put a new card on the reader to write the number: 6

I then tried these in the Juuke sketch:

Initializing DFPlayer ... (May take 3~5 seconds)
DFPlayer Mini online. Place card on reader to play a specific song
**Card Detected:**
Card UID: 00 00 00 03
Card SAK: 08
PICC type: MIFARE 1KB
Number: 5
**End Reading**
**Card Detected:**
Card UID: 00 00 00 02
Card SAK: 08
PICC type: MIFARE 1KB
Number: 4
**End Reading**
**Card Detected:**
Card UID: 21 E9 8D 3D
Card SAK: 08
PICC type: MIFARE 1KB
Number: 2
**End Reading**
**Card Detected:**
Card UID: BD E0 8D 3D
Card SAK: 08
PICC type: MIFARE 1KB
Number: 1
**End Reading**
**Card Detected:**
Card UID: 90 55 8E 3D
Card SAK: 08
PICC type: MIFARE 1KB
Number: 3
**End Reading**

So, it works! Not sure what part of the card carries the number but it works :-)

Cheers


20200815_171959.jpg
0
wronowski.r
wronowski.r

Reply 27 days ago

Can You send or write here a code for only auto programming? I have this same probmlem but can't coorect code... thx

0
ChrisS881
ChrisS881

Question 6 weeks ago on Introduction

Hi, very great project. My mother, 79 years old, and my father 82 years old, both music freaks but all the remote controls and hassle before being able to "Jam" is really becoming a challenge.
My mother is going blind (Macula), I want to make your project, however, I'm looking for an add-on. Unfortunately I'm not an electronics wizard.
I looking to find a solution to have the "Juuke" tell my mother which song/album is going to be played when she inserts the card.
Would you be able to point me in the right direction?
Anyone?
Thanks from Belgium

0
ananords
ananords

Answer 6 weeks ago

Hi!

The simplest way to add this feature would probably to add the voice file in the song MP3 File. So just edit the Mp3 and add the voice file.

It should be possible to add some code to make it say the file name before it starts, but that could take some time to do.
https://www.instructables.com/Arduino-Text-to-Spee...
I found this example if you want to add that though.

0
ricopanda
ricopanda

2 months ago

Very great project! Thanks for this tuto. I try to make a portable device like yours so I've found a mini rc522, an arduino Nano and a 3W speaker: everything works with an usb 5V powerbank 2600mAh but I need some smaller battery, maybe like lipo 7,4V 2000mAh, 30C. Do you think that it's possible to connect the Vin Nano pin with this battery without issue or overheated?

0
ananords
ananords

Reply 2 months ago

According to the arduino nano datasheet, the input voltage is 7-12V for the VIN pin, so that shouldn't be a problem:)

0
ricopanda
ricopanda

Reply 2 months ago

Yes but with the RC522 and the DF player have to be powered by the arduino and I've found this about arduino:"It should be noted that the regulator is not cooled, so if you use the Vin pin, avoid connecting other devices to the 5V pin otherwise you risk destroying the regulator." Maybe I should ad a voltage step-down for a 7,4V battery, or a booster with a 3,7V LiPo battery to have a 5v regulation?

0
Olek1990
Olek1990

3 months ago

Hi,
after starting Card Programmer, on the screen I see only random characters like "G⸮[⸮".
If I write "auto" or "manual" program view another random string.
Please tell me what am I doing wrong.

Thank You very much.
A.

0
ananords
ananords

Reply 3 months ago

Hi! Make sure you are using the correct baud rate:)

0
Ludman005
Ludman005

Question 4 months ago

Hi !
This is a wonderful project, and I intend to try (twice, once for my kids, once for my mum...).
I would like to make it portable for my kids, i.e. adding a speaker and a (rechargeable) battery...

So here is the question : do you think it's doable ?

I'm a brand new (but not young) maker, just bought a 3D printer, laser cutter and know nothing about circuits... I just have my old Raspberry Pi that I used to transform in retro game station or media player, that's it (do you think I could use it by the way, instead of Arduino ?). So I try to gather max of info before ordering parts and tools (for electronics...). I plan to modify a bit the design of the box to fit with those, but I'm no good (yet) with Fusion 360. Lot of unknowns ! I feel I'm sailing through the fog now, but this is a very pleasant project that you put in my mind...

Also, one of your project's makers turned an old tape player into a RFID player (nice look by the way) and add a great feature with album playing and B-sides feature... I'll try to mix it with your project, but I'm not very confident.

So if you think that you can be of any help, please answer...

Thanks again for sharing this with us, great work !!!

0
ananords
ananords

Reply 4 months ago

Hi!

Awesome! You can probably use the Raspberry pi, but then you need to find a code for it. Arduino is much cheaper and easier to use though. I am working on a version 2 of the Juuke, that I am planning to sell as a kit. That one is going to be more portable, so built in speaker, battery, and a custom circuit board. I already have a working prototype, so it's definitely doable, and shouldn't be that long before you can buy it as a kit.

I am glad to help you, so don't hessitate contacting me at: ananords@outlook.com.


0
Kruemelmonster008
Kruemelmonster008

Question 6 months ago

hi there! thanks for this great idea! I started to program something similar on my own, but then decided, that it is more practical if I use something existing.
I am confused, the wiring diagram shows something different than the picture: Are the buttons connected to only Pin 3 & 4 and ground? On the Wiring diagram they are also connected to 3,3V... When I only connect them to ground an PINs 3 & 4 the buttons don't work for me.

And my potentiometer also doesn't work, it seems like there is a loose connection on all of my analog input pins... (when i whigle the cable a bit, the passive speaker gets much louder). Do you have any suggestions on that?

Thanks!

0
ippel.amando
ippel.amando

Answer 5 months ago

to read the state of the button it works like this
pin 3 is the input (the pin that will check if you pressed it or not)
if it gets 3.3v if its 0 (ground) than its not

so what you have to do is connect the 3.3v to the pin3 to make it in the pressed state via the button of course

but if you don't press it than that power needs to go back to the ground to make the loop and that's why there is also a ground wire little advice put a 1k resistor between the button and the ground like this
Button -> resistor -> ground
that way you can pull the floating current from the pressed button to ground (otherwise you will get a false pressed state sometimes)


Single-Push-Button-On-Single-Arduino-Digital-Input.jpg
0
M. DwayneS
M. DwayneS

7 months ago

Aww, I just checked the finalists, and given some of them, I think you was robbed. I truly thought you had a lock, but judges...?
Still think it's an award winning design, a neat project and ultimately useful. Thanks for sharing. You have skillls.

1
ananords
ananords

Reply 7 months ago

Yeah, I know.. But I somewhat I agree that decision, since my music player is not exactly a "Robot"... Thanks!

0
M. DwayneS
M. DwayneS

Reply 7 months ago

You are magnanimous in your response. There ARE many definitions for "robot":
Oxford: 1.1A machine capable of carrying out a complex series of actions automatically, 2A especially one programmable by a computer.
Merriam_Webster: a device that automatically performs complicated, often repetitive tasks (as in an industrial assembly line)
etc, etc
But, maybe they had a narrow definition, but didn't explain it.
Put a patent on it, may be marketable, your hard work shouldn't go to waste and daresay, there is mounds of actual junk (your isn't BTW) making people rich. Who knows, you may even find an investor. Imagine this selling on one of those late nite sales shows: when your potential clientele is watching.

2
ananords
ananords

Reply 7 months ago

That's true. Seeing the finalists, I think they had a narrow definition, but they should have addressed it in the rules. I am looking to start selling them, and currently working on a version 2 with some improvements:)