I have just completed laying out a controller PCB for my 3d printer using the ESP32. I Am working on a second board to use as a display controller with an SD card to interface with the main board using my wireless network. Firmware could be a little tricky due to some of the limitations or should i say features that had to be sacrificed as i run out of IO pins.
Here's what i have implemented.
The board 100x100mm double sided 1oz copper so 5 for $4.99 boards from Elecrow can be used
X ,Y and Z motor drivers , a second Z which uses the same enable , step and direction pins as my D-bot has two Z motors.
A single Extruder motor driver and hot end Mosfet driver, my set only has one E3D Titan Aero Extruder so this was fine for me. The hotend heater pwm is direct from the ESP32 as using an IO expander on something that has the potential to catch fire i didn't think was a good idea this also the case with motor drivers as i wanted them to be under direct control as well so i don't end up crunching my hot end into the bed due to a delay in an I2C command.
Heated bed Mosfet , i have designed it for about 10 amps max may be a little higher with good cooling fan. i'll do some testing when the boards arrive to get a better idea of how much current we can draw with force air cooling. In my case i won't be drawing any where near that as i use a 60 amp solid state relay on my silicon heated bed as it draws about 30A at full load.
There are 4 fan drivers these are driven by an i2c pwm as not as critical as the heaters if a fan doesn't run the temp sensors will detect over temp and shut it all down i'm going to use the esp32 internal temp sensor to detect if the box is warmer that it should be. 1 fan is used for the hot end another for part cooling the other 2 for the electronics i usually have blowing and one sucking to ensure constant flow of cool air
The microstep of the stepper motors ms1,ms2,ms3 are controlled from an I2C io expander.
there are 2 temperature sensor inputs one for the hotend an on for the heated bed.
and finally 4 limit switch inputs the fourth can also be used for a z sensor the limit switches are not min or max i wanted to define these via a web interface so you can set whether they mins or max and if they are high or low trigger.
the onboard power supply generates 12 volts , 5v and 3v3 and vin can be 32 v max. so thats a brief over view of the board i'm trying to decide what to do about firmware i suspect it will be esp32 idf port of bits of repetier or marlin suggestions welcome but i think it will be esp32 specific if we want to harness its full potential.
Completed the display board which uses a cheap 3.5inch raspberry pi display from banggood not sure if i'm going to use the encoder but added it just in case
as usual the gerbers and schematics are in the downloads section of the site.