The idea is that you carry one of these cards in with you. It's a HID proximity card, and if you have a security badge for work that you wave at a reader, this, or something like it, is what's probably inside. I keep one in my wallet.
I have two doors with sensors, one into my semi-attached garage and one on my front door. You walk through an open breezeway to get between my garage and house, so I needed readers on both sides. The beauty is that I don't have to take the card out of my pocket to use it, I just need to get it within an inch or so of the reader, which is great when your hands are full!
Both doors have electronic lock strikes installed, so you don't have to unlock the door, or even turn the knob. And, conveniently, both doors open in, toward the secure side, so if your hands are full, you just have to lean against the door and it pops open. Very convenient!
On the house side, I decided to only require one-factor authorization. I have an alarm system, and it's set to disarm with a valid card. I can easily switch to two-factor authorization, so you'd need the card and a PIN code for the alarm system, but I didn't really need that much security and having the alarm system automatically disarm when I come home is handy.
The HID proximity reader is a standard off-the-shelf part that only requires 12 VDC and communicates using the Wiegand two-wire serial protocol. There are a number of ways I could have handled this, but I used a Rabbit RCM-5700 embedded controller.
There's a relay for the lock strike and an input from the magnetic sensor to detect when the door is open. That's done so that once the door is opened, the lock strike can be locked again so the door will stay closed when you close it. There's a 74HC241 octal buffer to protect the Rabbit and provide additional driving capacity for the relay.
One of the reasons I used the Rabbit is that the Wiegand protocol doesn't have a particularly high bit rate, but it does have annoyingly narrow data pulses. The Rabbit has easy access to interrupt lines so I could catch the pulses, as they are far too narrow to reliably detect by polling.
The Rabbit can run completely standalone, handling card authentication and unlocking locally and I have it running off a UPS and it will run for a very long time since it doesn't use much power.
The beauty of the system, however, is that it communicates with another, much larger Apache Tomcat (Java) server that handles additional authentication, notification, interface to the alarm system and a bunch of other tasks. But that's a topic of another post.
Here's a case that has an interface to the alarm system, a Serial-to-Ethernet converter and a Rabbit.