引言: Arduino做的各种应用广泛被开源硬件爱好者喜欢。今天给大家介绍一个互动性强的arduino RFID乐器,适合放松娱乐,这个项目利用了RFID和MP3模块,把从RFID采集的数据通过MP3模块播放特定的音符,从而带来适合少儿娱乐的互动音乐游戏。 第一步:展示内容 用的这个模块
这个是RFID的连线图 第三步:硬件搭建 序号 | 名称 | 数量 | 1 | arduino uno | 1 | 2 | rfid模块rc522 | 1 | 3 | rfid tag | 7 | 4 | DF MP3模块 | 1 | 5 | 8欧喇叭 | 1 | 6 | | |
第五步: 发一些硬件的图片。让人有个直观的认识
从arduino串口找到每个tag的编码。具体是打开arduino-实例文件-rfid-cardread,打开cardread文件并上传,之后用RFID扫描tag,然后在串口里查每个tag的编码。 在串口看扫描tag后的tag编码
第七部:连线图 第八部:代码部分的设计
复制代码
- /*
-
- */
- #include <SPI.h>
- #include <MFRC522.h>
- #include "Arduino.h"
- #include "SoftwareSerial.h"
-
- unsigned char order[4] = {0xAA,0x06,0x00,0xB0};
-
- #define SS_PIN 10
- #define RST_PIN 9
-
- MFRC522 mfrc522(SS_PIN, RST_PIN); // Create MFRC522 instance.
- SoftwareSerial Serial1(7, 6); // RX, TX
-
- //============SETUP================
- void setup()
- {
- Serial1.begin(9600);
- volume(0x1E);//音量设置0x00-0x1E
-
- Serial.begin(115200); // Initiate a serial communication
- SPI.begin(); // Initiate SPI bus
- mfrc522.PCD_Init(); // Initiate MFRC522
- Serial.println("Approximate your card to the reader...");
- Serial.println();
- }
-
- void loop()
- {
- // Look for new cards
- if ( ! mfrc522.PICC_IsNewCardPresent())
- {
- return;
- }
- // Select one of the cards
- if ( ! mfrc522.PICC_ReadCardSerial())
- {
- return;
- }
- //Show UID on serial monitor
- Serial.print("UID tag :");
- String content= "";
- byte letter;
- for (byte i = 0; i < mfrc522.uid.size; i++)
- {
- Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
- Serial.print(mfrc522.uid.uidByte[i], HEX);
- content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
- content.concat(String(mfrc522.uid.uidByte[i], HEX));
- }
- Serial.println();
- Serial.print("Message : ");
- content.toUpperCase();
- if (content.substring(1) == "69 E4 3C A3") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x01);//指定播放:0x01-文件0001
- delay(1000);
- }
-
- if (content.substring(1) == "67 33 7E 7A") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x02);//指定播放:0x02-文件0002
- delay(1000);
- }
-
- if (content.substring(1) == "D7 3F 7C 7B") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x03);//指定播放:0x03-文件0003
- delay(1000);
- }
-
- if (content.substring(1) == "F7 E6 51 7B") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x04);//指定播放:0x04-文件0004
- delay(1000);
- }
-
- if (content.substring(1) == "E7 B6 72 7B") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x05);//指定播放:0x05-文件0005
- delay(1000);
- }
-
- if (content.substring(1) == "37 18 84 7B") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x06);//指定播放:0x06-文件0006
- delay(1000);
- }
-
- if (content.substring(1) == "87 2E 79 7A") //change here the UID of the card/cards that you want to give access
- {
- Serial.println("Authorized access");
- Serial.println();
- play(0x07);//指定播放:0x07-文件0007
- delay(1000);
- }
-
- else {
- Serial.println(" Access denied");
- delay(1000);
- }
- }
- //==========FUNCTION==========
- void play(unsigned char Track)
- {
- unsigned char play[6] = {0xAA,0x07,0x02,0x00,Track,Track+0xB3};//0xB3=0xAA+0x07+0x02+0x00,即最后一位为校验和
- Serial1.write(play,6);
- }
- void volume( unsigned char vol)
- {
- unsigned char volume[5] = {0xAA,0x13,0x01,vol,vol+0xBE};//0xBE=0xAA+0x13+0x01,即最后一位为校验和
- Serial1.write(volume,5);
- }
复制代码
|