Рубрики
Схемы на Arduino

Подключение NFC RFID модуля PN532 к Arduino

В данной статье мы рассмотрим взаимодействие NFC RFID модуля PN532 с платой Arduino во всех трех режимах: UART, I2C и SPI. PN532 — это модуль NFC RFID, популярный для поддержки мобильных платежей и служащий инструментом для других коммуникаций на вашем смартфоне. Его можно найти встроенным в модули, которые позволяют легко подключаться к вашим проектам Arduino.

Модуль RC522, безусловно, является самым известным модулем RFID для проектов Arduino. Но считыватель PN532 NFC RFID имеет определенные преимущества перед RC522, особенно с точки зрения возможностей связи. Здесь мы увидим, как использовать модуль PN532 NFC RFID с Arduino в соответствии с различными методами связи — UART, SPI и I2C. Позже мы отобразим номера UID карты NFC на 0,96″ OLED-дисплее.

Необходимые компоненты

  1. Плата Arduino Nano (купить на AliExpress).
  2. Модуль RFID NFC PN532 (купить на AliExpress).
  3. Модуль OLED дисплея SSD1306 128×64 с интерфейсом I2C (купить на AliExpress).
  4. Макетная плата.
  5. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Введение в технологию NFC

Прежде чем разобраться с модулем PN532, давайте узнаем, что такое технология NFC и как она работает.

Что такое NFC?

Near Field Communication (NFC) — это технологический стандарт, основанный на радиочастотной идентификации (RFID), позволяющий передавать информацию по беспроводной связи на короткие расстояния.

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

Как работает NFC?

NFC работает по принципу индуктивной связи, по крайней мере, для реализаций на коротких расстояниях. По сути, это подразумевает, что считывающее устройство генерирует магнитное поле, пропуская электрический ток через катушку.

Когда метка (с собственной катушкой) подносится поблизости, поле индуцирует электрический ток внутри метки — без каких-либо проводов или даже физического контакта. Затем, после завершения первоначального рукопожатия, любые сохраненные на метке данные передаются по беспроводной связи на считыватель.

Разница между RFID и NFC

Ключевое различие между RFID и NFC заключается в их дальности передачи. RFID часто используется на больших расстояниях. Например, некоторые регионы автоматически взимают плату за проезд по дорогам с помощью RFID. Связь может осуществляться на еще больших расстояниях, если RFID-метка оснащена источником питания.

Однако NFC имеет максимальный радиус действия всего несколько сантиметров, не более. И в большинстве приложений, связанных со смартфонами, вы обнаружите, что программное обеспечение инициирует связь только при наличии физического контакта. Устройства NFC могут выступать в качестве считывателя или метки. Эта двунаправленная возможность позволяет вам использовать одно устройство, например, ваш смартфон, для всех видов различных приложений.

Основные применения NFC

  • Мобильные платежи; Apple Pay NFC, Google Wallet.
  • Tap-to-Pair; сопряжение устройств Bluetooth простым касанием вместо ручного ввода.
  • Внедрение цифрового опыта в физические продукты; малый форм-фактор NFC позволяет встраивать его в физические продукты, обеспечивая уникальный опыт взаимодействия.
  • Безопасность.
  • Замена пароля.
  • Аутентификация продукта.

Модуль NFC PN532

PN532 — это контроллер NFC от NXP на базе микроконтроллера 80C51, обеспечивающий бесконтактную связь на частоте 13,56 МГц. Кроме того, поддержка карт MIFARE Classic 1K/MIFARE Classic 4K позволяет увеличить скорость передачи данных до 424 кбит/с в обоих направлениях.

Имеет 40 Кб ПЗУ и 1 Кб ОЗУ. Используется для эмуляции карт ISO14443. Серия стандартов ISO/IEC 14443 описывает параметры идентификационных карт или объектов для международного обмена.

Функции

  • Ядро микроконтроллера 80C51 с 40 КБ ПЗУ и 1 КБ ОЗУ.
  • Высокоинтегрированный демодулятор и декодер.
  • Интегрированный детектор уровня радиочастот.
  • Поддерживает ISO/IEC 14443A/MIFARE.
  • Поддерживает ISO/IEC 14443B (только режим чтения/записи).
  • Рабочее расстояние до 50 мм в режиме считывания/записи для связи с картами ISO/IEC 14443A/MIFARE, ISO/IEC 14443B или FeliCa.
  • Дальность действия до 50 мм в NFCIP-1 в зависимости от размера антенны, настройки и источника питания.
  • Приблизительно 100 мм рабочего расстояния в режиме эмуляции карты ISO/IEC 14443A/MIFARE или FeliCa.
  • Возможность связи по радиочастотному интерфейсу со скоростью выше 424 кбит/с с использованием внешних аналоговых компонентов.
  • Прерывания выделенного хоста.
  • Режимы пониженного энергопотребления
    • Режим жесткого выключения питания
    • Режим мягкого выключения питания
  • Программируемые таймеры.
  • Кварцевый генератор.
  • Рабочий диапазон напряжения питания от 2,7 до 5,5 В.

Поскольку полный список функций PN532 может быть исчерпывающим, я выделю только ключевые из них. Полный список функций и преимуществ вы можете посмотреть в техническом описании PN532.

Выбор режима связи

Одним из больших преимуществ модуля PN532 NFC является то, что он может использовать различные протоколы для связи с Arduino, такие как UART, I2C или SPI. Эти различные протоколы используют определенные контакты и библиотеки микроконтроллера.

Для выбора режима связи PN532 необходимо настроить с помощью DIP-переключателей (0-низкий, 1-высокий):

Карты NFC RFID

NFC-метки работают как любые другие RFID-метки для связи по радиоволнам. Два устройства — NFC-метка и NFC-считыватель обмениваются информацией в формате обмена данными NFC. NFC-меткой может быть ваша карта банкомата, проездная карта, карта метро или какая-то другая карта.

NFC-метка посылает радиоволны для активации антенны в принимающем устройстве. Получатель проверяет информацию для завершения обмена информацией. Технология работает на очень коротком расстоянии — примерно 4 дюйма. NFC-метки работают без батареи и получают питание от другого устройства, например, смартфона.

Взаимодействие PN532 с Arduino в режиме UART

Давайте сначала прочитаем данные NFC в высокоскоростном режиме UART (через последовательную связь). Подключите PN532 к Arduino следующим образом. Контакты GND, VCC, Tx и Rx обозначены на задней стороне модуля.

  • GND (земля) <-> GND
  • Vcc (питание) <-> 5 В
  • Tx (Clock) <-> D3
  • Прием (Data) <-> D2

Исходный код программы

Для PN532 доступны различные варианты связи, поэтому в каждом случае необходимо использовать правильную библиотеку. Самая продвинутая библиотека, которая поддерживает все протоколы связи, находится в библиотеке PN532 Elechouse. Загрузите zip-папку и извлеките все библиотеки, а затем добавьте ее в папку библиотеки Arduino.

В случае связи по UART используются следующие библиотеки.

  1. Библиотека PN532_HSU: Загрузить
  2. Библиотека PN532_SWHSU: Загрузить

Скопируйте следующий код и загрузите его на плату Arduino.

После загрузки кода вы можете открыть последовательный монитор и начать тестирование модуля, поднеся несколько карт NFC к PN532.

В случае режима High-Speed ​​UART чип смог прочитать данные только 4 байта. Модуль не может прочитать 7 байт данных с карт NFC.

Взаимодействие PN532 с Arduino в режиме I2C

Теперь давайте прочитаем данные NFC в режиме I2C. Подключите модуль PN532 к Arduino следующим образом.

  • GND (земля) <-> GND
  • VCC (питание) <-> 5 В
  • SDA (Data) <-> A4
  • SCL (Clock) <-> A5

Исходный код программы

В случае связи с модулем по интерфейсу I2C загрузите и добавьте библиотеку PN532_I2C.h в папку с библиотеками.

Скопируйте следующий код и загрузите его на плату Arduino.

После загрузки кода вы можете открыть Serial Monitor (окно монитора последовательной связи) и начать тестирование модуля, поднеся несколько карт NFC к PN532. В режиме I2C чип способен считывать как 4 байта, так и 7 байт данных с различных меток NFC.

Взаимодействие PN532 с Arduino в режиме SPI

Теперь давайте прочитаем данные NFC в режиме SPI. В случае режима SPI слишком много соединений. Поэтому подключите PN532 к Arduino следующим образом.

  • VCC (питание) <-> 5 В
  • RST (Сброс) <-> 9
  • GND (земля) <-> GND
  • MISO (главный вход, подчиненный выход) <-> 11
  • MOSI (главный выход, подчиненный вход) <-> 12
  • SCK (последовательные часы) <-> 13
  • SS (выбор ведомого) <-> 10

Исходный код программы

В случае связи по протоколу SPI загрузите и добавьте библиотеку PN532_SPI.h в папку с библиотеками.

Скопируйте следующий код и загрузите его на плату Arduino.

В этом режиме также хорошо работают 4-байтовые и 7-байтовые карты NFC.

Создание портативного сканера NFC с OLED-дисплеем

Мы можем сделать портативный модуль сканера NFC, используя модуль PN532 и плату Arduino. Для отображения данных мы можем добавить 0,96″ I2C OLED-дисплей к схеме ниже.

Подключите модуль PN532 и OLED-дисплей к Arduino согласно принципиальной схеме.

  • GND (земля) <-> GND
  • VCC (питание) <-> 5 В
  • SDA (Данные) <-> A4
  • SCL (синхронизация) <-> A5

Исходный код программы

Для этого портативного NFC-ридера мы не будем использовать указанную выше библиотеку. Вместо этого мы предпочтем последнюю библиотеку Adafruit PN532. Библиотека написана для плат Adafruit PN532 NFC/RFID и работает с платой Arduino UNO/Nano только в режиме I2C или SPI.

Помимо этого нам также понадобится еще одна библиотека для компиляции. Загрузите следующие библиотеки и добавьте их в Arduino IDE через Library Manager (менеджер библиотек):
1. Библиотека Adafruit PN532Загрузить
2. Библиотека Adafruit GFXhttps://github.com/adafruit/Adafruit-GFX-Library
3. Библиотека SSD1306 OLEDЗагрузить

Скопируйте следующий код и загрузите его на плату Arduino.

После успешной загрузки кода вы можете начать процесс тестирования сканера. OLED-дисплей отобразит версию прошивки 1.6 и попросит отсканировать карты.

Теперь поднесите несколько карт NFC к плате NFC PN532. Карта NFC может включать вашу банковскую карту или проездной или, может быть, какую-нибудь тестовую карту NFC. Модуль PN532 считывает длину байта вместе со значением UID и отображает их на OLED-экране.

Иногда объем информации на карте может составлять 4 байта или 7 байтов в зависимости от типа карты NFC.

Если вам не нужен OLED-дисплей для проекта, вы можете отобразить значение UID и длину байта на последовательном мониторе.

Видео с демонстрацией работы проекта

Ссылка на видео на YouTube

Вот как мы подключаем модуль PN532 NFC RFID к Arduino в режимах UART, I2C и SPI. Готовый модуль NFC доступен на рынке под названием Maduino Zero NFC board, который можно использовать для проектов платежных, входных и охранных систем.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *