Go Down

Topic: Proximity help? (Read 4181 times) previous topic - next topic

AKSoapy29

Hello! I just got my first proximity card reader today, and I have absolutely no clue how to hook it up. It's a HID ProxPoint 6005. Here are the pins:

Red- 5-16 Volts dc
Black- ground
Green- data0/data
White- data1/clock
Drain- shield ground
Orange- green led
Brown- red led
Yellow- beep control
Blue- hold
Violet- card present

If someone could please help me set this up with my Arduino, that would be great! I don't have a card because I lost it. I'll try to find it soon.

Thanks,
-Soapy29
Andrew K.

johnwasser

The data pins are either data0 and data1 for Weigand output or a data an clock pin which will work like an SPI bus master.

Weigand pulses the data0 pin for a 0 bit and the data1 pin for a 1 bit.

The other format you are probably supposed to sample the data line on the falling or rising edge of the clock line pulses.  The easiest way to read it is to hook the clock line to an interrupt pin and sample the data line in the ISR.


Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

AKSoapy29

I'm a noob. I barely got what you said.
Andrew K.

AKSoapy29

Oh. I've seen people plug a wire strait into the tx port before. So would I tie the data0 and data1 together?
Andrew K.

johnwasser


Oh. I've seen people plug a wire strait into the tx port before. So would I tie the data0 and data1 together?


No.  That will not work.
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

AKSoapy29

So I take data0, plug that into dig3, and take data1, and plug that into dig4, right? Then what. Oh and if I apply power to it, and I scn a card, the light turns green and beeps.
Andrew K.

johnwasser

Not sure what you mean by 'dig3' and 'dig4'.

Read up on interrupts:  http://www.arduino.cc/en/Reference/AttachInterrupt

Figure out which model you got (Weigand or data&clock). If you make a guess and get it wrong, nothing will work.  Google found me a manual for the "HID ProxPoint Plus 6005" and it indicated that the model number was slightly different for the two protocols. 
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

AKSoapy29

I think it's a weigand because on the green wire it says data0/data, and on the white wire it says data1/clock. What are the difference? And dig3 it digital 3 on the Arduino. Oh, thanks for the replies.
Andrew K.

johnwasser

Does you unit have any model number information on it?
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

AKSoapy29

Let's see... Where's my camera...

Ah. These pictures are of all for corners of the device. Can you get anything out of them?




Andrew K.

johnwasser

OK.  The 6006B2B00 makes me think that you do have the Weigand model.

Connect 'data0' to pin 2 (interrupt 0) and 'data1' to pin 3 (interrupt 1).

Code: [Select]


volatile unsigned long tagID = 0;
volatile int bitCount = 0;

void ISRone(void)
{
  bitCount++;
  tagID <<= 1;
  tagID |= 1;
}

void ISRzero(void)
{
  bitCount++;
  tagID <<= 1;
}

void setup()
{
  Serial.begin(57600);

  pinMode(2, INPUT);
  digitalWrite(2, HIGH);  // Enable pull-up resistor
  attachInterrupt(0, ISRzero, FALLING);

  pinMode(3, INPUT);
  digitalWrite(3, HIGH);  // Enable pull-up resistor
  attachInterrupt(1, ISRone,  FALLING);

  tagID = 0;
  bitCount = 0;
}

void loop()
{
  if(bitCount >= 26)
    {
    Serial.println(tagID, HEX);
    tagID = 0;
    bitCount = 0;
  }
}
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

AKSoapy29

Alright. The serial port is all random. No two codes are alike. But it reads them. Now what?
Andrew K.

AKSoapy29

But if you scan the card and hit reset, it has the same code every time.
Andrew K.

johnwasser

Could be the code is not 26 bits.  Try this version:

Code: [Select]

volatile unsigned long tagID = 0;
volatile unsigned long lastBitArrivalTime;
volatile int bitCount = 0;

void ISRone(void)
{
  lastBitArrivalTime = millis();
  bitCount++;
  tagID <<= 1;
  tagID |= 1;
}

void ISRzero(void)
{
  lastBitArrivalTime = millis();
  bitCount++;
  tagID <<= 1;
}

void setup()
{
  Serial.begin(57600);

  pinMode(2, INPUT);
  digitalWrite(2, HIGH);  // Enable pull-up resistor
  attachInterrupt(0, ISRzero, FALLING);

  pinMode(3, INPUT);
  digitalWrite(3, HIGH);  // Enable pull-up resistor
  attachInterrupt(1, ISRone,  FALLING);

  tagID = 0;
  bitCount = 0;
}

void loop()
{
  //  See if it has been more than 1/4 second since the last bit arrived
  if(bitCount > 0 && millis() - lastBitArrivalTime >  250)
    {
    Serial.print(bitCount, DEC);
    Serial.print(" bits: ");
    Serial.println(tagID, HEX);
    tagID = 0;
    bitCount = 0;
  }
}
Send Bitcoin tips to: 1L3CTDoTgrXNA5WyF77uWqt4gUdye9mezN
Send Litecoin tips to : LVtpaq6JgJAZwvnVq3ftVeHafWkcpmuR1e

AKSoapy29

It also be me using power via USB. I'll try an altronix 12v power supply. My dad who works for VTI security suggested that.
Andrew K.

Go Up