SẢN PHẨM :
Máy đọc thẻ thông minh
I. PHẦN CỨNG
- ARDUINO NANO
- LOA 5V
- MODULE GIẢI MÃ DFPLAYER MINI
- MẠCH ĐỌC RFID RC522
- THẺ NHỚ 8GB,...
- LED
- 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 rfidMFRC522 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 ledbool 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ẻ.