CODE | Simple RFID Reader - Arduino Project 044

RonWang2 years ago (2024-10-07)电子编程 COD80

Arduino Programming Basic -- Making an RFID Reader

Advanced RFID with Arduino

RFID (Radio Frequency Identification) technology enables wireless communication between a reader and tags for identification and data exchange. Using Arduino with RFID modules like the RC522 allows for building advanced projects such as access control systems, attendance tracking, and inventory management.

Overview of RFID with Arduino

The RFID system consists of a reader (e.g., RC522 module) and tags (passive or active). The RC522 operates at 13.56 MHz and supports SPI, I2C, and UART communication protocols, though SPI is most commonly used with Arduino. Tags store data and transmit it back to the reader when energized by its electromagnetic field.

Key Features of RC522 Module

  • Communication Protocols: SPI (up to 10 Mbps), I2C, UART.

  • Voltage: Operates at 3.3V but has 5V-tolerant pins.

  • Range: Typically 2-5 cm for standard tags.

Applications

 Reading/writing data, UID detection, and authentication.

Project 44 Simple RFID Reader

Arduino RFID RC522

Wiring Diagram Between RC522 and Arduino without voltage regulator

Arduino RFID RC522 Resistor

Wiring Diagram Between RC522 and Arduino with voltage regulator

As Circuit in the wiring diagram above, 1kOhM and 2kOhm pair of resistors are used to regulate 5V to 3.3V. It does not need to adjust the voltage between the Arduino pin and the MISO pin of the RC522 module. However, it is necessary to regulate the voltage between the Arduino pins and the SS, SCK, MOSI, and RST pins of the RC522 module.

// Project 44  Simple RFID Reader   Arduino-RFID-NFC

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

#define SS_PIN 10
#define RST_PIN 5

MFRC522 rfid(SS_PIN, RST_PIN);

void setup() {
  Serial.begin(9600);
  SPI.begin(); // init SPI bus
  rfid.PCD_Init(); // init MFRC522

  Serial.println("Tap RFID/NFC Tag on reader");
}

void loop() {
  if (rfid.PICC_IsNewCardPresent()) { // new tag is available
    if (rfid.PICC_ReadCardSerial()) { // NUID has been readed
      MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
      //Serial.print("RFID/NFC Tag Type: ");
      //Serial.println(rfid.PICC_GetTypeName(piccType));

      // print NUID in Serial Monitor in the hex format
      Serial.print("UID:");
      for (int i = 0; i < rfid.uid.size; i++) {
        Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
        Serial.print(rfid.uid.uidByte[i], HEX);
      }
      Serial.println();

      rfid.PICC_HaltA(); // halt PICC
      rfid.PCD_StopCrypto1(); // stop encryption on PCD
    }
  }
}
Share with Friends:

Related Articles

TurboC install and debug runtime Environment

TurboC install and debug runtime Environment

C语言调试运行环境TurboC的 上大学时学习《C语言程序设计》(第二版)作者谭浩强,大部分编程时间是在学校机房度过,每次点开桌面的TurboC图标,就开始在里面敲代码,然后保存程序Abc.…

C01 | The Past and Present of the C Language

C01 | The Past and Present of the C Language

C语言教程01:C语言的前世今生程序设计语言的发展经历了从机器语言->汇编语言->高级语言的过程机器语言:是计算机最原始的语言,由 0 和 1 的代码构成,CPU 在工作的时候只认识机 器…

Series and parallel circuits

Series and parallel circuits

Two-terminal components and electrical networks can be connected in series or parallel. The resultin…

CODE | MX1508 H-Driver Motor - Arduino Project 030B

CODE | MX1508 H-Driver Motor - Arduino Project 030B

MX1508 H-BridgeDual Motor DriverThe driver can drive up to two motors. The H-Bridge dual motor drive…

CODE | LED Dot Matrix Display Beat Heart - Arduino Project 020

CODE | LED Dot Matrix Display Beat Heart - Arduino Project 020

You’re going to use the same circuit, but with a slight variation in the code to create a multi-fram…

Electric and Sensor Control System

Electric and Sensor Control System

Since 2022, the founder of Autaba EC deparrment has devoted to the research and development of advan…

Post a Comment

Anonymous

Feel free to share your thoughts and opinions here.