GithubHelp home page GithubHelp logo

schmttc / easythreed-k7-stm32 Goto Github PK

View Code? Open in Web Editor NEW
45.0 9.0 14.0 80.3 MB

Firmware and settings for the EasyThreeD K7 3D Printer, motherboard ET4000+ (STM32)

License: GNU General Public License v3.0

C++ 63.44% C 33.78% HTML 0.25% Makefile 0.25% Python 1.08% Shell 0.70% GDB 0.01% NASL 0.01% OpenSCAD 0.04% JavaScript 0.33% G-code 0.02% CSS 0.04% Dockerfile 0.01% Assembly 0.06% BitBake 0.01%

easythreed-k7-stm32's Introduction

Marlin 2 for EasyThreeD ET4000+ Board (STM32), K7 and K9 Printer Models

This repository reflects my work on the EasyThreeD ET4000+ 3D printer mainboard. The K7 and K9 printers have been sold with a number of mainboards. My printer has the 32-bit board 'ET4000+', which is shared by the K9 and Nano and Dora printers from the same manufacturer, and so these files only apply to that model.

Installation

The board's bootloader is proprietary by MKS, which reads a binary firmware file mksLite.bin from the SD card on boot.

  • Make a copy of mksLite.CUR from your SD card. This is the original firmware, and is required if you run into any issues
  • Copy mksLite.bin to the SD card, and restart the printer
  • After a short time (<30s) the firmware is written to the board, and mksLite.bin on the SD card is renamed to mksLite.CUR

Branch: master

This is a clone of Marlin 2.1.2.1, configured for the EasyThreeD K7 ET4000+.

Overview

  • Compile using PlatformIO, board "mks_robin_lite_maple"
  • Physical buttons and LED currently are functional as per the standard manufacturer's behaviour
  • Start button LED
    • LED blinks slowly when printing/processing
    • When paused blinks LED quickly
    • LED is on when job is cancelled or completed
  • Home button and filament feed/retract slider working
  • Long press print button to raise print head 10mm while not printing
  • Short press print button to print most recent file on SD card
  • Serial baud rate is set to 115200, matching the original firmware
  • Onboard EEPROM is enabled, matching the original firmware

Modified Files

  • Configuration_adv.h - SD_DETECT set to LOW (bugfix)
  • ini/stm32f1-maple.ini - Compile bugfix MarlinFirmware/Marlin#25346
  • src\feature\easythreed_ui.cpp - Button behaviours
  • src\pins\stm32f1\pins_MKS_ROBIN_LITE.h - Enable EEPROM

The files below are included in Marlin mainline from 2.0.9.3, and are listed for reference.

  • Configuration.h - configured for EasyThreeD K7
  • Configuration_adv.h - configured for EasyThreeD K7
  • src\pins\stm32f1\pins_MKS_ROBIN_LITE.h - Added pin definitions for EXP1 port reassigned from LCD to Buttons
  • src\MarlinCore.cpp - Includes additional functions to handle complex button behaviour
  • src\feature\easythreed_ui.cpp - Button behavour main code
  • src\feature\easythreed_ui.h - C header file

Additional Files

Compiled binary - mksLite.bin

  • Hotbed is enabled. If you do not have a hotbed, make sure the temp is set to 0 in your slicer
  • Backlash correction is enabled
  • Input Shaping: Disabled

Notes on Marlin 2 Config

  • Make sure 'VALIDATE_HOMING_ENDSTOPS' is disabled, as we do not have X and Y stoppers to provide feedback, and the printer will halt.
  • Multiple calls in quick succession to queue.inject_P() will fail. Use a single call, with multiple commands seprated by "\n"
  • Setting acceleration of around 100 or higher may result in layer shifting when backlash compensation is enabled; therefore max acceleration is set to 50. This can be overridden with M201. (see #2 )
    • Some users are reporting minimal or no layer shift with version 2.1.2, so YMMV
    • Branch 'backlashfix' has a fix enabled that seems to be working, please try this if you experience backlash and let me know how it goes

References to button code in original firmware

https://github.com/schmttc/EasyThreeD-K7-STM32/blob/Original-Firmware-Marlin-1.1.1/mksRobinLite_nano/Inc/main.h EXP1 (LCD Expansion Port) pins defined for use by physical buttons. Search for line "//EXP1 FOR NANO" at bottom of file.

https://github.com/schmttc/EasyThreeD-K7-STM32/blob/Original-Firmware-Marlin-1.1.1/mksRobinLite_nano/Src/nano.cpp Contains the custom MKS code defining button behaviour. Some of the macros used here are an older style, and no longer compatible with Marlin 2.

License

Marlin Firmware: https://github.com/MarlinFirmware/Marlin

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.

easythreed-k7-stm32's People

Contributors

johnthecoolingfan avatar schmttc avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easythreed-k7-stm32's Issues

non-maple micro SD SPI SS don't working

Does this work with non maple?

With any Marlin configuration the micro SD card does not work due to Chip Select not working. It is always at a high level, although the bootloader and maple firmware work fine.

newbie asking for guidance

hi to everyone, and a special thanks for all your effort. i'm really new to this word and i recently bought a k7. i noticed squared circle issue on standard firmware. is this still operating? latest update does work properly ? how do i install it? is just a matter of swap mksLite.bin with the original in the sd? or i should do some correction? i have to tell in advance that i'm not so confident with programming or compile XD

EEPROM doesn't work

I've compiled and flashed mksLite.bin. Now after e-step calibration I send M500 and it says
echo:No EEPROM.
Is it supposed to work, if so what can I do to enable?

EasyThreed K9 version

I have an EasyThreed K9 with ET4000+ board, but it has a few differences. Some perfipherals are missing and wifi board connector is used by the front panel buttons. Would you be interested in making another repo for K9 if I provide photos and pin/button mappings?

How to use a RepRapDiscount Full Graphic Smart Controller?

So, I'm trying to figure out how to adapt the firmware to use a RepRapDiscount Full Graphic Smart Controller, going through what I could find I tried modifying the pins_MKS_ROBIN_LITE.h to use the LCD panel and disabled the EASYTHREED_UI on the configuration.h file. The build run was successful and the flashing seemed to be successful too because the mksLite.bin was correctly changed to .cur but the LCD is not powering up.
I used the datasheet you provided at https://github.com/schmttc/EasyThreeD-K7-STM32/blob/Additional-Files/ET4000%2B.pdf
Does anyone know how to do this configuration or have an example of adding a different LCD screen?
I've seen videos of the EeasyThreed X4 that has an LCD screen and uses the exact same board (ET-4000+) so I know that is possible.

Increase Bed Size on K7

I was thinking of buying this 3d printer from Aliexpress (TISHRIC k7)
and I wanted to increase the bed size do you think I can do that if yes then how

Layer Shifting on 2.0.9.1

Recently got a K7 with the leveling buttons and an ET4000+. I Flashed 2.0.9.1 and I was getting layer shifting so I flashed 2.1.2 and the shifting is resolved but it still has the backlash fix enabled. I ran M503 and M115 that reported marlin 2.1.2 and backlash compensation set at F1.00 S0.00 X0.20 Y0.36 Z0.00 I attached the outputs as a text file.
2.1.2 test.txt
Really Seems i have the best of both Right now but it doesn't track with what the descriptions on the releases page says.

Enable Host Action Commands

I've been running the backlash fix branch with input-shaping on Octoprint for a little over a month now and its been great but without host action commands Octoprint cant pull certain information such as feed and flow rate. It would be great to have them enabled.

Enhancements for boards with AT32F403ARCT7

Hi,
a couple days ago I've received a K9 with AT32F403ARCT7 and now I wonder if there is an option for compiling Marlin for Cortex-M4F arch and 240MHz clock while using STM32F103 config. I'm not familiar with PlatformIO, but used STM32 HAL libraries, therefore I leave my thoughts here for consideration, and with some help I may be able to contribute to this project.

PS: Thanks for y'all for supporting this niche printers. After short time of testing I can say, that this firmware works much better that original one.

Edit:
Now that I'm at it, I've got confused. I have a black and blue K7 (in terms of shape and parts location) with additional buttons, exactly like in K9. My printer works with K9 firmware, also with bed positioning buttons. It may be relevant later on.

Support for K7 with bed leveling buttons

Hi,
as mentioned in #15, it seems like there is a newer, black and blue version of K7 printer. In terms of interaction, connections for buttons are exactly like in K9, so I've made a fork from K9's branch, but changed other parameters to mimic original K7's behaviour. Right now I don't have time to test it properly, but at first look, printer works as it should.

Fork: https://github.com/Vexisu/EasyThreeD-K7-STM32/tree/ET4000PLUS-K7-rev-B

Edit:
Found out that there is also an orange K7 with these buttons.

Setting M425 to non-zero values causes Layer Shift

When two M425 commands are placed in Cura > Machine > Start G-Code, prints have a consistent layer shift.
The layer shift occurs at different points depending on the version and configuration of Marlin 2.x firmware installed.

Example:
G28 ;Home
G1 Z15.0 F600 ;Move the platform down 15mm
;Prime the extruder
M425 X0.39 Y0.39 Z0.2
M425 F1 S0
G92 E0
G1 F200 E3
G92 E0

This required more diagnosis to resolve. Suggest setting backlash offsets outside of printing, and save to EEPROM.

K7 with ATmega1284

Hello
So I have a K7 with ET-4000 V2 board with ATmega 1284. Would this marlin version also work for the atmega?
I found out that the Board version would be Melzi for the ATmega, but do I need to change anything else?

The print button does not work

Hello. I have a K7 printer with an ET4000+ board. I downloaded the firmware into it from the main branch, but its start button did not work. When the start button is pressed, the ignition does not start, and when held, the extruder does not rise. If you download the standard firmware from the manufacturer, then everything works. I tried to download different firmware for the ISS Robin Light, but the result was the same - the start button does not work. Do all the buttons on the K7 ET4000+ printer work with the firmware from the main branch or with the EasyThreeD-K7-STM32-ET4000PLUS-K7-rev-B firmware? Maybe someone has uncompiled firmware from the manufacturer and wants to add an OLED display to the printer. Also, when connecting the display, the files on the SD card (32 GB fat32 MBF) are not displayed, but the files are displayed on the Biqu printer. Has anyone encountered this?
photo_2024-07-06_04-58-51
photo_2024-07-06_04-59-01

K7 with CF-M12 board

Any idea whether this would work with a K7 that has a board marked "CF-M12" - the chip is a Nation N326455 Rel 7. Support e-mail has sent me a default firmware binary, but not the source...

Print Head Loses Position after First Print

After printing a first item, on printing a second item:

  • The print head starts around 15mm too high, and prints in air, OR
  • The print head moves to the extreme of X Y and Z, and prints in air

Power cycling the unit between causes the next first print to be successful.

This needs further investigation. Maybe we need to home and reset the coordinates at the start of a print?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.