Genius Project Prototype 1, Garage Door Opener

September 8th, 2017

After much work, I’ve finished both the receiving end (the part that goes on the garage) and also created the equivalent of a garage door opener that you would clip on your car. The receiving end is an ESP8266(Wemos d1 mini) and a 5v relay.


The remote/controller is an ESP32 based hardware stack(called the M5Stack) with an ILI3941 display and 3 buttons to control the different modes. I found the M5Stack after reading the esp32 subreddit for a bit. I reached out to “Jimmy Lai” and inquired about how I could get my hands on one of these prototypes, and he let me know they didn’t yet have a payment page set up but he would send me one and I could pay him later. A few days later it came in the mail and after a few tests, he resent another one because the USB UART chip had failed. After some tweaking with the new one I was able to get the tests to work and I began work on the garage door opener.


The first step was figuring out a way to have it connect to WiFi and allow it to display the RSSI of certain networks. This took a bit but I eventually got it working and later on even settled for a solution that allowed multiple networks (The WiFiMulti.h Library) so that I didn’t have to manually set the WiFi name and password every time I moved to a new network. Once I got the connection issues figured out, I moved on to the connection to my currently in-place garage door opener. ¬†This was a bit more difficult because it had to also act as a WiFi client and connect to the garage door controller but also maintain the ability to run a server. ¬†Again, after about an hour of working on that, I settled on a paging system that would allow me to choose multiple functions and would reset each time a new page was selected. Having it reset each time a new page was opened allowed it to change networks without having to fully reset and start up again.

The code is available on GitHub.


Leave a Reply

Your email address will not be published. Required fields are marked *