Smart printer. Improving Octoprint

When developing an open project for the 4 extruder Z-Bolt printer, we were faced with the problem of choosing a screen for controlling the printer. Of the available screens, only the Duet Wifi solution can control more than 2 extruders. The solution, to put it mildly, is not budgetary, and the interface is not for everyone. So we decided to look for an alternative with preference and courtesans. This story is about him ...

image

On the Internet there is a lot of information about the use of Octoprint. A little more than half a year ago, and we became users of this solution, immediately appreciating its advantages. The ability to control the printer through a web person is really hard to overestimate. Octoprint has a lot of plugins, and most importantly for us - Octoprint is very well controlled with the number of extruders greater than 2. But it remained to solve one more issue.

Many Octoprint enthusiasts confidently claim that they no longer need a screen from the word “completely”, that this is an absolutely superfluous part of the printer that only bothers them.

However, I am convinced that there is another part of OctoPrint users. Everyone has their own habits and requirements for the daily use of a 3D printer, and there are operations that are more convenient to perform, having a screen:

  • Filament Replacement
  • Table Level Calibration
  • Start printing a file that was previously printed
  • Turn on printer preheat
  • Ability to see print status
  • ...

Now the default screen in Z-Bolt printers is the MKS TFT. You can put TFT24, TFT32 or TFT35. These are good screens, but they cannot integrate with Octoprint. If Octoprint has started printing, the screen will not know anything about it. They use different file repositories, etc. And MKS TFT screens do not want to work with 3- or more-headed 3D printers.

My goal was to find / make / set up a screen for Octoprint, capable of controlling more than 2 extruders.

Googling a little, I came across a TouchUI plugin .



The first impression was: here it is - a solution !!!

I immediately installed the plugin and opened Octoprint from the phone. TouchUI interface is stupid: /. Sometimes the buttons were pressed normally, sometimes they slowed down, and sometimes they were not pressed at all the first time. From a connected screen, TouchUI behaved just as badly as it did from a phone.

In parallel, another solution was found .



The description was encouraging, unlike TouchUI, this is an independent application that runs without a browser, which means that it required significantly less computing resources.

Installation and configuration did not cause problems. The interface really worked much more predictable and responsive.



But here, not everything turned out smoothly. The application crashed regularly when printing started. There was an issue on github for this errorcreated almost a year ago and actively discussed, but not closed.

The main problem turned out to be that the author of the application, apparently, has lost interest in him and is currently no longer developing.

Since, in my opinion, the application is written well enough and has potential, it was decided to make a “hard-fork” and take up the project thoroughly.

Here's what we got:

  • The optimal screens for the project are selected
  • Made a “hard-fork” by Octoprint-TFT
  • Revised outlook on the hardware and software architecture of the printer
  • Created its own theme for the Octoprint interface

But first things first…

Screen selections


We started with the TFT 3.5 screen, which, to put it mildly, did not stand up to criticism. No viewing angles, the picture is faded. Therefore, it was decided to choose a better solution.

The main criteria were:

  • IPS matrix
  • size 4 - 5 inches
  • capacitive screen (optional)
  • acceptable price

As a result, we settled on two options:

1. The option is simpler. 4 '' IPS resistive Touchscreen



2. The option is richer. 4.3 '' IPS capacitive Touchscreen


Both screens have a resolution of 800x400. Both have a great picture, color reproduction and viewing angle. Their main difference is the capacitive touchscreen. You get used to it (like everything good) very quickly and use it much nicer than resistive. However, a screen with a resistive touchscreen is also quite viable.

This is Hard-Fork, baby!




The application has been seriously modified. And almost ceased to resemble her parent. Therefore (and also because the creator of Octoprint-TFT officially froze the development of his brainchild), it was decided to make a hard-fork and name the new project Octoscreen.

  • First of all, the screen freezing problem suffered by Octoprint-TFT was completely eliminated.
  • - Design and layout have noticeably changed:

  • The screen has learned to understand the status of the printer (standby / print):

  • Added the function of quick pre-heating / turning off heating by pressing the extruder or table icon, while the screen highlights the status:

  • Added manual table calibration screen:

  • The “Menu” item is displayed on a separate screen:

  • Added WiFi control function:

  • The application itself now supports up to 4 extruders, which is why it was created:


You can download the application and find brief installation instructions from our GitHub .

There is also a detailed instruction for the screen 3.5 , for which special thanks to our colleague Denis (@ negativ72rus).

Revise your views on the printer's firmware or shoe changes on the go




Initially, we planned to use Marlin in our multi-extruder printer, but in the end, the choice fell on Klipper. There are several reasons:

1. One of the main for us as developers, the reason is its flexibility. Marlin and its “pasta” code make the process of making improvements to it, and even more so their further support, a real challenge.

Klipper in this regard is the exact opposite of Marlin. Firstly, all Klipper configuration is taken out of the program code. The code itself is well structured. But most importantly, Klipper provides modularity !!! You can add your logic to the firmware without making a change to its core, and thereby greatly simplify the further support of your code.

2. All firmware configuration can be done directly through the OctoPrint web interface. And at the same time, the settings are much more powerful than those of Marlin or Smootheiware.

3. How can I not say about the bits that everyone has been chasing recently)). The Klipper architecture itself assumes that the computational burden lies with the Raspberry PI. The function of the MKS Gen L control board (in the case of Z-Bolt printers) remains in the transmission of signals to / from the periphery (motors, sensors, heaters, controls).

But the Raspberry Pi 3 Model B + is equipped with a 64-bit, 4-core Broadcom BCM2837B0 A53 1.4GHz chip.

Essentially Octoprint + Klipper running on the Raspberry Pi + the same MKS Gen L -
an order of magnitude more functional and progressive solution than Marlin running on some 32-bit chip.

Configuration files for Klipper for Z-Bolt printers can also be found here .

A small bonus in the end!


We also made our own theme for the Octoprint interface: the



Hat can be configured with the native color picker in the Appearance section:



Instructions on how to install the theme can be found on our GitHub .

Write in the comments which screen features you find most useful and necessary to add.

All good, positive and good blowing overhanging elements!

Also popular now: