RFID olvasó - memória író

2024.01.27

Kód az RFID tag kiolvasásához

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include <SPI.h>

#include <MFRC522.h>

#define RST_PIN 9

#define SS_PIN 10

MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

void setup() {

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

display.setTextColor(WHITE);

display.setCursor(0,0);

display.setTextSize(2);

display.setCursor(30, 20);

display.print("RFID");

display.setCursor(20, 40);

display.print("READER");

display.display();

Serial.begin(115200); // Soros kommunikáció inicializálása a számítógéppel

while (!Serial);

SPI.begin(); // SPI busz inicializálása

mfrc522.PCD_Init(); // MFRC522 inicializálása

delay(4);

mfrc522.PCD_DumpVersionToSerial(); // A PCD részleteinek megjelenítése - MFRC522 Kártyaolvasó részletei

Serial.println(F("Kártya pásztázása UID, SAK, típus és adatblokkok megtekintéséhez..."));

}

void loop() {

if ( ! mfrc522.PICC_IsNewCardPresent()) {

return;

}

if ( ! mfrc522.PICC_ReadCardSerial()) {

return;

}

mfrc522.PICC_DumpToSerial(&(mfrc522.uid));

}



Kód a tag írásához, YouTube szó kerül be alább:


#include <SPI.h>

#include <MFRC522.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define SS_PIN 10

#define RST_PIN 9

MFRC522 mfrc522(SS_PIN, RST_PIN);

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

MFRC522::MIFARE_Key key;

int block = 1;

byte data[16] = {"YouTube"};

char chr;

byte read_data[18];

void setup()

{

Serial.begin(115200);

SPI.begin();

mfrc522.PCD_Init();

// OLED kijelző inicializálása

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

display.setTextColor(WHITE);

display.setCursor(0, 0);

display.setTextSize(2);

display.setCursor(0, 0);

display.print("RFID iras");

display.display();

Serial.println("Keresés...");

// Az authentikációs kulcs beállítása

for (byte i = 0; i < 6; i++) {

key.keyByte[i] = 0xFF;

}

}

void loop()

{

// Új kártya jelenlétének ellenőrzése

if (!mfrc522.PICC_IsNewCardPresent()) {

return;

}

// Kártya olvasása

if (!mfrc522.PICC_ReadCardSerial()) {

return;

}

Serial.println("RFID kartyat talaltam...");

// Blokk írása és olvasása

writeBlock(block, data);

readBlock(block, read_data);

// Kijelzőn kártyatartalom megjelenítése

display.setTextSize(2);

display.setCursor(0, 20);

display.print("Tartalom: ");

display.setCursor(0, 40);

Serial.print("Kartya tartalom: ");

for (int j = 0; j < 16; j++) {

Serial.write(read_data[j]);

chr = read_data[j];

display.print(chr);

}

Serial.println("");

display.display();

}

int writeBlock(int blockNumber, byte arrayAddress[])

{

// Az utolsó 4 blokk kiválasztása

int largestModulo4Number = blockNumber / 4 * 4;

int trailerBlock = largestModulo4Number + 3;

// Ellenőrzés, hogy a blokk záró blokk-e

if (blockNumber > 2 && (blockNumber + 1) % 4 == 0) {

Serial.print(blockNumber);

Serial.println(" BLOKK");

return 2;

}

Serial.print(blockNumber);

Serial.println(" BLOKK");

// Kártya autentikáció

byte status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));

if (status != MFRC522::STATUS_OK) {

Serial.print("Autentikacios hiba: ");

Serial.println(mfrc522.GetStatusCodeName(status));

return 3;

}

// Blokk írása

status = mfrc522.MIFARE_Write(blockNumber, arrayAddress, 16);

if (status != MFRC522::STATUS_OK) {

Serial.print("Sikertelen iras: ");

Serial.println(mfrc522.GetStatusCodeName(status));

return 4;

}

Serial.println("A blokk sikeresen megírva!");

}

int readBlock(int blockNumber, byte arrayAddress[])

{

// Az utolsó 4 blokk kiválasztása

int largestModulo4Number = blockNumber / 4 * 4;

int trailerBlock = largestModulo4Number + 3;

// Kártya autentikáció

byte status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, trailerBlock, &key, &(mfrc522.uid));

if (status != MFRC522::STATUS_OK) {

Serial.print(" sikertelen (olvasás): ");

Serial.println(mfrc522.GetStatusCodeName(status));

return 3;

}

byte buffersize = 18;

// Blokk olvasása

status = mfrc522.MIFARE_Read(blockNumber, arrayAddress, &buffersize);

if (status != MFRC522::STATUS_OK) {

Serial.print(" sikertelen: ");

Serial.println(mfrc522.GetStatusCodeName(status));

return 4;

}

Serial.println("A blokk sikeresen kiolvasva!");

}

Példa kód arra vonatkozóan, hogy RFID tad azonosító alapján miként ismer fel a rendszer:


include <SPI.h>

#include <MFRC522.h>

#include <Wire.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#define RST_PIN 9

#define SS_PIN 10

byte readCard[4];

String My_ID = "33EDBDD"; // Az engedélyezett RFID kártya UID-je

String ID = ""; // Aktuális RFID kártya UID-je

MFRC522 mfrc522(SS_PIN, RST_PIN);

Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire, -1);

void setup()

{

SPI.begin();

mfrc522.PCD_Init();

display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

display.clearDisplay();

display.setTextColor(WHITE);

display.setCursor(0,0);

display.setTextSize(1);

display.setCursor(0, 10);

display.print("Ellenorzes..."); // Kártya beolvasására várakozás üzenet

display.display();

}

void loop()

{

while (getID())

{

// Kijelző törlése és beállítása

display.clearDisplay();

display.setCursor(20,0);

display.setTextSize(1);

// Engedélyezés vagy elutasítás üzenet megjelenítése a kártya UID-jétől függően

if (ID == My_ID)

{

display.setTextSize(2);

display.print("RENDBEN"); // Hozzáférés engedélyezve üzenet

display.setTextSize(1);

}

else

{

display.setTextSize(2);

display.print("TILOS"); // Hozzáférés megtagadva üzenet

display.setTextSize(1);

}

// Kártya UID kiírása a kijelzőre

display.display();

display.setCursor(0, 20);

display.setTextSize(2);

display.print("ID : ");

display.setCursor(0, 40);

display.print(ID);

display.setTextSize(1);

display.display();

// Rövid késleltetés

delay(2000);

// Kijelző törlése és alapértelmezett üzenet kiírása

display.clearDisplay();

display.setCursor(0, 50);

display.print(" RFID azonositas ");

display.setCursor(0, 10);

display.setTextSize(2);

display.print("Ki vagy?"); // Kártya beolvasására várakozás üzenet

display.setTextSize(1);

display.display();

}

}

boolean getID()

{

if ( ! mfrc522.PICC_IsNewCardPresent()) {

return false;

}

if ( ! mfrc522.PICC_ReadCardSerial()) {

return false;

}

ID = "";

for ( uint8_t i = 0; i < 4; i++) {

//readCard[i] = mfrc522.uid.uidByte[i];

ID.concat(String(mfrc522.uid.uidByte[i], HEX)); // Kártya UID olvasása és stringgé konvertálása

}

ID.toUpperCase(); // UID átalakítása nagybetűs formára

mfrc522.PICC_HaltA(); // Kártyaolvasó inaktiválása

return true;

}


Készítsd el weboldaladat ingyen! Ez a weboldal a Webnode segítségével készült. Készítsd el a sajátodat ingyenesen még ma! Kezdd el