The GarageUino is a Arduino powered garage port controller that features a 20 by 4 character LCD display, four LEDs, a button, position sensors and a USB port for programming. And of course an Ethernet port for Internet access.
This is how I made it.
I started with the external connectors for the position sensors, the Ethernet connector and the USB port. I used a combination of a drill and a small saw blade for all the cutting, and a glue-gun to make things stick together. Next I made all the cut-outs in the front cover, for the LCD, LEDs and the button.
I soldered the resistors directly to the LED pins to save space and to ease the wiring. I also soldered together the grounds so I only have to ground one wire as opposed to four. A little heat shrink tube later and it all looks pretty good. You can barely see the resistors.
How do I activate the actual garage door opener?
There isn’t an external trigger available on my garage door opener, so I had to modify my original remote control to be able to control it. I took apart the remote and soldered two wires parallel to the toggle button on the remote. After making a hole for the wires, I screwed it back together. Now I have an external wireless trigger.
There isn’t much spare room inside the GarageUino, and it took some time to arrange everything so that nothing came in the way of each other. An Arduino with a screw shield, an Ethernet shield and a relay shield gets pretty high when they’re stacked on top of each other. The front cover actually touches the yellow relays when the casing is screwed together.
For power, I use a 12V transformer intended for spotlights. It’s perfect for supplying both the Arduino and my 12V inductive position sensors with enough power.
The GarageUino has four LEDs. A green standby/ready LED, a red error LED and two yellow LEDs, one to indicate that the garage door is open, and one to indicate that it’s closed.
The external USB connector is a female USB-A connector from an extender cable I had laying around. I chopped of a USB-B male connector and soldered the two ends together to make the custom USB cable used inside the casing.
It’s always a good idea to test all the hardware piece by piece before wiring it all together.
After hooking up the Arduino with USB and Ethernet. I transferred a simple test program to the Arduino. The test program on the Arduino requested an IP address from my router and printed it to the serial port. I pinged the Arduino to confirm that the Ethernet was working.
Assigning the Pins
I use almost all the IO pins on the Arduino. The Ethernet shield uses pins 4, 10, 11, 12 and 13. Pin 4 is the CS signal for the SD card which I don’t use, but I left the pin alone anyway. The LCD has an I2C backpack, I2C uses analog pins 4 and 5.
For my LEDs I wanted the ability to dim them, so I wanted to use PWM capable pins for all of them. Two out of six of the Arduinos PWM capable pins are already used by the Ethernet card, but that leaves me with four, which is exactly what I needed. I use pins 3, 5, 6 and 9 for the LEDs.
The relay shield uses pins 4 through 7 to activate the relays, but I only need one of them. I use pin 7 and I’ve cut the other three header pins going to the relay shield.
For the push button I use analog pin 1. All the analog pins on the Arduino can be used for digital IO as well as analog signals.
The signals from my inductive position sensors are connected to pins 2 and 8.
I used a screw shield for the Arduino which made the wiring pretty easy. I also used heat shrink tubing and cable ties to route the wires and keep them together.
The GarageUino is installed in my garage and is currently in daily use. Here are some pictures from the installation. The second and third picture below show the positioning sensors.
The “GarageUino Remote” for Android
I also wanted to be able to remotely control my garage door from my Android phone, so I made the GarageUino Remote app.
The app looks exactly like the actual GarageUino. There is a “LCD” screen in the app that shows exactly the same information as the physical LCD, and the same goes for the four LEDs and the button. I’ve even used a plastic case texture that mimics the physical casing.
The source code for the Arduino as well as the source code for the Android app is open source and are available on my GitHub account.