Monday, January 21, 2013

Arduino Garage Door Opener - No Rolling Codes

Most people trying to do a garage door opener with an Arduino often try and use the wireless modules. It means they have to figure out rolling codes, and other things, to make it happen.

However, most garage door installations have a hard-wired, internal button to work the system.  If you have one of these, it's easy to connect an Arduino to the garage door, without anything high tech.  All you will need is a 5v relay, solder, wire, and the usual Arduino with an available output pin.

First, remove the button from the wall.

There will be two wires connected to the back of it, a red one, and a white one.  Disconnect these, remembering where they are supposed to go (you will be putting this back on the wall after you are done).

 Remove the circuit board from the device.  This is so you can identify the switch being used to open and close the garage door.  (You can also connect it to the locking/vacation button, or even the light button).  Once you have it removed, locate the switch, and then locate the soldering joints where the switch connects on the back side of the opener.  In mine, It was a SPDT (four connectors), but two connected to the + and two connected to the feed.  Solder a new wire into these solder joints.

Always make sure you test the unit for functionality (do it before you connect everything back up to ensure the new wires work).

Once you have that tested, reconnect the wires and make sure the button(s) you used functioned as normal.  If they do, simply connect the two new wires you soldered in and see if it will trigger the door.  It should, if you've done it properly.

This gives you a simple interface to the opener.  To complete the project, simply use a 5v relay connected to a digital I/O pin (set to output mode).  Pull it low automatically, and when you need to open/close the garage door, drive it high for 500ms, then set it low again.

I'd strongly suggest using some magnetic reed switches to determine if the garage door is open, closed, or in a state in between.  I did this already in my Homebrew Security Project, and described how it worked in the code design and assembly section.  It alerts me if the door opens or closes.  It means that, say I'm at work, and a son opens the garage door and forgets it, I can (in theory) trigger the door to close.  On the other hand, a buddy calls me up and needs to borrow a tool while I'm in another state, I can pull up the camera, verify who he is, and trigger the garage door to open for him.

Eventually, another task I'd like to complete is to use automatic door locks to lock the house up as needed.  All part of the security project.
After trying to wire this into the arduino, I had the wonderful experience of breaking EVERYTHING because the wiring failed (always bending cat5e will cause it to eventually break), and decided to actually have a PCB created that would give me better plugs using computer header connectors.  Turns out, it wasn't that difficult using Eagle and BatchPCB to have another company manufacture the board, but I still have yet to test the resulting board.  We'll see when it gets here!


  1. This comment has been removed by a blog administrator.

  2. This comment has been removed by a blog administrator.