Rfid антенна - arduino

slava_573
Offline
Зарегистрирован: 22.01.2021

Есть антенна

https://www.aliexpress.com/i/32656012971.html?ws_ab_test=searchweb0_0%2Csearchweb201602_0%2Csearchweb201603_0%2CppcSwitch_0&algo_pvid=abd73e95-ded7-4829-b6c2-4e79628de83b&aff_platform=portals-tool&sk=_Ao9adF&aff_trace_key=789d6c3fcf9c4205bf664ab0469fb1e2-1610999051736-09580-_Ao9adF&terminal_id=e7b9506ff36b4ad0add310c071420c60&algo_expid=abd73e95-ded7-4829-b6c2-4e79628de83b-27

 

и скетч

 

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 
09volatile long reader1 = 0;
10volatile int reader1Count = 0;
11 
12void reader1One(void) {
13  reader1Count++;
14  reader1 = reader1 << 1;
15  reader1 |= 1;
16}
17 
18void reader1Zero(void) {
19  reader1Count++;
20  reader1 = reader1 << 1;
21}
22 
23void 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 
48void 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

помогите считать полностью ключ

не бесплатно)

 

SAB
Offline
Зарегистрирован: 27.12.2016

Полный код получишь только на Wiegand 34

SAB
Offline
Зарегистрирован: 27.12.2016

Тот считыватель который у вас, нельзя перевести на 34 по этому меняйте RFID. Правда данная антенна (как вы её называете), одна из дальнобойных. С 3-4 метров ловит специальные карты легко. По этому, у вас есть выбор, либо полный код, либо дальнобойность.

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

Сделаю полный код.