Final Project Journal
Project Ideation
1- Tell us about the idea of your project. Why do you care about this? What were you inspired by? Include images and videos of similar projects
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/
Project Construction
2- Explain the CAD process of your project. How did you use the software to design your project? (List the softwares/tools/materials...etc that you used)
Tool Chain
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
Design/Preparation Process
Designing the outer faces
The base side
The front side
The left side
The top side
The back side
The rightside
Designing the 3D parts
3 corner brackets with captive nuts (for the upper corners)
3 corner brackets without captive nuts for the lower corners
cards holder
Downloading the components from GrabCad
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
Virtual Assembly of all parts on Fusion360 & creating the suitable projects & slots
Preparing the 2.5 parts on LaserWork V6
.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
Preparing the 3D parts with Cura software
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
3- Explain the fabrication process of your project. How did you use the machine to fabricate your project? (List the softwares/tools/materials...etc that you used)
Tool Chain
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
Printing the 3D parts (cards holder & brackets)
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!
Cutting the 2.5D parts
- Firstly, the machine was turned on & the .rld or .ai file was imported
- The cut & speed cut parameters were checked, then the file was downloaded to the machine
- plywood sheet was inserted into the machine, the focus was checked using the focus block and the origin's position was adjusted by pressing the "origin" button
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!
Project Electronics & Power Management
4- Describe your electronic circuit. What are the input and action components? What is the function of each? How do the components integrate together to form your smart system? (List the softwares/tools/components...etc that you used)
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
5- What is your power source? How did you select the suitable power source for your project? (List the softwares/tools/components...etc that you used)
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
Project Programming
6- Describe the code of your project. How did you program each function of the project?
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
Project Integration & Testing
7- Demonstrate with text and visuals how did you integrate the project’s modules together? What are the testing results? (Include a Demo video separately, showing a proof of functionality)
Testing the mp3 module
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
Testing the RD-522 (RFID) module
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/
Wiring the whole circuit
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
Sharing & Collaboration
8- Did you ask for feedback? What are the ideas that others have contributed or suggested? What was someone else’s idea that you built upon? How did you help your peers? How did your peers help you?
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 🙏)
Overcoming Challenges
9- When you got stuck, what/who did you turn to? At what point did you have to pause to research or learn more before moving on? What are some mistakes, pitfalls, or challenges that others can avoid if they were doing this project?
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
Future Work
10- If you had more time, what is one thing you would change/ Do next in your project?
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
Final Project Design Files
Click here to find all files