Neopixel
Como personalizar y aprovechar el uso de Neopixel en Klipper
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 siguiente calculadora 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.0Probablemente 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.
No nos vamos a centrar en la parte de instalación de WLED que dispones de una gran documentación para ello aquí.
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.
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: 42Ajusta 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=3Asegú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_configen nuestro home
/mkdir -p ~/klipper_configDesde nuestro directorio Klipper,
cd ~/klipper, lanzaremos un make clean para limpiar configuraciones anteriores si existieran
make clean KCONFIG_CONFIG=~/klipper_config/config.arduinonanoUna 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 AVRProcessor 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.arduinonanoPararemos el servicio Klipper por seguridad
sudo systemctl stop klipperConectaremos 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 serialNos retornará algo como:
/dev/serial/by-id/usb-Arduino_xxxxxxxCompilamos 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_xxxxxxxAhora 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
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.shTambié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.

Podéis descargarla desde la sección Assets de las Releases del repositorio:

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
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: trueEfecto 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>\scriptsPara Linux,
~/.local/share/cura/<CURA VERSION>/scriptsPara 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
Última actualización
¿Te fue útil?

