3Dwork - Klipper
KLIPPERMARLINLABSTelegramColabora
  • 3DWork.io - Klipper
  • Invitame a un cafe :D
  • 🖇️Klipper
    • Klipper
    • Instalación
      • Múltiples instancias Klipper
      • Klipper en Raspberry Pad 5
      • Klipper en Orange Pi Zero Plus
      • Klipper en PC con Windows (Usando WSL)
      • Duet 2 Wifi - Klipper
      • Guías Instalación específicas impresora/electrónica
        • Creality - Klipper
          • Creality Sonic Pad - Klipper Oficial, custom firmware
        • Artillery - Klipper
    • Configuración
      • Primeros pasos con Klipper
      • PID
      • Calibración extrusor (e-steps)
      • Nivelación manual de cama
      • Sensor nivelación
        • Bigtreetech Eddy
        • BIQU MicroProbe
      • Nivelación Gantry (Z-TILT)
      • Malla nivelación de cama
      • Pressure Advance
      • Input Shaper
      • Velocidad Máxima
      • Configuración Klipper en laminadores
      • SKEW : compensación chasis/cinemática
      • Ajustes avanzados TMC (VFA)
      • Retracciones en firmware
      • Configuración de una dirección IP estática y nombre DNS
      • Sincronización horaria
    • Mejoras/Tips
      • 3Dwork Klipper Bundle
      • Backup Klipper
      • Host como segunda MCU
      • Sensores de filamento
      • Cámaras - Instalación y configuración
      • Neopixel
      • Mainsail - Mejoras
        • Exclude Objects
        • Timelapses
      • Moonraker - Mejoras
        • Moonraker-Telegram
      • KlipperScreen - Mejoras
        • KlipperScreen - Personaliza arranque con un video con tu logo
        • KlipperScreen - Guia de pantallas
        • KlipperScreen Android (Wifi)
        • KlipperScreen - MKS TS35
        • KlipperScreen - Raspberry Pi 5" DSI
      • Macros - Mejoras
        • Mallado de cama inteligente
        • Test de cinemática
        • Cambio Filamentos/M600
        • Pausado en capa
      • CANbus
        • ‼️CANbus Troubleshooting
        • Octopus/Octopus Pro + EBB Toolhead (CANbridge)
        • Bigtreetech Manta + EBB Toolhead
      • Impresión desde USB
      • VPN con ZeroTier
    • ‼️Klipper Troubleshooting
    • Guía Calibración Impresoras 3D FDM/Filamento
  • ℹ️GUÍAS ESPECÍFICAS KLIPPER
    • Creality
      • Creality K2 Plus
      • Creality K1 & K1 Max
    • QIDI
      • QIDI Plus 4
      • QIDI X-MAX 3
    • Bigtreetech Hurakan
    • RatRig V-Core 3
    • RatRig V-Minion
  • 🎨ERCF
    • Enraged Rabbit Carrot Feeder (ERCF)
  • 🌐3DWORK
    • Quieres promocionar tus productos/empresa?
Con tecnología de GitBook
En esta página
  • Configurando nuestro Neopixel
  • Extensión para efectos
  • Instalación LED EFFECTS
  • Configurando efectos
  • Leds de notificación en tu cabezal de impresion
  • Como añadir el script de post-procesado
  • ¿Como validar que el script funciono correctamente?
  • Personalizar el script a nuestro gusto

¿Te fue útil?

  1. Klipper
  2. Mejoras/Tips

Neopixel

Como personalizar y aprovechar el uso de Neopixel en Klipper

AnteriorCámaras - Instalación y configuraciónSiguienteMainsail - Mejoras

Última actualización hace 1 año

¿Te fue útil?

Configurando nuestro Neopixel

Para poder configurar nuestros Neopixel en Klipper es tan sencillo como añadir la configuración necesaria para nuestra electrónica/mcu en la sección neopixel de nuestro printer.cfg o include cfg que consideremos oportuno.

IMPORTANTE!!!

  • Normalmente es aconsejable usar una resistencia 300-500ohms entre el pin de SGN de nuestro controlador de neopixel y el pin de datos de nuestra tira neopixel

  • Hay que tener en cuenta que las conexiones de alimentación y datos han de seguir la dirección de la tira led tal como podéis ver en la siguiente foto

  • Es aconsejable alimentar externamente desde una fuente la tira led, asegurandote que el pin -/GND este compartido entre la tira led y la MCU que los controle

  • También es importante usar una fuente de alimentación que aguante correctamente el consumo de nuestra tira led, a modo de ejemplo para calcular lo que necesitamos en W/A podéis usar la para tener una estimación

El método más sencillo, si queremos gestionar unos pocos leds es usar un pin PWM de nuestra electrónica:

## Ambient Leds on SKR Mini E3 V3
[neopixel led_ambient]
pin: PA1 
chain_count: 15
#initial_RED: 0.0
initial_GREEN: 0.5
#initial_BLUE: 0.0

Probablemente una de las opciones más potentes, sencillas y versátiles si buscamos sacar el máximo partido a nuestros leds sea usar WLED.

WLED es un proyecto para la gestión de tiras leds usando un Arduino ESP que nos va a permitir crear efectos y gestionar/integrar nuestros leds de muchas formas distintas... la que a nosotros nos interesa es con Klipper mediante el uso/integración con Moonraker.

Una vez que tengamos ya instalado y funcionando nuestro WLED es aconsejable, desde su app, el crear nuestros perfiles que vayamos a usar más tarde en Klipper.

A modo de ejemplo:

  • Desde la página principal seleccionaremos nuestro color o paleta de colores

  • Iremos al siguiente tab para definir los efectos, escoge el que más te guste ya que tienes un buen número de ellos :) Puedes crear segmentos en tu rira led donde aplicar diferentes efectos, en el inicio te aconsejo tener solo un segmento

  • Iremos a la pestala de presets y crearemos uno nuevo, lo más importante de las opciones es Save to ID que es el ID del efecto que después usaremos en Klipper Os aconsejamos crear un par de presets de On y Off de los leds que siempre pueden ser útiles.

Os aconsejamos también el forzar una IP en vuestro WLED en el caso que uséis la gestión de vuestros WLED por red.

Moonraker

Una vez ya tenemos nuestro WLED listo, configurado y funcionando toca configurar Klipper, en concreto Moonraker para añadir la configuración de acceso a nuestros leds.

Para ello desde nuestra interfaz web Klipper, Mainsail/Fluidd, editaremos nuestro moonraker.conf:

[wled wled_chamber]
type: http
address: 192.168.1.99
initial_red: 0.5
initial_green: 0.4
initial_blue: 0.3
chain_count: 42

Ajusta la configuración de IP a tu instalación!!! También puedes cambiar el ID del WLED a tu gusto, en nuestro ejemplo wled_chamber dado que lo usamos para iluminar nuestro cerramiento de la impresora.

También en el caso que uses varios WLED puedes añadir tantas secciones como necesites asegurandote que pones un ID diferente.

Puedes ajustar el color que quieres aplicar al conectar nuestro Klipper a WLED ajustando los valores de initial_ por cada color.

Por último es importante que indiques el número de leds que dispones en tu WLED en chain_count.

Esto es todo lo necesario para configurar Moonraker!!!

Klipper

Para poder controlar nuestro WLED necesitamos ajustar, en nuestro printer.cfg o algún include donde las tengas, tus macros actuales o nuevas que quieras crear para la gestión de tus leds.

Como ejemplo aquí tienes una macro para encender los leds:

[gcode_macro WLED_ON]
description: Turn WLED strip on using optional preset and resets led colors
gcode:
  {% set strip = params.STRIP|default("wled_chamber")|string %}
  {% set preset = params.PRESET|default(4)|int %}

  {action_call_remote_method("set_wled_state",
                             strip=strip,
                             state=True,
                             preset=preset)}

Y en esta llamas a uno de nuestros presets:

[gcode_macro led_heating]
gcode:
  WLED_ON STRIP=wled_chamber PRESET=3

Asegúrate que pones el ID correcto en STRIP y usas el ID de tu preset en PRESET

Otro método es usar un Arduino como segunda MCU, deberemos realizar los siguientes pasos.

  • Nos conectaremos por SSH anuestro host

  • Crearemos una carpeta klipper_config en nuestro home

/mkdir -p ~/klipper_config
  • Desde nuestro directorio Klipper, cd ~/klipper , lanzaremos un make clean para limpiar configuraciones anteriores si existieran

make clean KCONFIG_CONFIG=~/klipper_config/config.arduinonano
  • Una vez con la configuración de make limpia configuraremos elCon todo firmware Klipper para Arduino

    • Enable extra low-level configuration options NO MARCADO

    • Micro-controller Architecture: Atmega AVR

    • Processor model: atmega328p

/make menuconfig KCONFIG_CONFIG=~/klipper_config/config.arduinonano
  • Con todo ya ajustado compilaremos nuestro firmware Klipper para Arduino

make KCONFIG_CONFIG=~/klipper_config/config.arduinonano

Una vez solventado volveremos al paso de make clean.

  • Pararemos el servicio Klipper por seguridad

sudo systemctl stop klipper
  • Conectaremos nuestro Arduino a nuestro host

  • Localizamos nuestro serialID, que necesitaremos más tarde en nuestro printer.cfg, con el siguiente comando

ls /dev/serial/by-id/*
// o tambien
dmesg | grep -i serial
  • Nos retornará algo como:

/dev/serial/by-id/usb-Arduino_xxxxxxx
  • Compilamos y aplicamos el firmware Klipper a nuestro Arduino, recuerda usar en FLASH_DEVICE lo encontrado en el punto anterior

make flash KCONFIG_CONFIG=~/klipper_config/config.arduinonano FLASH_DEVICE=/dev/serial/by-id/usb-Arduino_xxxxxxx
  • Ahora que ya tenemos todo listo solamente queda ajustar nuestro printer.cfg añadiendo nuestra nueva MCU Arduino y nuestra definición de neopixel que en nuestro caso hemos colocado en el pin 6 (PD6)

[mcu ardupixel]
serial: /dev/serial/by-id/usb-Arduino_xxxxxxx
restart_method: command

[neopixel ardupixel]
pin: lights:PD6
chain_count: 30
initial_RED: 1.0
initial_GREEN: 1.0
initial_BLUE: 1.0
initial_WHITE: 0.0

En nuestra configuración:

  • usamos el pin para indicar cual es el pin de señal usado para controlar nuestra tira de leds inteligente

  • en chain_count definiremos el número de leds que queremos usar, es importante recordar que el número que soporte la electrónica vendrá definido por la capacidad del DCDC 5V que lleve y el consumo por led de nuestra tira. Normalmente, solo aguantan unos 20 leds como máximo, si superamos o llegamos a límites de lo soportado lo ideal es alimentar los leds con un DCDC externo

  • en initial_XXXX indicaremos el color que queremos que tengan inicialmente donde XXX es el color (RED GREEN BLUE) y el número la intensidad de 0 a 1

Podemos gestionar nuestros leds desde el interfaz de Mainsail o Fluidd, si nuestra tira led está gestionada por Moonraker de forma nativa (WLED o Klipper Virtual Leds no lo serian). En el caso de Mainsail veremos los controles dentro de Dashboard -> Miscellaneous:

Extensión para efectos

Podemos utilizar nuestros neopixel para algo más que iluminar nuestra máquina, pudiendo emitir eventos o información interesante.

Para ello vamos a usar una extensión de terceros para Klipper que permite de una forma sencilla aplicar diferentes efectos a nuestros leds podéis encontrar diferentes módulos similares, en nuestro caso usamos este por lo versátil y potente... en el caso de usar WLED como tenéis en el punto anterior no sería necesario.

Instalación LED EFFECTS

Podemos instalar de una forma sencilla la extensión desde el terminal SSH lanzando estos comandos:

cd ~
git clone https://github.com/julianschill/klipper-led_effect.git
cd klipper-led_effect
./install-led_effect.sh

También es interesante añadir lo siguiente a nuestro moonraker.conf para poder enterarnos de actualizaciones de esta extensión:

// moonraker.conf
[update_manager led_effect]
type: git_repo
path: ~/klipper-led_effect
origin: https://github.com/julianschill/klipper-led_effect.git
is_system_service: False

Configurando efectos

Disponemos de diferentes efectos que podemos aplicar.

En el propio repositorio contamos con una aplicación (Windows y Mac) con la que podemos simular estos efectos.

Controlando los efectos

Podemos controlar los efectos usando la nueva macro que nos brinda LED EFFECTS usando SET_LED_EFFECT EFFECT=xxxxx donde xxxx es el nombre del efecto que definamos y que a continuación os proponemos algunos.

Podemos activar un ejemplo usando SET_LED_EFFECT EFFECT=panel_idle y pararlo con SET_LED_EFFECT EFFECT=panel_idle STOP=1 aunque podemos usar STOP_LED_EFFECTS para parar todos los efectos que tengamos funcionando.

También es posible usar el parámetro FADETIME con el que podemos deshabilitar durante x segundos un efecto SET_LED_EFFECT EFFECT=panel_idle FADETIME=1.0 en este ejemplo lanzamos el effecto panel_idle haciendo el efecto fade durante 1 segundo.

Lo ideal es lanzar estos efectos por ejemplo en determinadas fases de nuestras macros de inicio o fin de impresion o cualquier otra que creamos oportunas.

Algunos efectos como veremos más adelante se pueden asignar directamente al inicio de la máquina o asociarlos con un estado/valor de un componente/pin de nuestro sistema

Por otro lado al momento de crear nuestros efectos tendremos diferentes parámetros interesantes:

  • en el apartado leds indicaremos neopixel:xxxxxx donde xxxxxx es el nombre o ID del neopixel que definimos en nuetro printer.cfg (o un include si lo pusimos) También podemos asignar varios leds neopixel o incluso secciones de los mismos:

// usando varias tiras leds para un efecto
leds:
    neopixel:panel_ring
    neopixel:tool_lights
    dotstar:bed_lights
// usando secciones de leds de nuestras tiras para un efecto
leds:
    neopixel:tool_lights
    neopixel:panel_ring  (1-7)
    neopixel:panel_ring  (9-16)
    dotstar:bed_lights   (1,3,5)
  • autostart: true permite que el efecto se inicie al iniciar la máquina

  • fame_rate: indica el numero de refrescos del led por segundo

  • heater: en determinados efectos podemos asociarlo con el estado/valor de un heater también podemos asociarlo con un ventilador de temperatura en ese caso lo incluiremos dentro de "" (heater: "temperature_fan myfan")

  • analog_pin: si queremos que dependa del estado/valor de un pin analógico

  • stepper: igual que los anteriores pero de un stepper

Os aconsejamos visitar la página del creador para mas información detallada:

Efecto "fade"

Básicamente hace que nuestros leds bajen/suban el brillo continuamente

[led_effect panel_idle]
autostart:              true
frame_rate:             24
leds:
    neopixel:ambient_led
layers:
    breathing  10 1 top (.5,.5,1)

Efecto "fade" en error

En caso que nuestro sistema tenga un error critico los leds mostraran un color rojo con efecto fade

[led_effect critical_error]
leds:
    neopixel:tool_lights
    neopixel:bed_lights
layers:
    strobe         1  1.5   add        (1.0,  1.0, 1.0)
    breathing      2  0     difference (0.95, 0.0, 0.0)
    static         1  0     top        (1.0,  0.0, 0.0)
autostart:                             false
frame_rate:                            24
run_on_error:                          true

Efecto barra progreso

Podremos mostrar el progreso de la impresión, en este caso pasa de un azul claro a oscuro

[led_effect progress_bar]
leds:
    neopixel:progress_lights
autostart:                          true
frame_rate:                         24
layers:
    progress  -1  0 add         ( 0, 0,   1),( 0, 0.1, 0.6)
    static     0  0 top         ( 0, 0, 0.1)

Leds de notificación en tu cabezal de impresion

Aunque inicialmente esta enfocado al uso del neopixel en un cabezal Voron Stealthburner podemos adaptarlo a nuestras necesidades.

El script de post-procesado es el siguiente:

Como añadir el script de post-procesado

SuperSlicer/PrusaSlicer:

  • Copiaremos el script stealthburner_colors.py (o el nombre que le queramos dar) a nuestro ordenador, es importante que el directorio no tenga ningún espacio

  • Nos aseguraremos de tener instalado Python (si usas Windows puedes instalarlo desde su Store de forma sencilla)

  • Añadiremos el script de post-procesado en nuestra configuración del laminador:

  • Ahora ya podremos laminar como hacemos normalmente y si todo funciona correctamente veremos que se nos abre una ventana de terminal ejecutando el script

Cura

  • Copiaremos el script stealthburner_colors.py en el directorio scripts:

    • Para Windows, %APPDATA%\cura\<CURA VERSION>\scripts

    • Para Linux, ~/.local/share/cura/<CURA VERSION>/scripts

    • Para MacOS, ~/Library/Application Support/Cura/<CURA VERSION>/scripts

  • Añadiremos el script de post-procesado en Cura

    • Menú de extensiones -> Post procesado -> Modificar GCode

    • Añadiremos Stealthburner Colors

  • Ahora ya podremos laminar como hacemos normalmente y si todo funciona correctamente veremos que se nos abre una ventana de terminal ejecutando el script

¿Como validar que el script funciono correctamente?

Podemos abrir el gcode generado con un editor de texto y buscaremos referencias SET_LED LED=stealthburner... que deberían de coincidir con el cambio del tipo de trazada.

Personalizar el script a nuestro gusto

  • usar otro neopixel para las notificaciones, en este caso deberemos de asegurarnos que en LED= usemos el nombre del neopixel que nos interese

  • cambiar el color de un trazado en concreto... en ;TYPE: encontramos el tipo de trazada y en RED=1 GREEN=0.6 BLUE=0 podemos ajustar el color que más nos guste, aunque lo ideal es dejarlo como está, ya que coincide con el preview

  • ajustar los leds que queremos usar para estas notificaciones, en este caso podemos jugar con el valor de INDEX= para decirle que led o leds queremos usar para estas notificaciones

No nos vamos a centrar en la parte de instalación de WLED que dispones de una gran documentación para ello .

()

Si nos encontramos con errores durante la compilación, como .data is not within region data u otros similares probablemente tengamos un problema en nuestro AVR relacionado con ciertas versiones de Debien... para solucionarlo podemos . Recuerda reiniciar tu host Klipper!!!

()

Podéis descargarla desde la del repositorio:

En especial os aconsejamos leer detenidamente la sección que hace referencia a como .

🖇️
aquí
*
revisar este hilo
*
sección Assets de las Releases
https://github.com/julianschill/klipper-led_effect/blob/master/docs/LED_Effect.md
definir las capas de efectos
- English
siguiente calculadora
Podéis encontrar la última versión aquí
https://github.com/sadaoikebe/my-printer-config/blob/a2c68789e4ea27e8a032ac5c021d91a9bea744f3/stealthburner_colors.py
Referencia de nombre de pines Arduino