Июнь 16

Klipper без USB. Интеграция «апельсинки» в 3D-принтер.

Оценив вычислительную мощь полноценного процессора под управлением Klipper по сравнению с микроконтроллером (пусть даже и 32-битным), и пару раз сорвав висящую на проводах «малинку» в процессе печати со своего дельта-принтера, было принято решение об интеграции этой железячки («малинки») в конструкцию аппарата.

Задачи:

— размещение «малинки» (по факту — «апельсинки» OrangePi Zero) на принтере стационарно, с доступом к USB и Ethernet портам;


— вывод от платы управления (MCU, у меня MKS 1.4) внешнего разъема USB наружу для обеспечения возможности обратной миграции на Marlin или другую прошивку;


— установка независимого блока питания (БП) для «малинки» с целью дальнейшей аппаратной интеграции (реализовать включение-выключение принтера от «малинки», а также аппаратные кнопки предпрогрева и аварийного останова печати);


— подключение MCU к «малинке» по последовательному порту через пины Rx/Tx.

Первые поставленных три вопроса были решены получасом в Fusion360, 5 часами печати и получасом сборки-разборки.

Комплектующие:

  • «мозг» — плата Raspberry Pi3, заказанная с Aliexpress и впоследствии замененная на OrangePi Zero с Ebay (вчетверо дешевле);
  • плата управления, она же MCU — плата MKS 1.4 с того же Aliexpress, с драйверами DRV8825 для осей XYZ (ABC в дельте), A4988 для фидера подачи прутка;
  • блок питания «мозгов» — выпотрошенная из блока питания на 5В 2А от старого планшета платка;
  • согласователь уровней

ищется по запросу «IIC I2C Logic Level Converter Bi-Directional Board Module» на различных сайтах. Цена с доставкой с Aliexpress — около 35 р/шт на май 2019 года.

Для чего нужен: логические уровни 32,64-битных одноплатных компьютеров («малинки», «апельсинки», «бананки», «картошки») работают на вольтаже 3.3В, логические уровни плат микроконтроллеров MCU на базе, например, ATMega 2560 (всякие ардуинки «Мега») имеют вольтаж 5.0В, при прямом соединении сигналов Rx/Tx компьютер выйдет из строя. Указанная платка согласует логические уровни до 4 сигналов между устройствами с различным вольтажом.

Т.к. на «малинке» у меня была установлена операционная система OctoPi, прямое подключение по последовательной шине (Serial0) потребует отключения диагностической консоли и модема, «висящих» на этом порту. По итогам раздумий, «малинка» была заменена на «апельсинку» OrangePi Zero. Т.к. видеокамерой пользоваться не планировалось, вычислительной мощи «апельсинки» для Octoprint и Klipper даже на 256 Мб оперативной памяти более чем достаточно, да и стоимость самой платки в разы меньше, чем «малинки».

Приступим.

На текущую дату — 15.06.2019.

Качаем образ операционной системы Armbian, например — ОТСЮДА

Мной был скачан Armbian_5.69_Orangepizero_Debian_stretch_next_4.19.13

С помощью программы Balena Etcher образ системы следует «развернуть» на MicroSD карточку объемом не менее 4Gb. Последовательность этого процесса можно посмотреть, например, ЗДЕСЬ.

Карточку памяти следует вставить в «апельсинку» и подключить ее к питанию и кабелю Ethernet. На «апельсинке» помигают различные светодиоды и через 3-5 минут загорится зеленый на плате, это значит, что микрокомпьютер загрузился.

В web-интерфейсе роутера надо найти подключение orangepizero

и запомнить его ip-адрес. У меня это 192.168.1.47

Скачиваем и устанавливаем SSH-клиент Putty и запускаем.

В поле запуска Putty вводим ip-адрес «апельсинки» и подключаемся к ней, вводим логин Armbian по умолчанию — «root«, пароль — «1234» и производим первичную настройку системы с установлением своих «Login» и «Password«.

Далее вводим последовательно и дожидаемся выполнений команд (команды можно копировать в буфер прямо со страницы и вставлять в консоль Putty правой кнопкой мыши):

sudo apt-get update
sudo apt-get upgrade
sudo adduser octoprint
sudo usermod -a -G tty octoprint
sudo usermod -a -G dialout octoprint
sudo adduser octoprint sudo
sudo visudo
octoprint ALL=(ALL) NOPASSWD:ALL

нажимаем CTRL+O, потом Enter, чтобы перезаписать файл, а затем CTRL+X, чтобы выйти из него обратно в консоль.

sudo passwd octoprint -d
sudo apt-get install git python-pip python-dev python-setuptools psmisc
virtualenv
sudo su octoprint
cd ~
wget https://pypi.python.org/packages/source/p/pyserial/pyserial-2.7.tar.gz
tar -zxf pyserial-2.7.tar.gz
cd pyserial-2.7
sudo python setup.py install
cd ~
git clone https://github.com/foosel/OctoPrint.git
cd OctoPrint
virtualenv venv
./venv/bin/python setup.py install
~/OctoPrint/venv/bin/octoprint serve

Проверяем, запустился ли Octoprint, введя в адресной строке браузера ip-адрес «апельсинки» и номер порта 5000. У меня это выглядело как:

192.168.1.47:5000

Если «взлетел», переходим обратно в консоль Putty и жмем CTRL+Z, чтобы завершить процесс Octoprint

sudo cp ~/OctoPrint/scripts/octoprint.init /etc/init.d/octoprint
sudo chmod +x /etc/init.d/octoprint
sudo cp ~/OctoPrint/scripts/octoprint.default /etc/default/octoprint
sudo nano /etc/default/octoprint

Меняем в открывшемся файле pi на octoprint:

А также раскомментируем (убираем # в начале строки) и правим следующую строчку до нижеприведенного вида:

DAEMON=/home/octoprint/OctoPrint/venv/bin/octoprint

Выходим из файла в консоль с сохранением:

CTRL+O, Enter, CTRL+X

Применяем изменения:

sudo update-rc.d octoprint defaults

Запускаем OctoPrint

sudo service octoprint start

Переходим в WEB-браузере в окно Octoprint и входим в настройки

  • Restart OctoPrint — sudo service octoprint restart
  • Restart System — sudo shutdown -r now
  • Shutdown System — sudo shutdown -h now

Установка и предварительная настройка Octoprint завершена.

За основу были взяты материалы статьи ОТСЮДА. Там же можно почерпнуть и параметры настройки и конфигурации камеры и записи с нее.

Приступаем к установке и настройке Klipper.

В основе своей пользовался мануалом по УСТАНОВКЕ Klipper.

Первоначально подключаем USB-кабелем «апельсинку» к плате управления 3D-принтером.

В консоли Putty вводим команды:

git clone https://github.com/KevinOConnor/klipper
./klipper/scripts/install-octopi.sh
cd ~/klipper/
make menuconfig

В открывшемся меню выбираем тип микроконтроллера (у меня ATMega2560) и прочие настройки и выбираем/жмем/подтверждаем Exit и выходим снова в консоль Putty

make
sudo service klipper stop

Проверяем в окне Octoprint его статус, чтобы он не был соединен с 3D-принтером и снова переходим в консоль Putty

make flash FLASH_DEVICE=/dev/serial/ttyUSB0

если прошивка контроллера не удалась, уточняем аппаратный его адрес командой

ls /dev/serial/by-id/*

и получаем что-то наподобие:

/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

после чего вводим команду

make flash FLASH_DEVICE=/dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0

после успешной прошивки MCU вводим

sudo service klipper start

конфигурируем Klipper

cp ~/klipper/config/example.cfg ~/printer.cfg
nano ~/printer.cfg

у меня для дельта-принтера команды будут выглядеть несколько по-иному

cp ~/klipper/config/example-delta.cfg ~/printer.cfg
nano ~/printer.cfg

Конфигурированию Klipper можно посвятить отдельную большую статься, но я считаю, что, если Читатель озадачился подключением Octoprint/Klipper без USB-кабеля, то этот этап он уже проходил. Да и информация выше более будет полезна новичкам.

Теперь переходим к собственно интересному.

Моя «апельсинка» пришла с нераспаянной «гребенкой» контактов 1-26. Как раз от согласователя уровней у меня осталась «гребенка» на 7 контактов, которая и была впаяна на места Pin1-7.

Привожу распиновку устройств:

OrangePi Zero

MKS 1.4

Согласователь логических уровней

Таблица соединений

Снова подключаемся через SSH-клиент к «апельсинке» и меняем:

sudo nano ~/boot/armbianEnv.txt

В открывшемся файле в конце дописываем:

     overlay_prefix=sun8i-h3
      overlays=usbhost2 usbhost3 uart1 uart2

Сохраняем изменения:

CTRL+O, Enter, CTRL+X

Переходим в папку Klipper:

 cd ~/klipper
 nano ~/printer.cfg

В открывшемся окне ищем строчку [mcu] и меняем в ней

     [mcu]
      serial: /dev/ttyS2
      pin_map: arduino

Сохраняем изменения:

CTRL+O, Enter, CTRL+X

Перезагружаем микрокомпьютер:

sudo shutdown -r

Предварительно убедившись, что перед перезагрузкой USB-кабель между MCU и микрокомпьютером отсутствует.

После загрузки «апельсинки» убеждаемся в том, что Octoprint работает и подключается к принтеру.


Метки: , , , , , , , ,
Copyright 2019. All rights reserved.

Опубликовано 16.06.2019 ashmonnov в категории "Аппаратное обеспечение

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *