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

Статус: Offline

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

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

Статус: Offline

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

Статус: Offline

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

Статус: Offline

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

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

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

Статус: Offline

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

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

Статус: Offline

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

Статус: Offline

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

Статус: Offline

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

Статус: Offline

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

Статус: Offline

Полистай kazus.ru/forums/attachment.php?attachmentid=49767&d=1374440757
Форум Picbasic.ru » Программирование МК » Proton PicBasic » RFID (Чтение ключа)
Страница 1 из 11
Поиск: