I realized I never posted any images of my RFID reader in action, so here's a few of how it looks today in action.
This first view is of my workbench with scope, logic analyzer, reader & tag, and a few of my homemade tags.
Here's a closeup of the reader itself. The USB cable and antenna are the only connections required. The LED flashes every time the code recognizes the "triple-0" tag header sequence.
I have my 4 scope probes hooked up to the following signals from bottom to top.
First is a closeup view of just a couple of bits from the signal, showing the bits modulated with the 125khz carrier.
4) This is the antenna input signal after passing through the detector diode, low-pass filter, and decoupling capacitor.
3) The noisy line near the top of the antenna signal is the threshold voltage, which is adjusted manually to a couple hundred mV via a simple potentiometer / voltage divider. These two signals are fed into the AVR's built-in analog comparator to produce interrupts whenever the antenna signal rises above the threshold.
1) This the raw manchester-encoded signal from the tag as output by the detector code. It's composed of sequences of 5 possible signals, "short low", "double low", "triple low (this is the start-flag)", "short high", and "double high". You can see the how the trace echoes the signal in the antenna, delayed by 1/2 the length of a "short", which is how long the timer takes to detect the end of a high or low.
2) The topmost trace is what I use for triggering the scope, it's always low except when the tag header (000) is detected.
The next view is zoomed out a bit, showing the trigger pulse on channel 2, and the first 8 or 9 bits of the signal on channel 1.
Here's the two logic signals as seen via the Saleae Logic, and underneath are the (slightly obscured) decoded tag values output to the serial port.
Here's the schematic:
And, last but not least, the code itself (This is Arduino code for Teensy 2.0)