Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » RFID (Чтение ключа)
RFID
mikhail09p Дата: Сб, 28.01.2017, 10:42  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 514
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Здравствуйте.
Помогите прочитать ключ RFID 125кГц.
Пробую делать с помощью компаратора на 628 пике.
Может, кто поделится примером расшифровки кода? В смысле протокола RFID. Буду очень благодарен.

Сообщение отредактировал mikhail09p - Сб, 28.01.2017, 12:16
ЯНДЕКС Дата: 28.01.2017
Matrix252005 Дата: Пн, 30.01.2017, 10:02  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 713
Репутация: 43   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 514
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Спасибо, Николай, но там немного...
Наверное, из местных никто этим не занимался...
anatol Дата: Пн, 30.01.2017, 19:12  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 571
Репутация: 17   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 514
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Что-то никак не пойму без схемы. Тут, похоже, принимается с какого-то модуля...
anatol Дата: Вт, 31.01.2017, 11:38  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 571
Репутация: 17   ±
Замечания:   ±
На сайте с 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
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 619
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

mikhail09p, скажите, а готовый модуль не подходит? с выходом uart?

Добавлено (31.01.2017, 16:22)
---------------------------------------------
Я вот этот использовал. Скорость чтения так себе, но работает

mikhail09p Дата: Вт, 31.01.2017, 17:53  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 514
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Ого! На каком расстоянии считывает? И что значит - скорость считывания? 1 сек?

Хотя хотелось бы обойтись просто контроллером. У людей ведь работает.
anatol Дата: Вт, 31.01.2017, 21:05  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 571
Репутация: 17   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

mikhail09p, нарисуй схему твоего девайса. Можно не все. Нужна схема приемопередатчика (или готовый) и подключение к пику.
mikhail09p Дата: Вт, 31.01.2017, 21:46  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 514
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

Схема вот. Не моя, но такая же. В железе работает. Сигнал смотрю на PORTA.3.
Программу тоже прикрепляю.
Аппаратный шим генерит на 125 кГц. Ключ отзывается.
Прикрепления: 5683111.jpg(118.6 Kb) · FRID_16F628.bas(5.6 Kb)
anatol Дата: Ср, 01.02.2017, 23:19  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 571
Репутация: 17   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Смотрел вкользь - домашние заботы. Не понял чем вы раскачиваете усилитель Порт B в программе не просматривается. Также вопрос по контуру L1-C1 - настроен он на 125 кГц? От его качества сильно зависит чувствительность приемного тракта. При наличии осциллографа запрос и ответ можно посмотреть  на порте А1 (ваша схема).Принимаемый сигнал будет значительно отличаться по амплитуде.
mikhail09p Дата: Пт, 03.02.2017, 21:46  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 514
Репутация: 13   ±
Замечания:   ±
На сайте с 04.05.2010

Статус: Offline

PortB.3 - это выход ШИМ. Про контур знаю. Осциллографом смотрю, сигнал есть. Вопрос по расшифровке.
Прикрепления: FRID_16F628.dsn(70.2 Kb)
anatol Дата: Пн, 06.02.2017, 20:21  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 571
Репутация: 17   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Полистай kazus.ru/forums/attachment.php?attachmentid=49767&d=1374440757
Max_Ostin Дата: Вс, 07.10.2018, 17:17  |                                                                                                                Сообщение # 14
Группа: Пользователи
Ранг:  Начал соображать
Сообщений: 20
Репутация: 0   ±
Замечания:   ±
На сайте с 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 - ни чего не понял!

Прикрепления: INT.zip(1.13 Mb)
Aleksey_174 Дата: Пн, 08.10.2018, 05:44  |                                                                                                                Сообщение # 15
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 28
Репутация: 0   ±
Замечания:   ±
На сайте с 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      'ошибок нет \\\\\\\\\\\\\\\\\\\\\\\\\\\
    Сам раньше баловался пока у нас домофоны не поменяли.
Форум Picbasic.ru » Программирование МК » Proton PicBasic » RFID (Чтение ключа)
  • Страница 1 из 1
  • 1
Поиск: