3D-принтер “Marsh Turret”. RPi + OctoPrint.
На стадии проектирования принтера, оборудование его микрокомпьютером Raspberry Pi c установленной на него системой OctoPrint, рассматривалось с двух принципиально разных позиций. В одном случае, эта добавка могла быть “центровой” и весь остальной электронный обвес принтера стал бы её периферией (включая и основной контроллер). Принтер в принципе не мог бы функционировать без этой системы (т.к., в этом случае, OctoPrint взял бы на себя все функции интерфейса, а “родной” экран-с-крутилкой был бы упразднён). В другом случае, добавка из микрокомпьютера не реализуется, как “центровая” и, в свою очередь, сама становится периферией, обеспечивающей дополнительные возможности.
По первому сценарию (когда Raspberry Pi + OctoPrint становятся основными элементами принтера) работала Чёрная Вдова. Хотя у неё ещё и оставался родной экран, как рудимент исходной фабричной комплектации, но пользоваться им было уже почти невозможно т.к. даже его слот для карты памяти через которую принтер получал бы файлы для печати, был недоступен с внешней стороны корпуса. Информация же, которую он отображал, вообще мало соответствовала действительности. Из-за того, что в оригинальной прошивке от TEVO была отключена обратная связь контроллера и он мог только тупо выполнять “приказы” поступающие в порт, не пытаясь их “осмысливать” и рисовать результаты на своём экране. Все управление и контроль осуществлялись исключительно через малину и её интерфейс.
Сама же Raspberry Pi cо своим большим сенсорным экраном, встроенным SSD и прочими ништяками, имела внушительный вид взаправдашнего компьютера:
Она могла не только принтером управлять и видео с его камеры в интернет стримить, но ещё и была нашпигована всяким совсем уж запредельно адовыми заморочками, типа встроенного онлайн-радио со стереосистемой (вдруг решу музыку послушать), торрент-качалкой (ну а, фигли – пока печатает сутками, может параллельно и качнуть чтонть) и т.п… Можно было даже киношку посмотреть… HTTP-сервер, опять же… Мнда…
Вы будете смеяться, но был момент, когда я туда ещё и микрофон впердолил, научив малину выполнять голосовые команды, типа “Preheat for PLA/ABS” или “Start/Stop/Pause” и т.п. Но потом это было отключено т.к. малине было тяжело так жить на уровне процессора и она, либо игнорировала команды, либо лагала видео, либо вообще останавливала печать на несколько секунд о чем-то думая внутри себя…
Интерфейс, написанный под это дело, внушал трепет и наносил существенный урон любому неподготовленному сознанию, оказавшемуся случайно у меня в гостях:
Чего уж стесняться… При таком бортовом компьютере, не то, что функции управления печатью стали не совсем основной функцией прибора – сам весь принтер целиком превратился в не более чем декоративную подставку для этой малины.
Не могу внятно объяснить, как оно до этого всего дошло… Сперва мне просто хотелось, чтобы принтер показывал картинку со встроенной камеры не только куда-то во вне, но и прямо у себя на борту. А потом… Как говорится, “но Донцову было уже не остановить” …
В случае с Болотной Турелью, обдумав все на трезвую голову, было решено не следовать по тому же пути. Пускай малина теперь будет сугубо утилитарной сервисной вещью исключительно для принтера. Сетевым интерфейсом с расширенными возможностями, как то и было задумано разработчиками октопринта. Никаких дисплеев и тачскринов с wow!-интерфейсом, никаких SSD, никаких программ и скриптов, кроме необходимых принтеру для работы. Одна голая малина, октопринт и камера.
Тем не менее, из прошлого опыта была заимствована одна полезная идея: крепление камеры на оси Z, которое позволяло ей подниматься по мере “роста” детали на столе. Т.о. в поле зрения всегда оказывается печатаемый слой крупным планом и не возникает ситуаций, когда оно уползает куда-то за кадр и перестаёт быть полезным с точки зрения контроля процесса. Это решение тогда оказалось на удивление удачным и его имело смысл воплотить в составе Турели.
Итого, малина и камера в минимальной комплектации:
Размещение малины на той же оси Z, обусловлено тем, что на этот раз было решено использовать не переделанную писюковую вебкамеру, а нормальную “родную” камеру для малины с широкоугольным объективом:
При всех своих достоинствах, есть у неё и недостаток: широкий хрупкий шлейф, который мне совершенно не хотелось тянуть через два гибких канала до секции рамы, где малина могла бы быть закреплена стационарно:
Долго такой шлейф не проживёт в режиме постоянного сгибания-разгибания. К сожалению, не удалось найти вариант такого шлейфа в виде простого многожильного кабеля достаточной длины. Не уверен, что оно вообще в природе есть. Делать же такой кабель самому, показалось слишком утомительным. Тем более, что разместить малину в непосредственной близости от камеры не мешало совершенно ничего, а проблем это решало… сразу все.
Понятно, что питание для малины и USB-кабель, через который она управляет контроллером принтера, пришлось таки пробрасывать через гибкие каналы для электропроводки по всем осям до самого блока питания в раме. Но эти провода – не хрупкая ленточка толщиной с волос. Это обычные кабели, достаточно устойчивые к многократным сгибаниям-разгибаниям в процессе работы принтера, так что для них это нормальная ситуация.
Чтобы ещё больше упростить задачу, для малины было решено даже корпус не делать. Вместо него был использован радиатор, выполняющий ту же функцию:
Этот корпус-радиатор (полностью алюминиевый), закрывает все внутренности малины, да ещё и вентиляторы на борту имеет. Т.е. реально не нужно ничего больше делать вообще! Просто вкрутить четыре винтика и подать питание. Просто, надёжно, прохладно.
Кстати, саму малину было решено установить третьей версии. Точно такая же была у Вдовы, управляя её безумным зоопарком. И прекрасно его тянула, если я уж совсем не перегибал палку в приступах “креатива”. Для реализации одних только функций октопринта – трёшки хватает заглаза! Поэтому было решено отказаться от закупки новой “четвёрки”, а сэкономленные на этом несколько десятков енотов из бюджета проекта были перенаправлены на покупку хорошей “руки” для камеры.
В качестве “руки” для камеры был выбран гибкий модульный канал от Loc-Line:
Исходно, такие каналы служат для подачи жидкости или воздуха в область работы инструмента (чаще всего в различного рода станках, гравёрах и т.п.). Но самоделкины давно уже освоили эти модульные каналы в своем творчестве и лепят из них все подряд. От настольных светильников и “третьей руки” для пайки, до подставок под фотографии и манипуляторов к роботам.
С самого начала проект шёл настолько гладко, что Судьба решила хоть где-то устроить мне приключение. В Планах я видел “руку” для камеры, собранную из черных сегментов. Они же и были заложены в модель:
В реальности же, модули чёрного цвета в свободной продаже нашлись только размером в 1/2 дюйма и тоньше. С ними “рука” была бы слишком тонкой и, скорее всего, не смогла бы достаточно надёжно удерживать камеру. В проект была заложена “рука” из модулей на 3/4 дюйма. Перерыл ваще все! На амазоне, что-то попадалось чёрного цвета, но все это были китайские клоны оригинального Loc-Line с не слишком хорошими отзывами и совершенно невменяемой ценой.
Время уже начинало поджимать и, в итоге, скрипя сердце, пришлось купить набор сегментов вон такого “стандартного” тошнотного сине-сизого цвета, как на фото выше. Оно и близко не вписывалось в цветовую гамму принтера, зато это был родной надёжный Loc-Line. Решил отнестись к этому философски и смирился, в надежде, что проблему с цветом как-нибудь решу по ходу. Была, там, пара идей…
Корпус для камеры разрабатывался таким образом, чтобы его крепление было точно таким же штатным шарниром в составе “руки”, как и прочие её сегменты. Т.о. оно стало просто очередным модулем в цепочке, сохранив все положенные степени свободы на изгиб и вращение:
Смешные “ушки” по бокам передней крышки, предназначены для светодиодных лент подсветки поля зрения камеры.
Общая монтировка всей “малиновой опции” для Турели, была самой же Турелью и напечатана. К тому моменту она уже вполне уверено могла обеспечивать сама себя всем необходимым:
Эта монтировка является одной общей точкой крепления для малины, и камеры. Снял-поставил…
О! Нашёл фотографию из серии “за сценой”…
Малина на борту принтера уже работает, установленный на ней октопринт управляет печатью и гонит видео в сеть. А пока Турель печатает нормальное крепление для камеры, заместо него используется “временный заменитель крепления камеры со вкусом идентичным натуральному“:
Как говорит Адам Сэвидж, в хозяйстве самоделкина “каждый инструмент – молоток”. Что оказалось под рукой, то в ход и пошло…
Передняя часть корпуса камеры печаталась уже фотополимером. Поскольку для неё, форма превалирует над прочностью:
В качестве источников света использовались четыре фрагмента той же “dot-less” светодиодной ленты, что были использованы в составе печатающего узла.
Кстати – и все! Вопреки моей почти неконтролируемой тяге к огонёчкам и неутолимому желанию превращать любое устройство в новогоднюю ёлку, это все световое оборудование, что есть у данного принтера. Одна вот такая полоска ленты под соплом печатающего узла и четыре полоски по бокам камеры. И этого оказалось более чем достаточно!
Заставить себя не пустить ленты светодиодов по периметру всей рамы – было самой тяжёлой и трудной частью проекта. Но я справился!
К сожалению, с “ушками” по бокам объектива камеры я немного лопухнулся. Размещённые на них ленты дают невпупенную боковую засветку в широкоугольный (170° FOV – практически fish-eye) объектив камеры. Этот момент я совершенно не учел при разработке. И даже не подумал о нем, пока не увидел первую картинку после окончательной сборки.
Но эту проблему полностью решила бленда на объектив, добавленная в конструкцию. На фото выше, там, видите ленточку малярной ленты вокруг объектива? Это я подбирал высоту бленды, чтобы она сама в кадр не попадала, но при этом отсекала засветку с боков. В итоге, вот такая бленда оказалась достаточной:
На тот момент оставалась еще упомянутая ранее проблема засветки кадра при печати белым пластиком.
При общем освещении в комнате, оно, более-бенее, нормально все. Но когда я в комнате отсутствую (т.е., когда и нужна работа камеры), то общий свет в ней погашен. И даже днём в этой комнате почти темно. Её окна выходят на “солнечную сторону” и если не задёргивать светонепроницаемые шторы наглухо, то температура в помещении быстро начинает стремится к несовместимой с белковой жизнью.
Ну и в темной комнате, камера принтера делает так:
Печатаемая деталь оказывается засвеченной и на ней не разглядеть никаких деталей. Что в принципе делает бесполезным любой дистанционный визуальный контроль за печатью.
И тут проблема была уже не в конструкции камеры или её корпуса, а в программных настройках системы в целом. По какой-то причине, камера не включает режим автоматической экспозиции по умолчанию. Изображение строится по тому уровню освещённости, который камера засекла при включении принтера. А это, в общем случае – пустой матовый чёрный стол. Впоследствии камера не подстраивается под новые условия, когда на столе начинает “расти” деталь. Кадр становится засвеченным т.к. в общем случае, деталь всегда светлее чем матовый чёрный стол принтера под который камера настроилась в самом начале.
Я так и не разобрался пока, как это можно настроить на уровне инициализации системы при включении принтера, но нашёл необходимые настройки в соответствующем плагине для октопринта. Безусловно, кадр стал существенно темнее в целом, но зато появилась необходимая детализация на объекте печати.
При том же выключенном общем свете в темной комнате:
При включённом свете в комнате:
Само по себе, изображение, в данном случае, необходимо только ради контроля процесса печати. Не сдвинут ли слой, не начались ли пропуски, сколько напечатано, печатает ли оно вообще и т.п. С этими кадрами не нужно выходить на аукцион произведений фотоискусства или устраивать выставки в галерее даунтауна. Вопрос сугубо технической необходимости. И, на текущий момент все выглядит почти так, как я хочу.
Хотя с настройками повозиться ещё нужно. Не нравятся мне все эти лишние плагины. Уверен, все то же самое можно сделать напрямую руками в конфиге при старте. Надо доки почитать…
Осталась только проблема тошнотного цвета “руки” на которой смонтирована камера. Тут уже вопрос был не технической необходимости, а исключительно эстетической. Выбешивал меня этот сизо-синий цвет сегментов невероятно!
Попробовав несколько различных способов решения проблемы, пришёл к тому, что наименее безобразным будет натягивание на “руку” чёрного нейлонового “чулка” для проводов:
Эти “чулки” повсеместно используются в принтере для всей электропроводки, поэтому оно хоть и выглядит теперь странно, но из общего стиля хотя бы не выбивается…
Болотная Турель вообще вся в целом выглядит странно, так, что – норм… Я до сих пор не могу решить нравится мне это решение или нет. С одной стороны – это колхоз и сантех. Нужно было проявить больше настойчивости в поисках. С другой стороны, есть в этом что-то… Как у старого космического скафандра “кишка” от внешнего блока системы жизнеобеспечения… Не знаю… Пока оно все есть, как есть.
В качестве дополнения к теме октопринта, могу огласить список всех плагинов, что у меня используется в его составе. Некоторые из них могут быть полезны… Причём, это не просто какие-то плагины, которые были установлены вот прямо сейчас, каждый из них был признан полезным и годным по факту многолетней работы. За парочкой исключений.
Исключение первое: Bed Visualizer
Покажет насколько кривой у вашего принтера стол и поможет его хоть как-то настроить. Раньше у меня в составе принтера не было автоматического проба, который мог бы пощупать всю поверхность стола и его выравнивание делалось дедовским методом “по листочку”. Соответственно, и плагин этот не использовался.
С добавлением в систему BLtouch и этого плагина, процесс стал более точным и быстрым. До кучи я узнал, что стол у Болотной Турели имеет горб в центре по оси Y:
Поделать с этим ничего нельзя – таков уж дефект самого стекла. Никакой регулировкой “по четырём точкам” это не исправить. Впрочем, картинка слегка утрирована для наглядности. Счёт кривизны там идёт на сотые доли мм. и, в любом случае, такая кривизна стола учитывается/компенсируется во время печати… Могло быть и хуже… Намного хуже…
Исключение второе: Camera Settings
Это тоже новый для меня плагин. С его помощью было исправлено включение режима автоэкспозиции у камеры, упомянутое выше. В принципе, он забавный, конечно. Там всяких других настроек для камеры навалом. Но, как только я найду в каком чёртовом конфиге у малины прописать насильственное включение автоэкспозиции при старте, этот плагин станет для меня бесполезным и будет снесён…
Просто через /boot/octopi.txt и строчки конфига camera_raspi_options испправить ситуацию не удаётся Что-то где-то должно быть ещё…
Дальше будет набор старых-добрых, проверенных годами ништячков, которые лично для меня делают работу октопринта намного более комфортной и приятной.
Очень простенький плагин, который посредством команды M117 отправляет на внутренний дисплей принтера сервисное сообщение о том, сколько слоёв из скольких отпечатано. Как я уже рассказал, прошивка на старой Вдове была изрядно подрезана производителем и стандартным прогресс-баром на экране принтера управлять извне было нельзя. Он всегда показывал 0% выполненной работы. Это раздражало. Данный плагин хоть в какой-то мере исправлял данную ситуацию, показывая сколько слоев из скольких уже отпечатано.
Вот этот плагин, уже меняет состояние прогресс-бара на дисплее принтера. Но для его работы, необходимо внести изменения в прошивку (по умолчанию, обычно, “ручное” управление прогрес-баром через команду M73 в Марлине выключено). Ну и, поскольку сама малина у Вдовы была занята показом более красивых вещей на своём экране, то заниматься таким пустяком, как показ прогресса печати ей было недосуг. В конце-концов я психанул, поменял строку в прошивке и с помощью этого плагина получил работающий прогресс-бар на дисплее принтера. Впрочем, этот плагин не отменяет предыдущий т.к. буквальное значение о количестве отпечатанных слоёв бывает не менее полезным, чем просто общий процент выполненной работы, который показывает прогресс-бар.
Альтернатива “родному” температурному графику октопринта. Более подробный, более управляемый и более наглядный, выделение и увеличение выбранных фрагментов графиков на экране (этим я особенно часто пользуюсь).
Чисто “декоративный” плагин, который позволяет перекроить вкладки интерфейса в более компактный вид и выстроить их в том порядке, который лично я считаю для себя более удобным. Названия вкладок вообще можно убрать, заменив их иконками из встроенного набора:
Позволит сменить тему интерфейса. По умолчанию он слишком белый и яркий. Особенно в полумраке комнаты, когда надо быстро глянуть что там и как в принтере на сон грядущий. Прям глаза вышибает. При помощи этого плагина я установил более тёмную тему интерфейса. Там их целый набор уже готовых.
Кроме этого, плагин позволяет создать или изменить существующие настройки правил в CSS интерфейса. Например, разработчики постарались сделать интерфейс влезающим в экраны мобильных устройств. Спасибо, но на широком мониторе компьютера это выглядит узкой колонкой по центру экрана. Изменив парочку правил можно, наконец, растопырить интерфейс на все окно (включая температурные графики и видео). Для этого я обычно меняю вот эти:
Selector = ‘.span8’; CSS-Rule = ‘width’; value = ‘70%’
Selector = ‘.container’; CSS-Rule = ‘width’; value = ‘100%’
Selector = ‘.span4’; CSS-Rule = ‘width’; value = ‘25%’
Selector = ‘.row’; CSS-Rule = ‘margin-left’; value = ‘0’
Можно поменять любые другие по своему вкусу…
На самом деле, можно просто на уровне HTTP-сервера залезть в файл CSS и поменять там все, как бог черепаху. Но мне обычно это лень делать. К тому же, не факт, что эти правки не будут сброшены при очередном апдейте… В общем, проще влепить этот плагин и нажать в нем пару кнопок, выбрав темную тему, да поправив четыре стиля, чем там годзилион строк в файле каждый раз перелопачивать…
Ну и, конечно, куда ж без Octolapse
Это один из самых популярных и жирных плагинов для октопринта. И самый бесполезный с практической точки зрения. Но очень красивый. Ни одна обезьянка не может перед ним устоять. Там много всяких настроек, но самая популярная: “делать кадр каждый слой, отведя голову принтера в сторону, чтобы не заслоняла, а потом скачать готовое видео“:
Конечно, надо было бы отводить голову Турели в другую сторону. Когда это понял, было уже поздно. Но в качестве демонстрации… Обычно я держу этот плагин отключённым. Кроме оказываемого гипнотического эффекта на зрителя, практической пользы он не несёт, но ресурсов жрёт, как не в себя… Точнее, в себя… В общем, понятно, думаю…
Это все плагины, которые я использую в составе октопринта. Конечно, энтузиасты их там понаписали дофига и больше. Но помните, что “не все йогурты одинаково полезны”…
Как-то вот так оно все…
Для Чёрной Вдовы, конечно, я допустил в своё время большую ошибку, наглухо завязав её работу только и исключительно на малину с чумородным перегруженным интерфейсом и избыточным функционалом. Поддержание этого зоопарка в рабочем состоянии занимало слишком много времени… Сейчас я понимаю, что совершил классическую ошибку всех 3D-принтерщиков, превратив устройство из полезного в хозяйстве инструмента в “принтер ради принтера”…
В Болотной Турели эта ошибка была исправлена. Малина с октопринтом и камерой являются полезной добавкой к функционалу устройства, и, вместе с тем, не усложняют его общую концепцию. В принципе, можно открутить всего четыре винта с монтировки, отсоединить два разъема и убрать эту добавку с принтера вовсе. Болотная Турель при этом потеряет дистанционные управление и контроль, но на локальном уровне, в полном объёме сохранит свой непосредственный функционал, как 3D-принтер. Она завершена. К ней не нужно ничего больше придумывать. Не нужно ничего “усовершенствовать”. Не нужно постоянно поддерживать в рабочем состоянии (кроме регулярной замены носиков и протирки стола). Здоровая, крепкая рабочая кобыла, как то и было нужно!
В рамках этого цикла статей запланировано ещё две небольшие статьи. Одна будет посвящена второстепенным мелким аксессуарам, разработанным скорее для души, чем для работы. Другая, последняя статья, будет посвящена финальному разбору полётов по проекту. Попробую непредвзято оценить насколько ожидания совпали с реальностью, покажу финальные постановочные фотографии, примеры печати (в т.ч. двумя соплами одновременно) и т.п.
Так, что… Читайте продолжение в следующих статьях цикла…