Arduino - RFID MP3-speler

In deze tutorial verkennen we het proces van het maken van een RFID-gebaseerde MP3-speler met behulp van Arduino, een RC522 RFID-lezer en een MP3-spelermodule. De MP3-spelermodule is voorzien van een micro SD-kaart waarop meerdere nummers zijn opgeslagen. Elke RFID-kaart staat voor één nummer, en het aantal RFID-kaarten komt overeen met het aantal opgeslagen nummers.

Door een RFID-kaart voor de RFID-lezer te bewegen, speelt de Arduino het bijbehorende nummer af dat gekoppeld is aan die specifieke RFID-kaart.

Hardware Benodigd

1×Arduino Uno R3
1×USB 2.0-kabel type A/B
1×RFID/NFC RC522 Kit (lezer + tags)
1×RFID Key Fob
1×RFID-kaart
1×Seriële MP3 Speler Module
1×Micro SD-kaart
1×3.5mm Aux-luidspreker
1×Jumperdraden
1×(Aanbevolen) Schroefklem Block Shield voor Arduino Uno
1×(Aanbevolen) Breadboard-Shield voor Arduino Uno
1×(Aanbevolen) Behuizing voor Arduino Uno
1×(Aanbevolen) Prototyping Basisplaat & Breadboard Kit voor Arduino Uno

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de RFID/NFC RC522 Module en MP3-speler

Als u nog niet bekend bent met de RFID/NFC RC522 Module en MP3-speler (pinout, werking, programmering enzovoort), raden wij aan de volgende tutorials te bekijken:

Bedradingsschema

Arduino RFID RC522 MP3-speler bedrading schema

This image is created using Fritzing. Click to enlarge image

Om het opzetten te vereenvoudigen, zijn de pinnen van de RC522 module direct verbonden met de Arduino-pinnen. Deze directe verbinding kan echter problemen veroorzaken, omdat de uitgangspinnen van de Arduino 5V leveren, terwijl de pinnen van de RC522 module ontworpen zijn voor een werking op 3,3V. Het is aan te raden om de spanning tussen de Arduino-pinnen en de RC522 module te regelen om mogelijke schade te voorkomen. Voor gedetailleerdere uitleg kunt u de Arduino - RFID RC522 tutorial raadplegen. Hieronder ziet u in het diagram hoe weerstanden kunnen worden gebruikt om de 5V te reduceren naar 3,3V:

Arduino RC522 module met spanningsregelend bedrading schema

This image is created using Fritzing. Click to enlarge image

※ Notiz:

De volgorde van de pinnen kan verschillen per fabrikant. Gebruik ALTIJD de labels die op de module zijn gedrukt. De bovenstaande afbeelding toont de pinout van modules van het merk DIYables.

Voorbereiding

  • Sla een lijst met nummers die u wilt afspelen op de micro SD-kaart op.
  • Plaats de micro SD-kaart in de MP3-spelermodule
  • Verbind de MP3-spelermodule met de Arduino
  • Verbind de luidspreker met de MP3-spelermodule
  • Verbind de luidspreker met een voedingsbron
  • Verbind de RFID-lezer met de Arduino

Omdat de UID (Unique Identifier) meestal niet op de RFID-tag wordt afgedrukt, is de eerste stap het achterhalen van de UID's van de tags. Dit doet u door:

  • Kopieer onderstaande code en open deze in de Arduino IDE
/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #define SS_PIN 10 // Arduino Pin connected to the SS of the RFID reader #define RST_PIN 5 // Arduino Pin connected to the RST of the RFID reader MFRC522 rfid(SS_PIN, RST_PIN); void setup() { Serial.begin(9600); SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed // print NUID in Serial Monitor in the hex format for (int i = 0; i < rfid.uid.size; i++) { Serial.print("0x"); Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); if (i < (rfid.uid.size - 1)) Serial.print(", "); } Serial.println(); rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } }
  • Klik op de Upload knop in de Arduino IDE om de code naar de Arduino te uploaden
  • Open de Serial Monitor
  • Houd de RFID-kaart/keyfob één voor één voor de RFID-RC522 module
  • Noteer de UIDs weergegeven in de Serial Monitor, die er als volgt uitzien:
COM6
Send
Tap RFID Tag on reader 0x51, 0x3D, 0xC1, 0xAC 0x6A, 0x4C, 0x12, 0x6D 0xB0, 0x1F, 0x92, 0x11
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

We gebruiken deze RFID UIDs om de Arduino-code hieronder aan te passen.

Arduino Code - RFID Mp3-speler

/* * Deze Arduino code is ontwikkeld door newbiely.nl * Deze Arduino code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino/arduino-rfid-mp3-player */ #include <SPI.h> #include <MFRC522.h> #include <SoftwareSerial.h> #define CMD_PLAY_NEXT 0x01 #define CMD_PLAY_PREV 0x02 #define CMD_PLAY_W_INDEX 0x03 #define CMD_SET_VOLUME 0x06 #define CMD_SEL_DEV 0x09 #define CMD_PLAY_W_VOL 0x22 #define CMD_PLAY 0x0D #define CMD_PAUSE 0x0E #define CMD_SINGLE_CYCLE 0x19 #define DEV_TF 0x02 #define SINGLE_CYCLE_ON 0x00 #define SINGLE_CYCLE_OFF 0x01 #define ARDUINO_RX 7 // Arduino Pin connected to the TX of the Serial MP3 Player module #define ARDUINO_TX 6 // Arduino Pin connected to the RX of the Serial MP3 Player module #define SS_PIN 10 // Arduino Pin connected to the SS of the RFID reader #define RST_PIN 5 // Arduino Pin connected to the RST of the RFID reader #define SONG_NUM 3 // 3 songs + 3 RFID cards, change it as your need MFRC522 rfid(SS_PIN, RST_PIN); SoftwareSerial mp3(ARDUINO_RX, ARDUINO_TX); byte RFID_UIDs[SONG_NUM][4] = { { 0x51, 0x3D, 0xC1, 0xAC }, // UPDATE THIS VALUE FROM PREPARATION STEP { 0x6A, 0x4C, 0x12, 0x6D }, // UPDATE THIS VALUE FROM PREPARATION STEP { 0xB0, 0x1F, 0x92, 0x11 } // UPDATE THIS VALUE FROM PREPARATION STEP // ADD MORE IF NEEDED }; void setup() { Serial.begin(9600); mp3.begin(9600); delay(500); // wait chip initialization is complete mp3_command(CMD_SEL_DEV, DEV_TF); // select the TF card delay(200); // wait for 200ms SPI.begin(); // init SPI bus rfid.PCD_Init(); // init MFRC522 Serial.println("Tap RFID Tag on reader"); } void loop() { if (rfid.PICC_IsNewCardPresent()) { // new tag is available if (rfid.PICC_ReadCardSerial()) { // NUID has been readed Serial.print("Tag UID:"); for (int i = 0; i < rfid.uid.size; i++) { Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "); Serial.print(rfid.uid.uidByte[i], HEX); } Serial.println(); for (int index = 0; index < SONG_NUM; index++) { if (rfid.uid.uidByte[0] == RFID_UIDs[index][0] && rfid.uid.uidByte[1] == RFID_UIDs[index][1] && rfid.uid.uidByte[2] == RFID_UIDs[index][2] && rfid.uid.uidByte[3] == RFID_UIDs[index][3]) { Serial.print("Playing song "); Serial.println(index); mp3_command(CMD_PLAY_W_INDEX, index); // Play mp3 } } rfid.PICC_HaltA(); // halt PICC rfid.PCD_StopCrypto1(); // stop encryption on PCD } } } void mp3_command(int8_t command, int16_t dat) { int8_t frame[8] = { 0 }; frame[0] = 0x7e; // starting byte frame[1] = 0xff; // version frame[2] = 0x06; // the number of bytes of the command without starting byte and ending byte frame[3] = command; // frame[4] = 0x00; // 0x00 = no feedback, 0x01 = feedback frame[5] = (int8_t)(dat >> 8); // data high byte frame[6] = (int8_t)(dat); // data low byte frame[7] = 0xef; // ending byte for (uint8_t i = 0; i < 8; i++) { mp3.write(frame[i]); } }

Snelle stappen

  • Kopieer bovenstaande code en open deze in de Arduino IDE
  • Werk de UIDs bij die u in de voorbereidingsstap heeft verzameld in de code
  • Upload de code naar de Arduino
  • Houd een RFID-kaart één voor één voor de RFID-RC522 module
  • Luister naar het geluid van de MP3-speler
  • Als alles goed werkt, wordt elk RFID-kaartje gekoppeld aan een nummer
  • U kunt de naam van het nummer op elk RFID-kaartje markeren

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Commentaar

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!