ID-12 module testing

Hi there,

I just received my ID-12 rfid reader yesterday, but haven’t been able to get any sign of life from it. I initially set up the circuit exactly as the following site describes (using an Arduino Diecimila):

http://hcgilje.wordpress.com/resources/ … tagreader/

I was wondering what the simplest test was for checking if the module is dead. Right now I have pin 11 to 5V, pin 1 to ground, and pin 10 connected to the positive lead of an LED (which is of course also connected to ground). Is this enough to check that the unit can pick up an rfid card? So far I’m getting nothing.

Thanks in advance!

~ Kim

It took a couple of days, but I finally got this working. It turns out you have to be careful to place a resistor in series with the LED attached to pin 10, otherwise you might burn out the board. From what I can tell, I burned out the circuit that drives pin 10 (the LED), but the rest of the board miraculously survived. I connected it to the Arduino Diecimila and can now monitor incoming RFIDs on my computer. I’ll be posting my code on the Arduino forums, since you have to use SoftwareSerial and some careful looping to catch the whole ID.

Anyways, great reader, now to stick it inside of a teddy bear :slight_smile:

~ Kim

I have not had this problem at all and have used my ID12s for a while, but apologize for any problems using my schematic.

Anyway, I have uploaded a new image to reflect the 1k resistor between pin 10 and the LED.

http://hcgilje.wordpress.com/resources/ … tagreader/

best,

hc gilje

best,

hc gilje

A 1K resistor will probably make the LED very, very dim… a general rule for most LEDs that are connected to 5V is to use a 220 or 330 ohm resistor - this ensures it’s bright enough to see without drawing too much current.

Thats probably true, but I just followed the advice from ID-innovations who make the RFID chip who told me this: “The circuit diagram for the ID12 has an error. It will blow up the ID12 because the diode is driven directly without a 1k series resistor!!!”

hc

1k is fine with modern LEDs, it should be clearly visible indoors.

Leon

Yep I agree :slight_smile:

470 makes it more lit than average, and twice the current.

Hi,

I was just wondering what kind of range are you guys getting with the ID-12? I know in the specs its says that the read range is 12cm but is that true? I actually want to develop a project with with this module but I need at least a 1 meter range. Do you guys have any suggestions?

A couple of months ago I got my ID-12 in and within an of hour I had it up and working on a breadboard. The spec sheet was enough info to get it hooked up and running. I added an LED and small piezo buzzer for visual and audible indication when it decodes a HID card. (BTW, the DB9 adapter board is my own simple design, not SparkFun’s)

http://www.rpc-electronics.com/img/misc/id-12.jpg

I wrote a small VB6 program to collect, parse, strip the checksum chars and log each decode. I’m looking at developing a simple card reader that will report the data over an RF link. One of the many projects I have on my bench to work on.

As for reading range, I have not seen anything better than about 6 inches or so. I did play around with laying different things over the reader and reading a HID through them. The range did’nt seem to be reduced that much by anything. I never tried anything metal, but I did try magazines, cardboard, abs plastic and other things I had laying around the shop.

One thing I have not figured out yet is making the bi-color LED that I have tied to it stay red until it decodes a HID, flash green and then go back to red. I was trying to do this without a PIC, but I think I might have to add one in eventually.

Hi folks!

i’ve got my ID-12 hooked up to a 9600 8N1 serial port (is that right?) and when i flash the 5 cards i bought past it, i get confusing, inconsistent results. can anybody shed some light on my problem? i think the device is properly configured in ASCII mode.

thanks!

–Robstar

here is the data i’m seeing from a simple perl program to read (several passes for each card - note that these vary):

$ stty raw < /dev/ttyUSB0
$ perl -e '$|=1; use Term::ReadKey; open(TTY,"</dev/ttyUSB0") or die; while(1) { my $c = ReadKey 0, *TTY; printf("%02x ", ord $c); print "\n" if(ord $c == 0) }'

# card 1
3f a6 f9 e6 e6 4c 97 cc 52 b9 a9 99 a6 cf 4f 00 
3f a6 f9 e3 e6 4c 97 cc a9 b9 a9 99 a6 cf 4f 00 
3f a6 f2 e6 e6 4c 97 cc a9 b9 a9 99 83 cf 4f 00 

# card 2
3f a6 f9 e6 e6 4c 97 99 2e 5e 64 67 c6 e5 d6 f2 00 
3f a6 f9 e6 e6 4c 97 99 2e 5e 64 67 46 e5 d6 f2 00 
3f a6 f2 e6 e6 4c 97 32 2e 5e 64 67 46 e5 d6 f2 00 

# card 3
3f a6 f2 e6 e6 4c 97 cc d2 66 a6 a6 4c 9e 3d 7e 00 
3f a6 f9 e6 e6 4c 97 cc d2 66 a6 a6 4c 9e 3d 7e 00 
3f a6 f2 e6 e6 4c 97 cc d2 66 a6 a6 4c 9e 3d 7e 00 
3f a6 f9 e3 e6 4c 97 cc e9 66 a6 a6 4c 9e 3d 7e 00 
3f a6 f2 e6 e6 4c 97 cc d2 66 a6 a6 4c 9e 3d 7e 00 
3f a6 f2 e6 e6 4c 97 cc d2 66 a6 a6 4c 9e 3d 7e 00 

# card 4
3f a6 f2 e6 e6 4c 97 32 97 cc cc 99 99 3c 3d 7e 00 
3f a6 f2 e6 e6 4c 97 32 97 cc cc 99 99 3c 3d 7e 00 
3f a6 f2 e6 e6 4c 97 32 97 98 cc 99 32 79 3d 7e 00 
3f a6 f2 e6 e6 4c 97 32 97 98 cc 99 30 79 3d 7e 00 
3f a6 f2 e6 e6 4c 97 32 97 98 cc 99 32 79 3d 7e 00 
3f a6 f9 e3 e6 4c 97 32 97 98 cc 99 30 79 3d 7e 00 
3f a6 f9 e6 e6 4c 97 99 97 98 cc 99 32 79 3d 7e 00 

# card 5
3f a6 f2 e6 e6 4c 97 98 2e 5d 32 2e 2f 79 3d 7e 00 
3f a6 f2 e6 e6 4c 97 98 2e 5d 32 2e 2f 79 3d 7e 00 
3f a6 f2 e6 e6 4c 97 98 2e 5d 32 2e 2f 79 7a 7e 00 
3f a6 f2 e6 e6 4c 97 98 2e 5d 32 2e 2f 79 7a 7e 00 
3f a6 f2 e6 e6 4c 97 cc 2e 5d 99 2e 2f 79 7a 7e 00 
3f a6 f9 e6 e6 4c 97 cc 17 5d 99 2e 2f 79 7a 7e 00 
3f a6 f2 e6 e6 4c 97 98 2e 5d 32 2e 2f 79 7a 7e 00 
3f a6 f9 e6 e6 4c 97 cc 2e 5d 31 2e 2f 79 7a 7e 00 
3f a6 f2 e6 e6 4c 97 98 2e 5d 32 2e 2f 79 7a 7e 00 

# hmm..

# consistent, regardless of which card:
3f a6 .. .. e6 4c 97 .. .. .. .. .. .. .. ..    00
 ?              L

# consistent, given a card:
                     cc .. b9 a9 99 .. cf 4f
                     .. 2e 5e 64 67 .. e5 d6 f2
                     cc .. 66 a6 a6 4c 9e 3d 7e
                     .. 97 .. cc 99 .. .. 3d 7e
                     .. .. 5d .. 2e 2f 79 .. 7e

Could someone post a true unmodified raw output of what the serial stream looks like when you swipe a card?

I mean check digit and all? I am just curious?

Also is there a good tutorial on the different standards? I mean how does one decide between $30 SKU#: SEN-08419 or a $10 reader from eBay?

Thanks

~B

putting the output of pin 9 (“TTL (inverted)”) through a MAX3232 TTL-to-RS232 converter made everything work just dandy when connected to my computer’s serial port. (RX, pin 2 on the D-SUB connector)

here’s the full hex output for my 5 cards (one per line):

02 30 45 30 30 38 45 38 42 31 32 31 39 0d 0a 03

02 30 45 30 30 38 45 39 46 45 34 46 42 0d 0a 03

02 30 45 30 30 38 45 35 46 43 36 31 39 0d 0a 03

02 30 45 30 30 38 45 35 44 39 38 34 35 0d 0a 03

02 30 45 30 30 38 45 38 42 45 44 45 36 0d 0a 03

as the datasheet says, each of these lines is:

STX (0x02)

DATA (10 ASCII bytes – “0E 00 8E 8B 12” for the first one)

CKSUM (2 ASCII bytes – “19” for the first one, which is XOR(0E,00,8E,8B,12))

CR (0x0d)

LF (0x0a)

ETX (0x03)

sadly, i can’t find any other 125kHz cards around the house to try – my work-badge must be a more secure HID card and doesn’t even register.

robstar:
sadly, i can’t find any other 125kHz cards around the house to try – my work-badge must be a more secure HID card and doesn’t even register.

Cool, thanks for the post robstar. You got me thinking - what do you mean by “more secure”

I mean the rfid is just a low-range wireless medium that doesnt need power supply. how can it be secure, more secure, etc? it just pushes some sequence from the transmitter to the receiver.

if I had to guess, a “more secure” would be a some kind of sequence (may be random) which is encrypted with pre-shraed key that the HID card already has programmed inside its specialized IC?

But then even if the stream was different evey time what would prevent someone to just sniff it and then repeat it? (here I am trying to figure out how one could be prevented from duplicating their HID)

~B

I.D. badges typically use 13.56, but can potentially use any number of protocols.

It would be rare for an I.D. badge to be using 125khZ, and usually because 13.56 has a slight range advantage.

13.56 readers can read multiple tags at one time (like at places where cards are played for money, which do use encryption in 13.56 btw),

I don’t know of any 125khZ readers that can do that. 13.56 IC’s also store more information than 125’s, and scan more reliably with a lower rate of error.

Hi

I’ve attached my id12 to a breakout board with 2 headers to connect it to a prototyping board, and am trying to get a simple test circuit to see if I have a working configuration.

Following this thread, I’ve connected pin 1 to +5VDC, pin 11 to ground, pin 10 to a 1K resistor which leads to the positive lead of an LED which then connected to ground.

I hook this up to power, pass some HID cards by the ID12 and… nothing.

I have a few questions:

  1. Is this enough of a circuit, and plan, to test this chip? Should the LED light?

  2. How sensitive is this to variations in power? My power is actually +4.4 VDC according to my multimeter.

  3. If I had burned out pin 10 as was mentioned earlier on this thread, what is a good alternative for a simple test circuit? (No, I didn’t hook up the LED without a resistor, this last question is asked out of curiousity and wanting to know an alternative test)

Thanks

—Raymond

kim:
Right now I have pin 11 to 5V, pin 1 to ground

raygeeknyc:
Following this thread, I’ve connected pin 1 to +5VDC, pin 11 to ground

Ray, I think you have swapped these two pins.

Regards,

Madeleine

Hello friends,

i am naive at electronics and am trying to us Id12 by connecting it with ATMEGA32 on STK500. the that i want to know is that if i want to connect stk500’s led at pin 10 then do i ned to connect 1k resistor :?: :?: :?:

Can someone provide with the sample code for initializing the USART when communicating with ID12.

Madeleine Hopkins:

kim:
Right now I have pin 11 to 5V, pin 1 to ground

raygeeknyc:
Following this thread, I’ve connected pin 1 to +5VDC, pin 11 to ground

Ray, I think you have swapped these two pins.

Regards,

Madeleine

Thanks Madeleine

I think that I had wired it up correctly but wrote it up wrong here. I had broken it down so I’ve just recreated it on the breadboard, making certain that I’ve got it right this time, but still nothing.

With this correct pin assignment:

I’ve connected pin 11 to +5VDC, pin 1 to ground, pin 10 to a 1K resistor which leads to the positive lead of an LED which is then connected to ground.

I hook this up to power, pass some HID cards by the ID12 and… nothing.

I have a few questions:

  1. Is this enough of a circuit, and plan, to test this chip? Should the LED light?

  2. How sensitive is this to variations in power? My power is actually +4.4 VDC according to my multimeter.

  3. What is a good alternative for a simple test circuit if any?

Thanks again,

—Raymond

raygeeknyc:
I have a few questions:

  1. Is this enough of a circuit, and plan, to test this chip? Should the LED light?
a, make sure RES (pin #2) is wired to +5V

b, make sure FS (pin #7) is wired to GND

Then pin #10 should go high when a tag is read.

During the time when pin #10 is high, the serial data is sent on pin #9.

This has worked flawlessy in our lab.

raygeeknyc:
2) How sensitive is this to variations in power? My power is actually +4.4 VDC according to my multimeter.

I would check with +5V first and then experiment with lower powers if needed. No need to add several risk factors.

raygeeknyc:
3) What is a good alternative for a simple test circuit if any?

4 cable-connections and 2 wires as such:

RED => +5V (pin #11)

BLK => GND (pin #1)

YEL => D0 (pin #9)

GRN => LED (pin #10)

Wire #1: from RES (pin #2) to +5V (pin #11)

Wire #2: from FS (pin #7) to GND (pin #1)

Now connect RED to +5V, BLK to Ground.

If you have an oscilloscope, measure on GRN, and swipe a tag. It should go high when ID12 is reading. Now measure on YEL. It should be high. (inverted TTL-level). Swipe a tag and you should see serial data here.

After this test:

Connect YEL to data in (TTL serial on e.g. AVR/PIC)

(Optionally: Connect GRN to resistor and LED or transistor + beeper. Do not drive anything directly from pin #10).