Корректное считывание данных с RFID Reader'a
- Войдите на сайт для отправки комментариев
Имеется у меня в наличии RFID Reader. Подключаю я его к ардуино, и пытаюсь считать данные. В wiki производителя, более-менее, понятно описан процесс подключения. Есть 2 вариант подключения:
- UART
- Wiegan
Для этого, на плате есть джампер:
Как видно по фотографии он стоит в режиме wiegan (хотя у производителя, на странице википедии, видимо ошибка, потому что в обоих случаях просят поставить джампер на "U", но здравый смысл подсказывает, что U - это UART).
Так же приведу фото подключения к mega shield'у:
Так вот вопросы:
- По идее, передача через Serial, должна происходит в режиме "U" (UART), но когда я переставляю джампер на этот режим - ничего не приходит на Serial, вообще. Может и здесь проихводитель ошибся в маркировке на плате? Может буквы стоило поменять местами?
- Когда я перетыкаю джампер в режим "W" (wiegan) на Serial данные приходят. Но, какие-то странные, не такие, как описано на wiki-странице.
Так вот, когда я подношу карту на Serial приходят следующие данные:
255 255 254 255 255 254 255 254 255 254 255
Код следующий:
void RFIDReaderInit() { Serial3.begin(9600); } void RFIDReaderHandler() { if (Serial3.available()) { while(Serial3.available()) { Serial.println(Serial3.read()); } } }
init запускается в setup'е, а handler запускается в loop'e. Если верить wiki-странице, то должны приходить тех. данные + номер карточки. Однако на моей карте написано: "0006152627 093.56879". Я так полагаю, что первая часть это и есть номер карты, но тогда он не совпадает с тем, что приходит по Serial.
Подскажите, пожалуйста, где я туплю?
Проверите что у вас RX,TX правильно подключены.Вернее TX (в UART RX вообще не используется, но можно и подключить). Если не ошибаюсь TX модуля, на RX платы должно идти.
Попробуйте без шилда,а напрямую в дуину. Попадались подобные шилды с тупо бракованными дорожками и какой-то и портов на шилде может не работать.
Прежде чем что-то выводить - стоит подождать стартового байта 02. Возможно вы просто слуашете что-то "с середины предложения".
Потом читаем 10 байт - сам код. Потом байт чексуммы (пока просто запомнили). Потом должен идти завершающий 03.
Если его нет - значит 02 был не стартовым, а просто попался где-то "в серийном номере" или еще где-то.
Если 03 имеется (вообщем 02 должно быть в начале, 03 в конце. между ними - ровно 11 байт (10код+1 чексумма)), то считаем чексумму для кода. Если оно совпало с чексуммой в 11 дата-байте - ну значит мы все прочитали правильно. И можно выводить код. Если нет - что-ж, ждать следующей попытки. Вполне возможно что с первого раза и не прочитается (для того чексумма и придумана).
Вот что-то такое попробуйте (будет легче искать где-начинается и где кончается)
Видимо вот тут-то, "Если не ошибаюсь TX модуля, на RX платы должно идти.", собака и зарылась... Домой приду проверю. Спасибо.
А вообще вашу тему можно использовать в качестве образца "вот как нужно вопросы задавать" :) И тема вменяемо названа, и описано "что ждем, что получаем". И ссылка на модуль, и на wiki производителя, и картинки. И код который запускаем и лог файл :), и код вставлен правильно :)
Все сделано для того что-бы потенциальный "помогающий" как можно меньше времени тратил на поиск справочной инфы и разгадки ребусов ("что же имел ввиду топикстартер").
Вообщем "все-бы так" ;)
Вы оказались правы. Я просто сглупил, и подключил RX к RX, а TX к TX. А нужно было, естественно, наоборот. Теперь на UART режиме всё работает как надо. Ещё раз спасибо за помощь.
я делал на выводы 2,3 по SoftwareSerial. приемник SeeedStudio Brick.
Здравствуйте. Не могу заставить работать RFID-считыватель, подключенный к Arduino...
Есть следующий комплект:
1. Arduino Mega 1280: http://www.aliexpress.com/item/for-Arduino-Mega-Atmega1280-16AU-Atmega-1280-USB-cabel-new/1011446998.html
2. RFID-считыватель RDM630: http://www.alibaba.com/product-gs/529041244/RDM630_Small_size_125KHz_134_2KHz.html
Спецификации на этот считыватель в PDF можно посмотреть здесь: http://www.seeedstudio.com/depot/datasheet/RDM630-Spec..pdf
3. RFID-карты на 125 кГц: http://devicter.ru/goods/EM4100-125kHz-RFID-Card
Подключаю RFID-считыватель к Arduino как написано здесь: http://www.instructables.com/id/Twitter-Poem-Box/step2/Seeed-RFID/
и здесь: http://www.instructables.com/id/Arduino-and-RFID-from-seeedstudio/#step1
RFID -> Arduino:
Pin 1 -> 2 (цифровой)
Pin 2 -> 3 (цифровой)
Pin 4 -> GND
Pin 5 -> +5V
Скетч следующий:
В итоге в мониторе COM-порта (в независимости от того какую карту я прикладываю к антенне) выводится следующий текст:
Reader 1:0 Reader 1 converted to DEC:0 siteCode:0 serial number:0
Пробовал также подключать как написано в следующих ссылках:
1. http://maniacbug.wordpress.com/2011/10/09/125khz-rfid-module-rdm630/
2. http://blog.iteadstudio.com/play-rdm630-with-arduino/
И он либо вообще не реагирует на прикладывание карты, либо показывает каракули или нули.
В чем может быть проблема?
Может кто-нибудь сталкивался с RFID-считывателем RDM630 и знает как решить проблему?
"Каракули" по идее это нормально, возможно считыватель отсылает данные в бинарном формате, а в текстовом формате они выглядят "крякозябами"-каракулями
И он либо вообще не реагирует на прикладывание карты, либо показывает каракули или нули.
Каракули вызваны скорее всего не совпадением скорости обмена в терминали и настройке ардуины. в первой ссылке код с настройкой порта Serial.begin(57600); а терминал по умолчанию стоит 9600, может в этом проблема ?
мне больше нравится тот пример, который идет в комлпекте с устройством http://http://m5.img.dxcdn.com/CDDriver/CD/sku.206725.zip
а какой модуль посоветуете для клонирования домофонных ключей?
Уважаемые форумчане! Помогите сттуденту с дипломом!
Испытываю Arduino Mega 2560 v3.0 от DFRObot с модулем RFID. Без шилдов, напрямую.
Как не пытал их на Serial, Serial1-3 и портах через SoftwareSerial на пинах он не выдает никакой информации вообще.
даташит по RFID http://www.elechouse.com/elechouse/images/product/13.56MHZ_RFID_Module/13.56MHZ_RFID_Manual.pdf
по карточке http://www.nxp.com/documents/data_sheet/M001053_MF1ICS50_rev5_3.pdf
Скетчи постов 2 и 10 результатов не дали =\
Вот сие безобразие:
А почему у тебя rxd и txd заведены не на хардварные сериалы (и это на меге то!) ?
Помогите сттуденту с дипломом!
почему бы сразу у форума не попросить диплом тебе выписать.
*сттудент!
Здравствуйте. Не могу заставить работать RFID-считыватель, подключенный к Arduino...
Есть следующий комплект:
1. Arduino Mega 1280: http://www.aliexpress.com/item/for-Arduino-Mega-Atmega1280-16AU-Atmega-1280-USB-cabel-new/1011446998.html
2. RFID-считыватель RDM630: http://www.alibaba.com/product-gs/529041244/RDM630_Small_size_125KHz_134_2KHz.html
Спецификации на этот считыватель в PDF можно посмотреть здесь: http://www.seeedstudio.com/depot/datasheet/RDM630-Spec..pdf
3. RFID-карты на 125 кГц: http://devicter.ru/goods/EM4100-125kHz-RFID-Card
Подключаю RFID-считыватель к Arduino как написано здесь: http://www.instructables.com/id/Twitter-Poem-Box/step2/Seeed-RFID/
и здесь: http://www.instructables.com/id/Arduino-and-RFID-from-seeedstudio/#step1
RFID -> Arduino:
Pin 1 -> 2 (цифровой)
Pin 2 -> 3 (цифровой)
Pin 4 -> GND
Pin 5 -> +5V
подключите
RX(считывателя)в TX(ардуины)
TX(считывателя)в RX(ардуины)
и просто читайте данные с ком порта.
У меня таокй же модуль, все прекрасно работает. А скетч у вас сильно замудрен.
А почему у тебя rxd и txd заведены не на хардварные сериалы (и это на меге то!) ?
Я говорю же, пробовал и с Serial3 например(14 и 15 порт). Простоое
If(Serial.available){
c = Serial3.read();
Serial3.print(c);
}
ничего не выдает. А про диплом коментов не надо, просто именно тут все пока зависло.
А можно же считать с тех же карт местки через SPI интерфейс? MOSI, MISO, SCK, SCA и RST пины на RFID выведены.
Я говорю же, пробовал и с Serial3 например(14 и 15 порт). Простоое
If(Serial.available){
c = Serial3.read();
Serial3.print(c);
}
ничего не выдает. А про диплом коментов не надо, просто именно тут все пока зависло.
1. Ты rx платы с tx меги соединяешь ?
2. Код не рабочий ты привел. Проверяешь один порт, а считываешь с другого
Да, rx платы с tx меги, tx платы c rx меги.
Кстати по даташиту у данного RFID девайса есть два режима: common и basic, они определяют вид команд для передачи устройству через мегу. Я так и не разобрался по документации, стоит ли сам модуль уже в режиме считыания или же его нужно сначала предустановить, дабы он корректно работал. Судя по работе ледов(CARD, MODE и STAT) мои карточки он улавливает.
При тестировании с портомами Serial и Serial3 обнаружил, что Serial выдает на монитор результат(неизвестно откуда и что он значит) даже если RFID модуль не подключен. Serial3 в монитор вообще ничего не выдает. Видимо, причина банально в том, что Serail1,2,3 просто никогда не отображает монитор, только Serial.
Составил такой скетч по наброскам сайта DVRobot: