Music Box (X02)
Contents
About
This project uses the AudioPro module to decode and play music off of a MicroSD (with the use of the SD module). Three additional buttons are used for Play / Pause Track, Volume Up / Next Track, and Volume Down / Previous Track. A microphone receives sounds levels and outputs the intensity as a simple sound visualizer to a LED Matrix module.
This project was designed for the second generation mCookie Maker kits (202 Advanced and 302 Expert kits).
Required Materials
- 1 x mCookie Core
- 1 x mBattery (202/302 Kit)
- 1 x mCookie Sensor Hub
- 1 x LED Matrix
- 1 x Audio Pro Module
- 1 x MicroSD Module
- 3 x Touch Button Sensor
- 1 x Microphone Sensor
- 1 x Sensor Cable
- 1 x MicroSD Card
- 2 x Speaker
- 1 x MicroUSB Cable
Build
Sound File
- There should be a MicroSD card and reader included in 202 and 302 kits.
- Put an MP3 file onto the root of your MicroSD Card with the name a.mp3 and b.mp3. These are the files this program looks to play when activated. It can be a sound effect or a song (such as Alan Walker's Fade or Alan Walker's Alone).
- It is possible to have multiple sound files. Read the section on #Tweaking to learn about how to change the code to work with more than 2 files.
Assembly
NOTE: When connecting sensor wires, push on the plastic connector and not on the wires. Pushing on the wire can damage them.
- Connect a Touch Button to the Sensor Hub on Pin 2/3. This will be the Volume Up / Next Track button.
- Connect a Touch Button to the Sensor Hub on Pin 4/5. This will be the Play / Pause button.
- Connect a Touch Button to the Sensor Hub on Pin 6/7. This will be the Volume Down / Previous Track button.
- Connect a Micrphone Sensor to the Sensor Hub on Pin A6/A7.
- Connect the Two Speakers to the Audio Pro Module.
- Insert the MicroSD card with the a.mp3 and b.mp3 file into the MicroSD Module.
- Create two stacks containing:
- (Bottom of Stack) MicroSD Module | Audio Pro Module | Sensor Hub (Top of Stack)
- (Bottom of Stack) Core | LED Matrix (Top of Stack)
- Stack the two stacks onto the mBattery
- Plug in the MicroUSB cable to the mBattery to a computer.
Program
1. Connect mCookie Core to the PC with the USB Cable. Open the Microduino IDE.
2. Copy and paste the code below and upload.
3. Select the board, processor and port:
- Go to Tools > Board and select Microduino/mCookie-Core (328p)
- Go to Tools > Processor and select Atmega328P16M,5V
- Go to Tools > Port and select the available port
4. Upload the program by clicking on the right arrow icon on the top left of the window. Or under Sketch > Upload.
NOTE: If not using the default Core module included in the kits, please follow the selecting the board and processor guide.
Debugging
- Open the Serial monitor. Information on detecting the the Audio module (successfully or failed) and start / stop playing of music will be outputted.
Tweaking
Variables can be edited to change the threshold / detection value for various functions to better fine tune to your environment.
DEBUG will enable debugging mode. Which outputs information to the Serial Port.
NUM_SONGS determines the number of tracks the program will access.
SONGS[NUM_SONGS] is an array that contains the tracks the program will access. To add additional track add the track name to the array definition. Ensure that the files are in the MicroSD card. Ensure to update NUM_SONGS with the appropriate number of songs.
- Example 1:
const static int NUM_SONGS = 2;
const String SONGS[NUM_SONGS] = {"a.mp3", "b.mp3"};
- Example 2:
const static int NUM_SONGS = 5;
const String SONGS[NUM_SONGS] = {"a.mp3", "b.mp3", "TrackPi.mp3", "TrackIV.mp3", "Track5.mp3"};
SKIP_TIME determines the time in milliseconds (1000 milliseconds = 1 second) in which to hold down the Volume Up / Skip Track touch button or Volume Down / Previous Track touch button in order to register as a Skip Track or Previous Track.
AMBIENT_THRESHOLD determines the Microphone Sensor sound level which is ignored and is treated as ambient noise. Which means there values under this value will not produce an output to the LED Matrix.
MAX_THRESHOLD determines the Microphone Sensor sound level which is considered the max. This enables better scaling of the LED Matrix brightness output.
Usage
The first track should play automatically on start up. The Microphone picks up the sound levels and outputs them accordingly to the LED Matrix.
Control of the music box is as the following:
- Play / Pause Button - Quick tap will play or pause the current track.
- Volume Up / Skip Track Button - Quick tap to increase volume. Hold for more than 1 second (default) then release to skip track.
- Volume Down / Previous Track Button - Quick tap to decrease volume. Hold for more than 1 second (default) then release to go to previous track.