"Hành trình vạn dặm bắt đầu từ những bước đi đầu tiên"

せんりのみちもいっぽから

Sep 29, 2023

PHÁT NHẠC RA MP3 DÙNG ARDUINO NANO + MODULE DFPLAYER+ RFID RC522

 SẢN PHẨM : 

Máy đọc thẻ thông minh




I. PHẦN CỨNG

  1. ARDUINO NANO
  2. LOA 5V
  3. MODULE GIẢI MÃ DFPLAYER MINI
  4. MẠCH ĐỌC RFID RC522
  5. THẺ NHỚ 8GB,...
  6. LED
  7. TRỞ 220KOM
II. SƠ ĐỒ ĐẤU NỐI


III. LẬP TRÌNH:

#include <SPI.h>
#include <MFRC522.h>
#include <SoftwareSerial.h>
#include <DFRobotDFPlayerMini.h>

#define RST_PIN 9
#define SS_PIN 10
#define LED_PIN 7
// đọc rfid
MFRC522 mfrc522(SS_PIN, RST_PIN);
String allowedRFIDCards[] = { "863f2c9e", "4c03c2a226f80","4d03c2a226f80" };
// khởi tạo dfplayermini
SoftwareSerial mySerial(2, 3);
DFRobotDFPlayerMini player;
// định thời gian tắt led
bool isPlaying = false;
unsigned long playbackStartTime = 0;
const unsigned long playbackDuration = 5000;

void setup() {
  mySerial.begin(9600);
  Serial.begin(9600);
  pinMode(LED_PIN, OUTPUT);
  SPI.begin();
  mfrc522.PCD_Init();
  Serial.println("Vui lòng đặt thẻ RFID lên đầu đọc...");
  if (!player.begin(mySerial)) {
    Serial.println(F("Lỗi! Không tìm thấy DFPlayer Mini."));
    while (true)
      ;
  }
  player.volume(30);
}

void loop() {
  if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
    Serial.println("Thẻ RFID được phát hiện!");
    String rfidCode = getRFIDCode();
    Serial.println(rfidCode);
    if (rfidCode == "863f2c9e") {
      Serial.println("Thẻ 1 OK. MP3 play");
      toggleLED(1);
      playSound(2);
    } else if (rfidCode == "4c03c2a226f80") {
      Serial.println("Thẻ 2 OK. MP3 play");
      toggleLED(1);
      playSound(3);
    } else if (rfidCode == "4d03c2a226f80") {
      Serial.println("Thẻ 3 OK. MP3 play");
      playSound(1);
      toggleLED(1);
    } else {
      Serial.println("Thẻ không được chấp nhận.Tắt");
      toggleLED(0);
      playSound(0);
    }

    isPlaying = true;
    playbackStartTime = millis(); // bắt đầu đếm thời gian

    delay(2000);
  }

  if (isPlaying) {
    // Nếu mp3 phát >5S thì sẽ tắt led
    if (millis() - playbackStartTime >= playbackDuration) {
      toggleLED(0);
      isPlaying = false;
    }
  }
}

String getRFIDCode() {
  String rfidCode = "";
  for (byte i = 0; i < mfrc522.uid.size; i++) {
    rfidCode += String(mfrc522.uid.uidByte[i], HEX);
  }
  return rfidCode;
}

void toggleLED(int state) {
  digitalWrite(LED_PIN, state);
}

void playSound(int track) {
  player.play(track);
}


0 Post a Comment:

Post a Comment

Cảm ơn bạn đã chia sẻ ý kiến!
Chúc bạn có một ngày thật vui vẻ.

Kết nối bạn bè

Wikipedia

Search results

Video Nổi bật

Cảm ơn các bạn đã ghé thăm

 
Please Enable Javascript!Enable JavaScript