¶ Klipper Flying Bear Ghost 4S / Ghost 5 / Reborn How-To
Это руководство в основном посвящено прошивке Klipper на принтерах Flying Bear (далее FB) ревизий Ghost 4S и Ghost 5 (далее FBG), Flying Bear Reborn (далее FBR) и всему, что сопутствует: оборудованию, ПО и настройкам.
¶ Быстрый переход на ключевые разделы
¶ Вступление
В принтеры FB Ghost 4S и Ghost 5 (до середины 2021 года) устанавливалась 32-битная управляющая плата Flying Bear Reborn V2.0, которая является ребрендом платы MKS Robin Nano 1.1 (ссылка на схемы). Её микроконтроллер занимается обработкой команд G-code и управлением принтером.
В последнее время принтеры FB поставляются с платами MKS Robin Nano V1.3 на процессоре STM32F103 (в последнее время не встречаются), MKS Robin Nano V1.3 на STM32F407 со съёмными драйверами TMC2225 и MKS Robin Nano-S V1.3 на STM32F407 с распаянными драйверами.
FB, как многие другие принтеры, используют прошивку Marlin для управления печатью. Все вычисления, необходимые для подачи команд шаговым двигателям для передвижения экструдера и подачи пластика, производятся микроконтроллером управляющей платы принтера (далее MCU). Marlin читает G-code из файла и конвертирует в команды шаговым двигателям. Преимущества такой конфигурации в малом количестве отдельных узлов, что упрощает схему и увеличивает надёжность.
Если к управляющей плате на Marlin подключить Raspberry Pi (далее Pi) и запускать печать через Octoprint, то передача G-code происходит между Pi и MCU, а конвертация кода в шаги всё равно должна происходить на микроконтроллере принтера. Преимущества такой связки в том, что на Pi можно проводить модификацию кода перед отправкой, что обеспечивается богатой функциональностью Octoprint и его плагинов (например, можно блокировать печать отдельных деталей уже в процессе). Но недостатком такой связки является то, что вычислительные мощности Pi используются недостаточно, а нагрузка на MCU остаётся такой же, как и при обычной печати. Иногда в такой связке возникают ситуации, когда Octoprint шлёт слишком много команд со сложным перемещением в течение короткого периода, в результате чего MCU не успевает их обработать, что приводит к переполнению буфера и дефектам печати. На FB эффект этих проблем можно уменьшить корректными настройками кастомного Marlin. Цепочка взаимодействия в этом случае:
В случае Klipper все вычисления и конвертация G-code в шаги перенесены на Pi, на которую ложится почти вся нагрузка, а микроконтроллер управляющей платы является просто мостом для передачи команд на передвижение между Raspberry Pi и шаговыми двигателями. Преимущества такой связки в том, что Pi гораздо мощнее любой MCU. Цепочка взаимодействия следующая:
Наибольший эффект от переноса вычисления с MCU на Pi наблюдается на старых 8-битных платах. Например, 8-битный RAMPS может выполнять более 100 тысяч шагов в секунду на Klipper и всего около 10 тысяч на Marlin.
¶ Мощность
Мощности современных 32-битных управляющих плат, в том числе и MKS Robin Nano 1.1 хватает для скоростной обработки G-code. Поэтому при переводе FB на Klipper вы не получите прироста скорости печати именно за счёт скорости конвертации в шаги. Разве что вы собираете принтер типа VORON с семью одновременно двигающимися шаговыми двигателями.
¶ Управление
Одно из удобств Klipper — управление через веб-интерфейс. Либо мощный, но неповоротливый Octoprint, либо быстрый и отзывчивый Fluidd/Mainsail, который потянут даже старые телефоны и планшеты. Правка настроек Klipper доступна через веб-интерфейс и не требует перепрошивки принтера.
В принципе, это в значительной мере компенсирует то, что Klipper поддерживает далеко не все дисплеи. Навороченные тач-дисплеи, как на FB или те, что обладают собственными контроллерами и прошивками, как на FBG 4 (без S). Поддерживаются такие дисплеи, как 12864.
¶ Алгоритмы
Look-ahead. Алгоритм изучает последовательность сразу нескольких команд G-code и учитывает характер нескольких будущих перемещений. Smoothed look-ahead сглаживает скорость коротких зигзагообразных движений.
Pressure Advance — аналог Linear Advance на Marlin и Pressure Advance на RepRap. Чтобы избежать мгновенных изменений скорости движения экструдера в алгоритм добавлено сглаживание — Smooth Pressure Advance. Это улучшает результат печати, углы печатаются чётче и с меньшим количеством наплывов.
Также у SPA нет проблемы с зависанием драйвера TMC2208 на экструдере, которая возникает в Marlin.
Специфический для Klipper алгоритм — Input Shaping. Гасит вибрации, что позволяет печатать на бóльших скоростях и ускорениях с меньшим количеством проблем, которые возникают из-за резонансных колебаний экструдера, таких как звон/эхо/т.д.. Настроить можно не только с помощью тестовой печати, но и подключив акселерометр к Pi.
Итак, к преимуществам Klipper можно отнести
- Веб-интерфейс
- Вычислительная мощность
- Input Shaping
- Качественная печать на скоростях и ускорениях больше, чем в Marlin
- МАКРОСЫ.
К ощутимым недостаткам Klipper можно отнести
- стоимость дополнительного оборудования (Pi)
- отсутствие поддержки дисплеев
- требуются некоторые навыки работы в терминале и понимание общей специфики Linux
В итоге, с одной стороны вы получите качественную печать на больших скоростях, с другой стороны пожертвуете экраном и деньгами. Комьюнити Marlin самое большое, в то время как комьюнити Klipper только набирает темпы роста. Поэтому переход на Klipper я бы рекомендовал только энтузиастам.
Изменения в руководстве (летопись ведётся не с самого начала
):
Источник
Flyingbear ghost 5 замена драйверов
Marlin 3D Printer Firmware for Flying Bear 4S and 5
Это конфигурация официального Marlin для принтера Flying Bear Ghost 4S и 5 (плата MKS Robin Nano 1.x).
Эта ветка содержит дополнительный код для работы с модулем MKS WIFI, установленным в FB4S и FB5. Загрузка файлов через стандартный plugin в Cura.
Прошивка работает на принтерах Flying Bear Ghost 4S и 5. Экран работает. WIFI работает.
Если у вас есть какие-то вопросы по настройке прошивки или по ее использованию, вы можете задать свой вопрос в telegram группе.
MKS WIFI модуль
- Отображение температуры в Cura
- Просмотр содержимого SD карты
- Удаление файлов с SD карты
- Загрузка файлов на SD карту
- Автоматический запуск печати при загрузке файла.
- Настройка WIFI модуля (сеть и пароль)
- Имена файлов на русском Переименуйте файл в Cura
- Работает только с картами стандарта SD card v2.0 и новее. Это все карты от 1Гб и больше.
- Отображение состояния принтера (печатает, не печатает) в Cura
Как работает, как настроить
Если вас устраивает типовой вариант конфигурации, можно взять готовые файлы прошивки можно в разделе Releases
Вернуть стандартную прошивку можно в любой момент. Просто запишите ее на SD и включите принтер.
Для настройки под свои нужды, прошивку нужно собрать самостоятельно.
Первое, что нужно сделать, после прошивки
Первое, что нужно сделать после прошивки, это проинициализировать EEPROM (память внутри принтера), сбросив настройки по-умолчанию. После прошивки там находится мусор, который может привести к совершенно необъяснимому поведению.
Делается это через меню Configuration -> Advanced settings -> Initialize eeprom.
Как собрать прошивку самому
Нужная плата, Robin Nano, уже выбрана в качестве платы по-умолчанию. В меню Platformio можно не выбирать плату, а использовать сочетание клавиш Ctrl+Alt+B.
После компиляции, готовая прошивка лежит в .pio/build/mks_robin_nano35/Robin_nano35.bin
На SD карту нужно записывать именно Robin_nano35.bin, а не firmaware.bin
Что нужно настроить, если собираете сами
Нужно настроить направления движения по осям под свои драйвера в файле Configuration.h (параметры INVERT_?_DIR, строка 1125).
По умолчанию стоят настройки под драйвера 2208/2209 на всех осях. В файле Configuration.h уже есть несколько готовых наборов настроек:
- ALL_DRV_2208 — если установлены драйвера TMC 2208 или TMC 2209 на всех осях
- FB_4S_STOCK — если установлены драйвера A4988 на всех осях. Это конфигурация для FB4S с стандартными драйверами.
- FB_5_STOCK — конфигурация для FB 5 (2208 на осях X,Y и A4988 на Z,E)
В строке 1098 нужно выбрать только один из вариантов:
Настройки WIFI, если вы используете готовую прошивку
Настройки сети хранятся в самом ESP-модуле. Есть несколько вариантов настройки:
- Если модуль уже был настроен, то возможно никакая настройка не понадобится
- Если модуль не был настроен, либо по какой-то причине не смог подключиться к сети, то он запустится в режиме точки доступа с именем сети MKSWIFI. (вместо ? будут произвольные символы). Подключитесь к этой сети, откройте страницу по адресу 192.168.4.1 и установите нужные настройки сети.
- Если вы собираете прошивку сами, есть возможность передать модулю настройки при запуске. Для этого в файле mks_wifi_settings.h можно задать параметры WIFI сети. Для того, чтобы эти настройки применялись при включении, «MKS_WIFI_ENABLED_WIFI_CONFIG» должен быть включен.
При успешном подключении к сети (или создании сети в режиме точки доступа) в стандартный UART, который выведен на USB разъем принтера, будет выведен IP адрес и название сети, а так же IP адрес будет отображен на экране принтера.
Как понять, что WIFI работает
При включении принтера, на экране отобразится статус «WIFI init»
Если ESP модулю удалось подключиться к сети, на экране будет IP адрес.
При старте передачи файла отображается «Upload file», в процессе загрузки отображается прогресс в процентах.
Если файл успешно принят отобразится «Upload done» и прозвучит один звуковой сигнал
Если во время приема файла были ошибки, отобразится надпись «Upload Failed» и прозвучит три звуковых сигнала
Отключение кода связанного с WIFI модулем
Для отключения всего кода, который связан с WIFI модулем нужно в файле Marlin/src/pins/stm32f1/pins_MKS_ROBIN_NANO.h отключить «#define MKS_WIFI». После этого в коде останутся только несколько незначительных изменений, которые не должны влиять на стабильность работы. Если нужен абсолютно чистый код, без каких либо изменений, взять его можно из оффициального репозитория Marlin и использовать файлы Configuration.h и Configuration_adv.h как образец.
Без использования опции «firmware retract» слайсер делает ретракты командами движения G1. В том месте, где нужно выполнить ректракт вставляются команды:
Для ректрактов в Marlin поддерживаются специальные команды — G10 и G11. В слайсере нужно включить поддержку firmware retract и тогда в том месте, где нужно «откатить» пластик будет вставлена команда G10, а там, где нужно его вернуть G11. Если никакие дополнительные параметры не установлены, будут использованы параметры из прошивки (2мм, 35мм/с).
Установить параметры можно командами M207 и M208.
Для того, чтобы можно было настраивать ретракт в слайсере, в стартовый код нужно добавить M207. Как правило, слайсеры позволяют добавить макрос в качестве параметров команды.
Firmware retract позволяет изменять значения ректракта из меню принтера прямо во время печати.
В Marlin есть функция автоматического распознования ректрактов командами G1 и замена их на G10/G11. Это функция отключена.
Если в слайсере не включена поддержка firmware retract, все будет работать как обычно.
По-умолчанию прошивка настроена на работу с драйверами шаговых двигателей без программного управления. В случае применения драйверов TMC 2209 или TMC 2208 можно включить управление по UART. Подробнее о настройке и подключении.
На FB4S установлена плата MKS Robin Nano v.1.1. На плате установленно 2 микросхемы флеш памяти: AT24C16 (2кб, подключена по I2C) и W25Q64 (подключена по SPI).
Размер данных, которые сохраняются в EEPROM зависит от включенных опций. При сохранении настроек командой M500, в ответе есть размер сохраняемых данных.
В качестве места хранения EEPROM в Marlin доступны несколько вариантов:
- SD карта
- I2C EEPROM. Этот вариант не используется, драйвер отключен.
- SPI_EEPROM. Хранение в W25Q64BV подключенной по SPI. Этот вариант используется по-умолчанию.
- FLASH_EEPROM_EMULATION. Это хранение EEPROM в flash памяти STM32. Этот вариант не работает.
- SRAM_EEPROM_EMULATION. Этот вариант не работает.
Для включения в Configuration.h в разделе EEPROM нужно указать нужный define. Возможные варианты указаны в комментарии. Пример:
Для изменения места хранения EEPROM нужно заменить «#define EEPROM_W25Q» на другой вариант.
Загрузка прошивки по WIFI
Есть возможность отправлять прошивку на принтер через WIFI. Для этого в файле platformio.ini в разделе [env:mks_robin_nano35] нужно указать IP адрес принтера в опции upload_flags.
Передача файла происходит при помощи curl, поэтому надо или добавить curl в $PATH, либо указать полный путь в файле mks_robin_nano35.py в строке 43.
После настройки, для отправки прошивки на принтер, в меню platformio нужно выбрать Upload или нажать Ctrl+Alt+U.
После успешной передачи файла принтер перезагрузится автоматически.
Выбор графического интерфейса
В коде Marlin есть 3 варианта графического интерфейса, которые работают на FB4S и FB5. Для выбора интерфейса нужно выбрать тип экрана и тип интерфейса в Configuration.h, в разделе Graphical TFTs (около 2270 строки).
Для экрана на FB4S и FB5 тип экрана — MKS_ROBIN_TFT35:
Есть 3 варианта интерфейса, которые можно выбрать:
- Классический Marlin, «текстовый» интерфейс. Включение:
- Новый, графический интерфейс, расчитанные под тач-экраны:
- Графический интерфейс от MKS. Подробнее про сборку этого варианта. У компании Makerbase также есть своя прошивка на Marlin 2.0
WIFI модуль, отправка команд и файлов
Для отправки команд и файлов на принтер не обязательно использовать Cura. Для отправки можно использовать простые инструменты — curl и netcat.
Для отправки команд используется tcp socket на порт 8080. Пример с netcat:
Вместо netcat можно использовать telnet.
Можно отправлять g-код команды, и получать ответ.
Для отправки файлов можно воспользоваться curl:
- sd_file.gcode — имя файла под которым будет сохранение на sd карте
- local_file.gcode — имя файла для отправки
В данном примере на принтер с IP 192.168.0.105 будет отправлен файл local_file.gcode, который будет сохранен на sd карте под именем sd_file.gcode
Загрузка настроек в EEPROM из файла
При обновлении прошивки рекомендуется делать сброс настроек к значению по-умолчанию и устанавливать их заново. Для того, чтобы не делать это при каждом обновлении вручную, можно создать на sd карте файл с нужными командами и просто запускать его на печать. Пример файла с настройками:
Отслеживание состояния печати по WIFI
Во время печати прием данных от WIFI модуля отключен. Это сделано для того, чтобы в очередь команд не попал никакой мусор от от esp. Однако в обратную сторону, от МК к esp, передача работает. Поэтому если нужно отслеживать состояние печати удаленно, в стартовый код нужно добавить команду M155 для отображения температуры и M27 для отображения прогресса печати в байтах. В этом случае МК сам, через указанное в параметрах количество секунд, будет слать отчеты. Получать их можно подключившись к сокету на порт 8080. Модуль MKS WIFI поддерживает только одно соединение одновременно, поэтому Cura должна быть закрыта.
Для получения информации о текущей высоте, нужно добавить пост-процессинг в слайсере. В Cura это можно сделать в Extentions->Post processing->Modify G-code. Добавить скрипт на «Insert at layer change» и команду M114.
Источник