Прошивка Marlin 2.1 c LVGL_UI на FlyingBear Ghost 5
Спустя 2 года использования, решился я перепрошить медведя со стока. Вот только графический интерфейс с иконками устраивает полностью, WiFi я считаю необходимостью, иконка печатаемой детали мне позарез нужна, ну и мириться с закосом под доисторический принтер COLOR_UI желания нет никакого. Нет, ну серьёзно, синий цвет и общий дизайн взят там разве что из ностальгических воспоминаний по этой красоте:
Вот только оказалось, что популярные прошивки для 5-го медведя поставляются именно в этом, горячо нелюбимом мной варианте. Причём родной Marlin 2 даже работать не умеет с WiFi модулем без LVGL. Хорошо, что есть репозиторий, где это неудобство исправили. Но этот вариант меня всё равно не устраивает: отображение иконки печатаемой детали для меня много важнее дополнительных опций в меню, которыми я не пользуюсь.
Стал искать варианты. Наткнулся на репозиторий от MKS, правда залить его мне его удалось попытки с 10-й (не льются asset-ы, хоть убейся), поддержки WiFi там нет, даром что MKS-овский репозиторий, да и вообще там версия старая. И тогда я обнаружил что самая свежая версия MKS-овского UI спокойно себе живёт в официальном репозитории Marlin, с поддержкой WiFi модуля из коробки. Обрадовавшись, я сконфигурировал и залил её.
Но тут меня ждала засада: принтер временами пропускал шаги по оси Y и слои смещались друг относительно друга. Напечатать невозможно даже Benchy. Конечно, первая мысль - я умудрился что то испортить. Залил ванильную прошивку - проблема ушла. Накатил обратно марлин - снова появилась. Оказалось, что это известная проблема, наблюдаемая только на MKS Robin 1 и 2, только при включении LVGL_UI и только на 2-й версии Марлина. Обидно было до чёртиков. Потрачены 2 дня, полностью настроен марлин из репозитория, заработал linear advance, да и менюшка новая понравилась.
Расстроившись, я обнаружил сегодня новый комментарий в ветке обсуждения проблемы, который предлагал её решение: переконфигурировать марлин так, чтобы он поменял местами оси Y и E1, переткнуть драйвер и кабель... И всё, проблема ушла. Так что теперь я счастливый обладатель свежайшей версии Marlin 2.1 с отличным UI и всеми плюшками, которые были в ванильной прошивке медведя: возможностью настраивать wifi из меню (в версии Сергея такой возможности нет), иконка печатаемой детали, отсутствие постоянного мигания циферь (зачем в COLOR_UI так сделали?) ни и более приспособленным под TOUCH меню:
Конфигурируем Marlin
Похвастаться я успел, теперь (чтоб не забыть) выкладываю все изменённые настройки, которые сделал. И сам потом найду, и может кому-то ещё пригодятся. Настройки ищем по имени константы и меняем на значения ниже.
Я, разумеется, мог бы на пример Сергея, форкнуть свой репозиторий, но кто его поддерживать будет? Уже через полгода это будет репозиторий с крайне устаревшим Марлином. А регулярно ребейзиться и решать конфликты - желания нет никакого. Да и вообще - ванильная прошивка медведя вполне себе ничего. Ставить марлин стоит разве что ради того, чтобы сконфигурировать последний под себя. То есть возиться с конфигом. Считайте изложенное ниже скорее некоторым TODO. Что точно не стоит забывать сконфигурировать.
Файл platformio.ini
Тут ровно одно изменение:
default_envs = mks_robin_nano_v1v2
Файл Marlin/Configuration.h
Для феншуя пометим используемый принтер (я так и не увидел нигде эти надписи, но пусть будут)
#define STRING_CONFIG_H_AUTHOR "(Flying Bear Ghost 5, default config)"#define CUSTOM_MACHINE_NAME "Flying Bear Ghost 5"
Совершенно необходимые вещи:
#define MOTHERBOARD BOARD_MKS_ROBIN_NANO#define SERIAL_PORT 3#define TEMP_SENSOR_BED 1 // Без этого не будет нагреваться стол#define PIDTEMPBED // И без этого тоже#define X_MIN_ENDSTOP_INVERTING true // В медведе endstop-ы инвертированы.#define Y_MIN_ENDSTOP_INVERTING true#define Z_MIN_ENDSTOP_INVERTING true#define X_BED_SIZE 250 // Размеры стола, у меня кастомный экструдер отъел 5мм X#define Y_BED_SIZE 210#define SDSUPPORT // Поддержка карты. Без неё не заведётся
Меняем тип драйверов шаговиков (смотрите на то что у вас в медведе, а не сюда)
#define X_DRIVER_TYPE TMC2208_STANDALONE#define Y_DRIVER_TYPE TMC2208_STANDALONE#define E0_DRIVER_TYPE TMC2209_STANDALONE // Можно оставить A4988, если не поменяли
Теперь PID-ы (взял из настроек ванильки, можете подредактировать под себя)
#define DEFAULT_Kp 11.14#define DEFAULT_Ki 0.72#define DEFAULT_Kd 43.09#define DEFAULT_bedKp 40.68#define DEFAULT_bedKi 7.93#define DEFAULT_bedKd 139.15
Инверсии осей (если не что-то у вас будет крутиться не туда, меняйте)
#define INVERT_Y_DIR false#define INVERT_E0_DIR true
Настройка шагов
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80, 80, 400, 400} // Последнее значение экструдер
Я дополнительно поднял лимиты фидрейта, но это не обязательно
#define DEFAULT_MAX_FEEDRATE { 400, 400, 7, 45 }
И датчик филамента. Пришлось пойти на хакинг, так как марлин упирался (но в результате всё работает)
#define FILAMENT_RUNOUT_SENSOR#define FIL_RUNOUT_PIN PA4 // Это хак, его нужно дописать, в оригинальном файле этого нет#define FILAMENT_RUNOUT_SCRIPT "M25" // Второй кусок хака, но его меняем
А вот эти строки надо найти и раскомментировать:
#define MKS_ROBIN_TFT35 // Указываем тип используемого дисплея#define TFT_LVGL_UI // Включаем заветный UI#define MKS_WIFI_MODULE // Включаем поддержку WiFi модуля#define TOUCH_SCREEN // Возможность касаться экрана, без неё не будет реагировать на нажатия
Файл Marlin/Configuration_adv.h
Начнём с необходимого
#define E0_AUTO_FAN_PIN FAN1_PIN // Без этого не будут работать вентиляторы. И это ВАЖНО.
Также я скорректировал температуру включения/отключения вентилятора как в ванильке
#define EXTRUDER_AUTO_FAN_TEMPERATURE 70 // Так сделано в ванильной прошивке
Ну и ванильная возможность восстанавливаться при отключении питания мне тоже нравится
#define POWER_LOSS_RECOVERY#define PLR_ENABLED_DEFAULT true // Пусть всегда будет
Разумеется, Linear Advance!
#define LIN_ADVANCE#define ADVANCE_K { 0.05 } // У всех экструдеры разные. Моему больше подходит такое значение#define ADVANCE_K 0.05
Файл Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO_common.h
А теперь надо обойти косяк Марлина, который на момент написания статьи не поправлен. Да, одной перепрошивкой не обойтись. Надо открыть медведя и переместить шаговик оси Y в сокет для E1. И кабель тоже переткнуть. Ну а в файле меняем местами оси Y и E1:
#define E1_ENABLE_PIN PE1#define E1_STEP_PIN PE0#define E1_DIR_PIN PB9#define Y_ENABLE_PIN PA3#define Y_STEP_PIN PA6#define Y_DIR_PIN PA1
Еще больше интересных статей
Зачем нужен принтер
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Карандашница ПАЗ-672М
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Постобработки пост. Делаем из ABS грунт-порозаполнитель.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Если эксперимент удался, значит что-то здесь не...
Комментарии и вопросы
Жуть то какая получилась. Не,....
А не думали сделать подсветку....
Делов то. Найдите quicksurface...
Добрый вечер, господа!Какая-то...
Недавно заметил что при печати...
Какой принтер выбрать под печа...
Доброго дняВопрос по принтеру...