Looking at those ESP-WROOM-32 modules - by the time we’ve weeded out the 6
pins that are brought to the edge but already committed to the on-board flash,
the 5 strapping pins required boot selection, the 2 pins needed for serial
I/O, the power and ground and Enable pins, the number of available gpio pins
have dropped quit a bit.
that leaves 20 pins free (and it’s very possible that the boot selection pins
can be used as outputs after boot.
The Adafruit HUZZAH32 is built using the ESP-WROOM-32 linked above, adding
support circuitry (USB, battery, boot and reset) and bringing all available
gpio out. I count 17 gpio available.
The Sparkfun Thing ESP32 is much the same thing with simialr support
circuitry, and comes up with a similar number of gpio pins available. It
doesn’t use the ESP-WROOM-32, it has similar circuitry built from discrete
components.
Both of these are pin compatible with systems that existed prior to the ESP32
being available, so the number of pins available is based on the huzzah/thing
standards, not the ESP module
The three motor/encoders currently require 5 pins per motor, though that could
be reduced to 4 per motor using different driver chips. Offloading the encoder
functions to a separate dedicated processor could reduce that a couple pins
more. Using I2C or SPI expanders could make up for the limited gpios but add
complexity.
I would choose a different chip rather than add an external processor (although
I would support having a hook to use an external processor to expand aux lines)
Too, certifications are a concern if we’re talking about something to be sold,
adding to the cost and complexity. Does anyone know whether soldering a
certified module onto a carrier brings the blessings to the whole thing?
That’s the purpose of having the module certified, the rest of the device needs
it’s own certification, but that’s for the circuitry not on the carrier.
Logically it’s exactly the same as if it’s socketed.