Страница 1 из 2

RFID PN532

Добавлено: 28 ноя 2018, 16:07
igorgoga
Здравствуйте
Помогите пожалуйста создать пользовательский блок для RFID PN532
, с единственным выходом-id card.Наподобие как в блоке на 522.
Подключен по I2C
Выдает в UART следущее
Found a card!
UID Length: 4 bytes
UID Value: 0x24 0x3C 0xFD 0x6E

Неделю бьюсь,ничего не выходит.
Готов оплатить труд.

RFID PN532

Добавлено: 28 ноя 2018, 17:13
Sancho
[ref]igorgoga[/ref], Выложите пример, скетч, как такое получили, библиотеку...
Этот пример использовали?
Какие пины ещё использованы, кроме I2C ?

RFID PN532

Добавлено: 28 ноя 2018, 17:56
igorgoga
[spoiler]

Код: Выделить всё

/**************************************************************************/
/*! 
    This example will attempt to connect to an ISO14443A
    card or tag and retrieve some basic information about it
    that can be used to determine what type of card it is.   
   
    Note that you need the baud rate to be 115200 because we need to print
    out the data and read from the card at the same time!

    To enable debug message, define DEBUG in PN532/PN532_debug.h
    
*/
/**************************************************************************/


/* When the number after #if set as 1, it will be switch to SPI Mode*/
#if 0
  #include <SPI.h>
  #include <PN532_SPI.h>
  #include "PN532.h"

  PN532_SPI pn532spi(SPI, 10);
  PN532 nfc(pn532spi);

/* When the number after #elif set as 1, it will be switch to HSU Mode*/
#elif 0
  #include <PN532_HSU.h>
  #include <PN532.h>
      
  PN532_HSU pn532hsu(Serial1);
  PN532 nfc(pn532hsu);

/* When the number after #if & #elif set as 0, it will be switch to I2C Mode*/
#else 
  #include <Wire.h>
  #include <PN532_I2C.h>
  #include <PN532.h>
  #include <NfcAdapter.h>
  
  PN532_I2C pn532i2c(Wire);
  PN532 nfc(pn532i2c);
#endif
  
void setup(void) {
  Serial.begin(115200);
  Serial.println("Hello!");

  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }
  
  // Got ok data, print it out!
  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);
  
  // Set the max number of retry attempts to read from a card
  // This prevents us from waiting forever for a card, which is
  // the default behaviour of the PN532.
  nfc.setPassiveActivationRetries(0xFF);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
    
  Serial.println("Waiting for an ISO14443A card");
}

void loop(void) {
  boolean success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };  // Buffer to store the returned UID
  uint8_t uidLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)
  
  // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
  // 'uid' will be populated with the UID, and uidLength will indicate
  // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
  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("");
    // Wait 1 second before continuing
    delay(1000);
  }
  else
  {
    // PN532 probably timed out waiting for a card
    Serial.println("Timed out waiting for a card");
  }
}
[/spoiler]
Отправлено спустя 5 минут 29 секунд:
Подключено по i2c к меге (20,21) больше ничего не поключал,пример в файле из стандартной библиотеки.Он работает,выдает в сериал номер
карты по типу-- 0x24 0x3C 0xFD 0x6E
Мне нужно перенести этот скейтч в пользовательский блок flprog,что бы на выходе было id карты одной строкой,желательно при помощи переменной Unsigned long Integer.что бы номер был примерно-2121312123234

RFID PN532

Добавлено: 28 ноя 2018, 19:55
Sancho
Ок, завтра. Возможно с другой бибкой...

RFID PN532

Добавлено: 29 ноя 2018, 06:56
igorgoga
Да,еще желательно чтобы можно было указать адрес i2c.В моем случае он 24,но желательно чтобы был пользоват.параметр с возможностью его задания.

RFID PN532

Добавлено: 29 ноя 2018, 12:17
Sancho
igorgoga писал(а): 28 ноя 2018, 17:56то бы на выходе было id карты одной строкой,желательно при помощи переменной Unsigned long Integer.что бы номер был примерно-2121312123234
В Вашем примере 4 байта - влезет в unsigned long, а если больше - чего делать?
Пока сделал два выхода - 4 и 3 байта.
Выход Ок прицепите к led - может заработает...
Не тестил - нет бибок, искать лень :)
Жду результата.
Мне пока сложно уловить момент "распараллеливанием внутри void loop(void)" - может знающие люди просветят?

RFID PN532

Добавлено: 29 ноя 2018, 19:47
igorgoga
Sancho писал(а): 29 ноя 2018, 12:17Жду результата.
Спасибо.На работе.в 21 приду и обязательно проверю!!!

Отправлено спустя 4 минуты 12 секунд:
Sancho писал(а): 29 ноя 2018, 12:17Не тестил - нет бибок, искать лень
Нужные библиотеки в файле задание есть....

Отправлено спустя 6 часов 23 минуты 44 секунды:
не компелируется....
ругается на эту строку
else out_2_267330372_1 = (out<<(i-4)*8) | uid;

отчет

C:\Users\Ferma2\AppData\Local\Temp\flprog\pr4\pr4.ino: In function 'void loop()':

pr4:36: error: 'out' was not declared in this scope

if(i<4)out_1_267330372_1 = (out<<i*8) | uid;

^

pr4:37: error: 'out' was not declared in this scope

else out_2_267330372_1 = (out<<(i-4)*8) | uid;

^

exit status 1
'out' was not declared in this scope

RFID PN532

Добавлено: 30 ноя 2018, 10:38
igorgoga
Народ,не ужели ни кто не поможет?? Для тех кто понимает в с++ это элементарная задача...

RFID PN532

Добавлено: 30 ноя 2018, 15:44
Sancho
[ref]igorgoga[/ref], Погоди, не кипишуй. :)

Отправлено спустя 26 минут 19 секунд:
Скетч использует 5000 байт (16%) памяти устройства. Всего доступно 30720 байт.
Глобальные переменные используют 528 байт (25%) динамической памяти, оставляя 1520 байт для локальных переменных.
Поправил, забыл немного о двух выходах :)
Пришлось закоментить //#include <NfcAdapter.h> в IDE - у меня нет бибки, может и не нужна, тогда удалить в блоке.

RFID PN532

Добавлено: 01 дек 2018, 06:24
igorgoga
Вобщем при первом прикладывании карты пишет ее номер например 2169996131 светодиод загорается и больше не гаснет а только
немного моргает при новой карте
если повторно ее же приложить-вообще ничего не происходит,только нужно сначала любую другую,только потом первая опять выдаст номер
при прикладывании тел-выдает сразу две строки-
594463061
75508674

Отправлено спустя 8 часов 40 минут 12 секунд:
igorgoga писал(а): 30 ноя 2018, 21:31светодиод загорается и больше не гаснет а только
немного моргает при новой карте
поправка-он тухнет только через 4 сек,после прикладывании карты

Отправлено спустя 12 минут 58 секунд:
igorgoga писал(а): 01 дек 2018, 06:11при прикладывании тел-выдает сразу две строки-
594463061
75508674
При этом на считывателе rf522 nfc метка этого же телефона определяется одной строкой вот так 3259640704

RFID PN532

Добавлено: 01 дек 2018, 08:41
Sancho
igorgoga писал(а): 01 дек 2018, 06:24поправка-он тухнет только через 4 сек,после прикладывании карты
Издержки Вашей библиотеки.
Всё остальное так-же.
Светодиод загорается когда бибка говорит о карте.
Я лишь Ваш пример завернул в ПБ.
Есть другие библиотеки - нужен будет ещё один провод к цифровому пину. Возможны положительные сдвиги...

RFID PN532

Добавлено: 01 дек 2018, 09:26
igorgoga
а то что одна и та же карта повторно не читается,тоже дело в библиотеке?
Если у вас есть свободное время,помогите пож.довести этот блок до рабочего состояния.Я в долгу не останусь.!!!!...Очень нужен для проекта
рабочий ридер на айтуси....

RFID PN532

Добавлено: 01 дек 2018, 09:52
Sancho
igorgoga писал(а): 01 дек 2018, 09:26а то что одна и та же карта повторно не читается,тоже дело в библиотеке?
При повторном поднесении загорается led?

Отправлено спустя 2 минуты 5 секунд:
есть возможность добавить ещё одно соединение от платы до ардуино?

RFID PN532

Добавлено: 01 дек 2018, 14:29
igorgoga
Sancho писал(а): 01 дек 2018, 09:52При повторном поднесении загорается led?
нет

Отправлено спустя 28 секунд:
Sancho писал(а): 01 дек 2018, 09:52есть возможность добавить ещё одно соединение от платы до ардуино?
да

RFID PN532

Добавлено: 01 дек 2018, 15:27
Sancho
Какая плата, картинку, ссылку? Или уже знаешь где пин выхода прерывания на ней?
Бибка здесь

RFID PN532

Добавлено: 01 дек 2018, 15:46
igorgoga
Sancho писал(а): 01 дек 2018, 15:27Какая плата, картинку, ссылку? Или уже знаешь где пин выхода прерывания на ней?
https://www.ebay.com/itm/NXP-PN532-NFC- ... :rk:2:pf:0

Отправлено спустя 1 минуту 54 секунды:
Sancho писал(а): 01 дек 2018, 15:27Бибка здесь
после 20-00 проверю.на работе...(((

RFID PN532

Добавлено: 01 дек 2018, 15:48
Sancho
Пин на плате IRQ к пину, указываемому в настройке блока. Поменяй в редакторе ПБ сразу на свой "по умолчанию".

Отправлено спустя 38 секунд:
Жаль, тогда коррекция только в понедельник....

RFID PN532

Добавлено: 01 дек 2018, 16:02
igorgoga
ок

Отправлено спустя 3 минуты 48 секунд:
а как в настройках блока пин поменять,там нет возможности выбора....

Отправлено спустя 5 минут 55 секунд:
удаленно по тиму пытался залить скейтч-ругается на
pr41:9: error: 'PPIINNSS' was not declared in this scope

Adafruit_PN532 nfc_262194121_1( PPIINNSS , 100);

^

exit status 1
'PPIINNSS' was not declared in this scope

Отправлено спустя 3 минуты 52 секунды:
И еще вопрос.пока тестю на меге,но на практике будет потом нанка,кроме пина нужно мне еще что то будет менять? или достаточно в флпрог сменить контроллер?

RFID PN532

Добавлено: 01 дек 2018, 16:17
Sancho
igorgoga писал(а): 01 дек 2018, 16:02достаточно в флпрог сменить контроллер
и пин.

RFID PN532

Добавлено: 01 дек 2018, 20:17
igorgoga
СПС.!!! Отпишусь по результату

Отправлено спустя 3 часа 53 минуты 17 секунд:
вобщем ничего не поменялось,так же и работает криво как было с первым вариантом,светодиод вообще теперь после первого считывания не тухнет....
пин 11 подключил...