Rfid антенна - arduino
- Войдите на сайт для отправки комментариев
Пт, 22/01/2021 - 19:14
Есть антенна
и скетч
01 | /* Crazy People |
02 | * By Mike Cook April 2009 |
03 | * Three RFID readers outputing 26 bit Wiegand code to pins:- |
04 | * Reader A (Head) Pins 2 & 3 |
05 | * Interrupt service routine gathers Wiegand pulses (zero or one) until 26 have been recieved |
06 | * Then a sting is sent to processing |
07 | */ |
08 |
09 | volatile long reader1 = 0; |
10 | volatile int reader1Count = 0; |
11 |
12 | void reader1One( void ) { |
13 | reader1Count++; |
14 | reader1 = reader1 << 1; |
15 | reader1 |= 1; |
16 | } |
17 |
18 | void reader1Zero( void ) { |
19 | reader1Count++; |
20 | reader1 = reader1 << 1; |
21 | } |
22 |
23 | void setup () |
24 | { |
25 | Serial .begin(9600); |
26 | // Attach pin change interrupt service routines from the Wiegand RFID readers |
27 | attachInterrupt(0, reader1Zero, RISING); //DATA0 to pin 2 |
28 | attachInterrupt(1, reader1One, RISING); //DATA1 to pin 3 |
29 | delay(10); |
30 | // the interrupt in the Atmel processor mises out the first negitave pulse as the inputs are already high, |
31 | // so this gives a pulse to each reader input line to get the interrupts working properly. |
32 | // Then clear out the reader variables. |
33 | // The readers are open collector sitting normally at a one so this is OK |
34 | for ( int i = 2; i<4; i++){ |
35 | pinMode(i, OUTPUT); |
36 | digitalWrite(i, HIGH); // enable internal pull up causing a one |
37 | digitalWrite(i, LOW); // disable internal pull up causing zero and thus an interrupt |
38 | pinMode(i, INPUT); |
39 | digitalWrite(i, HIGH); // enable internal pull up |
40 | } |
41 | delay(10); |
42 | // put the reader input variables to zero |
43 | reader1 = 0; |
44 | reader1Count = 0; |
45 | //digitalWrite(13, HIGH); // show Arduino has finished initilisation |
46 | } |
47 |
48 | void loop () { |
49 | if (reader1Count >=26){ |
50 | //Serial.print(" Reader 1 "); |
51 | //Serial.println(reader1,HEX); |
52 | // Serial.println("A"); |
53 | //Serial.println(reader1& 0xfffffff); |
54 | int serialNumber=(reader1 >> 1) & 0x3fff; |
55 | int siteCode= (reader1 >> 17) & 0x3ff; |
56 |
57 | Serial .print(siteCode); |
58 | Serial .print( " " ); |
59 | Serial .println(serialNumber); |
60 | reader1 = 0; |
61 | reader1Count = 0; |
62 | digitalWrite(13,HIGH); |
63 | delay(2000); |
64 | digitalWrite(13,LOW); |
65 | } |
66 | } |
по результатам получаю данные:
Wiegand HEX = 1140BE, DECIMAL = 1130686, Type W26
считывает только часть кода ключа.
полный код
56 5A 11 40 BE
помогите считать полностью ключ
не бесплатно)
Полный код получишь только на Wiegand 34
Тот считыватель который у вас, нельзя перевести на 34 по этому меняйте RFID. Правда данная антенна (как вы её называете), одна из дальнобойных. С 3-4 метров ловит специальные карты легко. По этому, у вас есть выбор, либо полный код, либо дальнобойность.
Сделаю полный код.