Установка Klipper на Orange Pi Zero 3 + Ender 3 (armbian)
Дисклеймер:
Статья не окончена. Возможно будет дописана позднее. Публикую по просьбе.
В данном руководстве отражу установку и настройку Klipper на одноплатный компьютер Orange Pi Zero 3 для работы с 3D принтером Ender-3 с материнской платой Creality v4.2.2 (На чипе GD35F303). Организую автоматическое и удаленное управление питанием принтера, подсветкой принтера и управление вентилятором охлаждения хотенда с использованием четырехканального реле, произведу настройку клона BLTouch (3DTouch), акселерометра adxl345 и веб-камеры Logitech C270.
Данное руководство пишу больше для себя, но, думаю кому-то будет так же полезно.
1. Подготовка.
1.1 Аппаратная часть.
- 3D принтер (В данном руководстве использую Ender-3 с материнской платой Creality v4.2.2 на чипе GD35F303)
- Одноплатный компьютер Orange PI Zero 3 с 2Гб RAM (Для улучшения охлаждения я добавил радиатор).
- SD карта (Я использую комплектную SD карту Ender-3 на 8ГБ. Решение временное, т.к. предыдущая SD карта умерла. Рекомендуется SD карта Class 10 SanDisk/Samsung минимум на 8Гб. 16-32Гб будет вполне достаточно). ***В процессе написания статьи мне, наконец пришла SD карта SanDisk Ultra на 32Гб и я перешел на нее. Так что, часть скриншотов сделано уже на ней***
- Card reader (Для подключения SD карты к ПК. Я использовал комплектный от Ender-3)
- Блок питания для Orange Pi Zero 3 (Минимум 5V 2A. Я использовал от смартфона)
- Кабель USB-A - Type C (для подключения питания Orange Pi Zero 3)
- Кабель USB-A - MicroUSB (для подключения Ender-3 к Orange Pi Zero 3)
- 12 соединительных проводов мама-мама (для подключения акселерометра и реле)

- Патчкорд RJ-45 (для подключения Orange Pi Zero 3 к маршрутизатору. В дальнейшем патчкорд можно убрать и использовать подключение по Wi-Fi, но у меня проводное подключение работает стабильнее)
- Настольная лампа (Для подсветки стола принтера. Мне понравился данный вариант подсветки, т.к. легко изменить направление света, не требует внесения изменений в конструкцию принтера. Возможно когда-нибудь я изменю источник подсветки)
- Веб-камера Logitech C270
- Плата расширения Orange Pi Zero 3 (для подключения камеры)

- Четырехканальное реле (Возможно не лучший вариант, но пока работает и не доставляет проблем. Я использую 3 канала, так что 1 канал остается в запасе, возможно когда-нибудь я придумаю на что его задействовать)

- 3DTouch (Меня не устраивает точность его работы, в данный момент продумываю варианты замены на оригинальный BLTouch, CRTouch, индуктивные датчики, или тензодатчики)

- Акселерометр adxl345

1.2 Подключение аппаратной части
- Немного модифицируем кабель USB A - Micro USB. Заклеим Pin 1 (+5V) небольшим кусочком изоленты, либо, как написано в других инструкциях - перережем красный провод (это необходимо для того, чтобы Orange Pi Zero 3 не подавала питание на материнскую плату принтера в обход блока питания)

- Подключаем Orange Pi Zero 3 к материнской плате принтера кабелем USB A - Micro USB
- Подключаем Блок питания принтера, материнскую плату принтера и настольную лампу к модулю реле по схеме. (Этот пункт рекомендую выполнить позже, после прошивки принтера)

- Подключаем модуль реле к Orange Pi Zero 3. Нумерацию контактов Orange Pi Zero 3 ведется слева направо и сверху вниз. Т.е. левый верхний - 1, правый верхний - 2.
На модуле реле есть 6 контактов, которые нам необходимо подключить к Orange Pi Zero 3 по схеме
GND - 9 (GND)
IN1 - 15 (PC8)
IN2 - 13 (PC5)
IN3 - 11 (PC6)
IN4 - 7 (PC9)
VCC - 2 (5V)
GND - 25 (GND)
VCC - 17 (3.3V)
CS - 24 (CS)
SDO - 21 (MISO)
SDA - 19 (MOSI)
SCL - 23 (CLK)
1.3. Программная часть.
- USBImager (Для записи образа ОС на SD карту).
- Образ Armbian для Orange Pi Zero 3 (Ставим Minimal/IOT под Debian).
- PuTTY (Терминал, для подключения по ssh).
- WinSCP (Для удобного обмена файлами между Windows и Debian)
- Advanced IP Scanner (опционально. Для поиска устройств в сети. Вместо этого можно просто посмотреть IP в web-интерфейсе роутера)
2. Установка и настройка ОС
2.1 Подготовка SD карты
- Форматируем SD карту. Лучше убрать галочку "Быстрое".
- Запускаем USBImager. В верхнем поле выбираем скачанный ранее образ Armbian (распаковывать из архива не требуется), в нижнем поле выбираем подготовленную для установки SD карту.
Нажимаем кнопку "Записать" и ждем окончания записи ОС. (В будущем копкой "Прочитать" можно сохранить образ SD карты, для возможного восстановления с него системы)
2.2 Первый запуск и настройка Armbian
- Безопасно извлекаем SD карту из ПК и вставляем в Orange Pi Zero 3.
- Подключаем Orange Pi Zero 3 патчкордом к маршрутизатору.
- Включаем Orange Pi Zero 3.Если все сделано правильно, на Orange Pi Zero 3 примерно через 5-10 секунд должен загореться зеленый светодиод, а красный должен моргать. (Если моргает зеленый светодиод, значит Armbian не запустился)
- Запускаем Advanced IP Scanner, в верхнем поле вводим диапазон IP адресов локальной сети и нажимаем "Поиск" и запоминаем IP адрес устройства orangepizero3. (Вместо этого можно подключиться к роутеру и посмотреть какой IP адрес получил Orange Pi Zero 3)
- Запускаем PuTTY, в поле Host Name вводим IP адрес Orange Pi Zero, нажимаем кнопку "Open".
- Откроется терминал. Вводим имя пользователя (по умолчанию root) и пароль (по умолчанию 1234)
- Далее система попросит сменить пароль пользователя root и добавить нового пользователя из под которого мы будем работать. Я создал пользователя klipper
- Далее система определит местоположение, если все верно подтверждаем. В моем случае местоположение было определено неверно.
Подтверждаем
- Если все прошло успешно, увидим стартовый экран Armbian
Обновляем
apt-get update
apt-get upgrade
- Перезагружаем, чтобы все изменения сохранились.
reboot
- Заходим под созданным ранее пользователем klipper. Всю дальнейшую работу мы будем выполнять именно под этим пользователем.
2.3 Установка Docker
Понадобится для установки Spoolman (Менеджер филамента. Удобно для подсчета оставшегося на катушке филамента, рекомендую к установке). Если установка Spoolman не планируется, можно пропустить.
- Заходим в armbian-config
sudo armbian-config
2.4 Настройка сети
В рамках данного руководства я присвою статический IP адрес на Orange Pi Zero 3. Вместо этого можно произвести настройку IP адреса в настройках роутера. В этом случае эту часть руководства можно пропустить.
- Заходим в armbian-config
sudo armbian-config
- Выбираем сетевой интерфейс для настройки. (Я буду использовать подключение по проводу, т.к. Wi-fi у меня работает нестабильно)
Mac адрес оставить как есть
- Указываем любой удобный IP адрес из подсети роутера. Я выбрал ближе к концу, чтобы DHCP точно не выдал этот адрес другому устройству.
- Default route оставляем как есть
- Указываем IP адрес своего роутера в качестве gateway
- Указываем через запятую адреса DNS серверов. Я указал яндекс DNS
- Попадаем обратно в меню Network и удаляем конфигурацию DHCP, чтобы применилась статическая адресация.
- Подтверждаем.
- Окно терминала выдаст ошибку, т.к. IP адрес Orange Pi Zero изменился. Снова открываем PuTTY и вводим новый IP адрес, который мы установили выше. Для удобства можно сохранить профиль подключения кнопкой "Save".
- Вводим данные созданного нами пользователя klipper
2.5. Установка Klipper
- Проверяем, состоит ли пользователь klipper во всех необходимых группах.
id
Если в списке отсутствуют группы tty и dialout - добавляем эти группы
sudo usermod -aG tty,dialout klipper
- Устанавливаем пакет git
sudo apt-get update
sudo apt-get install git
- Устанавливаем KIAUH (скрипт для автоматизации установки klipper)
git clone https://github.com/th33xitus/kiauh.git
- Запускаем
./kiauh/kiauh.sh
- На вопрос о версии выбираем вариант 3
- На главном экране выбираем 1 вариант (Install)
- Поочередно выбирая варианты производим установку 1) Klipper, 2) Moonraker, 3) Mainsail (Веб-интерфейс. Можно заменить на 4) Fluidd, либо установить оба сразу. Мне привычнее использовать Mainsail. При установке двух веб-интерфейсов необходимо обратить внимание на порт.), 8) Crowsnest (понадобится для подключения веб-камеры. Если использование веб-камеры не планируется, можно пропустить).
При установке klipper требуется указать количество подключаемых принтеров (выбираем 1). Подтверждаем создание файла Printer.cfg (в нем будет конфигурация принтера).
Во время установки потребуется установить дополнительные пакеты. Потребуется ввести пароль пользователя.
При установке Moonraker подтвердите создание moonraker.conf
При установке Mainsail подтвердите загрузку рекомендованных скриптов. И укажите порт для подключения (По умолчанию 80. При установке нескольких веб-интерфейсов не забудьте указать разные порты)
- Вернитесь в главное меню KIAUH выбрав вариант B). Зайдите в меню E) Extensions и установите необходимые дополнительные расширения. Рекомендую установить 5) Moonraker Telegram Bot и 11) Spoolman.
- Выйдите из KIAUH
- Установим moonraker-timelapse (для создания таймлапсов печати. Если не требуется - можно пропустить).
cd ~/
git clone https://github.com/mainsail-crew/moonraker-timelapse.git
cd ~/moonraker-timelapse
make install
Перед установкой появится предупреждение - подтверждаем.
- Перезагрузите Orange Pi Zero 3 (Не перезагружайте и не выключайте Orange Pi методом отключения из сети блока питания. Это может привести к повреждению SD карты. Используйте терминал)Перезагрузка
sudo reboot
Выключение
sudo shutdown
2.6 Прошивка принтера
- Открываем веб-интерфейс klipper в браузере
- Изменим язык интерфейса на русский.
- Перейдем в меню Система и откроем printer.cfg (в данном файле хранится конфигурация принтера)
- Перейдем на GitHub klipper и откроем конфигурационный файл для Ender-3 PRO 2020. Скопируем его себе в printer.cfg. В начале файла указана важная информация для подготовки прошивки принтера. Ниже я буду ссылаться на инструкции отсюда.
- Подготовим прошивку для принтера
cd ~/klipper
sudo make clean
sudo make menuconfig
- Переходим в меню Micro-controller Architecture
- Выбираем STMicroelectronics STM32 (как указано в инструкции в конфигурации)
- Переходим в меню Bootloader offset
- Выбираем 28KiB Bootloader (как указано в инструкции в конфигурации)
- Переходим в меню Communication interface
- Выбираем Serial (on USART1 PA10/PA9) (как указано в инструкции в конфигурации)
- Если у Вас, как и у меня, используется чип GD35F303 (Требуется проверить визуально на материнской плате принтера), клавишей пробел ставим галочку на опции Enable extra low-level configuration options, затем ставим галочку на опции Disable SWD at startup (как указанно в инструкции в конфигурации)
- Клавишей Q выходим из скрипта и подтверждаем сохранение конфигурации клавишей Y
- Компилируем прошивку
sudo make
- Запускаем WinSCP и настраиваем подключение (рекомендую использовать пользователя root, чтобы иметь доступ ко всем дирректориям)
- Переходим в каталог /home/klipper/klipper/out и копируем файл klipper.bin на SD карту (Я использовал комплектную SD карту принтера)
- Переименовываем файл klipper.bin (я переименовал в 1122.bin. Имя файла не должно совпадать с именем файла, использованное для прошивки принтера в предыдущий раз).
- Безопасно извлекаем SD карту, подключаем к принтеру и включаем питание. Ждем установки прошивки.
- Возможно экран принтера долгое время будет пустым - это нормально. Заходим в веб-интерфейс klipper и нажимаем Перезапустить прошивку. Если после перезапуска на экране принтера появился интерфейс - значит все прошло успешно.
- Отключаем питание принтера и извлекаем SD-карту.
2.7 Настройка GPIO
Потребуется для подключения модуля реле и акселерометра. Если использование не планируется - можно пропустить.
- Скачиваем архив с 4 файлами *.dtbo
- Запускаем WinSCP и подключаемся к Orange Pi под пользователем root
- Переходим в директорию /boot/dtb/allwinner/overlay
- Копируем в нее скачанные ранее 4 файла с заменой
- Переходим в директорию /etc/udev/rules.d/
- Создаем файл с именем 60-gpiod.rules
# udev rules for gpio port access through libgpiod
SUBSYSTEM=="gpio", KERNEL=="gpiochip[0-4]", GROUP="gpio", MODE="0660"
- Создаем группу gpio и вступаем в нее
sudo groupadd gpio
sudo usermod -a -G gpio user
- Устанавливаем wiringOP (нужен для отладки GPIO)
git clone https://github.com/orangepi-xunlong/wiringOP.git
cd wiringOP
sudo ./build clean
sudo ./build
- Проверяем работу
gpio readall
- Редактируем armbianEnv.txt
sudo nano /boot/armbianEnv.txt
- Добавляем следующие строки
overlays=spidev1_1
param_spidev_spi_bus=0
param_spidev_spi_cs=0
param_spidev_max_freq=100000000
- Закрываем
Ctrl+X
- Подтверждаем изменение и имя файла
- Перезагружаем Orange Pi
sudo reboot
- Подготовим mcu host на Orange Pi Zero 3, для доступа к его GPIO
cd ~/klipper/
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
sudo systemctl enable klipper-mcu.service
make menuconfig
- Выбираем Micro-Controller Architecture
- Выбираем Linux process
- Нажимаем Q и подтверждаем сохранение конфигурации Y
sudo make
sudo service klipper stop
sudo make flash
sudo service klipper start
- Вносим исправление для запуска mcu
sudo sysctl -w kernel.sched_rt_runtime_us=-1
sudo service klipper-mcu restart
echo "kernel.sched_rt_runtime_us = -1" | sudo tee /etc/sysctl.d/10-disable-rt-group-limit.conf
- Перезагружаем Orange Pi Zero 3
sudo reboot
3. Конфигурирование
- Включаем питание принтера
- Подключаемся к веб-интерфейсу принтера
- Переходим на вкладку Система и открываем printer.cfg
- Создаем файл macros.cfg (в нем мы будем добавлять свои макросы, чтобы не захламлять основную конфигурацию)
- Скачиваем архив с моими конфигами и заменяем
Еще больше интересных статей
Драй бокс из коробки. В смысле готовый к работе. Ну почти.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Первый год знакомства с Picaso XL PRO S2, впечатления, проблемы, решения и заметки.
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
Решил написать эту статью как памятку для пользователей 3Д...
GCODE: Основы
Подпишитесь на автора
Подпишитесь на автора, если вам нравятся его публикации. Тогда вы будете получать уведомления о его новых статьях.
Отписаться от уведомлений вы всегда сможете в профиле автора.
GCODE: Плюшки от ПавлушкиПосле написания предыдущей...


Комментарии и вопросы
тсс, не спугни автора, советы....
У любого участника этого порта...
А мне статья понравилась...Сам...
Как настроить скорость печати...
Всем доброго времени суток, ку...
Подскажите, как "нарисовать" т...
Наконец-то установил и запусти...