Skip to content

Modified firmware for the Creality 3D Printer Ender 3v3 SE focused to work with Octoprint

License

Notifications You must be signed in to change notification settings

navaismo/Ender-3V3-SE

Repository files navigation

Ender3 V3 SE Community Edition Firmware for Octoprint


Table of Contents





Background.

After Creality released the Ender 3 V3 SE source code, many forks started to work on it and suddenly I was involved in this thread on Creality's Forum were good folks from everywhere started a conversation about what could be good enhancements for the Firmware. So I thought will be a nice contribution for the community to merge the most common forks into One Repo and start from there new features for the firmware.

Also I wanted to go a little bit further, since I'm using Octoprint, so I started to focusing on the integration of the Firmware with it, specially to make my LCD alive again.

Special thanks to all the contributors:


Caution

Disclaimer

I'm not responsable of the damage or brick that may happen to your printer if you don't know what are you doing. I'm provided this fork tested on my own printer without warranties.**



Installation:

Tip

First you need to flash creality firmware version 1.0.6. and the TFT files for the display. If your printer is already in that version you can do it directly.

From: Latest Release of Printer's Firmware without Gcode Preview download the ZIP that fits your Octoprint configuration, recommended 150000 baud rate.

or From: Latest Release of Printer's Firmware with Gcode Preview download the ZIP that fits your Octoprint configuration, recommended 150000 baud rate.

Unzip and:

  1. Turn Off your printer.
  2. Format you SD to FAT32 recommended to use MiniTool Partition or Gparted.
  3. Rename the file to something random, i.E. “OC198B.bin” and copy to the SD.
  4. Put the SD on your Printer SD-Card Reader(Not the LCD).
  5. Turn On your printer.
  6. Wait for the update to finish - it needs ~10-15 seconds.
  7. Run a new Autolevel.

For Octoprint:

  1. Download the Latest Release plugin: navaismo/OctoPrint-E3v3seprintjobdetails
  2. Install it manually using the Plugin Manager.
  3. Follow the below section of Octoprint to configure it.



Common Features for the Stand Alone Printer & for Octoprint.

* The 7x7-Mesh:

Based on the fork of @aschmitt1909, and merged with the PR#18 from @eduard-sukharev


* Linear Advance:

Based on the fork of @queeup-Forks, for this version follow these instructions to enable it:


* Hosts Commands and Support for Runnout Sensor:

Based on the fork of @rtorchia


* Raised Max Temperatures Values.

Based in the fork of TomasekJ

  • For BED 110°C
  • For Nozzle 300°C

Be careful with the Nozzle Temperature because the PTFE Tube from extruder will deform startint at 260°C


* Input Shaping Menu:

Merged the PR#22 from @eduard-sukharev to Enable the Input Shaping Menu in the LCD.



* Added Extrusion Flow Item to the Tune Menu:

Enabled the option in Tune menu to modify the extrusion flow/rate of the printer during the print job.


* Added Mute/Unmute LCD Buzzer to the Prepare Menu:

Added an Item in Prepare Menu to mute or unmute the LCD when you press the Knob. From feature request in: Issue #27. Sometimes you want to be quiet. To preseve the state of the feature go to Menu Control --> Save settings.


* Improved M600 feature.

When using M600 code to change filament now the head will park and raise Z to a decent distant to handle the purges. Also was increased the purge lenght to have a better extrusion clean.

Important

  • When using standalone printer, the Knob will control the Pause and Continue processes. If you connect the host(Octoprint) then the Knob became useless and you need to control the Pause and Continue from the Octoprint GUI until you disconnect or restart the printer.

* Fixed Print Information details for SD Print :

Merged the fix of PR#39 from @eduard-sukharev to get the print details like filament, Estimated time and layer height, when printing from SD Card.


* Linear Advance quick Menu:

Added a quick Linear Advance Menu under Motion Menu from feature request on Issue#26


* Custom Extrusion Menu:

Added a custom Extrusion Menu under Prepare Menu from feature request on Issue#27. You can Extrude based on different tempearatures and lengths to match your material.

Usage:

Tip

  1. Set your desired temperature above 195°C, else an error will come out.
  2. Set your desired extrusion length above 10mm, else an error will come out.
  3. Click on proceed.

After that the Noozzle will heat till +-3 Degrees of the desired temp and will extrude the desired length automatically.

Finally just click on the confirm button to go out the menu.




Features for Octoprint.

To have the most of Octoprint and this firmware you will need to install the Custom Octoprint Plugin for the printer.


Configure the plugin:

* Install Plugin's Dependencies:

To work correctly the plugin needs the following Plugins to be installed already:

Disable or Unistalled:

  • Disable Display Layer Progress

* Set Correct Baud Rate.

Depending on the Firmware version that you've downloaded add the Baud Rate in the additional baud rates box.

Note: If youe are using OCTO4A the only baud rate that will work is 115200 due to an Android or Octo4A limitation.


* Add GCODE SCRIPTS.

To properly show the Ready connection string at Menu's header add the following in the

  • After Serial Connection to printer established
  • Before Serial Connection to printer is closed




  • For After Print Job Completes:
G1 X0 Y220

  • For After Print Job is Cancelled:

In this section is important to add the last M117 command it will help to clear some variables before going to Main Menu

; relative moving
G91
; move head 10mm up
G1 Z10 F800
; absolute moving
G90

; move print head out of the way
G1 X0 Y220 F3000

; disable motors
M84

; disable all heaters
{% snippet 'disable_hotends' %}
M104 S0 ; Set Hotend to 0

{% snippet 'disable_bed' %}
M140 S0 ; Set Bed to 0

;disable fan
M106 S0

; send message to printer.
M117 Print was cancelled

  • For After Print Job is Paused:
{% if pause_position.x is not none %}
; relative XYZE
G91
M83

; retract filament of 0.8 mm up, move Z slightly upwards and 
G1 Z+5 E-0.8 F4500

; absolute XYZE
M82
G90

; move to a safe rest position, adjust as necessary
G1 X0 Y220
{% endif %}

  • For After Print Job is Resumed
{% if pause_position.x is not none %}
; relative extruder
M83

; prime nozzle
G1 E-0.8 F4500
G1 E0.8 F4500
G1 E0.8 F4500

; absolute E
M82

; absolute XYZ
G90

; reset E
G92 E{{ pause_position.e }}

; WARNING!!! - use M83 or M82(extruder absolute mode) according what your slicer generates
M83 ; extruder relative mode

; move back to pause position XYZ
G1 X{{ pause_position.x }} Y{{ pause_position.y }} Z{{ pause_position.z }} F4500

; reset to feed rate before pause if available
{% if pause_position.f is not none %}G1 F{{ pause_position.f }}{% endif %}
{% endif %}

Of course you can change it to your desired behaviour above are just working examples in my setup.


* Configure O9000 commands:

Enable the option to Turn On the Job details on the LCD. Otherwise left M117 and any other plugin will send information to it.

M177 has a basic implementation and I'm not planning on improve M117 messages


* Configure The GCODE Preview transmission.

If you installed the firmware from the Repo that Enable the Gcode Preview Using Octoprint, enble the slicer so the plugin can send it to the LCD.

Important

  • The supported size for the GCODE Preview is a size of 96x96.
  • Supported Slicers are Cura and Orca.
  • In Orca use the following 96x96/JPG.
  • In Cura default 96x96 setting is enough.
  • In your slicer use a filament color other than black or the Image will be barely visible.
  • Previews will only work after enable those settings and for the new Files that you upload, any old file will not work
  • Transmitting and Rendering the preview will take up to 2 minutes.


* Select the Based Progress Type for the Percentage .

  • Time Pogress: Will render the circle percent progress based on the estimation of the Time Printer or PTG plugin. Is a known issue that Printer or PTG arent accurate at all so this is not the best option.

  • Layer Progress: Will render the circle progress based on the calculation of the percent bewteen the Curren Layer and the Total Layers.

  • M73 Progress: Will render the circle progress based on the information that the Gcode file send trhough M73 command. This is the recommended one.

You need to enable your slicer to send this information is not by default and must follow the standar command like: M73 P10 R60



After configuring all the above you will be able to see the New Layout of the screen:

Octoprint GUI while transmitting the Thumbnail.


Receiving Thumbnail.


Rendering Thumbnail.


Loaded Thumbnail.


New Tune Layout.




If you disable the Thumbnail in the plugin's configuration or using the Firmware from this REPO, the default Creality Image will be rendered:


FAQS

Most of the questions has been answered in the Issue section of the Repo but here are the most common:

+ 1. Why I don't see the updates in real time on the LCD?

TL;DR: Because rendering the LCD will affect your print quality.

Take a look on the Issue #7 to get the full backgorund of why the Real Time response was removed.


+ 2. Do I need Octoprint to work with this?

No, the common feeatures works for both, you just will see the stock LCD Layout. The new layout with Gcode Preview, Layer count etc. Will be render only using Octoprint.


+ 3. Why you don't Increase the connection Baud Rate?

TL;DR: Because printer cannot handle communication above 150000.

Take a look on the Issue #5 to get the full backgorund.


+ 4. Got a leveling error?

This error is only present when using Octoprint and is expected since you flashed a new Grid with no values. So after flashing the new firmware start a new fresh level procedure and then connect Octoprint again.


+ 5. Why the Render of GCcode Preview takes so much time? 
+ 5a Why there is no Gcode Preview without Octoprint?

TL;DR: Because LCD is closed and we haven't found it it has a SRAM to store images. An thats why is only supported by Octoprint and not stand alone. To process the image and send it.

Take a look on this Discussion to see the efforts. Eduard and I spent a lot of time trying to find an Address with no luck.


+ 6. Sometimes when Thumbnail Enabled the printer pauses and has weird movement behaviour before the print starts?

This is because the plugin programaticaly pauses the print job until the Thumbnail is rendered, to avoid affect the print quality.

It is recommended to Load the file first and then click on Print. If is a direct print, is recommended to preheat the filament so the transmission will start faster, else it will wait till nozzle reach the temperature.


+ 7. Sometimes when the thumb is disabled an loaded the Job in LCD I see the Default image dissapearing slowly while the other is rendering. Can you just clean the LCD?

This is a personal decision, I like a lot to see how the Creality Man dissapear slowly, it brings me peace.


+ 8. Sometimes in the Tune Menu appears the Nozzle and Bed Icons, Why?

This is beacuse the encoder/Knob is moved too fast and enter in an unknow state that by default try to render the lower info area. If you move it slowly this will no appear.





Marlin 3D Printer Firmware

GitHub GitHub contributors GitHub Release Date Build Status

Additional documentation can be found at the Marlin Home Page. Please test this firmware and let us know if it misbehaves in any way. Volunteers are standing by!

Marlin 2.0

Marlin 2.0 takes this popular RepRap firmware to the next level by adding support for much faster 32-bit and ARM-based boards while improving support for 8-bit AVR boards. Read about Marlin's decision to use a "Hardware Abstraction Layer" below.

Download earlier versions of Marlin on the Releases page.

Example Configurations

Before building Marlin you'll need to configure it for your specific hardware. Your vendor should have already provided source code with configurations for the installed firmware, but if you ever decide to upgrade you'll need updated configuration files. Marlin users have contributed dozens of tested example configurations to get you started. Visit the MarlinFirmware/Configurations repository to find the right configuration for your hardware.

Building Marlin 2.0

To build Marlin 2.0 you'll need Arduino IDE 1.8.8 or newer or PlatformIO. Detailed build and install instructions are posted at:

Supported Platforms

Platform MCU Example Boards
Arduino AVR ATmega RAMPS, Melzi, RAMBo
Teensy++ 2.0 AT90USB1286 Printrboard
Arduino Due SAM3X8E RAMPS-FD, RADDS, RAMPS4DUE
ESP32 ESP32 FYSETC E4, E4d@BOX, MRR
LPC1768 ARM® Cortex-M3 MKS SBASE, Re-ARM, Selena Compact
LPC1769 ARM® Cortex-M3 Smoothieboard, Azteeg X5 mini, TH3D EZBoard
STM32F103 ARM® Cortex-M3 Malyan M200, GTM32 Pro, MKS Robin, BTT SKR Mini
STM32F401 ARM® Cortex-M4 ARMED, Rumba32, SKR Pro, Lerdge, FYSETC S6
STM32F7x6 ARM® Cortex-M7 The Borg, RemRam V1
SAMD51P20A ARM® Cortex-M4 Adafruit Grand Central M4
Teensy 3.5 ARM® Cortex-M4
Teensy 3.6 ARM® Cortex-M4
Teensy 4.0 ARM® Cortex-M7
Teensy 4.1 ARM® Cortex-M7
Linux Native x86/ARM/etc. Raspberry Pi

Submitting Changes

Marlin Support

The Issue Queue is reserved for Bug Reports and Feature Requests. To get help with configuration and troubleshooting, please use the following resources:

Contributors

Marlin is constantly improving thanks to a huge number of contributors from all over the world bringing their specialties and talents. Huge thanks are due to all the contributors who regularly patch up bugs, help direct traffic, and basically keep Marlin from falling apart. Marlin's continued existence would not be possible without them.

Administration

Regular users can open and close their own issues, but only the administrators can do project-related things like add labels, merge changes, set milestones, and kick trolls. The current Marlin admin team consists of:

License

Marlin is published under the GPL license because we believe in open development. The GPL comes with both rights and obligations. Whether you use Marlin firmware as the driver for your open or closed-source product, you must keep Marlin open, and you must provide your compatible Marlin source code to end users upon request. The most straightforward way to comply with the Marlin license is to make a fork of Marlin on Github, perform your modifications, and direct users to your modified fork.

While we can't prevent the use of this code in products (3D printers, CNC, etc.) that are closed source or crippled by a patent, we would prefer that you choose another firmware or, better yet, make your own.

About

Modified firmware for the Creality 3D Printer Ender 3v3 SE focused to work with Octoprint

Resources

License

Stars

Watchers

Forks

Packages

No packages published