Along the way, I've come across some design errors and other mistakes I've made. Some of them are more like lessons learned than actual mistakes. This is a consolidated list. Some have been or will be mentioned in more detailed project log entries. These would be inconsequential if this were an iterative design. I'd just fix them up and keep going. However, I expect that I will build exactly one of these garage door lighting controllers, so I'm working around them.
- [fixed in V2] In the PCB layout, I didn't allow enough space between the holes for the display screen mounts and the nearby screw terminal mounts. I worked around that by flattening the pins for the display screen mounts, and I turned one set of screw terminals around by 180 degrees. (Detailed in build instructions step 4. However, after switching to Phoenix connectors, turning by 180 degrees was no longer necessary.)
- [fixed in V2] Some GPIOs of an ESP32 do not have internal pull-up/pull-down resistors. I used two of those GPIOs where I needed pull-downs. I worked around that by adding the pull-downs across some existing pins. (Described in project log Pull up! Pull up! Pull up!)
- When testing those pull-down resistors after I soldered them, I was expecting to see about 10k ohms. Instead, it's pretty close to (but not quite) zero. There is no short between those holes in an unpopulated PCB. I'm still working on finding the cause of that problem. [I figured this out. Those resistors were just bad. They were from a batch I had on hand with a "10k" label, but they weren't anything near that. I swapped them for some 15k resistors that I measured before placing them.]
- OK, I'm an idiot on this one. Even though I called the project log item "Pull up! Pull up! Pull up!", I somehow ended up believing I needed pull-down resistors for the switches on the rotary encoders. I even had pull-ups working on the breadboard after I figured out the ESP32 GPIO situation. On the PCB, my switches seemed to be always either stuck "on" or "off", depending on my software configuration. When the light dawned on me, I rewired the resistors to pull up, and things worked as expected.
- [fixed in V2] I probably should have added I2C to the design in the first place, even if I didn't have a specific use for it, but I wasn't sure if I could use the RX/TX pins for I2C. When I tack-soldered wires for an I2C bus (described in project log Adding i2c), I arbitrarily planned to use GPIO22 for SCL. When the time came, I discovered that my "no connect" pin was somehow tied to ground. It's not grounded on an unpopulated board. Maybe I'll find it's related to the problem with the pull-down resistors (I hope, I hope [edit: nope, nope]). I changed my plan and instead used GPIO3 (right next to it) for SCL instead.
- It's a good thing that I am using a framework (esphome.io) that allows for OTA updates. It's easy to pop the display off the mounting headers to get at the Sparkfun ESP32 Thing, but there is not enough room for me to insert a cable into the micro-USB port. It's at least 1/8 inch too cramped. (I found this blunder pretty funny when I first noticed it.) If I were not using OTA, I guess I would do a more thorough search of my vast collection of micro-USB cables to see if I had one that fit. Or, maybe I would buy some kind of right-angle micro-USB thingy. Or, worst case, wire up some kind of custom USB monstrosity myself. [Update: I ordered a few right-angle micro-USB adapters. I don't have them yet since they are coming from somewhere in Asia, but it looks like they should easily fit. They are fairly inexpensive, so I'll probably plug it in even though I don't need it right now. If I ever do need it, I want to make sure I can find it.]
- [silkscreen text fixed in V2] I'm pretty happy with the manufactured PCB and most of my own work. One thing that I would do differently would be to increase the size of some of the text on the silkscreen layers. I would also increase the size of the lands around some of the holes. Both of these looked plenty big when looking at the layout on a screen, but I faked myself out due to my own inexperience in realizing how small they would be on the actual PCB. One might say I didn't have the right perspective (nyuk, nyuk!)
- [fixed in V2] I probably would use something other than the screw terminals for connecting the off-board wiring. They're OK, though the "play" in the plastic housings gives a less tidy look than I wanted. And, all that wiring does add a certain bulk overall. Perhaps in future projects, I'll use JST connectors or something similar. (See Revising my connectors. I eventually switched to a different kind of connector.)
- [fixed in V2] I got the wiring for the MOSFETs completely wrong (see Circuit to nowhere). It's a pretty serious mistake with potential for making some smoke. There's no excuse for it. It's just a blunder in transferring from breadboard thinking to schematic thinking.
- [fixed in V2] On the PCB layout, I was using an off-board connector with a 5.00 mm pitch instead of 5.08 mm. That might account for the snugness of fitting the euroblock connectors that I used.
- [fixed by pretending it wasn't a mistake] I used a wrong PCB footprint for the I2C bus connector. See Grove connectors. I was able to resolve that by pretending that I had intended to use Grove connectors all along.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.