МЫ СОЗДАЕМ И ПРОИЗВОДИМ
ЭЛЕКТРОННЫЕ НАБОРЫ И МОДУЛИ
Описание товара
Подробное описание товара
Общие сведения
RFID-модуль PN532 NFC — модуль для бесконтактной связи, работающий на частоте 13,56 МГц.
Характеристики
- Микросхема: PN532
- Логика: КМОП, 3.3В
- Напряжение питания: 3.3-5В
- Максимальный потребляемый ток: 150 мА
- Потребляемый ток в режиме ожидания: 100 мА
- Потребляемый ток в режиме считывания: 120 мА
- Потребляемый ток в режиме записи: 120 мА
- Дальность считывания: 5 - 7 см
- Антенна: встроенная, на плате
- Размеры: 42.7 х 40.4 мм
- Поддержка интерфейсов: I2C / SPI / HSU (High Speed UART - 115200 kbps);
- Поддерживаемые режимы работы:
- RFID (чтение/запись)
- P2P соединения
- NFC для работы со смартфонами на платформе Android
- Поддержка чипов:
- ISO 14443 Type A - NXP Mifare 1k, 4k, Ultralight, Desfire
- ISO 14443 Type B
- ISO/IEC 14443-4-совместимые чипы
- FeliCa
- Jewel
- TopaZ
Подключение
Для удобства подключения к Arduino воспользуйтесь Trema Shield, Trema Power Shield, Motor Shield или Trema Set Shield.
Модуль поддерживает работу по нескольким интерфейсам. для того, чтобы подключить модуль по шине I2C, измените положение переключателя согласно таблице возле него.
Подключение по I2C:
- SDA — к выводу A4;
- SCL — к выводу A5;
- VCC — 5V;
- GND — GND;
- IRQ — к цифровому выводу 2;
- RSTO — к цифровому выводу 3;
Подключение по SPI:
- SS — 10;
- MOSI — 11;
- MISO — 12;
- SCK — 13;
- VCC — 5V;
- GND — GND;
Подробнее о модуле
Для более удобной работы с модулем предлагаем вам воспользоваться библиотекой Adafruit_PN532.
Примеры
Считывание карты и вывод номера в монитор последовательного порта.
Подключим модуль по шине I2C.
#include <Wire.h> // подключаем библиотеку для работы по I2C #include <Adafruit_PN532.h> // подключаем библиотеку для работы с модулем #define PN532_IRQ (2) // указываем вывод, к которому подключен контакт IRQ #define PN532_RESET (3) // указываем вывод, к которому подключен контакт RST Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET); // назначаем имя модулю void setup() { Serial.begin(115200); // инициируем передачу данных в монитор последовательного порта на скорости 115200 бод Serial.println("Hello!"); // выводим в монитор порта текст nfc.begin(); // инициируем работу с модулем uint32_t versiondata = nfc.getFirmwareVersion(); // считываем версию прошивки модуля в переменную if (! versiondata) { // если переменная пуста, то Serial.print("Didn't find PN53x board"); // выводим текст в монитор порта while (1); // прерываем дальнейшее выполнение блока setup } Serial.print("Found chip PN5"); Serial.println((versiondata >> 24) & 0xFF, HEX); // если версия прочитана, то выводим текст и версию чипа в монитор порта Serial.print("Firmware ver. "); Serial.print((versiondata >> 16) & 0xFF, DEC); // выводим текст и версию прошивки до запятой в монитор порта Serial.print(','); Serial.println((versiondata >> 8) & 0xFF, DEC); // выводим запятую и версию прошивки после запятой nfc.setPassiveActivationRetries(0xFF); // указываем количество попыток на считывание карты nfc.SAMConfig(); // настраиваем модуль на чтение RFID-меток Serial.println("Waiting for an ISO14443A card"); // выводим текст в монитор порта } void loop() { boolean success; // задаём переменную для считывания номера карты uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 }; // задаём переменную для хранения номера считанной карты uint8_t uidLength; // длина номера карты (4 или 7 байт в зависимости от типа карты) success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength); // считываем первую карту для определения размера и назначения типа карты if (success) { // если номер считан, то Serial.println("Found a card!"); // выводим текст в монитор порта о том, что карта найдена Serial.print("UID Length: "); Serial.print(uidLength, DEC); Serial.println(" bytes"); // выводим текст и значение длины карты в байтах Serial.print("UID Value: "); // выводим текст в монитор порта for (uint8_t i = 0; i < uidLength; i++) { // выводим номер карты (в зависимости от длины номера будет меняться и количество раз, которые должен выполнить цикл) Serial.print(" 0x"); Serial.print(uid[i], HEX); // выводим текст и побитовый номер карты } Serial.println(""); // добавляем символ новой строки delay(1000); // ждём 1 секунду } else { // если карта была не прочитана, то Serial.println("Timed out waiting for a card"); // выводим текст в монитор порта о том, что время ожидания карты истекло } }
Комплектация
- 1x Модуль RFID-модуль PN532;
- 1x Метка брелок;
- 1x Метка карточка;
- 1x Штыревой соединитель;
Ссылки
- DataSheet;
- Библиотека Adafruit_PN532;