2021-4-30 23:23:48 [显示全部楼层]
1805浏览
查看: 1805|回复: 2

RFID演奏音乐

[复制链接]
引言:
Arduino做的各种应用广泛被开源硬件爱好者喜欢。今天给大家介绍一个互动性强的arduino RFID乐器,适合放松娱乐,这个项目利用了RFID和MP3模块,把从RFID采集的数据通过MP3模块播放特定的音符,从而带来适合少儿娱乐的互动音乐游戏。
第一步:展示内容
RFID演奏音乐图2
用的这个模块

RFID演奏音乐图3
这个是RFID的连线图
第三步:硬件搭建
序号 名称 数量
1 arduino uno 1
2 rfid模块rc5221
3 rfid tag 7
4 DF MP3模块 1
5 8欧喇叭 1
6


第五步:
发一些硬件的图片。让人有个直观的认识
RFID演奏音乐图1
RFID演奏音乐图7

从arduino串口找到每个tag的编码。具体是打开arduino-实例文件-rfid-cardread,打开cardread文件并上传,之后用RFID扫描tag,然后在串口里查每个tag的编码。
RFID演奏音乐图4
RFID演奏音乐图6
RFID演奏音乐图8
在串口看扫描tag后的tag编码


第七部:连线图
RFID演奏音乐图5
第八部:代码部分的设计
复制代码
  1. /*
  2. */
  3. #include <SPI.h>
  4. #include <MFRC522.h>
  5. #include "Arduino.h"
  6. #include "SoftwareSerial.h"
  7. unsigned char order[4] = {0xAA,0x06,0x00,0xB0};
  8. #define SS_PIN 10
  9. #define RST_PIN 9
  10. MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.
  11. SoftwareSerial Serial1(7, 6); // RX, TX
  12. //============SETUP================
  13. void setup()
  14. {
  15.   Serial1.begin(9600);
  16.   volume(0x1E);//音量设置0x00-0x1E
  17.   
  18.   Serial.begin(115200);   // Initiate a serial communication
  19.   SPI.begin();      // Initiate  SPI bus
  20.   mfrc522.PCD_Init();   // Initiate MFRC522
  21.   Serial.println("Approximate your card to the reader...");
  22.   Serial.println();
  23. }
  24. void loop()
  25. {
  26.   // Look for new cards
  27.   if ( ! mfrc522.PICC_IsNewCardPresent())
  28.   {
  29.     return;
  30.   }
  31.   // Select one of the cards
  32.   if ( ! mfrc522.PICC_ReadCardSerial())
  33.   {
  34.     return;
  35.   }
  36.   //Show UID on serial monitor
  37.   Serial.print("UID tag :");
  38.   String content= "";
  39.   byte letter;
  40.   for (byte i = 0; i < mfrc522.uid.size; i++)
  41.   {
  42.      Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
  43.      Serial.print(mfrc522.uid.uidByte[i], HEX);
  44.      content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
  45.      content.concat(String(mfrc522.uid.uidByte[i], HEX));
  46.   }
  47.   Serial.println();
  48.   Serial.print("Message : ");
  49.   content.toUpperCase();
  50.   if (content.substring(1) == "69 E4 3C A3") //change here the UID of the card/cards that you want to give access
  51.   {
  52.     Serial.println("Authorized access");
  53.     Serial.println();
  54.     play(0x01);//指定播放:0x01-文件0001  
  55.     delay(1000);
  56.   }
  57. if (content.substring(1) == "67 33 7E 7A") //change here the UID of the card/cards that you want to give access
  58.   {
  59.     Serial.println("Authorized access");
  60.     Serial.println();
  61.     play(0x02);//指定播放:0x02-文件0002
  62.     delay(1000);
  63.   }
  64.   if (content.substring(1) == "D7 3F 7C 7B") //change here the UID of the card/cards that you want to give access
  65.   {
  66.     Serial.println("Authorized access");
  67.     Serial.println();
  68.     play(0x03);//指定播放:0x03-文件0003  
  69.     delay(1000);
  70.   }
  71.   if (content.substring(1) == "F7 E6 51 7B") //change here the UID of the card/cards that you want to give access
  72.   {
  73.     Serial.println("Authorized access");
  74.     Serial.println();
  75.     play(0x04);//指定播放:0x04-文件0004
  76.     delay(1000);
  77.   }
  78.   if (content.substring(1) == "E7 B6 72 7B") //change here the UID of the card/cards that you want to give access
  79.   {
  80.     Serial.println("Authorized access");
  81.     Serial.println();
  82.     play(0x05);//指定播放:0x05-文件0005  
  83.     delay(1000);
  84.   }
  85.   if (content.substring(1) == "37 18 84 7B") //change here the UID of the card/cards that you want to give access
  86.   {
  87.     Serial.println("Authorized access");
  88.     Serial.println();
  89.     play(0x06);//指定播放:0x06-文件0006
  90.     delay(1000);
  91.   }
  92.    if (content.substring(1) == "87 2E 79 7A") //change here the UID of the card/cards that you want to give access
  93.   {
  94.     Serial.println("Authorized access");
  95.     Serial.println();
  96.     play(0x07);//指定播放:0x07-文件0007
  97.     delay(1000);
  98.   }
  99. else   {
  100.     Serial.println(" Access denied");
  101.     delay(1000);
  102.   }
  103. }
  104. //==========FUNCTION==========
  105. void play(unsigned char Track)
  106. {
  107. unsigned char play[6] = {0xAA,0x07,0x02,0x00,Track,Track+0xB3};//0xB3=0xAA+0x07+0x02+0x00,即最后一位为校验和
  108. Serial1.write(play,6);
  109. }
  110. void volume( unsigned char vol)
  111. {
  112. unsigned char volume[5] = {0xAA,0x13,0x01,vol,vol+0xBE};//0xBE=0xAA+0x13+0x01,即最后一位为校验和
  113. Serial1.write(volume,5);
  114. }
复制代码



rfid-download.rar

1.94 MB, 下载次数: 14

rzegkly  版主

发表于 2021-5-3 10:25:32

作品很有创意,漂亮
回复

使用道具 举报

gada888  版主
 楼主|

发表于 2021-5-4 15:47:03

rzegkly 发表于 2021-5-3 10:25
作品很有创意,漂亮

多谢评价
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail