Arduino Keypad Garage Door Opener

My old keypad GDO gave up the ghost a while back so I decided I’d undertake a new Arduino based project.  I ordered a Velleman 12 key keypad from some supplier.  I don’t remember who, but I did a quick search and found a bunch of people selling them for about $5 US so this is still a viable project.
Arduino Keypad Garage Door Opener

About the circuit

The keypad has 13 connections.  One for each key and one common.  One side of each of the keypad switches goes to common and the other to one of the 12 key connections.  I elected to build a resistor network as seen in the enclosed schematic.  Click on the schematic to see a larger version that’s actually readable or visit in a separate window or tab.  Thanks to Britton Kerin for the Arduino schematic symbol.

There are 12 one K resistors in series.  This produces a voltage drop of about 0.42 volts across each resistor.  When a key is pressed the voltage at  one of the resistors is connected to the common connection on the keypad.  Since this then is connected to the analog input, we can measure the relative voltage.  I am driving this from a 12 volt dongle, hence the addition of the 5 volt regulator to provide power to the arduino.  The tag on the Arduino says UNO but I am using a Duemilianove for development.  The keypad has actually 14 connections, number 2 isn’t connected.  I didn’t find a symbol for a 13 pin connector to represent the keypad, so I used a 12 pin and a one pin connector.  Even though the schematic shows them as two parts, there is just one.

R13, the 15K resistor is present to assure that when nothing is pressed the returned ADC value is near 5 volts.  Q1 is shown as a 2N2222 but any NPN silicon general purpose transistor will work.  The diode across the coil of the relay should be a Schottky device, but I’ve gotten away with using normal diodes like a 1N914 or 1N4148. The relay I’m using is a Radio Shack 275-0241 12VDC Relay.  Current draw is about 40 ma.  It’s not shown on the schematic due to space constraints but the normally open contact and the common contact on the relay go to the opener.  My original opener connected the wires briefly to open/close the door so this device will do the same.  SW1 is the program switch.  When the switch is closed and the Arduino is reset the software is placed into program mode.  To return to normal mode open the switch and reset the Arduino.  In the pictures you won’t see the switch.  There are two reasons. In this reroll of the project, I’ve substituted a jumper wire for the switch.  The other reason is that on version 1 of this project I rolled my own processor board and the switch is on it.

About The Author

Scroll to Top