3D принтер у меня появился в начале карантина по ковиду, то есть миллион лет назад, плюс-минус. Игрушка зашла и довольно быстро к ней были докуплены всякие свистелки и перделки типа:

  • BLTouch, с выравниванием столика у меня всегда проблемы были, с этим девайсом проблема была решена самым правильным способом - автоматически.

  • Плата 4.22, уже тогда хотел собрать Marlin, но что-то не хватило времени и желания разобраться. А может просто брался за это дело в моменты oтупления. В общем прошивку я пользовал родную, довольно старую, и не жужжал. Попытки собрать Marlin заканчивались одним и тем же - 1. нефига не работает 2. нефига не понятно почему :)

  • https://octoprint.org/ на raspberry pi 3

А тут 3 дня назад сначала попробовал собрать klipper, оно собралось, но после загрузки принтер показал чистый голубой экран и отказался работать напрочь. Потом полез на официальный сайт https://www.creality.com/pages/download-ender-5-pro а там уже собранные marlin, даже относительно недавно выложенные. Скачал Ender-5 ProMarlin2.0.6HW4.2.2BLTouch, который вроде по названию похож на то что нужно, залил на SD карту, включил принтер, прошивка поставилась, вроде работает, отправляю 3х минутную мелочь на печать и ухожу. В телегу приходит уведомление от принтера - 'я сделаль'. Иду смотреть, а там .... вообще ничего нет. Выражаю недоумение. Замечаю что пластик почему-то не упирается в экструдер. Допихиваю пластик, запускаю снова печать. И теперь уже своими глазами наблюдаю "движение есть, прогресса - нет". И тут замечаю что мотор подающий пластик крутиться в обратную сторону. Такой вот баг в официальной прошивке которую выложили в ноябре прошлого года. И всем пофик. На некоторых форумах (ну ладно, в одном посте) люди советуют поменять 1 и 2 пин на моторе. В общем жизнь подает знаки - собири, блин, свой marlin. Далее беллетристика заканчивается и начинается инженерия

Тулзы для сборки.

Инструкция в виде видосика о том как на маке с помощью гравицапы VSCode заюзать PlatformIO и Auto Build Marlin для сборки всего нужного барахлишка. https://www.youtube.com/watch?v=_tnVl4X2p20.

Готовим исходники.

Гулять так гулять, берем что есть, без выписывания релизных тегов.

mkdir ~/src/Marlin
git clone https://github.com/MarlinFirmware/Marlin ~/src/Marlin/Marlin
git clone https://github.com/MarlinFirmware/Configurations \
  ~/src/Marlin/Configurations
cd ~/Marlin/
cp Configurations/config/examples/Creality/Ender-5\ Pro/CrealityV422/*  \
  Marlin/Marlin/

Редактируем и собираем

Открываем ~/src/Marlin/Marlin как PlatformIO как показано в видосике ссылка на который была выше и генерируем среду сборки как там показно.

в VS Code открываем ~/src/Marlin/Marlin/Marlin/Configuration.h и правим там тупо всего 4 строки

  1. Комментим два error в начале

  2. Раcкоменчиваем `#define ENDER5_USE_BLTOUCH`

  3. Коментим `#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN` (потому что плата 4.2.2 с 5-pin header)

на всякий случай прикладываю diff

Hidden text
❯ diff ~/src/Marlin/Configurations/config/examples/Creality/Ender-5\ Pro/CrealityV422/Configuration.h \
     ~/src/Marlin/Marlin/Marlin/Configuration.h
23,24c23,24
< #error "Don't build with import-2.1.x configurations!"
< #error "Use the 'bugfix...' or 'release...' configurations matching your Marlin version."
---
> // #error "Don't build with import-2.1.x configurations!"
> // #error "Use the 'bugfix...' or 'release...' configurations matching your Marlin version."
26c26
< //#define ENDER5_USE_BLTOUCH
---
> #define ENDER5_USE_BLTOUCH
1352c1352
< #define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN
---
> //#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

говорят можно еще поправить NOZZLE_TO_PROBE_OFFSET, но я еще не добрался попробовать.

Далее идем в Auto Build Marlin, жамкаем Build напротив STM32F103RE_creality (512K), выглядит это примерно так

в итоге получаем .bin файл который пишем на SD карту, втыкаем в принтер и включаем принтер с этой картой, что приводит к автоматической заливке прошивки.

Калибровки

Сначала столик, тут все тупо, как описано в https://marlinfw.org/docs/features/auto_bed_leveling.html#first-time-bed-leveling. Команды вводим в терминале в octoprint, так проще чем вертеть ручку и выбирать меню. # и все за ним не вводим, это типа комментарии

M111 S247 # включаем дополнительный логинг
G28 # делаем Auto Home
G29 # калибруем уровень столика
M500 # сохраняем все откалиброванное в EEPROM 

Marlin, кстати, молодец и сохраняет все в EEPROM, при том что родная прошивка хранила все на SD. И раз включенный без SD принтер при попытке что-то распечатать oставил на столике заметные вмятины. Магнитную платформу PEI было жалко.

Пробуем печатать. Скорее всего получим мы паутинку вместо ожидаемой детали потому что BLTouch при калибровке запоминает рельеф стола, но точно выставить расстояние до стола он не может. Это приводит к тому что печать начинается выше чем надо, деталь не крепится дном и елозит по всему столу. Вообще в Marlin есть целый визард (Z-Offset Wizard) на эту тему, но у меня визардом не получилось. В результате разных попыток появились вот такие работающие шаги:

  1. G28 (Auto Home), эта процедура отведет голову по оси Z на +10 мм примерно от 0.

  2. Выводим аккуратно, меняя шаг в сторону уменьшения, голову по оси Z, так что бы между экструдером и столом можно было провести бумажку, но она немного цеплялась. Как в классической ручной калибровке столика винтами снизу, толко без винтов. У меня получилось что это было выше нуля и на экране было -1.75.

  3. Когда я пытался через меню ввести в z probe offset -1.75 - ничего хорошего не получалось, а потом я попробовал в терминале octoprint загнать двумя строками 'M851 Z-1.75' c 'M500' и все заработало. В меню z probe offset при этом показывает +1.75.

Поздравляю вас, если вы все сделали правильно то вы можете снова печатать весьма полезные и необходимые вещи. Например такие

Ну и еще, раз статья про софт, перешел с UltiMaker Cura которой пользовался все это время на https://github.com/supermerill/SuperSlicer. Причина банальная, UC выпилили из Gentoo, с такой ремаркой

This package is masked and could be removed soon!
The mask comment indicates that this package is scheduled for removal from our package repository.
Please review the mask information below for more details.

The Gentoo packages are severely out of date, and they haven't been ported to Python 3.11. They are hard to keep working, and there are better alternatives available. The suggested replacements are: media-gfx/prusaslicer, media-gfx/superslicer and orcaslicer (not packaged). Removal on 2023-08-04. Bug #905769.

Всем мира и здоровья.