Links
Comment on page

Raspberry 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 nuestra Raspberry como segunda MCU y poder integrarla para su uso en Klipper.

Instalación firmware Klipper en nuestra Raspberry para que actúe como MCU

El proceso es muy sencillo:
  • Usando nuestro cliente SSH/Terminal favorito nos conectaremos a nuestra Raspberry. Os aconsejamos usar Terminus o PuTTY por ejemplo.
Os recordamos que por defecto normalmente se usa "pi" como nombre de usuario y "raspberry" como contraseña.
  • 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 nuestra Raspberry, 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 nuestra Raspberry:
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 nuestra Raspberry como segunda MCU:
sudo service klipper start
Si nuestro Klipper no conecta con nuestra RPI como MCU podemos revisar el log de Klipper (klippy.log) y 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:
sudo usermod -a -G tty pi

Añadir nuestra nueva MCU RPI a nuestra configuración

Ahora solo nos queda añadir a nuestro printer.cfg la configuración de nuestra nueva MCU:
printer.cfg
# 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
Podemos cambiar el nombre de host en la definición de la sección [mcu por otro más descriptivo como rpi o raspberry si os es más sencillo para identificarla, en todo caso recordad que ese será el nombre que debereis usar al definir componentes conectados mediante nuestra RPI

Habilitar SPI

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

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):
sudo nano /boot/config.txt
dtparam=i2c_arm=on,i2c_arm_baudrate=400000
Con este cambio habilitaremos el canal I2C para que use 400000 como baudrate, en caso que nuestro dispositivo use uno diferente deberiamos ajustarlo

Utilidades GPIO

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