All Projects → felixstorm → Creality_Ender_3_ESP32_Board

felixstorm / Creality_Ender_3_ESP32_Board

Licence: other
No description, website, or topics provided.

Programming Languages

F*
10 projects
nesC
38 projects

ESP32 RepRap Controller Board for Creality Ender 3

Use at your own risk! This is just a personal project and work in progress, and I do not have any professional experience in this field. And although it does work nicely for me, the power supply and heaters have enough power to set your house on fire if not used correctly. Therefore be sure to think about the stuff you do yourself and respect all the necessary safety precautions!

This is a bare minimum RepRap mainboard that I created for my own Creality Ender 3, heavily based on the work of Simon Jouet.
He did a great job developing the HAL for the ESP32 for Marlin including the use of I2S and shift registers to drive the stepper drivers. I2S needs very little hardware overhead, but increases the somewhat limited number of GPIOs on the ESP32 significantly, allowing to also connect the stock Ender 3 display as well as a BLTouch and also parts cooling, control board and hotend fans independently. Additionally it provides perfect stepper timing (based on the ESP32's internal I2S clock).
He also developed his own ESP32 controller which this board is heavily based on.

This is the third iteration of the board, and although it has only been in use for a few hours yet, it does seem to work nicely in every respect. Will post updates here...

Technical Notes

  • The board is the bare minimum to help my Ender 3 to a 32 bit brain and WiFi. I use breakout boards wherever it makes sense to reduce complexity as much as possible. It is not primarly geared towards low cost, but towards little effort (although it took more of it than I hoped for in the beginning ;-) ).
  • The board is through hole and single sided with a few wire bridges. This is because I am so old that I am more used to THT than SMD, because most stuff is on on breakout boards anyway and because I wanted to mill the board on my CNC.
  • There is a PDF with schematic and board layout and a photo of my board available to get a quick look.
  • The board is larger (100 x 160 mm) than the stock Ender 3 mainboard, so you will need (to print) a different case for it. I will probably develop one some time, put it on Thingiverse and then link it from here.
  • SD card reader: I am using a microSD to regular SD extension and have the SD card reader mounted behind the display, so I used a microSD breakout board with the slot oriented inwards where I just plug in the extension cable. The board used to be 5V, but I shorted the voltage regulator with some solder to make it work with 3.3V.
  • Stepper Drivers: I use TMC2208 because they are quiet and relatively cheap. Since I am not interested in any tuning here, I hard-wired it's configuration pins. In case you want to use different drivers, you might have to cut traces on these pins or change the layout.
  • I have yet to make use of WiFi. My plan is to use ESP3D with Marlin integrated at some point in time, but I have yet to figure out how far Luc as gotten with the integration of ESP3 into Marlin.
  • The board should run stock Marlin for ESP32 (as my minor pull requests have all been merged now). For reference, my current personal setup including my complete configuration is available here.
  • In case you create your own board / layout, be sure to take special care of the I2S lines. The first two variants of my board also did work somehow, but the temperature readings were really, really noisy (jumping up and down wildly by 5-8 °C). It turned out that this was caused by my really poor routing of the I2S lines which injected lots of noise into VCC. The second iteration was better, but there was still more noise than I had hoped for, so I took more time for the layout of board revision r3, moved components and switched pins to separate I2S far from VCC and analog pins and to reduce the complexity of the layout, routed all power and analog lines by hand, placed a ground plane around the I2S lines and left only standard digital lines for the auto-router.
  • I used KiCad for the schematic and the board and TopoR Lite for auto-routing. TopoR works quite well, is available for free with some (totally acceptable) limitations and was pretty helpful as it also has a special single-sided mode, even though it took some time to get used to.
  • For milling, I used pcb2gcode, which also worked well for me since it allows to add safety margins easily by setting a cutter width larger than the actual cutter. It will still mill between traces that are closer together than theoretically possible with the specified cutter width (which FlatCAM unfortunately does not do), but leaves all other traces wider. And although it is command-line only, one can put all settings in a config file per project and it does dump out nice SVG files where it illustrates its calculations.

License: MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].