Подскажите про RFID?

whoim
Offline
Зарегистрирован: 03.11.2011

Задача - читать атмегой8 RFID метки (ну и сохранять их в память). И причем делать это дешево.. Существует простой и недорогой сенсор (для постройки своего устройства а не шилд) - который сможет читать метки и при этом не жрать много энергии? Чтобы кроны хватило на три-пять дней, в течении которых надо снять сотню точек? Расстояние - минимально, вплоть до пары сантиметров. Желательно автоматическое распознавание метки, ибо прибр будет полностью герметичным, но если вопрос энергосбережения победит - будет кнопка..

В общем, подскажите детальку, буду курить даташит? 

whoim
Offline
Зарегистрирован: 03.11.2011
whoim
Offline
Зарегистрирован: 03.11.2011

 Кроме заоблачной цены ID12/20, нашел ЭТО

Подскажите, как с ним работать?

whoim
Offline
Зарегистрирован: 03.11.2011

 http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1248378859

#define  CLK  2
#define  OUT  3
#define  MOD  9
#define  SHD  8
byte pins;
byte bitsb[513];
unsigned int  count,i;
/*
 Init() function
*/
void setup()
{
 // i/o setting
 pinMode(CLK,INPUT);
 pinMode(OUT,INPUT);
 pinMode(MOD,OUTPUT);
 pinMode(SHD,OUTPUT);
 // em4095
 digitalWrite(MOD,HIGH);
 digitalWrite(SHD,HIGH);
 delay(250);
 digitalWrite(SHD,LOW);
 digitalWrite(MOD,LOW);

 // UART
 Serial.begin(9600);
 Serial.println("em4095 RFid reader for ARDUINO");

}

void loop()
{
  delay(2000);
rf_clock1();
 // process frame
 if (count >= 512)
 {
   count = 0;
   Serial.print("CLK:");
    for (i=0;i<512;i++)
   {
     pins=bitsb[i]&B00000100;
    
      if (pins== 0){Serial.print("0");}else {Serial.print("1");};
   }
   Serial.println();  
   Serial.print("OUT:");  
    for (i=0;i<512;i++)
   {
     pins=bitsb[i]&B00001000;
    
      if (pins== 0){Serial.print("1");}else {Serial.print("0");};
   }
 Serial.println();
 delay(250);
 }
}
/*
 interrupt routine
  loads the bits array
*/
void rf_clock1()
{
 for (i=0;i<512;i++) { bitsb[i] = PIND;};
 count=512;
}
 

 

 

whoim
Offline
Зарегистрирован: 03.11.2011
whoim
Offline
Зарегистрирован: 03.11.2011

   

std
Offline
Зарегистрирован: 05.01.2012

Доброго времени суток, all!
Такой вопрос: может ли модуль RFID от дверных замков эмулировать ключ-метку, или нужно разломать ключ и подключать уже его к ардуине? если второе то как?

надо чтобы Arduino могла реагировать на запрос передатчика в замке, и отвечать ему как ключ.

и что представляет собой код в домофонных ключах? это 4-5 цифр мастер-кода или у каждого ключа есть свой уникальный код? просто я видел как девочки в домофонной компании клонируют ключи, прислонив к некому RFID ксероксу исходный ключ который им приносят с просьбой "сделать копию", и пустой ключ.

whoim
Offline
Зарегистрирован: 03.11.2011

 Найдите схему "дубликатора" и все станет понятней. Код - зависит от протокола. Распространенный протокол EM-Marine, его погуглите.

whoim
Offline
Зарегистрирован: 03.11.2011

 Метку ломать смысла нет) Проще заморочится на специализированной микросхеме - rfid-драйвере, которой управляет атмега. И программно реализовать протокол, хоть на чтение, хоть на запись.

Я железку уже собрал, но еще не садился разгребать куски кода что нарыл. Как будут успехи - отпишусь тут.

std
Offline
Зарегистрирован: 05.01.2012

ладно, а тогда вопрос такой: можно ли читать метки, которые народ сует в домофон, намотав несколько витков провода вокруг двери? надо ли делать какой-либо усилитель? модуль для чтения-записи найти можно, вопрос в том чтобы сделать ему радиус действия побольше.

whoim
Offline
Зарегистрирован: 03.11.2011

std пишет:
ладно, а тогда вопрос такой: можно ли читать метки, которые народ сует в домофон, намотав несколько витков провода вокруг двери? надо ли делать какой-либо усилитель? модуль для чтения-записи найти можно, вопрос в том чтобы сделать ему радиус действия побольше.

я собрал железку на lm358 и трех транзисторах с обвязкой, но еще не запускал. Говорят, что на этих метках всерьез радиус не увеличить. Катушка-антенна наматывается на основании как раз 4-5см диагонали, как правило на прямоугольном

std
Offline
Зарегистрирован: 05.01.2012

доброго времени суток, all :)

Купил ридер SeedStudio, прочитал из ключа 6 байт (2 на код изготовителя, 3 на номер ключа, последний чексумма но я могу ее посчитать и сам). это прочитано по протоколу uart. в режиме wiegand читаются только три байта с номером ключа, и все.

Задача - сделать эмулятор ключа. На данный момент в уравнении слишком много неизвестных, т. к. надо:

1. сделать контур на 125 кГц, подключить к мосту из диодов, плюс моста подключить к выходу Arduino и с помощью этого передавать код - может оказаться что неверно рассчитан контур (у меня квадратная катушка 70*70*3 мм, 74 витка провода 0.1 мм, конденсатор 1140 пФ - 300+300+300+240 параллельно, допуск 10%, декабрь 1973 года).

2. передать код, ширина импульса 256 мкс (откуда? бабушка сказала, взято из примера RFID Spoofer на Instructables).

3. передать судя по коду RFID Spoofer 10 байт, из них 2 - код изготовителя, 8 - номер. тогда почему у меня только 6? или так и нужно?

на данный момент посылал прочитанное ридером, посылал сначала 02h, затем прочитанное (вместе с контрольной суммой), затем 03h - как написано в даташите к ридеру.

www.robotshop.com/content/PDF/datasheet-rfr101a1m.pdf

пока два варианта:

1. туплю

2. кастрированный ключ, с каким-то коротким кодом.

kenworth
Offline
Зарегистрирован: 23.07.2019

Подниму тему. Подключаю EM4095 к arduino nano 16МГц. EM4095 с обвязкой http://wiki.jackslab.org/RFID#EM4095 . Частота RDY/CLK по осциллографу 120кГц, длительность минимального импульса данных 10мкС. 

Скетч из 3 поста выдает данные

CLK:10001110001110001110000111000111000111000111000111100011100011100011100011110001110001110001110001110001111000111000111000111000111000111100011100011100011100011100001110001110001110001110000111000111000111000111000111100011100011100011100011100011110001110001110001110001110001110000111000111000111000111000011100011100011100011100011100001110001110001110001110001110001111000111000111000111000111000111000011100011100011100011100011100001110001110001110001110000111000111000111000111000111000011100011100011100

OUT:11111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000011111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111000000000000000000000000000000000000000000000111111111111111111111111111111111
Подскажите как рациональнее получить данные на такой скорости
achuser
Offline
Зарегистрирован: 02.03.2013

Под 125 кгц метки программатор уже существует на ардуино, смотреть на ютюбе. 

При желании других частот - можно взять за основу, внеся свои корретивы, либо у китайцев за ~300 р есть универсальные многоформатные программаторы, что по бюджету лишает смысл копаться с ардуино :)

kenworth
Offline
Зарегистрирован: 23.07.2019

Совершенно верно, существует множество считывателей для 125 кГц меток, но стабильно читающих метку в течении длительного времени (от минуты до суток) не нашел. Считыватели выдают данные при наличии карты, при ее отсутствии нулевых данных нет, следовательно, нельзя отличить обрыв линии и отсутствие карты.

 

Green
Offline
Зарегистрирован: 01.10.2015

Обычно на выходе считывателей пара интерфейсов - Виганд и Даллас. Первый выдаёт инфо однократно, а второй в течении всего времени присутствия карты в зоне считывателя.

kenworth
Offline
Зарегистрирован: 23.07.2019

Согласен, но сталкнулся с проблемой "потери" карты при ее нахождении на считывателе. Как правило это происходит через 10-50 часов.

Так же для EM4095 нашел вариант антенны 125кГц вытравленной на плате.

Green
Offline
Зарегистрирован: 01.10.2015

Теряется карта через какое то время - а что мешает ребутить считыватель через какое то время?

kenworth
Offline
Зарегистрирован: 23.07.2019

Рассматривал такой вариант, но надеялся найти стабильный считыватель.