Thursday, November 28, 2019

The history of MRR ESPA: Custom Marlin fork

The MRR ESPA is a 3D printer control board based on the ESP32 micrcontroller. It runs Marlin firmware, and works best with the custom fork of Marlin that supports the ESP3D web interface. This is a series of posts about how the board was developed.

In the darkness, came a beam of light...

In talking to Luc Lebosse about his ESP3D web interface, he introduced me to his custom fork of Marlin firmware which allows the ESP32 to run both Marlin, and at the same time act as a web server to serve the ESP3D web interface to a web browser. This meant I only need one ESP32 microcontroller, and I don't need to worry about having the MKS TFT32 as the user interface; everything can be controlled via the web browser instead.

I was also working to improve the rudimentary design of the PCB based on feedback from the open source community.

This led to more designs, including changes to the power supply step-down circuit. It was also during this time when someone suggested the idea of using jumpers to allow easy-to-configure support for Trinamic stepper drivers. So I tried to work out something that could allow both TMC2130 in SPI mode, and TMC2208 in UART mode. But the challenge with TMC2208 in UART mode was soon apparent--the ESP32 does not have enough pins (two pins per axis for UART communication). This eventually led to TMC2208 UART support being dropped to focus just on providing TMC2130 SPI support.


Along the way, I realised it is best to have the PCB antenna *outside* the PCB for better connectivity.


It was also with v0.8 that I moved away from EasyEDA to using KiCad instead. This is because KiCad is open source, and it allows me to share my designs easily with others in a more portable format. EasyEDA is good, but it does not export well into other formats.

Starting from v0.9, an optocoupler was used to separate the VBED from VIN based on the design of the Little-Driver external MOSFET. By v0.9, I had solved most of the issues related to components, like the cheap Chinese MOSFETs which kept smoking when I tried to heat the heated bed. It was also in v0.9 that I discovered the issues with trace width that also created issues with heat dissipation. It was also the version where the board was given its current name, MRR ESPA. Before that, it had survived as the MRR ESP32 3DP, 3DP being short for 3D printer.

Look out for the next series, when I finally see the light at the end of the tunnel.

(A series of discussions covering v0.8 to v1.01 can be found here.)

For more information on the MRR ESPA:
Facebook page
Facebook group for users
GitHub repository
MRR ESPA available here

No comments: