ESP32 Quad Optically Isolated n-mosFET Switch Board

Table of Contents


So I love chatting up circuit designs with folks. And this board is actually one of those designs that was chatted about and the goal was to see how much I could fit onto a 50x50mm board.

Design Considerations

Well, went through several revisions. And after I got these boards in, I think I should have taken the time for another revision or two, as there are definitely some design issues.

  • ESP32-WROOM-32D module soldered onto board at JLCPCB
  • 4 x Optical Isolators
  • 4 x n-channel mosFET(s)
  • SOT-23-3 3.3v VREG (this turns out to be a poor choice)
  • 5.08mm pitch screw terminals
  • 1wire port
  • DAC0 port
  • I2C port
  • Serial UART port
  • Boot/EN port
  • 7 GPIO breakout header


So I wanted to use up as much of the available space and break out as much of the functionality of the ESP32 as I could.

So to that effect, I was partially successful:

  • The ESP32-WROOM-32D works and is programmable via the programming related headers… with some caveats:
    • I used pull-ups with transistor triggering pull-downs of the EN and BOOT pins. The end result is that it requires a HIGH signal to drive them LOW. I had to wire an external pair of buttons wired to 3V3. The third pin was GND, since I had assumed I would need to pull them low… ARG.
    • The serial port and the programming mode header were separated… making cabling a bit of a pain.
  • The screw terminals were fine, but the specific parts I had on hand were poor quality. This resulted in a short which burned out the whole board. Thankfully, I had ordered a set of 5 to be produced. The second board, I have wires soldered directly on.
  • The I2C port on the ESP32 differs from the ESP8266. Apparently, the external flash also makes use of the I2C related pins. So if you attach an I2C device to the port I added… it prevents reliable programming or booting. Frick!
  • Have not tried the 1wire port yet.
  • Have not tried the DAC0 port yet.
  • All four of the optical isolator + mosfet combos work. However, either due to triggering signal voltage or perhaps capacitance/delay… when I attempt PWM out via those pins to say… dim an LED strip, I find I have a VERY narrow set of values I can switch between and the net result is can only reliably turn them on and off no faster than the Slow PWM mode in ESPhome. 🙁
  • I used one of the GPIO pins on the header to drive the data pin on a WS2812 led string and it worked great.



About Post Author

Author: Wing Wong
Husband, Father, and all around technology tinkerer. :)