As a little bit of backstory:
- At work we used to have an alarm system, which had a really, really convenient feature: after disarming the alarm, you could enter your disarm code again, and the door would be opened up for you. (Those who want some details, its available lower down).
- After having the alarm running and working just fine for several months (well, longer than that, since it wasn't installed by us, so the previous tenants must have had it working, but I don't know how long that was), it suddenly died, rather suddenly.
- Once it was died, we got an estimate for replacement, and it was sent up the management. That got shot down. Apparently that was going to require an entire gutting of the system and replacing everything. No way the boss would pay for that...
- After a couple weeks of having to make sure you always your keys, it was kind of annoying. I don't forget them often, but it is a hassle to drag them out all the time just to open the door, especially if you're carrying something.
After a couple of weeks of that, it wasn't going to be a permanent solution. We wanted that door code access available to us. So, I broke out my Arduino, and put together a solution for us. You probably figured that from the title, so lets get into the technical details:
- Luckily, they gutted and took the actual alarm system, but they left the door opening hardware. After taking a look at it, and finding a spec sheet for the hardware. It turns out, all we have to do to pop open the door is to pass 12v across its two terminals.
- That's great. If you're not familiar with the ATX specification there a nice, convenient 12v rail there we can use for it. And, as an IT worker, we've got stacks of old ATX power supplies in a closet the throw at that.
- So... For the technical details, the Arduino is connected to a PS/2 Keyboard, which is hung outside of the door, through the existing hole for the alarm system. The Arduino watches for an asterisk, and once and asterisk is sent to it, it goes into "authentication" mode. While in authentication mode, the arduino watches for one of the list of valid codes, and if it is set, you are considered authorized. I'm sure its a total, disgusting hack. Once it cleans up, I'll post it here. Once the Arduino knows an autherized code is in, once an Enter key is pressed, the Arduino grounds the power_on pin on the Power Supply, which powers on Power Supply.
- Once that power supply turns on, it charges the solenoid in the latch hardware, and it pops the door open. Yay, we have a working system!
- The first major hardware modification is to remove the Arduino from the system. I don't want to sacrifice my Arduino for this, so I'll be replacing it with a "hackduino", essentially the Arduino hardware, without all the PC communication hardware. More on that later
- After that, there are a few more hardware changes. I would like to add an SD card and a logging feature, and add in support for the existing door open/close sensor. I'd like to add in a camera after that to take a picture of who walk in when the door opens. There's also some ideas we've been throwing around about alternative authentication methods, like a fingerprint scanner, or more... obscure methods.
- As far as software changes, right now it supports an number of hard-codes access codes. I'd like to add in support for a temporary, limited use authentication code, and support to modify the LEDs in the keyboard to show state. Then there's some general cleanup, and other stuff
Now, I know what you really want. There's a nice, convenient album of them
And, as for future work on this, I've got several plans: