Host como segunda MCU
En ocasiones como por ejemplo añadir un sensor acelerómetro, un relé de apagado o la gestión de dispositivos por GPIO nos puede interesar usar nuestro host como segunda MCU y poder integrarla para su uso en Klipper.
Instalación firmware Klipper en nuestro Host para que actúe como MCU
El proceso es muy sencillo:
Entraremos en el directorio de Klipper lanzando el siguiente comando:
cd ~/klipper/
Instalaremos el soporte local para MCU, al usar el comando sudo nos solicitará la contraseña:
sudo cp ./scripts/klipper-mcu.service /etc/systemd/system/
Haremos que el servicio de MCU Klipper funcione en el arranque:
sudo systemctl enable klipper-mcu.service
Crearemos nuestro firmware Klipper para nuestro Host, en las opciones iremos con las flechas a la opción Micro-controller Architecture y pulsando enter seleccionaremos de la lista Linux process una vez seleccionado pulsaremos Q e Y para confirmar:
cd ~/klipper/
make menuconfig

Pararemos por seguridad el servicio Klipper con el siguiento comando:
sudo service klipper stop
Ejecutaremos el comando siguiente para crear y aplicar el firmware Klipper para nuestro Host:
make flash

Ahora tan solo tenemos que iniciar nuestro servicio Klipper y si hemos seguido las instrucciones correctamente y no falló ningún paso ya tendremos nuestro Host como segunda MCU:
sudo service klipper start
Si nuestro Klipper no conecta con nuestro Host como MCU podemos revisar el log de Klipper (klippy.log):
revisaremos que el servicio klipper-mcu funcione correctamente
systemctl status klipper-mcu
Nos debería retornar algo así:klipper@bigtreetech-cb1:~# systemctl status klipper-mcu ● klipper-mcu.service - Starts the MCU Linux firmware for klipper on startup Loaded: loaded (/etc/systemd/system/klipper-mcu.service; enabled; preset: enabled) Active: activating (auto-restart) (Result: exit-code) since Mon 2023-12-11 19:39:56 CET; 4s ago Docs: https://www.klipper3d.org/RPi_microcontroller.html Process: 2408 ExecStart=/usr/local/bin/klipper_mcu -r -I ${KLIPPER_HOST_MCU_SERIAL} (code=exited, status=255/EXCEPTION) Main PID: 2408 (code=exited, status=255/EXCEPTION) CPU: 6ms
En el caso que nos indique que el servicio no este funcionando y mediante un sudo service klipper-mcu restart nos diga que el servicio no existe realizaremos los pasos previos para montarlosi vemos problemas de Permission denied al intentar conectar a /tmp/klipper_host_mcu podemos intentar reparando añadiendo permisos al usuario pi al grupo tty necesario para el acceso:
sudo usermod -a -G tty pi
Añadir nuestro MCU Host a nuestra configuración
Ahora solo nos queda añadir a nuestro printer.cfg la configuración de nuestra nueva MCU:
# The rpi microcontroller is used as secondary.
# Typically, both the X and Y axes
# are connected to the main micro-controller. The rpi microcontroller is used
# on non time-critical functions such as enclosure sensors, additional fan or
# light sources
[mcu host]
serial: /tmp/klipper_host_mcu
Habilitar SPI (Raspberry)
Este paso es opcional y normalmente se utilizará en el caso de que queramos usar un componente externo SPI conectado a nuestra RPI como por ejemplo un acelerómetro.
Para ello y desde SSH ejecutaremos:
sudo raspi-config
Encontraremos la opción de habilitar SPI en Interfacing options:
Habilitar I2C (Raspberry)
Al igual que el paso anterior, en ocasiones puede interesarnos habilitar el soporte para I2C, normalmente para acelerómetros de la familia MPU.
Para ello y desde SSH ejecutaremos:
sudo raspi-config
Encontraremos la opción de habilitar I2C en Interfacing options:
Además, en este caso necesitaremos añadir o des comentar unas líneas de nuestro /boot/config.txt (o /boot/firmware/config.txt dependiendo de la distro usada para instalar el OS en nuestra RPI):
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
Utilidades GPIO (Raspberry)
Ahora que ya podemos usar nuestra Raspberry como segunda MCU de nuestro Klipper y dado que normalmente el objetivo suele ser para poder tener control desde Klipper sobre las funcionalidades de nuestra Raspberry como pueda ser el acceso a los GPIO os sugerimos algunas herramientas que facilitarán la gestión:
Lo primero que haremos será instalar las herramientas para tenerlas disponibles:
sudo apt-get install gpiod
Con gpiod instalado ya dispondremos de comandos útiles para la gestión de nuestro GPIO:
gpiodetect, que nos permitirá detectar nuestros gpio
gpioinfo, nos proporcionará información sobre gpio
Última actualización
¿Te fue útil?