Doorbell combo lock can open your garage door

Sometimes I get enough away from writing about other people’s accomplishments long enough to actually do my own hacks. Most recently I developed a combination lock that opens the garage door. The idea isn’t original, it is based on [Alan Parekh's] button code project, but I did develop my own hardware and software. A four digit code is entered by pressing the button a number of times for the first digit, and waiting for a flash of an LED inside before moving on to the next digit. If the correct code is entered the door opens.

My version centers around an ATtiny13. I originally downloaded [Alan's] code in hopes that I could port the PIC firmware over pretty easily. Unfortunately it was written in BASIC so I just took what I knew about the interface and wrote my own program. I developed on an ATmega168 so that I would have no trouble running out of programming space, and was able to optimize my code down to 964 bytes to fit on the tiny13.

The hardware is quite simple. I purchased a lighted doorbell from Home Depot and swapped out the light bulb for an LED. I choose this because the doorbell mounts in a 5/8″ hole in the trim of the garage door and is easily overlooked. I’m quite happy with the results, and if you want to play around with the idea, you can easily build the circuit on a breadboard and use another LED for the load rather than including a relay. Hit the link at the top of this post for the schematic, code, and build images.

Comments

  1. Winston says:

    Nice & unobtrusive looking, but how long does it actually take you to enter the code to open the door, compared to a traditional key-code system?

    • Mike Szczys says:

      @Winston: right now I have he entry timeout set for 1.5 seconds which might be a bit long. The confirmation blinks are 600ms. So, it would be four timeouts and four blinks: 8.4 seconds plus the time it takes you to press the button for each digit.

      I don’t use it too much so it doesn’t bother me to take 15 seconds to get in the garage.

      @Diego: There’s a switch next to the voltage regulator to cut the power to the board. But we also always lock the door into the house from the garage and when we leave town we unplug the garage door opener.

      @Osgeld: Don’t sound surprised, I know what I’m doing.

    • McGuiver says:

      I agree this is a good design. Very simple. I think I would have used a Morse Code sequence instead of 255 available codes per digit. It seems pressing the button 100 times if your code was that for a full digit is a little time consuming.

      I would just have a string of Morse Code. (ex. SOS) … — …

      The code is pretty clean. But having to press a button about 400 times would piss my button pushing finger off. I also would not give feedback letting you know it was the right code. Have a default press like 10 sec to let the system know your starting. All other inputs before this initialization would be ignored. After the correct code, the door opens. Then it looks & acts almost like a doorbell.

  2. diego says:

    this doesn’t help my fear of leave my home on its own for three weeks…

    d

  3. osgeld says:

    hey mike made something, cool

  4. kichimi says:

    The real question here is, would you be able to operate it whilst drunk?

  5. Garret says:

    GREAT SUCCESS!

  6. Anonymous says:

    I would have made it react to rhythmic tapping. “La Bamba” opens the garage door, “Louie, Louie” turns the light by the door on or off, “Shave and a Haircut” opens the trap door under the welcome mat…

  7. diego says:

    @Mike: I meant: these days I’m reading a lot about house protection systems, and my house is really defenceless so this increments my anxiety about thieves :-)

  8. fartface says:

    This does not work for any new garage door openers. All the new ones, in order to piss off the home owners, use a special serial communication over the damned wires. you no longer have a contact closure you can use to trigger the door. makes us integrators upset that idiot companies like Genie made it hard for us to integrate the garage door opener for customers.

  9. k-ww says:

    diego:

    Just add another function – 3 incorrect attempts, and it calls the police or a neighbor –
    pulse dialing is easy, and the message chip from a recordable greeting card would do the trick.

  10. Zach says:

    There is a retarded kid in my neighborhood, and he rings the doorbell multiple times. If I had this I would always be afraid that he would get it right some time.

  11. Gottabethatguy says:

    @diego, you realize locks and most security systems do nothing to stop people who really want to get in right? Locks only work on honest people and stupid thieves.

    Mike, nice job.

  12. Fallen says:

    Great hack. Quite elegant.

  13. Winston says:

    @Mike: Thanks for info. ~15s is quite long, but I doubt that’s as much of an inconvenience as going to get the key and putting it back afterwards.

    @McGuiver: Rather than proper Morse, I’d be tempted to go for just a certain combination of short and long taps. The number of possible combinations being 2 ^ number of taps. 1000 combinations from 10 taps with no need to wait between tapping them isn’t to be sniffed at, though I guess it wouldn’t be long until HAD featured an arduino and linear actuator “manual button-pressing brute force cracker” project.

    • McGuiver says:

      That’s more what I was thinking. I can always remember Morse code though.

      Being in the security business, I would want to debug this thing very well. I wouldn’t want it crashing or something and having the garage door open. I thought about doing something similar in the past with one of my Axis 241-Q (video encoder) outputs. Tie one of the outputs to a ttl relay, then have the relay control the opener. Then I could VPN in from my iPhone and hit the output. You just never know how a malfunction can trigger something wierd. I love the idea, and he was very motivated. Great little project.

  14. amishx64 says:

    Very nice Mike! I like k-ww’s idea – but maybe just have it take a pic and send it to your phone so you can decide what to do from there.

  15. Waylan says:

    Very interesting. It’s be cool to set it up so that a single push gets passed on and the door bell actually rings. Of course, when a code is being entered (i.e. a second push before the timeout), any signal to the door bell should be intercepted. Wouldn’t want the neighbors hearing the code.

  16. fastjunk says:

    Great hack with lots of details and info.

    Props to you.

  17. davo says:

    i think its quite cool :)

  18. aw says:

    Random idea, what if you made the door bell set off a buzzer when held. That way it will seem like a normal doorbell but a series of quick button presses will unlock.

  19. strider_mt2k says:

    Man if I had to pee really bad this would be difficult. ;)

    In all seriousness, I think it’s quite clever and elegant.

  20. Jeff says:

    Cool. Now make it so it will automatically close my garage at 11:00-midnight for when i forget to.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s