Close
0%
0%

Slot-In Record Player with Arduino rfid & mp3

Transform an old "slot-in record player": make a magical mp3 player with the help of RFID reader and tags

Similar projects worth following
Why not to make something cool around an old "slot-in record player"?
By following this recipe, you will transform it in an magical mp3 player, where the only thing to do for listening a song is to insert the beautiful record cover into the slot.
Sure, there is no mistery in it, we will simply insert an RFID tag into the cover in order to recognize the track to play with Arduino.

We are Ibrahima, Scott, Antoine and Arthur, all students at LDLC School, a digital school in France. When our teacher Jean Noël showed us his first version of the Arduino based slot-in record player, a project he made years ago, we found it way cool and we decided to work on the V2. This new version will have improvements essentially on the human machine interface in order to make it more user friendly.

See it in action:

About us:

We are Ibrahima, Scott, Antoine and Arthur, all students at LDLC School, a digital school in France. 

When our teacher Jean Noël showed us his first version of the Arduino based slot-in record player, a project he made years ago, we found it way cool and we decided to work on the V2. This new version will have improvements essentially on the human machine interface in order to make it more user friendly. 

For instance, it will be no more necessary to upload a new Arduino sketch to update the playlist, you'll be able to do it directly by naming your .mp3 files on the SD card. Also we are adding an RGB LCD display to give informations to the user and make some cool light animations.

Why do we enter to the Hack It Back Hackaday prize contest? 

Our plan is to make it in the form of an easy DIY electronic kit and to scale it in order to sale on Tindie.com

We also want to launch with a crowdfundig campaign, on Indiegogo or Kickstarter for instance.
That's why we need to win somewhere between the fifth and the first place, the Supplyframe DesignLab Residency would be ideal to reach our goal.

Work in progress ....

Boards wiring.jpg

Wiring all the boards together before integration in the case

JPEG Image - 48.08 kB - 06/29/2022 at 20:20

Preview
Download

MangeDiskV3.ino

Arduino sketch

ino - 3.67 kB - 06/27/2022 at 07:25

Download

wiring sheet.xlsx

Sheet wiring between the boards

sheet - 10.62 kB - 06/27/2022 at 07:12

Download

View all 17 components

  • 1
    Sheet wiring between the boards:
  • 2
    Wiring all the boards together before integration in the case
  • 3
    Arduino sketch
    #include <Arduino.h>
    #include <Wire.h>
    #include "rgb_lcd.h"
    // include SPI, MP3 and SD libraries
    #include <SPI.h>
    #include <Adafruit_VS1053.h>
    #include <SD.h>
    //https://wiki.seeedstudio.com/Grove-125KHz_RFID_Reader/
    #include <SoftwareSerial.h>
    
    // These are the pins used for the music maker shield
    #define SHIELD_RESET  -1      // VS1053 reset pin (unused!)
    #define SHIELD_CS     7      // VS1053 chip select pin (output)
    #define SHIELD_DCS    6      // VS1053 Data/command select pin (output)
    
    // These are common pins between breakout and shield
    #define CARDCS 4     // Card chip select pin
    // DREQ should be an Int pin, see http://arduino.cc/en/Reference/attachInterrupt
    #define DREQ 3       // VS1053 Data request, ideally an Interrupt pin
    
    
    #define START 0x02
    #define END 0x03
    #define RFID_SCAN_PIN 9
    #define SWITCH 2
    
    SoftwareSerial Rfid(8, 0); 
    rgb_lcd lcd;
    Adafruit_VS1053_FilePlayer musicPlayer = 
      Adafruit_VS1053_FilePlayer(SHIELD_RESET, SHIELD_CS, SHIELD_DCS, DREQ, CARDCS);
     
    const int colorR = 0;
    const int colorG = 0;
    const int colorB = 0;
    
    bool DiskIn=false;
    int VolumePot =0;
    int NOISE =20;
    String CurrentTrack ="";
     
    void setup(void) 
    {
      pinMode(SWITCH, INPUT_PULLUP); 
      Serial.begin(115200); 
      Serial.println("Ready to Play music !");
      Rfid.begin(9600);
      lcd.begin(16, 2);
      lcd.setRGB(colorR, colorG, colorB);
      lcd.print("Ready to Play");
      lcd.setCursor(0, 1);
      lcd.print("Music");
      if (! musicPlayer.begin()) { // initialise the music player
         Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
         while (1);
      }
      Serial.println(F("VS1053 found"));
      SD.begin(CARDCS);    // initialise the SD card 
     
      // If DREQ is on an interrupt pin (on uno, #2 or #3) we can do background
      // audio playing
      musicPlayer.useInterrupt(VS1053_FILEPLAYER_PIN_INT);  // DREQ int
    }
    //******************************************************************
    void loop(void) 
    {
      char RecievedChar;
      static int OldVolume=-1000;
      
    
      if (!digitalRead(SWITCH) && !DiskIn )
      {
        DiskIn=true;
        Serial.println("Disk IN");
        delay(100);
      }
      if (digitalRead(SWITCH) && DiskIn )
      {
        DiskIn=false;
        Serial.println("Disk OUT");
        musicPlayer.stopPlaying();
        CurrentTrack ="";
        lcd.clear();
        lcd.print("Ready to Play");
        lcd.setCursor(0, 1);
        lcd.print("Music");
      }
      VolumePot = analogRead(0);
      
      if(abs(OldVolume-VolumePot)>NOISE) 
      {
        int Volume= map(VolumePot, 0, 1023, 31,0);
        Serial.println(Volume);
        musicPlayer.setVolume(Volume,Volume);
        OldVolume=VolumePot;
      }
    
      if (Rfid.available())             
      {
          RecievedChar=Rfid.read();
          ReadTag(RecievedChar);
      }
    }
    //**************************************************************************************
    void ReadTag(char RecievedChar)
    {
      static int Counter=0;
      static String ReceivedCode = "";
      if(isprint(RecievedChar)) ReceivedCode+=RecievedChar; 
          
          if(RecievedChar==START) Counter=0;
          else Counter++;
          if(RecievedChar==END) 
            {
              ReceivedCode.remove(10, 2); 
              ReceivedCode.remove(0, 2); 
              ReceivedCode = ReceivedCode + ".mp3";
              PlayMusic(ReceivedCode);
              ReceivedCode=""; 
            }
    }
    //**************************************************************************************
    void PlayMusic(String Track)
    {
     
      char Ctrack[]="12345678.mp3"; 
             
      Track.toCharArray(Ctrack, 13);
      Serial.println(Ctrack);
      lcd.clear();
      lcd.print("Playing track:");
      lcd.setCursor(0, 1);
      lcd.print(Ctrack);
    
      if((CurrentTrack!=Track)&&(DiskIn)) musicPlayer.startPlayingFile(Ctrack);
      CurrentTrack=Track;
    }

View all 3 instructions

Enjoy this project?

Share

Discussions

tormozedison wrote 06/21/2022 at 11:08 point

These slot-in record players are great, but have one inconvenience, they can only play low diameter records, and are incompatible with flexible records.

  Are you sure? yes | no

Jean Noel wrote 06/21/2022 at 11:41 point

With our Hack It Back project it does'nt matter. You can use a cover only (if you don't have a cover it's possible to make it yourself): you just have to put an RFID Tag inside

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates