Prispevki Arduino, Prispevki ESP

Kateri RFID modul za Arduino ali ESP32? RC522, PN532, 13.56 MHz in 125 kHz primerjava

Primerjava RFID modulov RC522, PN532 in RDM6300 za Arduino in ESP32 projekte

Kateri RFID modul za Arduino ali ESP32? RC522, PN532, 13.56 MHz in 125 kHz primerjava

Uvod

Vsak, ki se je lotil projekta z branjem kartic ali ključkov, je kmalu ugotovil, da ponudba RFID modulov na trgu ni majhna — in da napačna izbira pomeni, da obstoječe kartice ne delajo z modulom, ali da plačate za zmogljivosti, ki jih nikoli ne boste uporabili. RFID modul Arduino in ESP32 projektov je med najpogosteje iskanimi komponentami, a razlik med modeli večina vodičev ne razloži dovolj natančno. Bistvo je v dveh frekvencah: 125 kHz in 13,56 MHz. Vsaka pokriva drugačen nabor kartic, tagov in protokolov. Na 125 kHz deluje večina starejših sistemov za kontrolo dostopa (tiste bele kartice v podjetjih). Na 13,56 MHz deluje sodobni RFID svet — MIFARE kartice, NFC oznake in pametni telefoni. Znotraj 13,56 MHz sta dve poglavitni izbiri: RC522 (na osnovi čipa MFRC522) in PN532. Oba bereta iste kartice, a PN532 zna bistveno več — za ceno višje kompleksnosti in višje cene. Kdaj kateri? To je osrednje vprašanje tega vodića. Tukaj dobite konkretne odgovore: razliko med frekvencama, primerjavo modulov z numeričnimi specifikacijami, pravilno vezavo na Arduino in ESP32, delujočo kodo in odločitveni vodič za vaš projekt.

Kako deluje RFID — osnove brez odveče teorije

Kako deluje RFID sistem — čitalec, kartica, UID in indukcija

RFID čitalec napaja kartico z elektromagnetnim poljem in prebere njen UID brez fizičnega stika.

RFID (radiofrekvenčna identifikacija) sistem sestavljata čitalec in oznaka. Čitalec oddaja elektromagnetno polje, ki pasivno oznako (tag ali kartico) brezžično napaja in iz nje prebere podatke. Oznaka nima lastne baterije — energijo dobi iz polja čitalca. V oznaki sta dva elementa: tuljava (antena) in čip. Ko pride oznaka v doseg čitalca, se v tuljavi inducira tok, ki napaja čip. Čip nato pošlje nazaj edinstveni identifikator — UID (Unique Identifier). Ta niz bajtov je tisto, kar vaša Arduino ali ESP32 koda prebere in s katerim dela. UID je v bistvu serijska številka oznake. Za enostavno kontrolo dostopa shranite UID dovoljenjih kartic v pomnilnik Arduina (EEPROM) ali strežnik. Ko kartico prislonite na čitalec, koda primerja prebrani UID z bazo — ujemanje odpre vrata ali sproži akcijo, neujemanje jo zavrne. Nekateri moduli (RC522, PN532) znajo tudi pisati podatke v pomnilnik kartice, ne le brati UID-a. To odpre naprednejše scenarije: shranjevanje salda v plačilnem sistemu, zapisovanje časa zadnjega dostopa ali kriptirany avtentikacijo. Ključno pravilo, ki ga ne smete pozabiti: kartica in čitalec morata delati na isti frekvenci. 125 kHz čitalec ne prebere 13,56 MHz kartice. To je najpogostejša napaka pri naročilu komponent.

Dve frekvenci: 125 kHz in 13,56 MHz

RFID modul Arduino — primerjava 125 kHz in 13,56 MHz frekvenc

125 kHz samo bere UID, 13,56 MHz piše podatke in je združljiva z NFC.

Razdelitev med 125 kHz in 13,56 MHz ni zgolj tehnični detajl — določa, kateri kartice delajo z modulom, koliko podatkov shranite in kaj sploh s kartico počnete.

125 kHz RFID — enostavno, poceni, samo branje UID-a

125 kHz je starejši LF (low frequency) standard. Moduli za to frekvenco berejo UID kartice — tipično 5 bajtov oziroma 10 znakov v HEX obliki — in ga pošljejo naprej prek UART vmesnika. Pisanje podatkov na kartico v osnovi ni podprto. Tipični čipi v karticah in ključkih: EM4100, EM4200, HID Prox. So poceni in zelo razširjeni — tiste plastične kartice za vstop v pisarne in hotele so z visoko verjetnostjo 125 kHz EM4100 naprave. Prednosti 125 kHz: enostavna integracija brez posebnih knjižnic (UART na 9600 baud zadostuje), nizka cena modulov in kartic, doseg branja 5–10 cm z originalno anteno, zanesljivo delovanje v industrijskih okoljih z večjimi elektromagnetnimi motnjami. Slabosti: samo branje UID-a (ne pisanje), nižja varnost (UID se ne šifrira med prenosom), brez NFC kompatibilnosti, starejša tehnologija brez aktivnega razvoja novih standardov.

13,56 MHz RFID — sodobno, pisanje podatkov, NFC

13,56 MHz je HF (high frequency) standard in osnova za večino sodobnih RFID sistemov ter za NFC (Near Field Communication) v pametnih telefonih. Vključuje standarde ISO 14443A (MIFARE, NFC Forum Type 2 in 4) in ISO 15693 (daljši doseg za industrijsko sledenje). Tipični čipi: MIFARE Classic 1K in 4K (najpogostejša za projekte), MIFARE Ultralight, NTAG213/215/216 (NFC oznake, kompatibilne s telefoni). NFC v vašem telefonu je podzvrst 13,56 MHz RFID — ko telefon bere NFC oznako, govori isti protokol kot RC522 ali PN532 modul. Prednosti 13,56 MHz: branje in pisanje podatkov v pomnilnik kartice, šifriranje z MIFARE CRYPTO1 ali novejšim AES (MIFARE Plus), NFC kompatibilnost (NTAG oznake bere vsak sodobni telefon), aktivno razvijajoč se standard z novimi produkti. Slabosti: nekoliko krajši doseg branja pri enaki moči napajanja kot 125 kHz pri dobrih sistemih (pri modulih za hobiste je doseg podoben), MIFARE Classic kartice niso kompatibilne z NFC NDEF protokolom za telefone (bere jih le UID), konfiguracija naprednih funkcij zahteva več kode. Za večino maker projektov z Arduinom in ESP32 je priporočena 13,56 MHz frekvenca — in sicer RFID modul Arduino RC522 ali PN532. Oba najdete v kategoriji RFID modulov na 3DSVET.

125 kHz moduli za Arduino: RDM6300 in EM-18

Če je vaš projekt vezan na obstoječe 125 kHz kartice ali ključke, ali vam zadostuje identifikacija brez pisanja podatkov, sta RDM6300 in EM-18 pravi izbiri. Oba sta RFID modul Arduino projekta, ki zahtevata minimalno kode in nobenih posebnih knjižnic.

RDM6300

RDM6300 je eden najpogosteje zajetih 125 kHz čitalcev v maker projektih. Komunicira prek UART vmesnika pri 9600 baudih. Ko zazna kartico, pošlje 14-bajtni niz v ASCII obliki: header bajt (02h), 10 ASCII znakov UID-a, 2 bajta za preverjanje vsote (checksum) in footer bajt (03h). Za Arduino zadostuje SoftwareSerial knjižnica — nobenih posebnih odvisnosti. Napajanje: 5 V (VCC pin). Doseg branja: 5–8 cm z originalno ploščato tuljavo. Modul ima ločene pine za anteno (razdelilnik T1, T2), napajanje in UART izhod. Na nekaterih verzijah je tudi pin za zunanjo anteno. Priporočen za: kontrolo dostopa z obstoječimi EM4100 ključki ali karticami, sledenje prisotnosti, označevanje predmetov v inventarju, projekte, kjer je enostavnost integracije prioriteta.

EM-18 in sorodne izvedbe

EM-18 je kompaktnejši modul z vgrajeno majhno anteno in prav tako UART izhodom pri 9600 baudih. Nekatere verzije imajo poleg UART izhoda še Wiegand 26-bitni izhod — ta je standard v profesionalnih sistemih za kontrolo dostopa in je koristen, ko se povezujete z obstoječim Wiegand krmilnikom ali na obstoječo instalacijo. Napajanje EM-18: 5 V, poraba ~50 mA pri branju. Format UID izhoda je enak RDM6300 (10-znakovni HEX niz). Moduli na osnovi čipa EM4095 ali HTRC110 imajo enak protokol, le drugačno fizično obliko. Oba modula — RDM6300 in EM-18 — sta primerna za 125 kHz RFID modul Arduino in ESP32 projekte, kjer ni potrebno pisati na kartice. Nobenih posebnih knjižnic ni potrebnih: Serial.read() ali SoftwareSerial za branje in primerjava prejetega HEX niza z dovoljenimi UID-ji je dovolj.

RC522 — najpopularnejši RFID modul Arduino

RC522 je modul, ki ga boste našli v večini maker RFID projektov. Temelji na čipu MFRC522 podjetja NXP Semiconductors in dela na frekvenci 13,56 MHz z ISO 14443A protokolom. Z njim berete in pišete MIFARE kartice, berete UID NFC oznak in izvajate sektorsko avtentikacijo z MIFARE CRYPTO1. Komunikacija poteka prek SPI vodila: potrebujete pine MOSI, MISO, SCK, SDA (chip select) in RST. Modul ima tudi IRQ pin za prekinitveni način delovanja, a se v večini projektov ne uporablja — polling zadostuje. Specifikacije RC522 (MFRC522):
  • Frekvenca: 13,56 MHz, standard ISO 14443A
  • Napajalna napetost: 2,5–3,3 V (obvezno — ne priključujte na 5 V)
  • SPI hitrost: do 10 Mbit/s
  • Doseg branja: 0–60 mm (odvisno od kartice, orientacije in antene)
  • Poraba pri branju: 13–26 mA; v stanju mirovanja: ~10 mA
  • Podprte kartice: MIFARE Classic 1K/4K, MIFARE Ultralight, MIFARE Mini, MIFARE Plus (delno), ISO 14443A kompatibilne oznake
  • Dimenzije modula: 40 × 60 mm (tipična PCB velikost)
Za Arduino in ESP32 obstaja odlična knjižnica MFRC522 (avtor Miguel Balboa, nadgrajevana s strani skupnosti), ki jo namestite prek Arduino Library Managerja. Vsebuje primere za branje UID-a, branje in pisanje podatkov v bloke, sektorsko avtentikacijo z ključema A in B ter dump celotnega pomnilnika kartice. Dokumentacija je obsežna, skupnost pa velika — za morebitne težave pri integraciji RFID modul Arduino projekta boste rešitev hitro našli na Githubu ali forumih. RC522 je optimalna izbira za:
  • Kontrolo dostopa — RFID kartica ali ključek odpre solenoidno ključavnico ali vklopi relej
  • Sisteme beleženja prisotnosti — UID in čas se shranita na SD kartico ali pošljeta v strežnik
  • Plačilne sisteme za tekmovanja ali evente — saldo shranjen v MIFARE sektorju
  • Inventarne sisteme — vsak predmet dobi MIFARE Classic oznako z lastnimi podatki
  • Pametna domača avtomatizacija — vklop naprave z določeno kartico
Pomembna omejitev RC522: MIFARE Classic 1K kartice niso kompatibilne z NFC NDEF standardom, ki ga pametni telefoni berejo z lastnim NFC vmesnikom. Telefon bo prebral UID takšne kartice, ne bo pa mogel brati vsebine pomnilnika (licenčna omejitev protokola CRYPTO1 za NFC Forum). Če potrebujete interakcijo telefon–oznaka prek NDEF, potrebujete PN532 z NTAG oznakami. Za doseg referenčne dokumentacije čipa si oglejte uradno podatkovno listo MFRC522 pri NXP.

PN532 — za zahtevnejše projekte in NFC komunikacijo

PN532 je čip podjetja NXP z bistveno širšim naborom zmogljivosti kot MFRC522. Poleg vsega, kar zna RC522, podpira dvosmerno NFC komunikacijo (card emulation, peer-to-peer po ISO 18092), protokol FeliCa (japonski standard Sony) in kartice po standardu ISO 14443B. Z njim pametni telefon vidi modul kot NFC napravo in z njim komunicira. Na trgu so PN532 moduli v kompaktnih izvedbah z DIP stikali za izbiro vmesnika. Isti modul podpira SPI, I²C in UART — nastavite z dvema DIP stikaloma. To je priročno, ko SPI pine potrebujete za drug periferni na istem mikrokrmilniku. Specifikacije PN532:
  • Frekvenca: 13,56 MHz, standardi ISO 14443A/B, ISO 18092, FeliCa 212/424 kbps
  • Napajalna napetost: 3,3 V (nekateri moduli imajo 3,3 V regulator in sprejemajo 5 V na VCC)
  • Vmesniki: SPI (nastavi SW1=0, SW2=1), I²C (SW1=1, SW2=0), UART (SW1=0, SW2=0)
  • Doseg branja: do 50 mm pri standardnih karticah
  • Poraba pri aktivnem branju: ~150 mA (bistveno več kot RC522 — upoštevajte pri baterijsko napajanih projektih)
  • Podprte kartice: MIFARE Classic 1K/4K, MIFARE Ultralight/Ultralight C, MIFARE Plus, FeliCa, ISO 14443B, NTAG213/215/216
  • Dodatne zmogljivosti: NFC card emulation, peer-to-peer NFC, NDEF branje in pisanje
Za Arduino in ESP32 RFID projekte z PN532 se najpogosteje uporablja knjižnica Adafruit PN532, ki podpira vse tri komunikacijske načine in vključuje primere za branje UID-a, NDEF branje/pisanje, card emulation in peer-to-peer. Konfiguracija je zahtevnejša kot pri RC522 (nastavitev DIP stikal, inicializacija protokola z begin() in preveritev firmware različice), a dokumentacija Adafruit je kakovostna. PN532 je prava izbira, ko:
  • Vaš Android ali iOS telefon piše URL, kontakt ali ukaz na NFC oznako (NDEF format na NTAG215)
  • Potrebujete, da se modul obnaša kot NFC kartica (card emulation — npr. simulacija pametne kartice)
  • Delate s FeliCa karticami (japonski tranzitni sistemi, Sony Suica)
  • Potrebujete ISO 14443B kartice (nekatere osebne izkaznice, bančne kartice za branje)
  • Implementirate peer-to-peer NFC komunikacijo med dvema ESP32 napravama

Primerjava RC522 in PN532 — kdaj kateri

RC522 ali PN532 — odločitvena tabela za RFID modul Arduino in ESP32

RC522 za večino projektov, PN532 ko potrebujete NFC s telefonom ali FeliCa.

Oba modula delata na 13,56 MHz in bereta iste MIFARE Classic kartice. Razlika nastopi pri tem, kaj počnete po branju — in ali potrebujete telefon kot del sistema.
Lastnost RC522 (MFRC522) PN532
Frekvenca 13,56 MHz (ISO 14443A) 13,56 MHz (ISO 14443A/B, ISO 18092)
Primarni vmesnik SPI SPI / I²C / UART (nastavljivo)
MIFARE Classic 1K/4K Da Da
MIFARE Ultralight Da Da
NTAG213/215/216 Samo UID Da — NDEF branje in pisanje
FeliCa (Sony) Ne Da (212 in 424 kbps)
ISO 14443B Ne Da
NFC card emulation Ne Da
Peer-to-peer NFC Ne Da (ISO 18092)
Telefon piše na oznako (NDEF) Ne Da (z NTAG karticami)
Arduino knjižnica MFRC522 Adafruit PN532
Napajanje 3,3 V 3,3 V (ali 5 V z regulatorjem)
Poraba pri branju ~13–26 mA ~150 mA
Tipična cena modula Nižja 2–3× višja
Tipična uporaba Kontrola dostopa, prisotnost, MIFARE projekti NFC aplikacije, card emulation, FeliCa, telefonska interakcija
Kratko pravilo: vzamete RC522, ko delate z MIFARE karticami in UID identifikacijo zadostuje. Vzamete PN532, ko potrebujete telefon v sistemu, emulacijo kartice ali FeliCa. Ne plačujte za PN532 zmogljivosti, ki jih vaš projekt ne bo nikoli uporabil.

Katere kartice in oznake rabim?

Modul brez ustreznih kartic ali tagov ne dela. Izbira kartice je enako važna kot izbira modula — in napaka pri frekvenci ali formatu je pogosta.

Za 125 kHz module (RDM6300, EM-18)

  • EM4100 kartice in ključki — klasična bela kartica ali plastični ključek z EM4100 čipom. So najpogostejši in najcenejši. Samo branje UID-a, brez pisanja. Na etiketici ali embalažni škatli bo pisalo »EM4100«, »125 kHz« ali »LF RFID«.
  • T5577 zapisljive kartice — večfunkcijske 125 kHz kartice, ki se jih da preprogramirati. Podpirajo emulacijo EM4100, HID Prox in nekaterih drugih formatov. Koristne za testiranje ali za projekte, kjer morate na kartico shraniti lastne podatke.
  • HID Prox kartice — pogosto v korporativnih sistemih za dostop. Večina 125 kHz modulov jih prebere, a format UID-a (26-bitni Wiegand) je drugačen od EM4100 — koda za razčlenjevanje je nekoliko zahtevnejša.

Za 13,56 MHz module (RC522, PN532)

  • MIFARE Classic 1K — standardna bela kartica z 1 KB pomnilnika, razdeljena v 16 sektorjev po 4 bloke. Vsak sektor je zaščiten z dvema 6-bajtna ključema (A in B). To je najpogostejša kartica za RFID modul Arduino projekte. Telefon prebere UID, ne more pa brati vsebine pomnilnika (CRYPTO1 protokol ni NFC Forum certificiran).
  • MIFARE Classic 4K — enako kot 1K, a 4 KB pomnilnika in 40 sektorjev. Za obsežnejše shranjevanje podatkov na kartici sami (npr. celoten profil gosta na hotelski kartici).
  • MIFARE Ultralight — preprostejša kartica brez sektorske zaščite, 48 bajtov zapisljivega pomnilnika (144 bajtov pri Ultralight C). Primerna za enkratne vstopnice ali preproste identifikacijske oznake. Ultralight C ima DES avtentikacijo.
  • NTAG213 — 144 bajtov NDEF pomnilnika, NFC Forum Type 2 certified. Vsak sodobni telefon jo prebere in nanjo zapiše. Primerna za povezavo med RC522/PN532 projektom in telefonsko aplikacijo. NTAG215 ima 504 bajtov (popularen za Amiibo emulacijo), NTAG216 pa 888 bajtov.
  • MIFARE Plus — novejša generacija z AES-128 šifriranjem namesto CRYPTO1. Kompatibilna z MIFARE Classic na logičnem nivoju (stopnja 1), a za AES zmogljivosti potrebujete PN532 ali novejše čitalce.
Za začetnika, ki gradi kontrolo dostopa ali sledenje z RFID modul Arduino projektom, je najboljša kombinacija RC522 + MIFARE Classic 1K kartice ali ključki. Za NFC interakcijo s telefonom pa PN532 + NTAG215 oznake. Vse skupaj najdete v kategoriji RFID na 3DSVET.

Vezava RC522 na Arduino in ESP32

Vezava RC522 RFID modula na Arduino Uno in ESP32 — pin diagrama

SPI vezava RC522 na Arduino Uno (D10–D13) in ESP32 (GPIO18–23) — napajanje obvezno 3,3 V.

RC522 komunicira prek SPI vodila — 4 podatkovni pini plus CS (chip select) in RST. Vezava je enostavna, a ena napaka se pojavi redno: napajanje na 5 V namesto 3,3 V.

Vezava RC522 na Arduino Uno in Nano

RC522 pin Arduino Uno / Nano Opis
SDA (CS) D10 Chip select — nastavljivo
SCK D13 SPI ura
MOSI D11 Master out / slave in
MISO D12 Master in / slave out
IRQ Opcijsko (prekinitveni način)
GND GND Masa
RST D9 Reset — nastavljivo
3.3V 3.3V Ne priključite na 5V!
Arduino Uno in Nano imata 5 V logiko na SPI pinih, RC522 pa je 3,3 V naprava. V praksi večina modulov deluje brez pretvornikov nivojev (ker je napetostni prag MFRC522 dovolj toleranten za 5 V signale), a za zanesljivo dolgoročno delovanje je priporočen napetostni delilnik ali level shifter na MOSI, SCK in SDA pinih. VCC vedno priključite na 3,3 V — to ni opcijsko.

Vezava RC522 na ESP32

RC522 pin ESP32 Opis
SDA (CS) GPIO5 Chip select
SCK GPIO18 VSPI ura
MOSI GPIO23 VSPI MOSI
MISO GPIO19 VSPI MISO
GND GND Masa
RST GPIO27 Reset
3.3V 3.3V Napajanje
ESP32 deluje na 3,3 V — kar je popolno ujemanje z RC522. Nobenih level shifterjev ni potrebno. VSPI vodilo (GPIO18/19/23) je privzeto SPI vodilo v Arduino IDE za ESP32. Knjižnica MFRC522 deluje brez sprememb tudi na ESP32 RFID projektih — le pine definirate drugače. Prednost ESP32 RFID kombinacije pred Arduino Uno + RC522: ESP32 ima vgrajen Wi-Fi in BLE. Dostop do strežnika (beleženje v Google Sheets, MQTT, HTTP POST), Wi-Fi OTA posodobitve kode ali Bluetooth obveščanje so možni brez dodatnih modulov.

Vezava PN532

PN532 moduli imajo DIP stikala za izbiro vmesnika. Za I²C: SW1=1, SW2=0; za SPI: SW1=0, SW2=1; za UART: SW1=0, SW2=0. Pri I²C vezavi na Arduino Uno: SDA na A4, SCL na A5. Na ESP32: SDA na GPIO21, SCL na GPIO22. Za SPI vezavo na ESP32 uporabite ista VSPI pina kot pri RC522, a z drugačnim CS pinom. Napajanje PN532 je 3,3 V, a nekateri moduli imajo vgrajen 3,3 V regulator in sprejemajo 5 V na VCC — preverite specifikacije konkretnega modula. Poraba ~150 mA pri branju je bistveno višja kot pri RC522 — to je relevantno pri baterijsko napajanih projektih.

Osnovna koda za Arduino — RC522

Ko imate RFID modul Arduino RC522 priključen in knjižnico MFRC522 nameščeno prek Arduino Library Managerja, je osnovna kontrola dostopa takole:
#include <SPI.h>
#include <MFRC522.h>

#define SS_PIN  10
#define RST_PIN  9
#define RELE_PIN  7

MFRC522 rfid(SS_PIN, RST_PIN);

// Dovoljeni UID-ji — zamenjajte s pravimi vrednostmi
byte allowed[][4] = {
  {0xDE, 0xAD, 0xBE, 0xEF},
  {0x12, 0x34, 0x56, 0x78}
};

void setup() {
  Serial.begin(9600);
  SPI.begin();
  rfid.PCD_Init();
  pinMode(RELE_PIN, OUTPUT);
  digitalWrite(RELE_PIN, LOW);
  Serial.println("Sistem za kontrolo dostopa — priblizajte kartico.");
}

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

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

  // Preveritev dostopa
  bool dostop = false;
  for (auto &uid : allowed) {
    if (memcmp(rfid.uid.uidByte, uid, 4) == 0) {
      dostop = true;
      break;
    }
  }

  if (dostop) {
    Serial.println("Dostop dovoljen.");
    digitalWrite(RELE_PIN, HIGH);
    delay(3000);
    digitalWrite(RELE_PIN, LOW);
  } else {
    Serial.println("Dostop zavrnjen.");
  }

  rfid.PICC_HaltA();
  rfid.PCD_StopCrypto1();
}
Ta koda deluje na Arduino Uno in Nano z vezavo iz zgornje tabele. Za ESP32 RFID projekte zamenjajte SS_PIN in RST_PIN z GPIO številkami (npr. 5 in 27). Knjižnica se inicializira enako; razlika je le v definicijah pinov na vrhu kode. Za prve teste priporočamo, da v Serial Monitorju preberete UID vsake kartice, ki jo boste dodali v sistem, in ga ročno vpišete v tabelo allowed[][]. Ko sistem deluje, UID-je prenesete v EEPROM ali zunanjo pomnilniško napravo.

Pisanje podatkov na MIFARE Classic kartico

RFID modul Arduino RC522 ne zna samo brati UID-a — z MIFARE Classic karticami piše in bere podatke v posamezne bloke. MIFARE Classic 1K ima 16 sektorjev, vsak sektor pa ima 4 bloke po 16 bajtov. Blok 0 (sektor 0, blok 0) je tovarniško zaklenjen in vsebuje UID ter podatke proizvajalca. Blok 3 vsakega sektorja je t. i. sector trailer — vsebuje ključa A in B ter dovoljenja za dostop. Preostalih 48 blokov je na voljo za podatke. Privzeti ključ za večino novih MIFARE Classic kartic je FF FF FF FF FF FF (6 bajtov 0xFF). S tem ključem se avtenticirate na sektor, nato pa berete ali pišete bloke znotraj njega. Po pisanju lastnih podatkov ključ zamenjate z lastnim, da kartico zaščitite pred nepooblaščenim dostopom. Primer pisanja na blok 4 (sektor 1, blok 0) z MFRC522 knjižnico:
MFRC522::MIFARE_Key kljuc;
for (byte i = 0; i < 6; i++) kljuc.keyByte[i] = 0xFF;

byte blok = 4;
byte podatki[16] = "Ime:Janez       ";  // 16 bajtov

MFRC522::StatusCode status;
status = rfid.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A,
                                blok, &kljuc, &(rfid.uid));
if (status != MFRC522::STATUS_OK) {
  Serial.println("Avtentikacija ni uspela.");
  return;
}

status = rfid.MIFARE_Write(blok, podatki, 16);
if (status == MFRC522::STATUS_OK)
  Serial.println("Pisanje uspesno.");
else
  Serial.println("Pisanje ni uspelo.");
Branje podatkov iz istega bloka je identično — zamenjate le MIFARE_Write z MIFARE_Read in dodate buffer za prebrane bajte. Podrobna dokumentacija in primeri so v knjižnici MFRC522 na Githubu (miguelbalboa/rfid).

Pogoste napake pri delu z RFID moduli

Nekatere napake se pojavljajo redno — tako pri tistih, ki prvič delajo z RFID modul Arduino projektom, kot pri izkušenejših. Tu je seznam tistih, ki vzamejo največ časa. 1. Napačna frekvenca kartice. Naročijo RC522 in EM4100 ključke. Rezultat: modul ne prebere ničesar. EM4100 je 125 kHz, RC522 je 13,56 MHz. Preverite etiketo na kartici ali ključku — vedno mora pisati frekvenca ali standard. 2. Napajanje RC522 na 5 V. Modul ne razpade takoj, a deluje nestabilno ali se pregreva. VCC mora biti 3,3 V. Na Arduinu Uno je 3,3 V izhod na istoimenskem pinu — ne napajajte iz 5V pina. 3. Pričakovanje NFC komunikacije s telefonom prek RC522 + MIFARE Classic. Telefon prebere UID, ne prebere pa vsebine pomnilnika. Za polno NFC interakcijo s telefonom potrebujete PN532 in NTAG oznake. 4. Napačna inicializacija PN532 DIP stikal. PN532 modul je nastavljen na napačen vmesnik in se ne odziva. Preverite DIP položaj pred vsako novo vezavo — za I²C je SW1=1, SW2=0; za SPI SW1=0, SW2=1. 5. Prekrivajoče se SPI naprave brez pravilnega chip select upravljanja. Če imate na istem SPI vodilu RC522 in SD kartico, morata imeti ločena CS pina. Ko komunicirate z enim, mora biti CS drugega visok. Knjižnica MFRC522 tega ne upravlja namesto vas. 6. Kartica preblizu — prekoračitev dosega. RC522 ima doseg do ~60 mm, a optimalen doseg je 10–30 mm. Kartice ne slonite direktno na modul — antena ne deluje dobro pri nič mm razdalji. Optimalna razdalja je 1–3 cm. 7. Pozabljeni PCD_StopCrypto1() po MIFARE operacijah. Ko enkrat izvedete avtentikacijo in pisanje/branje, morate po vsaki kartici poklicati rfid.PCD_StopCrypto1(). Brez tega naslednja kartica ne bo prebrana pravilno.

Kateri RFID modul za Arduino ali ESP32 izbrati — odločitveni vodič

Odločitveni vodič za izbiro RFID modula — RC522, PN532, RDM6300

Pet vprašanj vodi do prave izbire: frekvenca kartic, NFC potreba, Wi-Fi, baterija in proračun.

Tukaj so konkretni odgovori za najpogostejše scenarije:
  • Imate obstoječe 125 kHz kartice ali ključke (EM4100, HID Prox)? RDM6300 ali EM-18. Ne kupujte 13,56 MHz modula — kartice ne bodo delovale.
  • Gradite enostavno kontrolo dostopa ali beleženje prisotnosti z novimi karticami? RC522 + MIFARE Classic 1K kartice. Najlažja integracija, ogromno dokumentacije in primerov za RFID modul Arduino.
  • Potrebujete, da pametni telefon piše ali bere podatke z oznake? PN532 + NTAG215 ali NTAG216 oznake. Samo ta kombinacija podpira NDEF komunikacijo s telefonom.
  • Gradite projekt s Wi-Fi ali MQTT? Kateri koli 13,56 MHz modul + ESP32 ESP32 RFID kombinacija. ESP32 ima Wi-Fi vgrajen, Arduino Uno pa ne.
  • Potrebujete FeliCa ali ISO 14443B? PN532. To je edina realna možnost v maker svetu za ta standarda.
  • Ima vaš projekt omejeno napajanje (baterija)? RC522 (~13–26 mA) namesto PN532 (~150 mA). Razlika je desetkratna.
  • Imate omejen proračun? RC522 je bistveno cenejši od PN532 in za 90 % maker projektov povsem zadostuje.

Zaključek

Izbira pravega RFID modula za Arduino ali ESP32 projekt se začne pri frekvenci. 125 kHz za obstoječe sisteme z EM4100 ključki, 13,56 MHz za MIFARE kartice in NFC. Znotraj 13,56 MHz je RFID modul Arduino RC522 prava rešitev za večino projektov: nizka cena, odlična knjižnica, velika skupnost in jasna dokumentacija. PN532 vzamete takrat, ko vaš projekt resnično potrebuje NFC komunikacijo s telefonom, card emulation ali FeliCa — in ste pripravljeni na višjo porabo ter zahtevnejšo konfiguracijo. RC522, PN532, RDM6300 čitalce za 125 kHz projekte, MIFARE Classic kartice in NTAG oznake najdete v kategoriji RFID modulov na 3DSVET. Pravi RFID modul Arduino ali ESP32 projekt je od prave kombinacije modula in kartice oddaljen le en korak.

Potrebujete RFID modul za vaš projekt? V 3DSVET najdete RC522, PN532, RDM6300 čitalce, MIFARE Classic kartice in NTAG oznake — vse z dostavo po EU.

Poglejte ponudbo RFID modulov →