Умный принтер. Улучшая Octoprint

Разрабатывая открытый проект 4-х экструдерного принтера Z-Bolt, мы столкнулись с проблемой выбора экрана для управления принтером. Из имеющихся экранов лишь решение от Duet Wifi умеет управлять более чем 2-мя экструдерами. Решение, мягко говоря, не бюджетное, да и интерфейс на любителя. Так что мы решили поискать альтернативный вариант с преферансом и куртизанками. Эта история о нем…

image

На просторах интернета существует масса информации о применении Octoprint. Чуть больше чем пол года назад и мы стали пользователями данного решения, сразу оценив его преимущества. Возможность управления принтером через веб-лицо, действительно трудно переоценить. У Octoprint множество плагинов, а главное для нас — Octoprint отлично управляется с количеством экструдеров, большим чем 2. Но оставалось решить еще один вопрос.

Многие любители Octoprint уверенно утверждают, что экран им больше не нужен от слова “совсем”, что это абсолютно лишняя часть принтера, которая им только мешает.

Однако я убежден, что есть и другая часть пользователей OctoPrint. У всех свои привычки и требования к повседневному использованию 3D принтера, и есть операции выполнять которые удобнее, имея экран:

  • Замена филамента
  • Калибровка уровня стола
  • Запуск печати файла, который уже печатался раньше
  • Включение преднагрева принтера
  • Возможность увидеть статус печати

Сейчас экраном по умолчанию в принтерах Z-Bolt является MKS TFT. Можно поставить TFT24, TFT32 или TFT35. Это хорошие экраны, но они не умеют интегрироваться с Octoprint. Если Octoprint запустил печать, экран об этом ничего не будет знать. Они используют разные хранилища файлов и т.д. А еще экраны MKS TFT не хотят работать с 3х- и более -головыми 3д принтерами.

Передо мной обозначилась цель найти/сделать/настроить экран для Octoprint, способный управлять более чем 2-мя экструдерами.

Погуглив немного я наткнулся на плагин TouchUI.



Первое впечатление было: вот оно — решение!!!

Я сразу установил плагин и открыл Octoprint c телефона. Интерфейс TouchUI тупил :/. Иногда кнопки нажимались нормально, иногда тормозили, а порой и вовсе не нажимались с первого раза. С подключенного экране TouchUI вел себя также плохо как и с телефона.

Параллельно было найдено другое решение.



Описание обнадеживало, в отличии от TouchUI, это самостоятельное приложение, запускающееся без браузера, а значит требовавшее значительно меньше вычислительных ресурсов.

Установка и настройка проблем не вызвали. Интерфейс действительно работал намного предсказуемее и отзывчивее.



Но и тут не всё оказалось гладко. Приложение регулярно зависало при начале печати. На github’е нашелся issue по этой ошибке, созданный почти год назад и активно обсуждаемый, но не закрытый.

Основная проблема оказалось в том, что автор приложения, судя по всему, утратил к нему интерес и на данный момент больше не развивает.

Поскольку, на мой взгляд, приложение написано достаточно хорошо и имеет потенциал, было решено сделать “hard-fork” и взяться за проект основательно.

Вот что у нас получилось:

  • Подобраны оптимальные экраны для проекта
  • Сделан “hard-fork” от Octoprint-TFT
  • Пересмотрен взгляд на программно-аппаратную архитектуру принтера
  • Создана своя тема для интерфейса Octoprint

Но обо всем по порядку…

Выборы экранов


Мы начала с экрана TFT 3.5, который, мягко говоря, не выдержал никакой критики. Углы обзора никакие, картинка блеклая. Поэтому было решено подобрать более качественное решение.

Главными критериями были:

  • IPS матрица
  • размер 4 — 5 дюйма
  • емкостной экран (желательно)
  • приемлемая цена

В итоге остановились на двух вариантах:

1. Вариант попроще. 4’’ IPS резистивный Touchscreen



2. Вариант побогаче. 4.3’’ IPS емкостной Touchscreen


Оба экрана имеют разрешение 800х400. У обоих великолепная картинка, цветопередача и угол обзора. Главное их отличие — это емкостной touchscreen. К нему (как и ко всему хорошему) очень быстро привыкаешь и пользоваться им намного приятнее, чем резистивным. Тем не менее, экран с резистивным touchscreen’ом также вполне жизнеспособен.

Это Hard-Fork, детка!




Приложение было серьезно доработано. И почти перестало напоминать своего родителя. Поэтому (а также потому, что создатель Octoprint-TFT официально заморозил развитие своего детища) было принято решение сделать hard-fork и назвать новый проект Octoscreen.

  • В первую очередь была полностью устранена проблема зависания экрана, которой страдал Octoprint-TFT.
  • — Заметно изменился дизайн и компоновка:

  • Экран научился понимать состояния принтера (ожидание/печать):

  • Добавлена функция быстрого преднагрева/выключения нагрева по нажатию на значок экструдера или стола, при этом экран подсвечивает статус:

  • Добавлен экран ручной калибровки стола:

  • Пункт “Menu” вынесен на отдельный экран:

  • Добавлена функция управления WiFi:

  • Само приложение теперь поддерживает до 4-х экструдеров, собственно для чего оно и создавалось:


Скачать приложение и найти краткую инструкцию по установке можно с нашего GitHub.

Также есть подробная инструкция под экран 3.5, за что отдельное спасибо нашему соратнику Денису (@negativ72rus).

Пересмотр взглядов на программно-аппаратную архитектуру принтера или переобувание на ходу




Изначально мы планировали использовать Marlin в нашем многоэкструдерном принтере, однако в итоге выбор пал на Klipper. Причин несколько:

1. Одна из главных для нас, как разработчиков, причина — это его гибкость. Marlin и его “макаронный” код делают настоящим вызовом процесс внесения в него доработок, а тем более их дальнейшую поддержку.

Klipper в этом плане полная противоположность Marlin. Во-первых все конфигурирование Klipper вынесено из программного кода. Сам код хорошо структурирован. Но что самое важное, Klipper предусматривает модульность!!! Можно добавлять свою логику в прошивку, не внося изменение в ее ядро, и тем самым колоссально упрощать дальнейшую поддержку своего кода.

2. Всю настройку прошивки можно осуществляется прямо через web интерфейс OctoPrint. И при этом возможности настройки на много мощнее чем у Marlin или Smootheiware.

3. Как же тут не сказать о битах, за которыми в последнее время все гонятся )). Сама архитектура Klipper предполагает, что вычислительная нагрузка ложится на Raspberry PI. Функция платы управления MKS Gen L (в случае с принтерами Z-Bolt) остается в передаче сигналов к/от периферии (двигателям, сенсорам, нагревателям, элементам управления).

А ведь Raspberry Pi 3 Model B+ оснащен 64-х битным, 4-х ядерным чипом Broadcom BCM2837B0 A53 1.4GHz.

По сути Octoprint + Klipper, запущенные на Raspberry Pi + тот же MKS Gen L —
на порядок более функциональное и прогрессивное решение, чем Marlin, запущенный на каком-нибудь 32-х битном чипе.

Конфигурационные файлы для Klipper’а под принтеры Z-Bolt также можно найти тут.

Небольшой бонус напоследок!


Так же мы сделали свою тему для интерфейса Octoprint:



Шапку можно настроить нативным пунктом выбора цвета в разделе Appearance:



Инструкция как установить тему вы можете найти у нас на GitHub.

Пишите в комментариях, какие функции экрана вы считаете наиболее полезными и необходимыми к добавлению.

Всем добра, позитива и хорошего обдува нависающих элементов!
Поделиться публикацией

Комментарии 22

    0
    Просто взгляд со стороны, так зачем нужен экран то?

    Обычный мобильный телефон в любом месте становится тем самым экраном с полным доступом и не привязанный проводом к принтеру. Так что еще раз вопрос, а зачем собственно столько усилий ради ненужного?
      +3
      Собственно о назначении экранов написано в самом начале статьи. А усилия ради тех немалочисленных пользователей, которые придерживаются другой точки зрения ;)
        0
        Обычный мобильный телефон в любом месте становится тем самым экраном

        Положил комментарий в закладки — чтобы лет так через 10 зайти, поржать.

        +1
        как к Raspberry Pi подключить железо 3D принтера?
          0
          У меня Pi Zero c Wifi на борту этим занимается. Как раз обеспечивает удаленный интерфейс с компьютером. Принтер подключаетсяся по USB.
            0
            Железо принтера подключется к материнке принтера (контроллер MKS у автора, а чаще всего это Arduino Mega + шилд с шаговыми драйверами и силовой обвязкой). А Малинка по UART или USB/UART.
              0
              А на плате MKS у автора проприетарная прошивка? Просто если эти платы могут печатать без Raspberry Pi, тогда зачем он нужен? Какова функция klipper'a? С Марлином имел дело, это прошивка для Arduino Mega, которая позволяет автономно вести печать, при наличии экрана и карты памяти. Возможно все эти вопросы не к Вам. Но после прочтения статьи, у меня осталось вопросов больше, чем ответов.
                0

                Абсолютно все популярные контроллеры позволяют работать автономно, также, как вести печать с компьютера (ПК или ардуино, не суть). Платы типа MKS — это просто функциональный аналог Mega+RAMPS на одной плате (2 в 1).

                  0
                  Так а для чего тогда Raspberry Pi и kepller? Только для веб интерфейса загрузки G-code?
                  +1
                  Для управления принтером используется Klipper: github.com/KevinOConnor/klipper
                  Это решение с открытым исходным кодом, аналог Marlin, Repeater или Smoothieware. Главное отличие данного решения является то, что основная логика прошивки выполняется не на чипе Atmega2560 (который стоит на MKS), а на гораздо более производительном Raspberry PI. MKS же в данном случае выполняет роль своего рода платы расширения.
                  При этом интерфейсом управления принтером становится Octoprint. Если раньше не сталкивались с этим приложением, очень рекомендую почитать о нем. Это не просто веб интерфейс чтобы запустить печать. Это приложение не просто имеет богатую функциональность, но к нему разработанно множество плагинов, которые устанавливаются. К нему также можно достаточно просто подлючать веб камеру. Например я активно использую плагин для интеграции принтера c Teлеграммом, когда ты не дома это позволяет через чат бота получать информацию как проходит печать с фото. Можно запускать, останавливать печать. Можно снимать крутые timelaps (типо таких www.instagram.com/p/Bz2lxG5nGko). И еще очень много всего.

                    0
                    Спасибо огромное за развернутый ответ! А в Atmega2560 в таком случае какая стоит прошивка?
                      +1
                      На Atmega2560 устанавливается «вторая половна» клиппера. Важный момент, что в отличии от Marlin все настройки прошивки выполняются не в исходных кодах, а в отдельном текстовом конфигурационном файле которые можно править прямо через веб интерфейс без перезаливки прошивки.
                        0
                        Вот теперь все стало на свои места и стала понятна роль каждого из компонентов.
                      +1
                      По сути Octoprint + Klipper, запущенные на Raspberry Pi + тот же MKS Gen L —
                      на порядок более функциональное и прогрессивное решение, чем Marlin, запущенный на каком-нибудь 32-х битном чипе.


                      Мкс на 8 шд бывают? все что знаю на 6-8шд 32 бита
                        0
                        Отличный вопрос!
                        Все верно, MKS Gen L на 6 шаговых двигаталей. И тут открывается еще одно приемущество клиппера.
                        Клиппер может использовать одновремннно несколько плат MKS Gen L, т.е. по факту в многоэкструдерном принтере Z-Bolt управление осуществляется одной платой Raspberry Pi и двумя платами MKS Gen L.
                0
                Насколько жёстко количество экструдеров ограничено четырьмя штуками? Есть ли возможность увеличить количество до желаемого пользователем? В том же Prusa MMU2, например, реализована печать одной головой с автосменой филамента из пяти катушек. Да и сами Octoprint/Klipper не ограничены в количестве экструдеров.
                  0
                  Количество экструдеров ограничено скорее самим дизайном интерфейса. Я пока не смог придумать как всунуть в него неограниченно кол-во экструдеров, без ущерба для 99% принтеров у которых не более 2-х экструдеров. Если есть мысли на этот счет, буду обсудить ;)
                    0

                    Первое, что приходит на ум, это сделать страницы. Внизу, слева и справа от пиктограммы стола, добавить стрелки, которые переключают на следующую/предыдущую группу инструментов. А для 99% можно брать количество инструментов из конфига Клиппера, и не отрисовывать эти стрелки, тем самым облегчая интерфейс для одно-четырёхголовых сборок.

                      0
                      Да, можно будет подумать в этом направлении.
                        0

                        Если уж совсем удариться в наркоманию, то можно вспомнить о больших многозонных столах, где вся площадь делится на несколько участков, каждый со своим нагревателем и датчиком температуры. Такое Octoprint/klipper тоже умеют.

                          0
                          Ого! А можно ли тут поподробнее =). Не слышал о таких раньше?
                  0
                  -

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое