🚪 در هوشمند با RFID

کارت مجاز سروو را باز می‌کند؛ کارت ناشناس سه بوق خطا می‌گیرد.

سطح: چالشی ⭐⭐⭐ · مود: آردوینو (سه‌بعدی + کد)

قطعات لازم

کد کامل پروژه

// Smart door: the white card opens the servo "door", others get an error beep.
#include <SPI.h>
#include <MFRC522.h>
#include <Servo.h>

MFRC522 rfid(10, 9);          // SDA(SS) pin, RST pin
Servo door;
const int BUZZER = 8;
byte allowed[4] = {0xD3, 0x4A, 0x1F, 0x9B};   // UID of the white card

void beep(int times, int ms) {
  for (int i = 0; i < times; i++) {
    digitalWrite(BUZZER, HIGH); delay(ms);
    digitalWrite(BUZZER, LOW);  delay(ms);
  }
}

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  door.attach(6);
  door.write(0);              // closed
  pinMode(BUZZER, OUTPUT);
  Serial.println("Tap a card...");
}

void loop() {
  if (!rfid.PICC_IsNewCardPresent()) return;   // no new card
  if (!rfid.PICC_ReadCardSerial()) return;     // could not read it

  bool ok = true;
  Serial.print("UID:");
  for (int i = 0; i < 4; i++) {
    Serial.print(" ");
    Serial.print(rfid.uid.uidByte[i], HEX);
    if (rfid.uid.uidByte[i] != allowed[i]) ok = false;
  }
  Serial.println();

  if (ok) {
    Serial.println("Welcome! Door open.");
    beep(1, 100);
    door.write(90);           // open
    delay(3000);
    door.write(0);            // close again
  } else {
    Serial.println("Access denied!");
    beep(3, 80);
  }
  rfid.PICC_HaltA();
}

چطور اجرایش کنم؟

  1. شبیه‌ساز تینکرکد فارسی را باز کن و «مود آردوینو» را انتخاب کن.
  2. از پنل «نمونه‌ها»، «در هوشمند با RFID» را بارگذاری کن — مدار و کد با هم می‌آیند.
  3. دکمه‌ی اجرا ▶ را بزن و خروجی Serial و رفتار قطعات را تماشا کن.
  4. حالا کد را تغییر بده — عددها، پین‌ها، ترتیب — و دوباره اجرا کن!
این پروژه را رایگان در شبیه‌ساز اجرا کن 🤖