Host como segunda MCU
Última actualización
Última actualización
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.
El proceso es muy sencillo:
Para OS Raspberry, recordamos que por defecto normalmente se usa "pi" como nombre de usuario y "raspberry" como contraseña.
Revisar en cualquier caso el user/password de vuestro sistema
Entraremos en el directorio de Klipper lanzando el siguiente comando:
Instalaremos el soporte local para MCU, al usar el comando sudo nos solicitará la contraseña:
Haremos que el servicio de MCU Klipper funcione en el arranque:
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:
Pararemos por seguridad el servicio Klipper con el siguiento comando:
Ejecutaremos el comando siguiente para crear y aplicar el firmware Klipper para nuestro Host:
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:
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 montarlo
si 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:
Ahora solo nos queda añadir a nuestro printer.cfg la configuración de nuestra nueva MCU:
Podemos cambiar el nombre de host en la definición de la sección [mcu por otro más descriptivo como rpi, raspberry, cb1 o host si os es más sencillo para identificarla, en todo caso recordad que ese será el nombre que debereis usar al definir componentes conectados a nuestro host pin: host:gpio211
a modo de ejemplo
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:
Encontraremos la opción de habilitar SPI en Interfacing options:
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:
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):
Con este cambio habilitaremos el canal I2C para que use 400000 como baudrate, en caso que nuestro dispositivo use uno diferente deberiamos ajustarlo
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:
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