Sovol SV08, дополнительный контроллер.

Принтер оснащен достаточно функциональной материнской платой на процессоре H616 и имеет богатый набор возможностей, в частности выведено много GPIO. При этом большинство из них задействовано или зарезервировано системой. Для реализации некоторых дополнительных модификаций, достаточно просто в систему добавить дополнительный контроллер.

Инструкция актуальна для принтеров под управлением klipper

Будем использовать Raspberry Pi Pico, точнее его клон, как более доступный вариант.

От оригинала он отличается количеством памяти (16Мб), размером (длиннее на 2мм.), и другим расположением контактов.  Для монтажа сделал вариант корпуса с креплением на алюминиевый подрамник принтера.

Для взаимодействия с основной платой необходимо загрузить в Pico прошивку, созданием которой и займемся.

Подключаемся к принтеру через SSH, запускаем конфигуратор прошивки

cd ~/klipper/
make menuconfig

Во второй строчке выбираем тип контроллера

Выходим (Q) и сохраняем (Y)

Удерживая нажатой кнопку BOOT, подключаем Pi Pico c помощью USB кабеля к основной плате принтера.

Данными командами монтируем диск, на него копируем скомпилированную ранее прошивку, размонтируем диск. Устройство перезагрузится с новой прошивкой.

sudo mount /dev/sda1 /mnt
sudo cp out/klipper.uf2 /mnt
sudo umount /mnt

далее

ls /dev/serial/by-id/*

смотрим выводЕсли видим новый контроллер, значит предыдущие действия завершились успешно. Осталось внести дополнение в файл printer.cfg, что бы klipper увидел дополнительный MCU и мог с ним работать.

[mcu pico]
serial: /dev/serial/by-id/usb-Klipper_rp2040_15B8971729605E53-if00
restart_method: command

Не забываем заменить на свой, выделенный фрагмент
В итоге должно получиться так

Перезагружаем Klipper и видим что в системе появился новый MCU

Теперь можно с ним работать. В качестве примера подключим дополнительные кнопки, с помощью которых можно вызывать макросы.

Схематически подключение выглядит так Для того что бы кнопки заработали, в той же директории где находится  printer.cfg создадим файл pico.cfg

В printer.cfg добавим строчку

[include pico.cfg]

pico.cfg наполним следующим кодом

[gcode_button button1]
pin: ^!pico:gpio5
press_gcode: 
  BEEP
  M117 BUTTON TEST1

[gcode_button button2]
pin: ^!pico:gpio6
press_gcode: 
  BEEP
  M117 BUTTON TEST2

[gcode_button button3]
pin: ^!pico:gpio7
press_gcode:
    {% if printer.idle_timeout.state != 'Printing' or printer.pause_resume.is_paused %}  ; unload if not printing OR printing but paused
      UNLOAD_FILAMENT
    {% endif %}
  
[gcode_button button4]
pin: ^!pico:gpio8
press_gcode:
    {% if printer.idle_timeout.state != 'Printing' or printer.pause_resume.is_paused %}  ; unload if not printing OR printing but paused
      LOAD_FILAMENT
    {% endif %}

Кнопки 1 и 2 будут просто выводить тестовое сообщение на дисплей, кнопка 3 будет вызывать макрос выгрузки филамента, кнопка 4 вызывает макрос загрузки филамента.

В моей реализации, физически это выглядит так. Модель корпуса кнопок можно взять здесь.

Комментарии

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