Модуль NFC PN532

Полное руководство по NFC модулю PN532: технические характеристики, распиновка, схемы подключения для SPI, I2C и UART, документация и примеры кода для ESP32 и Arduino.

Безопасность I2C SPI UART

Обзор

PN532 — это один из самых популярных и гибких модулей для работы с NFC и RFID. Благодаря поддержке нескольких протоколов связи (I2C, SPI и UART) и встроенному стеку команд, он идеально подходит для систем контроля доступа, бесконтактных платежей и обмена данными между устройствами.

PN532 поддерживает чтение и запись меток NFC и RFID (ISO/IEC 14443 Type A и B), а также режим эмуляции карты и P2P-соединение. Гибкость настройки интерфейса с помощью встроенных переключателей делает его универсальным решением для любого проекта на базе ESP32 или Arduino.

Модуль PN532
Где купить

Приобретите PN532

Технические характеристики

Характеристики PN532

Полные технические параметры модуля NFC PN532 для интеграции в ваши проекты.

Протоколы
I2C, SPI, UART
Напряжение
3.3В – 5В
Дистанция
5 – 7 см
Стандарты
ISO14443 A/B
Скачать полный даташит
Конфигурация пинов

Распиновка PN532

Выбор режима связи осуществляется с помощью микропереключателей на плате.

Схема распиновки
Распиновка PN532
Настройки дип-переключателей
  • I2C: 1:ON, 2:OFF (0x24)
  • SPI: 1:OFF, 2:ON
  • UART: 1:OFF, 2:OFF
Тип разъема
PH2.0 / 2.54mm
Описание пинов модуля
Пин Имя Тип Описание
VCCPowerПитание3.3В или 5В
GNDGroundЗемля
SDA / TXI/ODataI2C SDA / UART TX / SPI MOSI
SCL / RXI/OClockI2C SCL / UART RX / SPI SCK
IRQOutputInterruptВыход прерывания
RSTOInputResetАппаратный сброс
Руководство по подключению

Подключение PN532

Вы можете выбрать один из трех интерфейсов подключения в зависимости от ваших задач.

Вариант 1: SPI Режим (Рекомендуемый)

Самый быстрый и стабильный режим. Переключатели: Switch 1: OFF, Switch 2: ON.

Схема SPI подключения
Статус SPI
СкоростьВысокая
СложностьСредняя
Пины4 + Power
Таблица соединений (SPI)
PN532 Пин ESP32 GPIO Arduino Uno
SCKGPIO 18D13
MISOGPIO 19D12
MOSIGPIO 23D11
SS / CSGPIO 5D10

Вариант 2: I2C Режим

Экономит пины, удобно при использовании общей шины. Переключатели: Switch 1: ON, Switch 2: OFF.

Схема I2C подключения
I2C Конфигурация
SDAGPIO 21
SCLGPIO 22
Адрес по умолчанию: 0x24
Устранение неполадок

Ошибки и решения

Модуль не найден ("PN532 not found")
Решение: Проверьте положение переключателей! Для каждого режима (SPI/I2C/UART) они должны быть в строго определенном положении. Также проверьте питание (рекомендуется 5В для стабильности).
Метки читаются через раз
Решение: Убедитесь, что поблизости нет больших металлических предметов или мощных источников электромагнитных помех. Попробуйте поднести метку ближе к центру антенны.
Примеры кода

Программирование PN532

Ниже приведены примеры для основных платформ.

Arduino IDE
Библиотека Adafruit_PN532
C++
#include <Wire.h>
#include <Adafruit_PN532.h>

#define SDA_PIN 21
#define SCL_PIN 22

Adafruit_PN532 nfc(SDA_PIN, SCL_PIN);

void setup() {
    Serial.begin(115200);
    nfc.begin();
    if (!nfc.getFirmwareVersion()) {
        Serial.println("Датчик PN532 не найден!");
        while (1);
    }
    nfc.SAMConfig();
    Serial.println("Ожидание NFC метки...");
}

void loop() {
    uint8_t success;
    uint8_t uid[] = {0, 0, 0, 0, 0, 0, 0};
    uint8_t uidLength;

    success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
    if (success) {
        Serial.print("Найдена метка с UID: ");
        for (uint8_t i = 0; i < uidLength; i++) {
            Serial.print(uid[i], HEX); Serial.print(" ");
        }
        Serial.println();
    }
    delay(1000);
}
ESPHome (YAML)
YAML
pn532_i2c:
  update_interval: 1s

binary_sensor:
  - platform: pn532
    uid: 04-8E-6C-22-2B-5B-80
    name: "Доступ разрешен"

Итоги

Почему PN532?

Это самый универсальный NFC чип, поддерживающий все виды беспроводного обмена данными и легкую интеграцию в любые системы безопасности.

Безопасность

При работе с картами доступа используйте шифрование (например, Mifare DESFire), так как базовые UID легко копируются.

Похожие варианты