Arduino ethernet keypad door lock prototype

Before our current model for Soapbox Music, we wanted to have members book studio hours through our Drupal website and then remotely lock and unlock the door for people to get in. The idea was to use an Arduino with Ethernet shield to connect to our website for authorization, and then remotely unlock the studio front door through a latch relay mechanism (mortise lock).

Desired workflow

1) User obtains secret PIN online at our website
2) User goes to the physical location where the keypad is and enters in the PIN
3) The keypad is hooked up to an Arduino which takes the input and sends it to a website via a serial-to-ethernet module. The website responds with Access or Deny.
4) If ACCESS, trigger an electronic strike which opens the door.
5) If DENY display "Access denied" message on an LCD.

Example

Pete wants to book studio time, so he goes online and books from 4pm-6pm. The website generates a unique 4 pin code which will only work for this time slot. Pete shows up at 4pm and enters his 4 pin access code into the keypad lock for the studio. The keypad is hooked up to an Arduino which takes the 4 pin code and uses the Ethernet shield to send the code to our website which checks a Drupal database to see if the access code is valid for the time slot. If it is valid, the website would send back an 'Access granted' message through the Ethernet Shield, and the Arduino would then send a signal to the door relay, buzzing open a mortise lock door.

Proof-of-Concept

The prototype successfully demonstrated that this system could remotely unlock and lock a door. We also built an e-commerce system for purchasing studio time by the hour on our website. But we never actually implemented the whole system because...

Issues

Ultimately we abandoned this idea for a few reasons:

1) We wanted our studio to be more about building community - musicians getting to know each other and helping each other out by sharing resources. This kind of automated system would minimize human interaction which would run counter to our goals. We ended up switching from hourly bookings to monthly memberships, which better aligns with our vision.

2) The Ethernet shield used was not capable of dealing with SSL encryption. We'd be hooking up the door of our studio to the internet... so this was kind of a deal breaker as hackers could easily gain access. However I believe newer shields support secure protocols.

Code

I've attached the Arduino code I wrote for this project in case someone finds it useful. I wrote this in 2009, so I have no idea if it works with current shields or libraries. It is just a proof of concept, for educational purposes only, use at your own risk!

Minimum hardware required: Arduino, 9 digit keypad, LCD display, and Ethernet shield. If you are seriously trying to build something like this, you should definitely research some of the newer network shields available, something that supports SSL encryption.

Arduino UNO