Tuesday, November 26, 2019

The history of MRR ESPA: In the beginning

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 the first in a series of posts about how the board was developed.

In the beginning, there was only darkness...

Actually, it all began in early 2018. I started dabbling in 3D printing, and was also learning how to use the ESP32 microcontroller. With its WiFi features, the ESP32 was exceptionally charming. Somewhere around mid-2018, I came across Simon Jouet, his work on the HAL for the ESP32 in Marlin firmware, and the R1 of his ESP32Controller (which is also a 3D printer control board based on the ESP32). I also came across the work of Luc Lebosse and his ESP3D web interface. This is an interface which allows an ESP8266 or ESP32 to be used to add WiFi functionality to any 3D printer via UART. I also found the Morpheus-STM32 board, which is something like an expansion board for the STM32F103 "Blue Pill" development board.

This is how the Morpheus-STM32 looks like.

So I decided to give it a try and develop my own board using the ESP32. The basic idea was to use an ESP32 development board as the main microcontroller (using the pins of the ESP32 HAL in Marlin 2.0 as the "reference" assignment). And because the ESP32 does not have enough pins to support a LCD controller, the plan was to have another ESP32 development board loaded with ESP3D firmware to provide the user interface via a web browser. Development boards were used because I needed to upload the firmware separately (one for Marlin, another for ESP3D), and development boards come with their own USB-to-serial chips already in place.

The result was a rather bulky board, the v0.1 of the MRR ESPA. Back then, it was just called ESP32-3DPrinter, and it was designed on EasyEDA. The components used were those I found on EasyEDA, which was why the two development boards were used (they had they most consistent footprints, or so I think).

As you can see, through-hole components were used as I was not comfortable with SMD soldering at that time. The board was also very bulky and did not make the best use of space.

So the next idea was to try and fit everything into a 100mm by 100mm PCB so that I can take advantage of cheap PCB manufacturing services (like JLCPCB). This meant I had to more or less discard the development board idea, and use an ESP32 module instead. I also decided to drop the second ESP32-as-interface idea; instead, I had a MKS TFT32 controller lying around, so I just made sure I had a connector to allow the ESP32 to communicate with the MKS TFT32 over serial. This resulted in a series of trial-and-error designs, the first (aka v0.2) of which looked like this.


Stay tuned for the next in this series, when I will touch on the custom Marlin fork by Luc.

(A series of discussions on the earlier designs can be found here. It covers up to v0.7.)

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

No comments: