RFID
|
|
mikhail09p |
Дата: Сб, 28.01.2017, 10:42 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Здравствуйте. Помогите прочитать ключ RFID 125кГц. Пробую делать с помощью компаратора на 628 пике. Может, кто поделится примером расшифровки кода? В смысле протокола RFID. Буду очень благодарен.
Сообщение отредактировал
mikhail09p - Сб, 28.01.2017, 12:16
|
|
|
|
Matrix252005 |
Дата: Пн, 30.01.2017, 10:02 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
636
Замечания:
±
На сайте с 12.10.2007
Статус:
Offline
|
Приятного времени суток!!!
Михаил, гляньте тут, может что и пойдет:
http://www.protonbasic.co.uk/showthread.php/57744-Rfid
THE TRUTH IS OUT THERE.
С уважением, Николай.
|
|
|
|
mikhail09p |
Дата: Пн, 30.01.2017, 18:55 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Спасибо, Николай, но там немного... Наверное, из местных никто этим не занимался...
|
|
|
|
anatol |
Дата: Пн, 30.01.2017, 19:12 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
там же http://www.protonbasic.co.uk/showthread.php/57682-Rfid-with-EM4095 Device 18F8520 XTAL = 10 Declare PLL_REQ = On Symbol CLK = PORTB.1 Symbol DTA = PORTB.0 Dim NB_CLK As Byte Dim VAR1[64] As Byte Dim INDEX As Byte Dim CNT As Byte Dim I As Byte Dim RESULT As Byte Dim row_count, row_bit, column_count As Byte Dim row_sum, column_sum As Byte Dim row_check[5] As Byte Dim column_check[11] As Byte TRISB = %00000011 TRISD = 0 PORTD = 0 PORTB = 0 INDEX = 0 ;================================================================ SERIAL_BAUD = 19200 RSOUT_PIN = PORTC.6 RSOUT_MODE = TRUE RSOUT_PACE = 1 RSIN_PIN = PORTC.7 RSIN_MODE = TRUE TRISC.6 = 0 TRISC.7 = 1 PORTC.6 = 1 DelayMS 100 RSOut "Initializing......",13 PORTB.2 = 1 DelayMS 1000 PORTB.2 = 0 RSOut "Ready......",13 ;================================================================ AGAIN: PORTB.2 = 1 DelayUS 100 PORTB.2 = 0 INDEX = 0 While DTA = 0 : Wend While DTA = 1 : Wend ; WAIT FOR FALLING EDGE ON DATA PIN
PORTB.2 = 1 DelayUS 100 PORTB.2 = 0
;---- Detecting the 9 consecutive logic one---------------------- INDEX = 0 For I = 0 To 63 NB_CLK = 64 : GoSub CLK_WAIT ; WAIT FOR 64 CLOCK PULSE RESULT = DTA ; GET A BIT EVERY 64 CLOCK PULSE If RESULT = 1 Then Inc INDEX Else INDEX = 0 EndIf If INDEX = 9 Then GoTo AAA Next AAA: If INDEX = 9 Then ; If Index = 9 then there is a valid data For I = 9 To 63 NB_CLK = 64 : GoSub CLK_WAIT ; WAIT FOR 64 CLOCK PULSE VAR1 = DTA ; GET A BIT EVERY 64 CLOCK PULSE Next For I = 0 To 8 VAR1 = 1 Next Else ; else : no card or just placed two card in reader GoTo AGAIN EndIf
;--- CRC Checking --------------------------------------------- GoSub CRC_Check If RESULT = 0 Then GoTo AGAIN Else RSOut "CRC Check ok",13 EndIf
;--- Display the result of data ------------------------------- For I = 0 To 63 RSOut Dec VAR1 Next RSOut 13 PORTB.4 = 1 DelayMS 5000 PORTB.4 = 0 GoTo AGAIN ;================================================================ CLK_WAIT: For CNT = 1 To NB_CLK While CLK = 0 : Wend While CLK = 1 : Wend Next Return ;================================================================ CRC_Check: ' row parity check: row_count = 9 ' count rows While row_count < 59 column_count = 0 ' count columns While column_count < 5 row_check[column_count] = VAR1[row_count+column_count] Inc column_count Wend row_bit = 0 ' count row bits row_sum = 0 While row_bit < 4 row_sum = row_sum + row_check[row_bit] Inc row_bit Wend I = row_check[4] If row_sum.0 <> I.0 Then RESULT = 0 Return End If row_count = row_count + 5 Wend ' end row parity check ' column parity check: column_count = 9 ' count columns While column_count < 13 row_bit = 0 ' count column bits row_count = 0 ' count rows While row_bit < 11 column_check[row_bit] = VAR1[column_count+row_count] Inc row_bit row_count = row_count + 5 Wend row_bit = 0 ' count column bits column_sum = 0 While row_bit < 10 column_sum = column_sum + column_check[row_bit] Inc row_bit Wend I = column_check[10] If column_sum.0 <> I.0 Then RESULT = 0 Return End If Inc column_count Wend ' end column parity check If VAR1[63] = 1 Then RESULT = 0 Return End If RESULT = 1 Return ;================================================================ End
Сообщение отредактировал
anatol - Пн, 30.01.2017, 19:13
|
|
|
|
mikhail09p |
Дата: Вт, 31.01.2017, 09:10 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Что-то никак не пойму без схемы. Тут, похоже, принимается с какого-то модуля...
|
|
|
|
anatol |
Дата: Вт, 31.01.2017, 11:38 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
mikhail09p, я ссылку исходную приводил. Похоже чел использует (или конвертировал под протон программу) с этой отладочной платы http://download.mikroe.com/documen....100.pdf а сам приемник отсюда http://www.advanide.com/wp-cont....095.pdf К сожалению не могу понять что используешь - RFID (безконтактный радио) или простой кодовый. Знаний по этой теме немного совсем. Одно знаю что для ответа метки сначала надо "зарядить" в ней конденсатор непрерывным излучением, а потом посылать код опроса.
|
|
|
|
MiXaS |
Дата: Вт, 31.01.2017, 16:22 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
545
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
mikhail09p, скажите, а готовый модуль не подходит? с выходом uart? Добавлено (31.01.2017, 16:22) --------------------------------------------- Я вот этот использовал. Скорость чтения так себе, но работает
|
|
|
|
mikhail09p |
Дата: Вт, 31.01.2017, 17:53 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Ого! На каком расстоянии считывает? И что значит - скорость считывания? 1 сек?
Хотя хотелось бы обойтись просто контроллером. У людей ведь работает.
|
|
|
|
anatol |
Дата: Вт, 31.01.2017, 21:05 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
mikhail09p, нарисуй схему твоего девайса. Можно не все. Нужна схема приемопередатчика (или готовый) и подключение к пику.
|
|
|
|
mikhail09p |
Дата: Вт, 31.01.2017, 21:46 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
Схема вот. Не моя, но такая же. В железе работает. Сигнал смотрю на PORTA.3. Программу тоже прикрепляю. Аппаратный шим генерит на 125 кГц. Ключ отзывается.
|
|
|
|
anatol |
Дата: Ср, 01.02.2017, 23:19 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Смотрел вкользь - домашние заботы. Не понял чем вы раскачиваете усилитель Порт B в программе не просматривается. Также вопрос по контуру L1-C1 - настроен он на 125 кГц? От его качества сильно зависит чувствительность приемного тракта. При наличии осциллографа запрос и ответ можно посмотреть на порте А1 (ваша схема).Принимаемый сигнал будет значительно отличаться по амплитуде.
|
|
|
|
mikhail09p |
Дата: Пт, 03.02.2017, 21:46 | Сообщение # 12 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
481
Замечания:
±
На сайте с 04.05.2010
Статус:
Offline
|
PortB.3 - это выход ШИМ. Про контур знаю. Осциллографом смотрю, сигнал есть. Вопрос по расшифровке.
|
|
|
|
Max_Ostin |
Дата: Вс, 07.10.2018, 17:17 | Сообщение # 13 |
Группа:
Пользователи
Ранг:
Новенький
Сообщений:
12
Замечания:
±
На сайте с 29.10.2017
Статус:
Offline
|
Здравствуйте уважаемые форумчане, подскажите в чём проблема. Заинтерисовала так называемая "открывашка", "таблетка" i-button, которая открывает почти все двери с домофоном всем известных фирм (Цифрал, Метаком и другие). Проштудировал ин-нет и узнал, что она эта "таблетка" (она же DS1990A, а может и нет?) осуществляет обмен по 1-проводной линии (протокола 1-Wire), изобретённой фирмой DALLAS.К этому же типу относится датчик температуры DS18S20 (есть ещё часы реального времени). Написал прогу, используя старую от датчика температуры, нарисовал в Протеусе схемку, немного поколдовал и в Протеусе заработала. Спаял в "железе" на монтажной плате, она должна считывать помежуточное ПЗУ (Read ROM [33h]) и сохранить его в EEPROM. Затем, я EEPROM считываю через программатор узнаю его. Но прога в "железе" работает не правильно, чип видит подключение "таблетки" к слоту, гаснет красный и загорается зелёный диод. Но при считывании EEPROM из чипа вижу восемь нулевых байтов. Про бывал изменять задержки в подпрограммах, в большую и в меньшую сторону - ничего не меняется. Из статьи о DS18S20, размерность задержек колеблется в два раза(!) и указанны только минимальные величины. А ведь помню, что кода-то давно собирал такой считыватель на базе 628А, и там в схеме присутствовал полевой транзистор (КП304А), и она нормально работала. Правда в EEPROM сохранялось (могу и ошибаться), вроде четыре байта (может и шесть) и среди них не было байта 01h. И не помню в каких дебрях ин-нета я её нашёл. Кто делал в "железе", такой считыватель может подскажет, где ошибка? И если чисто логически поразмыслить прочитав статью в дополнениях, домофон не использует для идентификации это самый серийный номер "таблетки".Потому, что он является уникальным и при потери его нельзя восстановить. А "таблетку" дубликат могут сделать в компании которая обслуживает домофоны. Значить в "таблетке" есть какое-то одноразовое ПЗУ или електрически стираемое ПЗУ (как в DS18S20) которое есть в списке домофона для ключей которые открывают дверь? Кто знает больше, скажите! И ещё маленький вопрос, а как эту CRC вычислять? Из материала про датчики DS1820 - ни чего не понял!
|
|
|
|
Aleksey_174 |
Дата: Пн, 08.10.2018, 05:44 | Сообщение # 14 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
16
Замечания:
±
На сайте с 22.01.2017
Статус:
Offline
|
Max_Ostin, Не понял ничего толком в вашем коде, вы пытаетесь прочитать ключ в побитовом режиме не подав на него команду чтения. Обычный ключ ibutton содержит 8 байт информации, где 1 байт содержит идентификатор ключа обычно используется (01), 6 байт код ключа и один 1 CRC код. CRC код используется для проверки целостности кода ключа. Для того чтоб прочитать ключ с начала на него необходимо подать команду для чтения $33 или старые ключи $F0. Для чтения и опроса ключа используй операторы QWrite и QRead DS1990: OWrite Key, 1, [$33]' 'Процедура чтения кода ключа ORead Key, 0, [Str ID\8] 'в переменную ID Return А для вычисления CRC '--Процедура определения правильности кода ключа Calculating_crc: crc = 0 I = 0 TestBit = 0 Crcdata = ID[0] GoSub CRC8 Crcdata = ID[1] GoSub CRC8 Crcdata = ID[2] GoSub CRC8 Crcdata = ID[3] GoSub CRC8 Crcdata = ID[4] GoSub CRC8 Crcdata = ID[5] GoSub CRC8 Crcdata = ID[6] GoSub CRC8 Return CRC8: For I = 0 To 7 ' для всех 8ми битов TestBit = crc.0 ^ Crcdata.0 Crcdata = Crcdata >> 1 If TestBit = 0 Then Shift crc = crc ^ $18 Shift: crc = crc >> 1 crc.7 = TestBit Next Переменные для них Dim crc As Byte 'CRC Dim Crcdata As Byte 'CRC Dim TestBit As Bit 'CRC Dim ID[8] As Byte 'буфер записи ключей программа gosub DS1990 'проверяем сунул ли кто нить ключ 'проверяем идентификатор ключа I-Button If ID[0] = $1 Or ID[0] = $2 Then ') GoSub Calculating_crc 'ключ есть проверяем на ошибки If crc=ID[7] Then 'ошибок нет \\\\\\\\\\\\\\\\\\\\\\\\\\\ Сам раньше баловался пока у нас домофоны не поменяли.
|
|
|
|
Anatoliy1000 |
Дата: Чт, 28.12.2023, 12:55 | Сообщение # 15 |
Группа:
Проверенные
Ранг:
Начал соображать
Сообщений:
31
Замечания:
±
На сайте с 02.03.2016
Статус:
Offline
|
Здравствуйте всем! Подскажите есть ли готовая программка или готовые бюджетные решения открывашки электромеханического замка RFID ключем. Ключ есть перезаписываемый 13,5 МГц (если на него нет прог, то 125КГц куплю). Читалка ключей наверное самое бюджетное на алике 110р (ТУТ). Замок есть на калитку электромагнитный бюджетник за 1,5к.
Я новичок. За помощь стараюсь плюсовать репутацию (пока других способов сказать спасибо не знаю).
|
|
|
|