Electronically actuating a keypad button with arduino

I am modifing a keyless deadbolt (smartcode) to add an rfid reader(ID-20).I want to keep the manual code entry capability of the deadbolt and just add the option of using an rfid card. I have the rfid already configured with the arduino and the program written to scan a card and determine if it is an authorized card or not. I now need it to be able to unlock the deadbolt with the arduino.

I know that I could just wire the motor in the deadbolt to an H-bridge and have the arduino open it that way, but I would rather not. I want to use the arduino to enter the code electronically by tapping into the keypad buttons. My question is: what would be the best way of doing that? Below is a pic of the deadbolts keypad. Please refer to it to get a better idea of what I'm talking about. Thanks!

The colored lines were for my reference; but basically there are 6 buttons that connect to the numbered pads at the top left hand side of the circuit board. The pads are connected to wires, on the opposite side, that run back to the keypad micro controller. Each numbered pad serves as a neg or pos to two different buttons.

So just for clarity. You have an electric deadbolt that uses a keypad, and you want to make the arduino trigger it with RFID?

Whats this about making the arduino press the buttons. SO like the arduino produces the keypresses electronically, or mechanically.

Electrically you could probably bring the 1-7 pins out. Then use transistors to trigger each pair as needed, (so 4 connected to 5 would equal S5 being pressed)

If you were willing to do some hacking though you might find that the keypads uController will take serial commands so it can be opened remotely and such, and if it can, that would save you a lot of trouble because then you just need a few Serial.print lines for your code.

Nikarus: So just for clarity. You have an electric deadbolt that uses a keypad, and you want to make the arduino trigger it with RFID?

Whats this about making the arduino press the buttons. SO like the arduino produces the keypresses electronically, or mechanically.

Electrically you could probably bring the 1-7 pins out. Then use transistors to trigger each pair as needed, (so 4 connected to 5 would equal S5 being pressed)

If you were willing to do some hacking though you might find that the keypads uController will take serial commands so it can be opened remotely and such, and if it can, that would save you a lot of trouble because then you just need a few Serial.print lines for your code.

Thats correct. I want the arduino to produce the keys electronically. It would be ideal to have the arduino directly communicate with the dead bolt microcontroller (what is ucontroller?); but I wouldn't know where to begin to figure out how to do that. There are female headers on the motherboard that I think is for that type of purpose, but again, I wouldn't know where to start trying to figure out how to communicate with it. How would you go about doing that?

The header look like this.

willbparker: Thats correct. I want the arduino to produce the keys electronically. It would be ideal to have the arduino directly communicate with the dead bolt microcontroller (what is ucontroller?); but I wouldn't know where to begin to figure out how to do that. There are female headers on the motherboard that I think is for that type of purpose, but again, I wouldn't know where to start trying to figure out how to communicate with it. How would you go about doing that?

The header look like this.

Sorry, often microcontroller is shortened to uController. The SI symbol for "Micros" is ? (Mu), and its similar to a u, so people do what they do.

I shot off an email to the deadbolt manufacturer asking if they had and documentation on whether or not the controller would take serial commands. We'll see about that when they respond. But if you look up the arduino keypad library and read about that. It should explain to you the basics of how these keypads work (and a thing called multiplexing, where they use fewer pins to do the same amount of work sensing the button presses) Looking at the keypad itself only pins 1-5 have anything to do with button presses (6/7 are for what appear to be LEDs to light the keypad up) Now the way these pads work is the button has a conductive rubber surface on the bottom of each button. When its pressed, that surface hits the overlapping traces and creates a short. Depending on which keys are shorted at any particular time, the controller uses that to tell what button was hit.

So when the controller sees pins 1 and 2 shorted together, you get button 2 being pressed. When pins 4 and 5, you get button 5. Your goal (if it doesn't take serial commands) will be to hook up some transistors, that your arduino will trigger in the correct series to connect each pair of pins for each button. This way the arduino is effectively doing the exact same thing as if you walked up and pressed the buttons yourself, BUT at the same time, you still have the option of using the buttons.

If it wouldn't be too much trouble, could you take pics of any other boards you pulled out of this thing, And if you can a real good shot of the controller board.



This is the locks motherboard. The black cable coming out goes to the keypad. I can’t take the black housing off because it is glued to the circuit board.The rectangle at the top center of the circuit board with the yellow dot on it is the female headers I was talking about.

If I were going to use transistors, how would you suggest doing it. The pos buttons have a constant 1.5 voltage on them and I could only trigger the transistor with 3.3 volts with the arduino correct? Isn’t the base of the transistor supposed to be the lower voltage?

Thanks for emailing the manufacture; I didn’t think of doing that.

Well another way to do it is mechanically. Put a servo on top of each key, and calibrate it so you know how much to push it in. For example, this video shows using a servo to fire a camera that does not have an electronic shutter release. I suggest putting the servos on a hinged board, so that you can move them out of the way to manually press the keys: http://www.youtube.com/watch?v=1mCgqGIGyRo&feature=topics.

Hmm well so far no response from the manufacturer on the email. I get the feeling that the thing will take serial commands of some sort because it appears that in the first pic, theres a chip that has CTS (mayeb clear to send) on it. Looking at one of the guides about the keypad though it says that switch 4 isn't used, its for future features.

As far as teh 1.5v, that means you probably can't use a regular arduino transistor setup to trigger the thing (arduino would use 5v transistors. The arduino pros 3.3V, dunno how you'd get 1.5 without some silliness or mechanical relays.

You could do some servo thing, but that would be a bit bulky and easy to break.

hmmmmmm...

Yeah so tried calling the manufacturer a couple times, but they don't seem to want to talk to me much, I left the phone on speaker while on "hold" for 48mins 39 seconds before I said screw it.

Best thing I can think of pending that would be a mechanical relay setup (quite cheap, and you won't have to worry about the 5v vs 1.5v problem).

I'll Diagram it out a bit for you later, but heres the rundown.

Basically make a little box with 6 relays in it. Make an adapter that takes the wire that connects to the keypad and brings it into the relay box. Hook up the 6 relays to emulate pressing each button on the keypad, and have the arduino trigger them as needed. Sadly this will be a little bulky, requiring a second box and all. Also you'll have a higher power demand while working due to the relays (though they're only going to be on for a second or so so it shouldn't be bad), also you'll want flyback diodes for each relay (don't want to break your arduino pins).

Given it is for low voltage direct current, I would imagine using an electrical switch like an opto-isolator would be smaller and better. If you use normal relays, they are bigger, and you can here the click as they change from open to closed (unless actually hearing the click of the relay as it switches on/off is important in the design).

I would use an opto isolator with a FET output on each of those push button pads.