An RFID Audio Player
I chose it because it can be used for many purposes such as entertainment or education.
I plan to use it personally by programming the RFID cards to contain my favorite sound clips, also I plan to add RFID stickers to the toys of my sister's daughter "Lina" to tell stories or to play animals' sounds, letters, ...etc. A lot of ideas can be applied using this amazing device ^^
Here are the projects that I inspired the idea from:
https://www.instructables.com/Juuke-a-RFID-Music-Player-for-Elderly-and-Kids/
https://www.instructables.com/Interactive-Arduino-Amiibo-Stand/
Fusion 360 software to design extrude, assemble all parts, and export .dxf & .stl files.
Ultimaker Cura 5.2.1 software to slice the .stl model and create the .gcode file for the 3D printer
LaserWork V6 software for nesting objects, setting the suitable parameters & creating .rld file which compatible with laser cutting machine
GrabCad to download the used components
The base side
The front side
The left side
The top side
The back side
The rightside
3 corner brackets with captive nuts (for the upper corners)
3 corner brackets without captive nuts for the lower corners
cards holder
RFID module & card: https://grabcad.com/library/modulo-sensor-rfid-rc522-rf-ic-1
Speaker: https://grabcad.com/library/speaker-audiopro-90x50-mm-1
potentiometer: https://grabcad.com/library/potentiometer-b10k-1
knob: https://grabcad.com/library/rotary-encoder-or-potentiometer-knob-1/details?folder_id=9662310
mini mp3 https://grabcad.com/library/mini-mp3-for-arduino-1
Arduino UNO: https://grabcad.com/library/arduino-127
.dxf file of each side was exported from fusion 360 & imported to LaserWork
The cut area (black) was defined with a cut speed of 40 & power of 55
The (red) part was to be scanned with a speed of 300 & power of 13
The (yellow) part was to be speed cut with a speed of 300 & power of 10
I downloaded this design from .3axis website & added it to the front side
Finally, the file was saved in .rld format
The .stl files of all brackets & the cards holder were downloaded from Fusion360 & imported to Ultimaker Cura software, then choosing the printer ( PRUSA i3 MK2 ) & the material ( PLA)
I prepare 2 files as there was no available time slot to print them all together
Profile: 0.3 mm extra fast (to save time)
Infill: 20%
Support: no supportThe best orientation is chosen to lay flat on the base side
Brim: None
Brackets file: number of layers: 51, weight: 14 g, time: 69 min
Cards Holder file: number of layers: 237, weight: 34 g, time: 141 min
.gcode files were saved
Prusa I3 MK2 printer to read the .gcode file & print the 3D physical object
El Malky ML149 CO2 Laser Cutter to read .rld file then cut or engrave or speed cut the plywood sheet
Plywood sheet 3mm to fabricate the front face
PLA+ for the side arms
Screws and nuts for the assembly
The 3D printer was turned on and the SD card that contain my .gcode file was inserted into the machine
The printer was preheated to unload the old filament, then the new filament was loaded (the color of the new filament was checked to ensure successful loading)
The proper file was selected and run
for more details, click here!
The proper file was selected, and the "TrachFrame" was run to check the used area, then we pressed "run". It spent 69 seconds.
for more details, click here!
Software:
Tinkercad: to build the virtual circuit
Arduino IDE: to write & upload the code to the Arduino board
Input Components:
2 push buttons to play & pause sound
potentiometer to control sound volume
RFID module to read the data held on the cards
On/off switch
Output components:
mp3 module & sd card: to control the played sound clips
A speaker to output the sound
RFID module to write data into a card
Other Components:
Breadboard, jumpers to connect the component
1kB resistor for wiring the mp3 module
RFID cards
Arduino Uno: to read the input signals from the & control output components
9V adapter & power connector
Note: RFID system is supplemented by Input Output (I/O) Devices; it is capable of reading/writing data from/to an RFID card
It works by using RFID cards to play a specific audio clip from an SD card. the RFID module reads the programmed number on the card & plays the corresponding sound clip.
MP3 module player outputs the sound directly to the speaker
Also, it controls the sound volume with the potentiometer, or plays and pauses the sound with the push button
I chose an external power supply (9V adapter) with a DC power connector and an on/off switch to disconnect or connect the electricity to the Arduino board
9 volts because the voltages that can be applied to the Arduino UNO VIN pin is from 7 to 12V. The other components of the circuit don't need more than 5 volts, so power is supplied from the DC power connector to Arduino VIN pin then the other components feed from Arduino 5V pin
This link discusses the powering options of Arduino
Including the required libraries
Definition of all pins, variables & instances
This part includes the setting of input pins, starting communication with the serial monitor & mp3 module, and the orders that execute only one time such as playing a welcome audio message, setting the volume
This part controls the speaker's volume according the the mapped value of the input potentiometer
This part controls the function of paly/pause bush button
This part controls the function of shuffle button
it is not tested yet, so it is deactivated until the test is successful
This part reads the number on RFID card & play the sound clip that has the same number on the SD card
Reference to DFPlayer_Mini (mini-mp3 module): https://docs.rs-online.com/58c2/A700000006944490.pdf
I followed this tutorial to test the mp3 module
firstly, I used the same wiring diagram without the 1k ohm resistor, but the sound wasn't clear, so I add it to the circuit.
Also, when the test code was uploaded to the Arduino board, it did not work until the deactivation of "while(true);" line
Then, I added a potentiometer to the circuit to control the volume, and a push-button to play or pause the sound
I followed this tutorial to test the RFID module with the same wiring diagram (if there is any change in the pins, the module will not work)
Then, I used this Testing_RFID.ino file to get the UID of each RFID card and add an ID label on each card (I got the test file from the previous tutorial)
Then, I used this CardProgrammer.ino file to set a unique number for each RFID card, then I added a label on each card, so card number 1 will play sound clip number 1 and so on
Actually, I write/program #2 on the card labeled with #1, because the first audio clip was for the welcome message
The CardProgrammer code file was downloaded from this project: https://www.instructables.com/Juuke-a-RFID-Music-Player-for-Elderly-and-Kids/
I connected the 5v pin & one of the GND pins of Arduino to the breadboard
I started with RFID wiring as follows according to this tutorial:
3.3v==> Arduino 3.3v
RST: Arduino pin 9
GND: to common ground on the breadboard
MISO: to Arduino pin 12
MOSI: to Arduino pin 11
SCK: to Arduino pin 13
SDA: to Arduino pin 10
Then, I added the mini mp3 module & the speaker according to this tutorial & this datasheet:
VCC pin: to the positive drain on the breadboard
RX pin: to breadboard pin that is connected to one leg of a 1K ohm resistor, then from the other leg of the resistor to Arduino pin 6
TX pin: to Arduino pin 5
SPK1 pin: to the speaker +ve pin
GND: to common ground on the breadboard
SPK2 pin: to the speaker -ve pin
Then the potentiometer was added as follows:
Pin1: to the +ve drain on the breadboard
Pin2: to Arduino A5 pin
Pin3: to the ground drain on the breadboard
Then the push buttons were added as follows:
PlayPause button: one pin to the -ve drain on the breadboard & the second pin to Arduino pin 8
Shuffle button: one pin to the -ve drain on the breadboard & the second pin to Arduino pin 7
Then the power connector & on/off switch were added as follows:
+ve pin of the power connector to Arduino Vin pin
-ve pin of the power connector to one of the switch legs
the second leg of the switch to the common ground on the breadboard
Note: Avometer was used to determine the +ve & -ve pin of the power connector
Note: I used this website to create the welcome audio message & the audio of the numbers
the speaker is fixed to the front side using screws & nuts
The Arduino board is fixed to the base, on/off switch & DC power connector to the back side
The buttons & volume controller are fixed to the top side.
All parts are held together using brackets, screws, and nuts
finally, the cardholder is added to the top side
I would like to thank the sweetest Areej, she helped me a lot in exporting .dxf files from fusion sketches and she suggested me to convert the online design on the front side from .cdr to .dxf format, so that I can use it in LaserWork software
And of course, our amazing instructors Esraa, Nada and Abdelrahman helped me a lot (Thank you 🙏)
It was a challenging project!
1- when I tested the mp3 module using the test code in this tutorial, it didn't work, and the problem was solved by disabling the "when(true);" line
2- when I wired the RFID module using different pins than that was mentioned in the testing tutorial (while preserving their type as analog or digital), it did not work, and I noticed that all the tutorials that I browsed used the same Arduino pins to wire this module, I did not understand the reason, but I adhered to the same pins.
However, during the assembly of the whole box, the leg of the jumper wire that connected to Arduino pin 11 was broken inside the Arduino pin No. 11, so I changed the wire and tried to remove the leg from the Arduino pin with a forceps, but it did not come out, then I tried to replace pin11 with any other pin on Arduino, but it did not work at all, so I decided to search for the reason and found that RFID model works through SPI communication, which requires Master Out Slave In (MOSI) connection and Arduino has only one pin for MOSI which is pin No. 11 (for more details check these links: https://www.circuitbasics.com/how-to-set-up-spi-communication-for-arduino/ , https://docs.arduino.cc/retired/boards/arduino-uno-rev3-with-long-pins#memory)
Solution: I de-assemble the box and take the Arduino board out & tried several tools to get rid of the leg from pin 11. the one that worked for me was the metal veil pin
3- When a push button is pressed, it is activated several times, causing uncontrolled behavior, so a delay is added to the code, which prevents several activations of a single click. (I discovered this problem using the serial monitor)
4- The most challenging thing is that during the assembly, I accidentally reversed the polarity of the electrical power connector (-ve pin to the Arduino VIN) which caused the 5-volt regulator of the Arduino board to burn (this is what I discovered later, as the VIN pin is directly connected to the voltage regulator & it does not have reverse polarity protection, for more details kindly check these links: https://docs.arduino.cc/learn/electronics/power-pins, https://forum.arduino.cc/t/i-reversed-gnd-and-vin/234305/2)
As a result, the device was working properly through the USB connector, but it didn't work using the 9-volt adapter as an external power source (the Arduino board itself was working, but there was a noise sound from the speaker and the mp3 module did not work, as it did not light up)
I tried to use the 5-volt adaptor instead, but it did not turn on the circuit. After many trials to fix the problem, I found a solution on the Internet to solder a new 5-volt regulator in place of the faulty regulator (for more details check these links: https://www.instructables.com/Fix-an-Arduino-That-Only-Works-Via-USB-blown-Regul/, https://hassanulmakers.wordpress.com/2015/02/14/tutorial-replacing-the-voltage-regulator-on-the-arduino/ )
Since I do not have a solder or soldering skills, I came up with an idea to use the 5v regulator (that we have in the kit) exactly as we used it at the end of week 8 session, I followed the same wiring diagram:
+ve pin of the power connector: to the regulator input pin
a jumper from the regulator input pin: to Arduino VIN
a jumper from the regulator GND pin: to the common ground drain on the breadboard
a jumper from the regulator output pin: to the positive drain of the breadboard
Finally, it worked successfully with the 9v adaptor Alhmadullah
Also, I faced many challenges in wiring, and I solved them by visual tracking and using the Avometer
Creating a simple GUI to write a number on the new RFID cards instead of using the serial monitor
Adding more features, like activating the shuffle button to play a random sound clip except for the welcome audio clip
Adding side B option to play cards on both sides
Printing 3D or 2.5 characters or models & attaching RFID stickers on them, so they will talk after placing them on the play area
Adding LED to indicate that the device is on or off, and if side A or side B is activated
To be portable, by powering it with a battery instead of the adaptor
Adding extra part to hold the mp3 module
Click here to find all files