Метки: 32 бита, 8 бит, Klipper, OctoPrint, Odroid, Orange Pi, OrangePi, RAMPS 1.4, RAMPS4DUE, Raspberry Pi  
2017-12-14  
  
Раздел: 3D печать, Прошивка, Секреты и лайфхаки 3D печати, Электроника  
HyperCube Evolution. ч2. Мозги [Klipper]
Добавлено в закладки: 17
Здравствуй читатель!
В данной статье рассмотрим подробности настройки мозгов принтера на базе Klipper, проведем сравнение с Marlin4Kimbra, все это установлено и испытано на строящемся принтере HyperCube Evolution. Что за Клиппер – смотрим в ч.1.
Исходные данные:
Электроника : Ramps 1.4 (подрезан для совместимости с Due), Arduino Due, Orange Pi Lite, драйвера DRV8825 с дроблением 32
Механика: рама HyperCube Evolution относится к семейству CoreXY
Для установки нам понадобится флешка microSD не менее 4Гб, желательно с хорошей скоростью записи/чтения, так как это напрямую будет влиять на скорость загрузки системы.
Пошаговая инструкция подойдет для установки на плату типа Raspberry Pi, Odroid, Orange Pi и подобные. Для установки на ПК, ноутбук или планшет под управлением Linux шаг №1-5 пропускаем, так как линукс уже имеется и его устанавливать не надо. Теоретически можно установить и на Windows, однако понадобится волшебный бубен и некоторые знания, что выходит за рамки данной статьи.
1.Подготовка линукс-дистрибутива
Скачиваем дистрибутив Linux для нашего компьютера, я рекомендую Armbian, ищем там свою плату и скачиваем серверный вариант Ubuntu либо Debian. Серверный – так как он потребляет меньше всего памяти и системных ресурсов, не имеет графической оболочки. https://www.armbian.com/download/
Записываем образ на флешку с помощью Etcher https://www.etcher.io/
2.Подключение
Теперь нужно вставить флешку в наш мини-пк и подключиться к консоли. Есть несколько способов как подключиться к консоли: если есть переходник USB-RS232 т.е. на ком-порт, то можно подключиться непосредственно к ком-порту на плате, если с этим возникают трудности или нету переходника, то подключаем USB клавиатуру и монитор. Я использовал способ подключения к ком-порту. Нужно найти на плате ком-порт, ножки GND, TX, RX и подключить к ним переходник. Внимание! Так как мини-пк чаще всего имеет 3.3В логику, то нужно использовать соответствующий переходник с переключателем на 3В, переходники с 5В логикой могут вывести мини-пк из строя. Так же для подключения я использую Windows и программу Putty http://www.putty.org
После подключения видим вот это:
3.Первый логин
Если все прошло успешно, мы видим окно логина, пишем root и пароль 1234. Дальше система попросит нас придумать новое имя пользователя, пароль, нужно будет перегрузиться (пишем в консоли sudo reboot) и залогиниться с новым именем пользователя. После этого выполняем стандартные процедуры обновления линукса
sudo apt-get update && sudo apt-get upgrade
4.Настройка WiFi
Чтобы дальше работать с мини-пк удаленно, предполагается, что он имеет встроенный модуль WiFi, либо другое подключение к сети. В моем случае (Orange Pi Lite) модуль WiFi встроенный, настроим его. В консоли пишем команду в консоли sudo nmtui и настраиваем сеть.
Если встроенный модуль WiFi (как в моем случае) работает плохо и есть желание пустить сеть через внешний USB-WiFi адаптер, внутренний модуль лучше отключить. Перегружаемся чтобы убедиться что все работает как надо и за одно запишем ip-адрес нашего мини-пк, чтобы в дальнешем подключаться удаленно.
sudo nano /etc/rc.local В конец файла, перед exit 0 вставляем строчку sudo ifconfig wlan0 down Жмем ctrl+X, потом энтер. Изменения сохранили, теперь ребут, чтобы проверить как все работает sudo reboot
Для подключения по IP используем все тот же Putty:
5. Установка Octoprint. Процедура установки полностью идентична официальному реководству. Ставить будем из исходников.
cd ~ sudo apt-get update sudo apt-get install python-pip python-dev python-setuptools python-virtualenv virtualenv git libyaml-dev build-essential git clone https://github.com/foosel/OctoPrint.git cd OctoPrint virtualenv venv ./venv/bin/pip install pip --upgrade ./venv/bin/python setup.py install mkdir ~/.octoprint sudo usermod -a -G tty [your_username] sudo usermod -a -G dialout [your_username] sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint sudo chmod +x /etc/init.d/octoprint sudo update-rc.d octoprint defaults sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint
Дальше правим базовый файл настройки Октопринта
sudo nano /etc/default/octoprint
В этом файле удаляем # против конфигурационных строчек а юзера pi везде меняем на нашего user_name, с которого мы создавали ранее и которым мы логинимся.
Запускаем сервис Октопринта
sudo service octoprint restart
Для управления рестартом октопринта из веб-интерфеса.
sudo nano /etc/sudoers.d/octoprint-shutdown
туда вписываем (pi нужно заменить на нашего user_name, с которого мы создавали ранее и которым мы логинимся):
pi ALL=NOPASSWD: /sbin/shutdown
и Ctrl+O, Ctrl+X — сохраняем, закрываем.
sudo nano /etc/sudoers.d/octoprint-restart
— а сюда:
pi ALL=NOPASSWD: /bin/systemctl restart octoprint
Ctrl+O, Ctrl+X
При этом в процессе настройки при первом подключении к октопринту нужн ввести команды как на скриншоте
Чтобы Октопринт открывался напрямую в строке браузера по нашему айпи, нужно установить прокси, которая будет перенаправлять запросы с порта 80 на локальный порт, который занят Октопринтом.
sudo apt-get install haproxy
Редактируем файл настроек прокси, открываем дефолтный конфиг и меняем на содержимое под спойлером
sudo nano /etc/haproxy/haproxy.cfg
Файл настройки прокси, при копировании и вставке соблюдайте все пробелы и форматирование, иначе посыпятся ошибки:
global maxconn 4096 user haproxy group haproxy daemon log 127.0.0.1 local0 debug defaults log global mode http option httplog option dontlognull retries 3 option redispatch option http-server-close option forwardfor maxconn 2000 timeout connect 5s timeout client 15min timeout server 15min frontend public bind :::80 v4v6 use_backend webcam if { path_beg /webcam/ } default_backend octoprint backend octoprint reqrep ^([^\ :]*)\ /(.*) \1\ /\2 option forwardfor server octoprint1 127.0.0.1:5000 backend webcam reqrep ^([^\ :]*)\ /webcam/(.*) \1\ /\2 server webcam1 127.0.0.1:8080
После сохранения настроек перезапускаем прокси и Октопринт, убеждаемся что все перезапустилось без ошибок и пробуем открыть айпишник в строке браузера на ПК или с мобильного.
sudo service octoprint restart sudo service haproxy restart
Более детальное описание установки и настройки Octoprint здесь https://github.com/foosel/OctoPrint/wiki/Setup-on-a-Raspberry-Pi-running-Raspbian
К сожалению, на 3дешнике пока что нет универсальной статьи-перевода по установке Октопринта (напишите в комментариях, есть ли трудности с установкой Октопринта и нужна ли для этого отдельная статья).
6. После того как Octoprint настроен и запущен. Устанавливаем Klipper.
cd ~ git clone https://github.com/KevinOConnor/klipper ./klipper/scripts/install-octopi.sh cd ~/klipper/ make menuconfig make sudo service klipper stop make flash FLASH_DEVICE=/dev/ttyACM0 sudo service klipper start
Если после команды make есть сообщения с ошибками и там есть arm-none-eabi-gcc, значит нужно доустановить нужный пакет.
sudo apt-get install gcc-arm-none-eabi
Сообщение об успешной прошивке микроконтроллера должно выглядеть примерно так:
Далее правим конфигурационный файл. Пример с возможными настройками можно посмотреть здесь https://github.com/KevinOConnor/klipper/blob/master/config/example.cfg там же есть примеры настройки под разные кинематики. Если не спешить, а внимательно читать пояснения к каждой строчке образцового конфига, вопросов, что к чему и почему, возникнуть не должно.
cp ~/klipper/config/example.cfg ~/printer.cfg nano ~/printer.cfg
Если Вы не знаете к каким пинам что подключено – идем на хитрость: нужно скачать прошивку марлина (или открыть папку с прошивкой которой Вы пользовались раньше) и там среди кучи есть файл Boards.h в нем ищем номер своей платы ( в моем случаем BOARD_RAMPS_SMART_HFB 1411), теперь идем в папку src/boards/ в Марлине и открываем файл с найденным номером 1411.h и используем его как справочник, чтобы узнать куда что подключено.
Примечание, чтобы инвертировать вход (нужно для нормально замкнутых/разомкнутых концевых выключателей) нужно использовать запись вида ^!ar50, для обычного входа используем запись типа ^ar50.
Сохраняем файл конфигурации. После каждой правки нужно перезапускать Клиппер, можно это делать как перезапуская сервис с Клиппером ( sudo service klipper restart ) так и выполняя команду RESTART в Октопринте. Чтобы посмотреть ошибки в конфигурации пишем в Октопринте команду RESTART , а потом STATUS.
7. Подключаем Клиппер к Октопринту.
Открываем веб-страничку с Октопринтом, идем в настройки, выбираем вкладку Serial connection. Там прокручиваем вниз и в окошке “Additional serial ports” добавляем /tmp/printer Сохраняем. Опять идем туда же в настройки и снимаем галочку с “Not only cancel ongoing prints but also disconnect…” На главной страничке Октопринта (следует обновить страничку) на вкладке Connection нужно “Serial Port” поменять на “/tmp/printer” и нажать “Connect”.
Если все хорошо, но принтер пока еще не настроен или настроен не правильно, у нас должно быть нечто такое (самое простое свидетельство того что Клиппер работает, но что-то не так с настройкой микроконтроллера или связью, то что в ответ на запрос температуры у нас нули):
Теперь остается только подправить конфигурацию принтера, сделать RESTART и можно печатать.
Сравнение качества и скорости печати Клиппера и Marlin Kimbra Mk4Due
Хочу отметить, что я использую 32-битную Arduino Due, которая имеет ОЗУ 96 KБ, частоту ядра 84 МГц этого вполне достаточно для вполне комфортной работы Марлина, поэтому разница в отпечатках не такая большая, как я предполагал. Если же сравнивать работу Клиппера и Марлина на 8-битной Меге (8 Кб ОЗУ, 16 МГц ядро) разница будет более явной с ростом качества на Клиппере.
Условия эксперимента: один и тот же g-код для обоих прошивок, ускорение в обоих прошивках 2000, все остальные параметры по-умолчанию, сопло 0.6, без ретракта (так что видны прыщи местами). Пластик самый дешевый АБС гаражного разлива. Печать была одним заходом, в следующем порядке: Клиппер – космодесант, прошивка на Марлин – космодесант, жаба, бульбазавр, прошивка на Клиппер – бульбазавр, жаба. При снятии модели космодесанта я вероятно нарушил симметрию стола и ось Z стало закусывать, но это не точно, так как предыдущий тест (сразу после Марлина я напечатал кубик на Клиппере в ч.1) тоже показал, что Клиппер на моем принтере выдает более гладкие стенки, без полосатости.
Космодесант печатался с обдувом 90% и с поддержками, скорость 15-один слой периметра, 25- на все остальное. Толщина слоя 0.1. Время печати Клиппера и Марлина одинаково.
Бульбазавр с обдувом 100% скорость печати 50-периметр, 100- все остальное. Толщина слоя 0.2. Марлин справился на 8 минут быстрее (итоговое время примерно 1 час)
Жаба – без обдува, скорость печати 25-периметр, 50- все остальное. Толщина слоя 0.1 Марлин справился на 6 минут быстрее. (итоговое время примерно 1.5 часа)
Выводы по тестовым распечаткам делать сложно, но если брать частный случай конкретно моего принтера, то Клиппер выдает более качественный результат.
Плюсы прошивки Marlin Kimbra Mk4Due:
- Точность удержания температуры (с теми же PID, что и в Клиппере) составила +/- 0.5 градусов для хотенда и 0.1 градусов для стола (я немного изменил алгоритм PID для стола). Я считаю что PID в Клиппере стоит доработать, так как разброс температуры составил для Клиппера +/- 1.5 градусов для хотенда и +/- 0.1 для стола.
- Точность парковки (но как говорится: это не точно), визуально реакция на срабатывание концевика более резкая, отличия в том, как ложится первый слой 0.25 в сравнении с Клиппером я не заметил, так что этот плюс довольно спорный.
- Дополнительные плюшки, которые не сложно реализовать в Клиппере, но они уже есть в Марлине, как-то очередность парковки осей, выбор коэффициента соотношения вклада моторов XY для кинематики CoreXY, возможность использовать для одной оси два ограничивающих концевика, по одному с каждой стороны, возможность регулировки скорости печати и подачи пластика на ходу, возможность изменять параметры прошивки (ускорение, джерки, количество шагов на мм ) непосредственно из меню принтера на выносном дисплее без перепрошивки, и т.д. От себя добавлю что все эти плюшки важны если ваш принтер находится в состоянии вечного апгрейда, полностью настроенный аппарат в таких плюшках не нуждается. Но Клиппер развивается и будет обрастать дополнительным функционалом это 100%.
Плюсы Клиппера (здесь опишу только те плюсы, которые для меня были заметны после переезда с Марлина):
- Due не зависает . Да, оказывается чтобы китайская Due работала с Марлином ей нужно либо перепрошить загрузчик, либо припаять резистор, иначе она часто зависает и включается только после последовательного включения/выключения питания. А еще под Марлином у меня Due висла намертво целых 3 раза, помогала только перепрошивка, Мега тоже висла намертво (т.е. не помогала кнопка ресет, сброс по питанию, ничего), но только один раз.
- Для полноценной работы принтера не нужно к микроконтроллеру лепить дисплей, пишу это в плюс, так как для полноценной работы Марлина с его плюшками дисплей необходим, так что получается в некоторой степени экономия, которую можно потратить на покупку Orange Pi
- Полностью разгружает микроконтроллер от вычислений и освобождает оперативную память, что особенно актуально для 8-битных контроллеров типа Atmega2560 и более слабых. Для мощных 32битных контроллеров этот выигрыш не так заметен.
- Возможность дописать в код принтера свои модули, плагины, расширить функционал, при этом используя довольно простой язык программирования как Python.
Заключительный вывод
Переход на Клиппер, это скорее как очередной виток эволюции, на мини-пк уже нет жестких ограничений по вычислительной мощности, есть большее разнообразие применяемых языков программирования, так что Клиппер однозначный выбор для продвинутых гиков и тех кто любит ковыряться в коде. В дальнейшем Клиппер обрастет сообществом и качество, скорость печати будет только улучшаться. Так же рекомендовать Клиппер можно в том случае если Вы точно уверены, что вашему микроконтроллеру не хватает скорости для управления двигателями (это актуально для ШД с шагом 0.9 градусов, с драйверами TMC без интерполяции и установленным делителем 128), в противном случае прирост качества будет малозаметен, если будет в принципе. Гораздо большего прироста качества можно добиться улучшая механическую и электрическую часть вашего принтера.
Вот такой прирост в качестве получил я в качестве эксперимента заменив направляющие оси Z (12мм каленые валы с бронозожелезографитовыми втулками) на мебельные с шарикоподшипниками (все отпечатано Клиппером, размер модели 50% от оригинала, слой 0.06, скорость 30, АБС, обдув 100%)
Если Вам понравились статьи о Клиппере, сказать спасибо автору можно на кошелек BTC 1KuhpySRwiSotHfi8cdSvuYbiA6u3aLnwP (Если не знаете как, просто скопируйте эту последовательность символов, это кошелек, и зайдите сюда, можете использовать удобную для Вас платежную систему для перевода). Буду рад также комментариям и конструктивной критике, старался подготовить материал трезво и не предвзято. Готовится для публикации еще одна статья по шаговым двигателям, уверен будет интересно и полезно, узнаем особенности работы драйверов, в т.ч. модных TMC2100, ваши спасибо значительно ускорят процесс написания (предыдущая статья здесь)
14.01.2018 Обновление.
Клиппер активно развивается, в нем есть еще куча всего что не поместилось в статью. В недавних обновлениях добавили поддержку регулировки скорости печати и скорости подачи прутка из октопринта . Для обновления заходим в папку Клиппера, останавливаем сам сервис Клиппера, скачиваем гитом обновления, перепрошиваем микроконтроллер, запускаем клиппер.
cd ~/klipper/ sudo service klipper stop git pull make flash FLASH_DEVICE=/dev/ttyACM0 sudo service klipper start
Дополнительные ссылки
Использованные модели для теста:
Treefrog https://www.thingiverse.com/thing:18479
Pokemon Bulbasaur- Low Poly http://www.thingiverse.com/thing:1726679
Warhammer Space Marine https://www.thingiverse.com/thing:906266
High-Poly Realistic Bulbasaur https://www.thingiverse.com/thing:1576163
19 комментариев на «HyperCube Evolution. ч2. Мозги [Klipper]»
Обсуждение закрыто.
Разрушители мифов. 12В или 24В электроника? Баттл!       Новый 3D-принтер на CoreXY. Начало
У меня с точностью до наоборот… но правда DUE ни на одной прошивке не зависает… есть видео… я его по скайпу уже некоторым паказывал… причина того, что вернулся обратно на MK4DUE… но сюда не загрузить его… а на ютуб только временно
Если бы Марлин показал лучший результат – меня бы это очень даже устроило, так как разбираться с чем-то новым всегда довольно затратно по времени и тяжело, особенно для таких ленивых как я)
StanislavI – А на первом фото это ВЫ?
Стучание в бубен сильно помогает?
За статью большое СПАСИБО. Понравилось.
И Вам спасибо) Хоть кому-то понравилось… хотя наверное после первой части заметно мое разочарование, не знаю чего я ждал) принтер хуже печатать не стал и заметить “лучше” можно только вглядываясь) в моем случае, да и в случае всех нормальных прошивок на 32-битных контроллерах программная часть явно работает уже на столько хорошо, что лучше – только если с микроскопом изучать. Получается что узкое место в качестве печати (для 32-битных систем) это жесткость корпуса, плавность хода подшипников, точность сборки т.е. механика.
Не понятно в чём собственно необходимость “клипера”?
Вот на этих видео печать со скоростью до 200мм/сек и с нормальным качеством
https://www.youtube.com/watch?v=unbSwHOThZA
https://www.youtube.com/watch?v=8MN9oRk2B4M
Дело в том, что я уверен (пробовал) что на 32-битной Ардуине у меня не будет проблем с 200мм/сек. Но я не уверен, что так же легко эту планку возьмет 8-битная Ардуина с Марлином на борту (придется идти на разные ухищрения типа понижать делитель на драйвере). Второй очень важный момент, что в случае с Клиппером, каждый микрошаг выполняется в четко обусловленное время, собственно только этим ардуина и занимается, поэтому в паре с Клиппером 8-битная ардуина ведет себя как 32-битная по производительности. Если брать 32-битную плату, то тут конечно причин переезжать на Клиппер меньше и они не на столько весомые, так как мы редко приближаемся к лимитам по производительности и вычислительной мощности для 32-битных плат.
Огромное спасибо за Ваши статьи. Благодаря им решился на переход с обычной печати на Октопринт. Опыта работы с такими устройствами ноль. Но все таки у меня получилось запустить октопринт на Расбери3. Клиппер установил, но опыта настройки пока не хватает. Принтер Геркулес маленький. Мега+Рампс. Прошивка марлин 1.1.0. rc3. Буду признателен за помощь в настройке и запуске. В случае успешного запуска вознаграждение гарантирую .
Открывайте ветку на форуме с описанием проблемы, а сюда в комментариях вставьте ссылку чтобы кто-то с похожей проблемой мог из статьи перейти на форум.
Создал тему по Клипперу на форуме. Очень рассчитываю на помощь.
Хорошая статья! Хотелось бы теперь подробное описание конфигурационного файла для принтера. Хотя бы такой же как на marlin.
Ветка на форуме с обсуждением проблем при настройке Клиппера. https://3deshnik.ru/forum/viewtopic.php?f=5&t=625
Спасибо, статья понравилась. Есть вопрос:
“Вот такой прирост в качестве получил я в качестве эксперимента заменив направляющие оси Z (12мм каленые валы с бронозожелезографитовыми втулками) на мебельные с шарикоподшипниками”
Не понял вы валы заменили на мебельные рельсы для ящиков стола?
День добрый. С праздником. А если рассматривать вариант не оранж, а именно малинку. Какая модель подойдет больше всего?
Вас тоже с праздником ! Малина подойдет любая, нужно только обращать внимание что придется втыкать два USB устройства – ардуину и WiFi брелок, так что если USB только один, то надо будет расширять хабом. Чтобы с этим не заморачиваться то нужно брать модель Pi2 B или выше (PI 2 B+, PI 3)
Спасибо. Просто читал что оранж хоть и дешевле но бубен для нее нужен больше. Когда знаний особых пока нет + то что написал выше, чую будет бядааа и куча вопросов.
Да, по поводу апельсины много жалоб, у меня например встроенный вайфай не работает стабильно, пришлось втыкать внешний брелок. А в остальном с апельсиной проблем я не обнаружил.
Попробовал Klipper, честно сказать виден прирост качества. Есть небольшие недостатки, которые решаются наличием хотя бы маленького бубна.
Для себя решил оставаться на этой прошивке. Но пока не тестил на длительных печатях, хотя бы 5 часов.
Принтер:
Была Firmware: Repetier 0.92.9
Board: Arduino Due (arm) + Ramps 1.4 (modified) + Fan Extender (4 chanel).
Print server: OrangePI Zero with OctoPrint.