Friday, 12 July 2019

Yet Another IoT Garage Door Opener

Job Done, Finally!

(This is a post in my series about my Garage Door Opener.  Yes I wrote a series. About a Garage Door Opener.  Check it out:

Okay, so I've written a little about this before.  Back in 2013 I added a light to my garage door, and then started to work out how to control it with my phone.

Let me (finally) tell you how I did it!

Installed and Ready to Go!

Design the First:

After grabbing some EDP-01 modules from eBay, I thought the way forward would be to simply use the two free GPIO's to drive relays salved across my roller door control buttons.

But, this approach rapidly ran into a few issues:

  1. Of the 8 pins available, 2 are power, one is Reset, one is CHPD which is connected to VCC
  2. Tx and Rx are required for programming - so it's awkward to build those into a design.
  3. That leaves GPIO_0 and GPIO2 where:
    1. GPIO_) has to be held low when resettting the module to put it into programming mode and
    2. GPIO_2 seems to randomly toggle when the module powers up
So, all that combined means that if I was to control relays with the ESP-01 module directly, each time it rebooted it would fire the relays and open the garage door.  For example, a black out in my neighborhood could open the door for all and sundry.  Not an option.

My solution?  Pair it with a microcontroller and send serial commands from the ESP-01 to the micro, and then have the micro control the relays.  Simple!

Like this:

I designed it to fit the following case, as it would allow me to easily mount the unit on some DIN rail, for a neat installation. 

And the prototype was built, and pretty much worked.

But there were a few issues, as always.

Programming it was a pain in the butt.  I had to pull the ESP module to upload code and there was no way to trigger it locally (no button to push!).

It *did* give me a platform to cut my teeth on HTML / CSS and Javascript, but I was soon onto Version 2.

(Files for this can be found here.

Design the Second

My first design was put together without too much thought, other than to put it somewhere that can drive my current garage door opener / light which while very useful was, to be frank, ugly.

So the requirements for the new opener became:

  1. Buttons, so it's easy to operate 
  2. Have a button to control a light, like the old opener
  3. Use a better, 12V DC light rather than wedging in a mains voltage bulb

So I came up with this!

Much Betterer!

To do this I moved up to the next case size (from Aliexpress):

And mounted it inside this enclosure.

Here is where I trial fitted the second prototype.  The blue LEDS on the bottom were controlled by the relays that were to slave across the roller door buttons, with the yellow one simulating the to-be-installed light.

The screw terminals on the top are for the power connection *and* remote inputs for each door (I went with three, because even thought I only have two doors, some friends have three) and the light.  This is because my home alarm has remote controls that I use to open / close the roller doors.  My post on the light installation explains this in detail. 

Beauty shot with blinkenlights.

Better Fitment shot.

Final Installation with eBay '12W' LED Lamp

Version 2 - The Misses

Version 2 came together pretty quickly, and to avoid messy internal wiring, I decided to mount the Buttons and Indicator LEDS on a separate board in the case.  

Like this mess inside my old controller....

The Buttons themselves are panel mount, so it's a case of install buttons in the lid of the case, and solder the carrier board to them.

Like this:

Here I'm showing the LED riser board I also used on the carrier board.  My first attempt didn't use this riser, but instead I tried Light Pipes.  However these were tricky to align and I wasn't that successful at blocking light from one LED bleeding into another light pipe.  And in 'wasn't successful' I mean 'I never tried'.

Not to get this image above I had to make the LED riser board as a step model.  However I couldn't work out how to do this in Circuit Maker,  so I laid it out again in Altium and exported it to a step model there. That said, I'll link to all my Circuit Maker files at the end. 

To ensure alignment, I also designed a drilling template in Circuit Maker:

Of course I can't find it now... I milled this at work and it snapped nicely into the top of the case.

I drilled 1.5mm location holes with the jig, and then opened up all holes to 3mm (to suit the LEDs) and then finished the LED holes with a step drill.

Then, with the case hole drilled, I also had a nice jig for locating the LEDs in the riser board - like this!

My soldering here was a touch unorthodox - I soldered the joints from the top and then sodlered the joints on the other side afterwards. 

Once the riser was ready, I assembled that on the carrier board:

Then I fitted the CR2032 battery holder and the header for the ribbon cable to connect it to the motherboard. I then loaded the carrier board into the lid, soldering the button pins in place to secure it. 

This picture above shows the first board revision where the LEDs were to be fitted to the carrier board.  Also you'll note that the IDC header is only 12 pins where the following version used 14.  Why?  Initially I'd tried multiplexing the LEDs but the ESP-12 was too busy processing webpages etc and the multiplexed LEDs would noticeably flicker.  Adding extra lines to drive the LEDs directly solved this issue.  

Here you can see how mounting the LEDs directly on the carrier board (using the full length of the LED legs) had the LEDs falling short of the front of the case.  The riser board fixed this issue. 

Why the battery?  I design in a Real Time Clock into my board, with the thought that I could later add higher level features such as 'Door Open Too Long' or inhibit the door working when no one should be at home (e.g. between 10AM and 2PM) but I soon gave up on this idea.  Why possible, I since discovered MQTT and Node Red, so will look at implementing these features using those tools later. 

As discussed, a Ribbon cable connects the carrier board to the main board.  This is the first iteration and there's a few changes since this version:
  1. Like a newb, I'd surrounded the ESP-12 module with a ground plane.  So I peeled it back except for the serial lines that lead to the programmer.
  2. You'll see there's three tact switches on the board:
    1. Two are used to put the board into programming mode.  Trust me, this is a pain in the butt that gets old fast.
    2. The idea for the third was that if held down when power cycled, it was to boot as an access point so you could configure the WiFi settings.  I also abandoned this idea!

My second iteration moved the ESP-12 module closer to the front of the board, and had the ground pour aoid it correctly, but still used two tact switches to set the programming mode.  I'd dropped the 'force access point mode' button as I'd written the software to start as an access point if it cannot connect to the configured WiFi making this mode redundant.  Also, it's this version where I'd realised the issues with multiplexing my LEDs.  

So, I took a third spin of my board:

Here you'll notice that there are no longer any tact switches on the board.  I've broken out the GPIO_0 and Reset lines out on the 5 pin header (along with Ground, Tx and Rx data) and now use an external programmer.  This emulates the Ai-Thinker reference design:

In this board:

And I'll spill all the details about that in another post. 

And here's the latest version board with latest version carrier board.  

For this iteration I used Yellow and Blue buttons, but fell back to Red and Green for the final installation.  I may swap back to the Yellow / Blue later.

Aware that this post is getting a little long, I'll go into a more detailed explanation of the schematics / software in another post.  But for now I'll focus on the actual install.

Putting it on the Wall

First, the old light and switch box had to come out:

And was unceremoniously dumped on the ground. 

I used a small MDF board to mount the last controller, and thought I'd do the same again, but also incorporate the eBay LED lamp.

A quick trial fit of the layout was sorted.

Also - note the Raspberry Pi case - I will install this as my Node Red / MQTT server 'soon'.  

Installed, wired up.

And then I was ready to test. 


Ok, this is where I admit I'm a dumbarse. When I laid out my PCB I thought I'd make it dual use.  A change of software, and I could re purpose this as a garden watering controller.  To do that, I'd included solder blob links to either configure the relays to be 'dry contacts' or switch 12V.

In this mode, I did all my testing with LEDs attached.  Press the button, on the opener or on the webpage and the LEDs would blink.

Great.  Except I forgot all about this.  I pulled the LEDs, and wired the realys to my roller doors.

Here, the plot thickens a but further.  Most roller doors have in input for an external button.  Mine didn't.  Note, post tense.....

Anyway, to get my old light controller working, I cracked open my roller door motors, and soldered some flying wires across the built in 'open'  button.  Like this.

Worked fine, literally, for years.  

Until I tested my new opener.  As this is an internal button, there's pretty much a direct run at the microcontroller from this contact.  A PIC micro actually.  With no over voltage protection on the pin.

So, one button press later, 12V was switched straight into the micro, and the input pin was forever buggered.  So, out with the now ruined roller door motors....

And in with a new pair from Bunnings.  

And yes, these new ones have lights.  Darn it.

Anyway, I continued with the install, using the 'Remote Input' on the new motors and, soon, Job Done!

Finally, I can open my garage doors, using my phone.

Next time the kids have an idea, I might think about it a while before committing to it!


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

  2. Thank You so much for the Information. Its really very useful. Roller Shutter Repair in London is one of the best Company for repair & maintenance.

  3. I really like reading through a post that can make people think. Also, many thanks for permitting me to comment!Hacking BlogsHack Instagram

  4. I am looking for and I love to post a comment that "The content of your post is awesome" Great work! magento eshop

  5. If you are seeking for reasonable cost Roller Shutter Repair London then must contact us and get best shopfitting services.

  6. Great post!!
    Thanks for Sharing a useful content about Internet of things (IoT), Definitely IOT will be the Game Changer of all technology
    IoT Training courses | IoT training

  7. Timely upgrading iot solutions was the main task due to which I had found the IoT consulting services offered by this article to be the best provider.

  8. Garage shutters contribute a lot to the security fo your vehicles parked at home. If you are looking to buy garage roller shutters in London, just visit our website for Garage Shutters London .

  9. Advanced Shopfront & Shutters LTD is the topmost and leading shutter repair company in London and has served a lot of high profile clients. Must consult with our professional engineers so that you can get the desired design of shutters, shopfronts, and windows. Check our website and get the further information on shopfronts services.

  10. If you are interested in getting security shutters installed at you garages in London, contact ADV Contractors for the requirements. Also visit the website to know more about the Garage Shutters .

  11. This comment has been removed by the author.

  12. That looks like it is alot of hard work to do I was looking for garage roll up doors and found this website and their product was really good I've been using it for now nearly 2 years and no problem at all! Roll A Door by Automatic Doors and Gates!

  13. Good article and right to the point. Finally, I’ve found something that helped me. Thank you! If you are looking for garage openers repair services in Alberta because your door is not opening or closing correctly then we have got you covered.

  14. Thanks for sharing the post.
    Overhead Door Houston TXoffer premium quality parts which will wind up setting aside you cash, in light of the fact that by and large you will never need to replace them.

  15. Thanks for sharing the post. Don't miss Garage Door Spring TX

  16. Your garage door is one of the biggest moving parts in your home or business. What's more, you need quality doors and gear, legitimate establishment, and expert assistance so as to guarantee your long haul security and comfort. At Garage Door Hinges, we're devoted to the absolute fulfillment of our clients. That is the reason we offer a far reaching scope of garage door parts and related items and administrations. We are cheerful of recommendations on the correct parts and financially savvy techniques to fix or supplant your door. Any inquiries you may have we will readily reply to assist you with settling on a choice.

  17.   Amazingly quick response time. If only all emergency services could be there as fast as these guys! If you’re in a hurry or something, definitely call Cheap Garage Doors first

  18. Nothing really spoke to me before I worked with Genie Garage Door Spring Replacement technicians. You guys were so thorough with the repairs and replacements that I need, and I really appreciate the assistance you give people like me. Thank you!

  19. Nice post, i love this, Shop Fronts in London is the perfect shop to buy shutter at affordable rate. They have lot of experience and having a great staff to sort out all problem regarding shutter. thanks for euro shopfront

  20. very in spiral post this is the greatest post for me if you are looking Commercial Steel Doors London, euroshopfront is the perfect company for you

  21. This is very nice blog. Thanks for sharing with us this informative blog. For a complete diagnostic approach to discover any malfunctions with your door, choose our garage door technicians in Calgary to identify fix and repair anything that needs to be.

  22. great information! thanks for shearing this valuable post
    We at OZ Garage Door and Gates provide best garage door and gates service in Los Angeles