NFC датчики для ESP32 и Arduino

Полное руководство по NFC датчикам для ESP32: характеристики, распиновка, схемы подключения и примеры кода. Узнайте о PN532, RC522 и RDM6300.

Беспроводная связь I2C SPI UART

Обзор

NFC (Near-Field Communication) модули обеспечивают бесконтактную передачу данных на малых расстояниях для плат ESP32 и Arduino. Эти устройства идеально подходят для систем контроля доступа, считывателей смарт-карт, учета посещаемости и аутентификации в IoT-проектах.

NFC модули — это компактные приемопередатчики, работающие на частоте 13.56 МГц (за исключением RDM6300, который работает на 125 кГц). Самым популярным является PN532, поддерживающий интерфейсы I2C, SPI и UART, что делает его универсальным версией для интеграции с мобильными телефонами и бесконтактными картами.

PN532 NFC Module

Список датчиков

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

Интерфейсы
Protocol Support

Большинство модулей (PN532, RC522) поддерживают SPI и I2C. RDM6300 работает исключительно через UART.

Рабочая частота
Operating Frequency

NFC и современные RFID: 13.56 МГц. Старые системы идентификации (RDM6300): 125 кГц.

Устранение неполадок

Модуль не видит карту/тег
Проверьте частоту тега. NFC модули 13.56 МГц не смогут прочитать теги 125 кГц и наоборот. Также убедитесь, что антенна модуля не находится вплотную к металлическим поверхностям, которые экранируют сигнал.
Ошибки I2C на ESP32
Убедитесь, что переключатели режимов (DIP-переключатели) на модуле PN532 установлены правильно для выбранного протокола. Для I2C часто требуются подтягивающие резисторы 4.7 кОм на линиях SDA и SCL.

Примеры программирования

Для большинства проектов на ESP32 рекомендуется использовать библиотеку Adafruit PN532 для Arduino или стандартные компоненты ESPHome.

// Пример инициализации PN532 через I2C (Arduino)
#include <Wire.h>
#include <Adafruit_PN532.h>

#define SDA_PIN 21
#define SCL_PIN 22

Adafruit_PN532 nfc(SDA_PIN, SCL_PIN);

void setup(void) {
  Serial.begin(115200);
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  if (!versiondata) {
    Serial.print("PN53x card not found!");
    while (1);
  }
  nfc.SAMConfig(); // Настройка для чтения тегов
}

Назад к списку датчиков