roboworks/atlas-driver
100×100 mm ESP32 robot controller: four motor channels, encoder inputs, an OLED menu and screw terminals for everything.
A deliberately boring, deliberately repairable robot controller. Every connection is a screw terminal, every part is through-hole or SOIC, and the only surface-mount work is a driver you can replace with a socket if you are nervous.
Design goals
- A classroom can build it. No reflow, no 0402, no BGA.
- A wire can be moved without a soldering iron. Screw terminals, not JSTs.
- The failure modes are visible. The OLED shows rail voltages, encoder counts, and which half-bridge tripped.
Channels
- 4× DC motor half-bridges (L293DD), 600 mA continuous each
- 2× quadrature encoder inputs with pull-ups
- 1× iBUS / SBUS radio input on
J14 - I²C header for the display and anything else
Power
7–12 V into J9. The LM7805 is doing the honest, wasteful thing; at 12 V and
400 mA of logic load it dissipates about 2.8 W and gets hot enough to matter.
The buck variant fork replaces it with an MP1584 module and is the better
choice if you are running from 3S.
Assembly order
Lowest components first, as always:
- Resistors and the SOIC driver
- Ceramics, then the electrolytics
- Tactile switches and the slide switch
- Screw terminals — all ten, get them flush
- Headers for the ESP32 devkit and the OLED
- LM7805 last, bent over with an M3 screw into the board
Known errata
Rev 3.0.1 fixes the swapped ENC2_ChA/ChB silkscreen. The DRC still
reports two unrouted connections on /ENC2_ChB; they are intentional —
that net is jumpered on the top side so the encoder polarity can be flipped
without recutting a trace.