На просторах интернета существует масса информации о применении 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)
Diordna
18.07.2019 00:27как к Raspberry Pi подключить железо 3D принтера?
Orange11Sky
18.07.2019 04:17У меня Pi Zero c Wifi на борту этим занимается. Как раз обеспечивает удаленный интерфейс с компьютером. Принтер подключаетсяся по USB.
safari2012
18.07.2019 18:25Железо принтера подключется к материнке принтера (контроллер MKS у автора, а чаще всего это Arduino Mega + шилд с шаговыми драйверами и силовой обвязкой). А Малинка по UART или USB/UART.
Superl3n1n
19.07.2019 11:46А на плате MKS у автора проприетарная прошивка? Просто если эти платы могут печатать без Raspberry Pi, тогда зачем он нужен? Какова функция klipper'a? С Марлином имел дело, это прошивка для Arduino Mega, которая позволяет автономно вести печать, при наличии экрана и карты памяти. Возможно все эти вопросы не к Вам. Но после прочтения статьи, у меня осталось вопросов больше, чем ответов.
safari2012
19.07.2019 15:28Абсолютно все популярные контроллеры позволяют работать автономно, также, как вести печать с компьютера (ПК или ардуино, не суть). Платы типа MKS — это просто функциональный аналог Mega+RAMPS на одной плате (2 в 1).
Superl3n1n
19.07.2019 15:52Так а для чего тогда Raspberry Pi и kepller? Только для веб интерфейса загрузки G-code?
Axy Автор
20.07.2019 00:15+1Для управления принтером используется Klipper: github.com/KevinOConnor/klipper
Это решение с открытым исходным кодом, аналог Marlin, Repeater или Smoothieware. Главное отличие данного решения является то, что основная логика прошивки выполняется не на чипе Atmega2560 (который стоит на MKS), а на гораздо более производительном Raspberry PI. MKS же в данном случае выполняет роль своего рода платы расширения.
При этом интерфейсом управления принтером становится Octoprint. Если раньше не сталкивались с этим приложением, очень рекомендую почитать о нем. Это не просто веб интерфейс чтобы запустить печать. Это приложение не просто имеет богатую функциональность, но к нему разработанно множество плагинов, которые устанавливаются. К нему также можно достаточно просто подлючать веб камеру. Например я активно использую плагин для интеграции принтера c Teлеграммом, когда ты не дома это позволяет через чат бота получать информацию как проходит печать с фото. Можно запускать, останавливать печать. Можно снимать крутые timelaps (типо таких www.instagram.com/p/Bz2lxG5nGko). И еще очень много всего.
Superl3n1n
20.07.2019 00:19Спасибо огромное за развернутый ответ! А в Atmega2560 в таком случае какая стоит прошивка?
Axy Автор
20.07.2019 00:43+1На Atmega2560 устанавливается «вторая половна» клиппера. Важный момент, что в отличии от Marlin все настройки прошивки выполняются не в исходных кодах, а в отдельном текстовом конфигурационном файле которые можно править прямо через веб интерфейс без перезаливки прошивки.
Superl3n1n
20.07.2019 00:44Вот теперь все стало на свои места и стала понятна роль каждого из компонентов.
Diordna
20.07.2019 03:02По сути Octoprint + Klipper, запущенные на Raspberry Pi + тот же MKS Gen L —
на порядок более функциональное и прогрессивное решение, чем Marlin, запущенный на каком-нибудь 32-х битном чипе.
Мкс на 8 шд бывают? все что знаю на 6-8шд 32 битаAxy Автор
20.07.2019 08:31Отличный вопрос!
Все верно, MKS Gen L на 6 шаговых двигаталей. И тут открывается еще одно приемущество клиппера.
Клиппер может использовать одновремннно несколько плат MKS Gen L, т.е. по факту в многоэкструдерном принтере Z-Bolt управление осуществляется одной платой Raspberry Pi и двумя платами MKS Gen L.
Broken047
20.07.2019 00:15Насколько жёстко количество экструдеров ограничено четырьмя штуками? Есть ли возможность увеличить количество до желаемого пользователем? В том же Prusa MMU2, например, реализована печать одной головой с автосменой филамента из пяти катушек. Да и сами Octoprint/Klipper не ограничены в количестве экструдеров.
Axy Автор
20.07.2019 00:17Количество экструдеров ограничено скорее самим дизайном интерфейса. Я пока не смог придумать как всунуть в него неограниченно кол-во экструдеров, без ущерба для 99% принтеров у которых не более 2-х экструдеров. Если есть мысли на этот счет, буду обсудить ;)
Broken047
20.07.2019 00:39Первое, что приходит на ум, это сделать страницы. Внизу, слева и справа от пиктограммы стола, добавить стрелки, которые переключают на следующую/предыдущую группу инструментов. А для 99% можно брать количество инструментов из конфига Клиппера, и не отрисовывать эти стрелки, тем самым облегчая интерфейс для одно-четырёхголовых сборок.
Axy Автор
20.07.2019 00:44Да, можно будет подумать в этом направлении.
Broken047
20.07.2019 01:00Если уж совсем удариться в наркоманию, то можно вспомнить о больших многозонных столах, где вся площадь делится на несколько участков, каждый со своим нагревателем и датчиком температуры. Такое Octoprint/klipper тоже умеют.
rPman
Просто взгляд со стороны, так зачем нужен экран то?
Обычный мобильный телефон в любом месте становится тем самым экраном с полным доступом и не привязанный проводом к принтеру. Так что еще раз вопрос, а зачем собственно столько усилий ради ненужного?
Axy Автор
Собственно о назначении экранов написано в самом начале статьи. А усилия ради тех немалочисленных пользователей, которые придерживаются другой точки зрения ;)
Wesha
Положил комментарий в закладки — чтобы лет так через 10 зайти, поржать.