🔐 قفل در با کارت RFID (MFRC522) و سروو موتور در آردوینو

✍️ تیم ووکوی فارسی ·

کارت مترو، کارت ورود ساختمان و کلید کارتی هتل همه با یک فناوری کار می‌کنند: RFID. در این پروژه با ماژول ارزان RC522، آردوینو و یک سروو موتور یک قفل در می‌سازیم: کارت مجاز را که نزدیک کنی، چراغ سبز روشن می‌شود و سروو چفت در را باز می‌کند؛ کارت ناشناس بوق قرمز می‌گیرد. اگر این پروژه را در wokwi یا ویدیوهای خارجی دیده‌ای، این‌جا نسخه‌ی کامل فارسی‌اش را داری.

RFID چطور کار می‌کند؟

ماژول RC522 یک میدان رادیویی ضعیف ۱۳٫۵۶ مگاهرتزی می‌سازد. داخل کارت یا جاکلیدی یک سیم‌پیچ و یک چیپ کوچک است که باتری ندارد؛ برقش را از همین میدان می‌گیرد و شماره‌ی منحصربه‌فردش، یعنی UID، را برمی‌گرداند. ما فقط این شماره را با شماره‌ی کارت مجاز مقایسه می‌کنیم.

قطعه‌ها

سیم‌کشی

قطعهپایهآردوینو Uno
RC522SDA (SS)10
RC522SCK13
RC522MOSI11
RC522MISO12
RC522RST9
RC5223.3V3.3V (نه 5V!)
RC522GNDGND
سرووسیگنال6
بازر+5
LED سبز / قرمزآند از راه مقاومت7 / 8

کد کامل

#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>

#define SS_PIN     10
#define RST_PIN    9
#define SERVO_PIN  6
#define BUZZER_PIN 5
#define GREEN_LED  7
#define RED_LED    8

MFRC522 rfid(SS_PIN, RST_PIN);
Servo lockServo;

byte allowedUID[4] = {0xDE, 0xAD, 0xBE, 0xEF};   // UID کارت خودت را این‌جا بنویس

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  lockServo.attach(SERVO_PIN);
  lockServo.write(0);                 // قفل بسته
  pinMode(BUZZER_PIN, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);
  pinMode(RED_LED, OUTPUT);
  Serial.println("Card ro nazdik kon...");
}

bool isAllowed() {
  if (rfid.uid.size != 4) return false;
  for (byte i = 0; i < 4; i++) {
    if (rfid.uid.uidByte[i] != allowedUID[i]) return false;
  }
  return true;
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent()) return;
  if (!rfid.PICC_ReadCardSerial()) return;

  Serial.print("UID:");
  for (byte i = 0; i < rfid.uid.size; i++) {
    Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(rfid.uid.uidByte[i], HEX);
  }
  Serial.println();

  if (isAllowed()) {
    Serial.println("Access granted");
    digitalWrite(GREEN_LED, HIGH);
    tone(BUZZER_PIN, 1500, 150);
    lockServo.write(90);              // باز
    delay(3000);
    lockServo.write(0);               // دوباره بسته
    digitalWrite(GREEN_LED, LOW);
  } else {
    Serial.println("Access denied");
    digitalWrite(RED_LED, HIGH);
    tone(BUZZER_PIN, 300, 600);
    delay(1000);
    digitalWrite(RED_LED, LOW);
  }

  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
}

توضیح بخش‌های مهم

UID کارت خودت را نمی‌دانی؟ برنامه را همین‌طور اجرا کن و کارت را نزدیک ببر. خط UID را در سریال مانیتور ببین و چهار عدد را با پیشوند 0x در آرایه‌ی allowedUID بنویس.

اجرا در شبیه‌ساز

در تینکرکد فارسی مثال آماده‌ی قفل در با کارت RFID و نسخه‌ی درسی‌اش در هوشمند با RFID را می‌توانی باز کنی. درس قدم‌به‌قدمش درس ۷۹: کارت RFID و در هوشمند است. ماژول RFID RC522 جزو ماژول‌های حرفه‌ای اشتراک پلاس است؛ مثال برای خواندن رایگان باز می‌شود و برای اجرا پلاس لازم داری. سروو، LED و بازر به‌تنهایی رایگان‌اند.

اشکال‌های رایج

اگر با سروو آشنا نیستی، اول سروو موتور با آردوینو را بخوان. برای افزودن کتابخانه‌ی MFRC522 به پروژه‌ها صفحه‌ی کتابخانه‌ها و برای همه‌ی پروژه‌ها صفحه‌ی شبیه‌ساز آردوینو را ببین.

قفل RFID را در شبیه‌ساز باز کن 🔐

مقاله‌های مرتبط

🌡️

سنسور دما و رطوبت DHT22 و DHT11 با آردوینو: سیم‌کشی، کد کامل و ترموستات کوچک

🚶

سنسور حرکت PIR با آردوینو: از دزدگیر ساده تا چراغ راهروی هوشمند

☀️

سنسور نور LDR (فتوسل) با آردوینو: مقسم ولتاژ، کد کامل و چراغ خواب خودکار

🐞

دیباگ قدم‌به‌قدم کد آردوینو در شبیه‌ساز آنلاین: بریک‌پوینت و دیدن متغیرها

همه‌ی آموزش‌های سنسورها و ماژول‌ها ← · همه‌ی مقاله‌ها