Yazılardaki ürünleri komponentci.net'te inceleyebilir, hemen sipariş verebilirsiniz.komponentci.net →
KomponentciBlog Mağaza

PN532 NFC Modülü: Arduino ile Kart Okuma ve Yazma

PN532 NFC Modülü: Arduino ile Kart Okuma ve Yazma
Kısa cevap

PN532 NFC modülü, 13,56 MHz MIFARE Classic, Ultralight ve NTAG21x kartları okuyup yazabilen, I2C, SPI veya UART (HSU) ile bağlanan bir okuyucudur. I2C için DIP anahtar 1 ON, 2 OFF yapılır ve modül Arduino Uno'ya VCC-5V, GND-GND, SDA-A4, SCL-A5 olarak bağlanır.

PN532 NFC modülü, Arduino ve ESP32 projelerinde NFC kart ve etiketleri okumak ve yazmak için kullanılan esnek bir okuyucudur. Bu yazıda PN532'nin hangi kartları desteklediğini, I2C, SPI ve HSU modlarının DIP anahtarla nasıl seçildiğini, Arduino Uno bağlantısını, kart UID'sini okuyan örnek kodu ve karta veri yazarken dikkat edilecekleri anlatıyoruz. Geçiş kontrolü, yoklama ve NFC etiket projesi yapacak hobiciler ve öğrenciler için hazırlanmıştır.

PN532 NFC modülü nedir?

PN532 NFC modülü, NXP'nin PN532 okuyucu çipini, 13,56 MHz anteni ve gerekli pasif elemanları küçük bir kartta toplayan ve mikrodenetleyiciyle I2C, SPI ya da UART üzerinden haberleşen bir NFC okuyucu-yazıcı modülüdür. Kartları okuyabilir, yazabilir ve NFC'li telefonlarla eşler arası (peer-to-peer) haberleşebilir.

NFC'nin temellerini ve kart tiplerini NFC nedir ve NFC kart çeşitleri yazımızda ayrıntılı anlattık. Bu yazı doğrudan PN532 ile uygulamaya odaklanır.

PN532 hangi kartları okur?

PN532, 13,56 MHz'te çalışan ISO 14443A kartların neredeyse hepsini okur: MIFARE Classic 1K ve 4K, MIFARE Ultralight ve NTAG213/215/216 bunların başında gelir. Üretici belgelerine göre ISO 14443B, FeliCa ve ISO 18092 (NFC eşler arası) desteği de vardır.

Kart / etiketStandartPN532 ile ne yapılır?
MIFARE Classic 1K (S50)ISO 14443AUID okuma, anahtarla blok okuma ve yazma
NTAG213/215/216ISO 14443A (NFC Type 2)UID okuma, sayfa yazma, telefonla okunan NDEF kaydı
MIFARE UltralightISO 14443AUID okuma, sayfa okuma ve yazma
MIFARE DESFireISO 14443AUID okuma; şifreli veri için ayrı kütüphane gerekir
125 kHz EM4100 kartDüşük frekansOkunamaz (farklı frekans)

Elinizdeki 13,56 MHz RFID NFC kart ya da NTAG213 NFC etiket PN532 ile sorunsuz çalışır. 125 kHz kartlar için ayrı bir düşük frekans okuyucu gerekir.

I2C, SPI ve HSU modları nasıl seçilir?

Elechouse V3 tipi kırmızı PN532 modüllerinde arayüz, kart üzerindeki iki küçük DIP anahtarla seçilir: I2C için 1 ON ve 2 OFF, SPI için 1 OFF ve 2 ON, HSU (UART) için ikisi de OFF. Fabrika ayarı genellikle HSU'dur; anahtarı besleme vermeden önce değiştirin.

ModAnahtar 1Anahtar 2BağlantıNe zaman seçilir?
HSU (UART)OFFOFFTX, RXBoş donanım seri portu varsa
I2CONOFFSDA, SCLEn az kablo, başka I2C cihazlarla ortak hat
SPIOFFONSCK, MISO, MOSI, SSHızlı ve kararlı haberleşme

Modül 3,3-5 V ile beslenir. Üretici verisine göre I2C ve UART hatları 5 V TTL, SPI hatları 3,3 V TTL seviyesindedir. Raspberry Pi tipi kartlarda ve bazı üreticilerde DIP anahtar yerine jumper ya da lehim köprüsü bulunabilir; modülün arka yüzündeki tabloyu kontrol edin.

PN532 Arduino'ya nasıl bağlanır?

I2C modunda PN532 Arduino Uno'ya dört kabloyla bağlanır: VCC → 5V, GND → GND, SDA → A4 ve SCL → A5. PN532'nin I2C adresi 0x24'tür ve çoğu kütüphanede sabit tanımlıdır.

PN532Arduino UnoESP32 DevKit
VCC5V3V3
GNDGNDGND
SDAA4GPIO21
SCLA5GPIO22
PN532 NFC modülü Arduino Uno I2C bağlantı şeması: modülün VCC ucu Arduino 5V pinine, GND ucu GND'ye, SDA ucu A4 pinine, SCL ucu A5 pinine bağlı; modül üzerindeki DIP anahtarın 1 numarası ON, 2 numarası OFF konumunda; altta arayüz seçim tablosu: HSU için iki anahtar OFF, I2C için 1 ON 2 OFF ve adres 0x24, SPI için 1 OFF 2 ON; yanda ESP32 için VCC 3V3, SDA GPIO21, SCL GPIO22 bağlantısı
I2C modunda DIP anahtar 1 ON, 2 OFF olur; VCC 5V'a, GND GND'ye, SDA A4'e, SCL A5'e bağlanır. ESP32'de 3V3, GPIO21 ve GPIO22 kullanılır.

Kablolar 20 cm'yi geçmesin ve anten bölgesinin altında metal yüzey olmasın; metal, okuma mesafesini belirgin şekilde kısaltır. Bu yazıdaki örnekler PN532 NFC modülü ve Arduino Uno R3 ile hazırlanmıştır.

Kart UID'si nasıl okunur?

Kart UID'sini okumak için PN532 kütüphanesini kurar, modülü başlatır ve readPassiveTargetID fonksiyonuyla alana giren kartın kimlik numarasını alırsınız. Adımlar şunlardır:

  1. DIP anahtarı I2C konumuna (1 ON, 2 OFF) getirin ve modülü yukarıdaki tabloya göre bağlayın.
  2. Elechouse PN532 kütüphanesini GitHub'dan indirin; PN532 ve PN532_I2C klasörlerini Arduino'nun libraries klasörüne kopyalayın.
  3. Aşağıdaki kodu yükleyin ve seri monitörü 115200 baud'da açın.
  4. "PN532 bulunamadi" yazıyorsa kabloları ve DIP anahtarı kontrol edin.
  5. Kartı antene 1-3 cm mesafede tutun; UID onaltılık (hex) olarak ekrana yazılır.
#include <Wire.h>
#include <PN532_I2C.h>
#include <PN532.h>

PN532_I2C pn532i2c(Wire);
PN532 nfc(pn532i2c);

void setup() {
  Serial.begin(115200);
  nfc.begin();
  if (!nfc.getFirmwareVersion()) {
    Serial.println("PN532 bulunamadi");
    while (1);
  }
  nfc.SAMConfig();
  Serial.println("Karti yaklastirin");
}

void loop() {
  uint8_t uid[7];
  uint8_t uzunluk;
  if (nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uzunluk)) {
    for (uint8_t i = 0; i < uzunluk; i++) {
      if (uid[i] < 0x10) Serial.print('0');
      Serial.print(uid[i], HEX);
      Serial.print(' ');
    }
    Serial.println();
    delay(1000);
  }
}

MIFARE Classic kartların UID'si genellikle 4 bayt, NTAG etiketlerinin UID'si 7 bayttır. Adafruit PN532 kütüphanesi de Arduino Kütüphane Yöneticisi'nden kurulabilen bir alternatiftir. UID ile yoklama ya da kapı kontrolü kurmak için RFID yoklama sistemi projemize bakabilirsiniz.

Karta veri nasıl yazılır?

MIFARE Classic karta yazmak için önce ilgili bloğun bulunduğu sektöre anahtarla kimlik doğrulaması yapılır, sonra 16 baytlık blok yazılır. Yeni kartlarda varsayılan anahtar genellikle FF FF FF FF FF FF'tir.

MIFARE Classic 1K, her biri 4 bloktan oluşan 16 sektöre ayrılır. Blok 0 üretici bloğudur ve UID'yi içerir; standart kartlarda yazılamaz. Her sektörün son bloğu (3, 7, 11 …) anahtarları ve erişim bitlerini tutan sektör sonudur. Bu bloğa yanlış veri yazarsanız sektör kalıcı olarak kilitlenebilir; veri için yalnızca 1, 2, 4, 5, 6 gibi veri bloklarını kullanın.

NTAG213 gibi etiketlerde anahtar yoktur; veri 4 baytlık sayfalara yazılır ve kullanıcı alanı 4. sayfadan başlar. Telefonun okuyacağı bir web adresi ya da metin yazmak istiyorsanız veriyi NDEF biçiminde kaydedin; Elechouse kütüphanesindeki NDEF bölümü bu işi yapar.

PN532 ile RC522 arasındaki fark nedir?

İkisi de 13,56 MHz MIFARE kartları okur; PN532 daha fazla kart tipini, üç arayüzü ve telefonla NFC haberleşmesini desteklerken RC522 daha ucuz ve yaygın modülleri SPI ile bağlanan bir okuyucudur. Basit UID okuma için RC522 RFID modülü yeterlidir; NTAG etiketleri, NDEF ve telefon uyumu gerekiyorsa PN532 daha uygundur.

Sık sorulan sorular

PN532 kaç cm'den okur?

PN532'nin okuma mesafesi birkaç santimetredir; üretici, standart MIFARE kart için 6-8 cm verir. Pratikte mesafe; kart boyutuna, anten hizasına, yakındaki metallere ve besleme kalitesine göre 2-5 cm'ye inebilir. Küçük anahtarlık ve yapışkan etiketler kart boyutundakilerden daha kısa mesafede okunur.

PN532 ile kart kopyalanabilir mi?

PN532, okuduğu UID'yi standart bir karta yazamaz; standart MIFARE kartlarda UID üreticide sabitlenir. Yalnızca UID'ye güvenen bir sistem bu yüzden güvenli sayılmaz ve önemli kapılarda şifreli kartlar tercih edilmelidir. Başkasına ait kartları kopyalamak hukuka aykırıdır; PN532'yi yalnızca kendi kart ve sistemlerinizde kullanın.

Telefonun NFC'si PN532 ile haberleşir mi?

Evet, PN532 NFC eşler arası modu ve kart emülasyonunu destekler; telefonla basit veri alışverişi yapılabilir. En kolay yol ise PN532 ile bir NTAG etikete NDEF kaydı yazmak ve bu etiketi telefonla okutmaktır. Telefonların kart emülasyonu güvenlik nedeniyle rastgele UID üretebilir, bu yüzden telefonu UID ile tanımaya çalışmak güvenilir değildir.

DIP anahtarı değiştirdim ama modül bulunamıyor, neden?

PN532 arayüz seçimini yalnızca açılışta okur; anahtarı değiştirdikten sonra beslemeyi kesip yeniden verin. Ardından SDA ve SCL'nin yer değiştirmediğini, GND'nin ortak olduğunu ve kodda I2C sınıfının seçildiğini kontrol edin. Arduino'nun I2C tarayıcı örneği 0x24 adresini gösteriyorsa bağlantı doğrudur.

Toplu NFC kart alırken nelere dikkat edilmeli?

Önce kullanılacak çipi (MIFARE Classic 1K, NTAG213, NTAG215 gibi) sisteme göre belirleyin; okuyucu ve yazılım bu çipe göre çalışır. Bellek kapasitesi, biçim (kart, anahtarlık, yapışkan etiket) ve baskı ihtiyacı sonra gelir. Büyük siparişten önce birkaç örnek kartı kendi okuyucunuzla test edin; toptan NFC kart ihtiyacınız için komponentci.net ile iletişime geçebilirsiniz.

Özet

  • PN532 NFC modülü 13,56 MHz ISO 14443A kartları (MIFARE Classic, Ultralight, NTAG21x) okur ve yazar; 125 kHz kartları okumaz.
  • Elechouse V3 tipi modülde DIP anahtar: I2C = 1 ON 2 OFF, SPI = 1 OFF 2 ON, HSU = ikisi de OFF.
  • I2C bağlantısı Arduino Uno'da VCC-5V, GND-GND, SDA-A4, SCL-A5; I2C adresi 0x24'tür.
  • MIFARE Classic'te sektör sonu bloklarına yazmayın; veri için yalnızca veri bloklarını kullanın.
  • Okuma mesafesi birkaç santimetredir; anten altındaki metal mesafeyi kısaltır.

Bu yazıdaki ürünler

Diğer yazılar

12 Kasım 20268 dk okuma

AMG8833 Termal Kamera Sensörü: 8x8 Isı Haritası Rehberi

AMG8833, Panasonic Grid-EYE ailesinden 8x8 = 64 pikselli bir termopil kızılötesi dizi sensörüdür. 0-80 °C aralığındaki yüzeylerin sıcaklığın...

Devamını oku →
12 Kasım 20268 dk okuma

MT6701 Manyetik Encoder: 14 Bit Açı Sensörü Rehberi

MT6701, MagnTek'in ürettiği, dönen bir mıknatısın açısını Hall algılayıcılarla temassız ölçen 14 bitlik manyetik açı sensörüdür. Açıyı I2C y...

Devamını oku →
12 Kasım 20267 dk okuma

MG90S ve SG90 Servo Farkı: Tork, Dişli ve Seçim Rehberi

MG90S ile SG90 arasındaki temel fark dişlilerdir: MG90S metal, SG90 plastik dişli kullanır. İkisi de aynı boyda mikro servodur ve 4,8 V'ta y...

Devamını oku →
12 Kasım 20267 dk okuma

C5198 ve A1941 Transistör: Değerler, Bacaklar ve Muadil

C5198 (2SC5198), Toshiba'nın ses amplifikatörü çıkış katı için ürettiği 140 V, 10 A ve 100 W değerli NPN güç transistörüdür; PNP eşi A1941'd...

Devamını oku →
12 Kasım 20267 dk okuma

ZB2L3 Pil Kapasite Test Cihazı: Bağlantı ve Kullanım

ZB2L3 pil kapasite test cihazı, pili harici bir yük direnci üzerinden ayarladığınız sonlandırma gerilimine kadar boşaltıp gerçek kapasiteyi...

Devamını oku →
12 Kasım 20266 dk okuma

TC4427 MOSFET Sürücü: Pinout, Bağlantı ve TC4426 Farkı

TC4427, Microchip'in iki kanallı, evirmeyen (non-inverting) ve 1,5 A tepe akımlı MOSFET sürücü entegresidir. 4,5-18 V ile beslenir ve Arduin...

Devamını oku →