Добрый день, только начинаю знакомство с кодом и Arduino, а также дополнительными модулями. Собрал схему с Arduino и Troyka RFID/NFC модулем. Хочу попробовать запустить код из примера с документацией, но столкнулся с проблемой. Ридер вроде бы работает, дополнительные библиотеки от Adafruit поставил, и в код их тоже подключил.
При запуске кода, как есть, в монитор порта ничего не выводится вообще. Попробовал полностью убрать цикл со чтением карт. Получил вывод в serial monitor:
Found RFID/NFC reader
Waiting for a card ...
То есть ридер подключен и работает.
Вопрос тогда в этом куске, и как лучше его отладить и найти в чем проблема?
void loop(void)
{
uint8_t success;
// буфер для хранения ID карты
uint8_t uid[8];
// размер буфера карты
uint8_t uidLength;
// слушаем новые метки
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
// если найдена карта
if (success) {
// выводим в консоль полученные данные
Serial.println("Found a card");
Serial.print("ID Length: ");
Serial.print(uidLength, DEC);
Serial.println(" bytes");
Serial.print("ID Value: ");
nfc.PrintHex(uid, uidLength);
Serial.println("");
delay(1000);
}
}
Пробовал убирать все, и оставить только вывод в порт текста, если карта найдена, если нет, то выводить ошибку. Но все равно не работает. В чем может быть еще проблема? Спасибо.
Ээээ… Setup типа лишний? Ну тогда ой…
Поищите как правильно подключить библиотеки, поставьте старую версию программы. Измените имя нужной вам библиотеки и поменяйте ее в коде на соответствующее.
Нет, убрал только void loop(void) весь. Библиотеки подключены
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_I2CRegister.h>
#include <Adafruit_SPIDevice.h>
#include <Wire.h>
#include <SPI.h>
// библиотека для работы с RFID/NFC
#include <Adafruit_PN532.h>
#include <Adafruit_BusIO_Register.h>
#include <Adafruit_I2CDevice.h>
#include <Adafruit_I2CRegister.h>
#include <Adafruit_SPIDevice.h>
#include <Wire.h>
#include <SPI.h>
// библиотека для работы с RFID/NFC
#include <Adafruit_PN532.h>
// пин прерывания
#define PN532_IRQ 9
// создаём объект для работы со сканером и передаём ему два параметра
// первый — номер пина прерывания
// вторым — число 100
// от Adafruit был программный сброс шилда
// в cканере RFID/NFC 13,56 МГц (Troyka-модуль) этот пин не используется
// поэтому передаём цифру, большая чем любой пин Arduino
Adafruit_PN532 nfc(PN532_IRQ, 100);
void setup(void)
{
Serial.begin(9600);
// инициализация RFID/NFC сканера
nfc.begin();
int versiondata = nfc.getFirmwareVersion();
if (!versiondata) {
Serial.print("Didn't find RFID/NFC reader");
while(1) {
}
}
Serial.println("Found RFID/NFC reader");
// настраиваем модуль
nfc.SAMConfig();
Serial.println("Waiting for a card ...");
}
void loop(void)
{
uint8_t success;
// буфер для хранения ID карты
uint8_t uid[8];
// размер буфера карты
uint8_t uidLength;
// слушаем новые метки
success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
// если найдена карта
if (success) {
// выводим в консоль полученные данные
Serial.println("Found a card");
Serial.print("ID Length: ");
Serial.print(uidLength, DEC);
Serial.println(" bytes");
Serial.print("ID Value: ");
nfc.PrintHex(uid, uidLength);
Serial.println("");
delay(1000);
}
}
Проблема:
При выполнении кода на Arduino в монитор порта ничего не выводится. Код должен определить, что ридер rfid/nfc подключен и ожидает сканирования карт/меток. При сканировании карты, выводить в монитор порта информацию о ней.
Сейчас, в serial monitor вообще ничего не выводиться. Если убрать все, что в цикле void loop(void), то выводится информация, что ридер обнаружен и подключен.
Сделайте самое тупое, перед строкой 23 поставьте задержку 10 сек , чтобы успеть после включения запустить сериал монитор. Что-то поменялось? Появляются строки в мониторе? Из строк 27-36.
Если отключить ридер, появляется ошибка, что ридер не подключен?
Посли строки 59 поставьте задержку 2-5 сек и что-нибудь печатайте в порт, просто проверить попадаете в петлю или где-то повисли.
У вас вообще ключ подходит к ридеру? нет ни одного сообщения в коде, что ридер не может прочитать карту.
Попробуйте в петле выводить только строку 26, соответственно перепишите ее под петлю. Нужно понять , в каком месте кривулина, в железе или библиотеках. Ну или может у кого сей девайс в наличии, так чего умнее подскажет
Коллеги, подскажите такой момент: Спаял схему на ардуино и NFC module V3. банковские карты читает, метки , брелки и тп. Задача - управлять электрозамком на калитке. Все работает, детям купил браслеты типа как в аквапарке, жене на брелок от ключей метку приклеил, красота ! Но вот мне захотелось со смартфона открывать калитку. Типа приложил и по-красоте зашел. И тут столкнулся с проблемой - Каждый раз прикладывая смартфон к считывателю - получаю разные данные. Всего 4 байта, первый всегда восьмерка. Остальные 3 меняются по какому-то случайному алгоритму чтоли. Вот хотелось бы понять что за алгоритм и можно ли им допилить существующий девайс. Ну и вообще, в целом, почему смартфон меняет их.
Честно гуглил, но внятного ничего не нашел. Предлагают эмулировать метку , но там куча заморочек, Рут нужен и приложение платное. Но телефон же при считывании и так отвечает , зачем эмулировать… Вобщем такой сабж, буду очень рад помощи !
Не получится без приложения. NFC метка на андроиде все FF на яблоке рандомная. Если пропишите метку андроида, тогда любой откроет вашу калитку. Если хотите с телефона, то проще сделать по звонку на определённый номер. И на железке иметь белый списки звонков.