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


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

Подключение NFC RFID модуля PN532 к 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?

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

Принцип работы NFC

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

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

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

Различия между RFID и NFC

Однако 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 кбит/с в обоих направлениях.

Модуль NFC PN532

Имеет 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. Эти различные протоколы используют определенные контакты и библиотеки микроконтроллера.

DIP-переключатель для выбора режима связи в PN532

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

Режим связи PN532 в зависимости от положения DIP-переключателей

Карты NFC RFID

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

Виды NFC карт

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

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

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

Схема подключения NFC модуля PN532 к Arduino для связи в режиме UART

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

Собранная на макетной плате схема подключения NFC модуля PN532 к Arduino для связи в режиме UART

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

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

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

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

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

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

Тестирование работы связи с PN532 в режиме UART

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

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

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

Схема подключения NFC модуля PN532 к Arduino для связи в режиме I2C

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

Собранная на макетной плате схема подключения NFC модуля PN532 к Arduino для связи в режиме I2C

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

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

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

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

Тестирование связи с PN532 в режиме I2C

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

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

Схема подключения NFC модуля PN532 к Arduino для связи в режиме SPI

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

Собранная на макетной плате схема подключения NFC модуля PN532 к Arduino для связи в режиме SPI

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

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

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

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

Тестирование связи с PN532 в режиме SPI

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

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

Схема портативного сканера NFC с 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 с OLED-дисплеем в режиме ожидания карты

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

Тестирование работы портативного сканера NFC с картой на 4 байта

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

Тестирование работы портативного сканера NFC с картой на 7 байт

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

Тестирование работы портативного сканера NFC в окне монитора последовательной связи

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

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

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

(Проголосуй первым!)
Загрузка...
347 просмотров

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

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