Imagínese una situación así: son las 6 de la mañana de un sábado, usted está cómodamente tumbado en su cama, durmiendo aún profundamente. De repente, oyes a tu gato arañar la puerta, sus fuertes maullidos se hacen insoportables y tu gato tiene todo el tiempo del mundo para hacerte saber lo que necesita. ¿Sabe lo que realmente necesita? Lo sé: ¡tu gato quiere comida ya! Ahora mismo. ¿Cómo lo sé? Porque en algún momento empecé a dar de comer a mi gato a esa hora... Y, por supuesto, se convirtió en una nueva hora estándar para conseguir comida.
Este escenario me inspiró para construir un comedero automático para gatos, que eliminaría los problemas de la alimentación matutina del gato y lo mantendría contento.
Primera generación
La primera generación del comedero para gatos era un simple MVP hecho de un poco de cartón, servo simple y ESP WeMos. Utilizó servo para girar el recipiente superior 180 grados para dispensar la comida.
Un microcontrolador estaba conectado a mi Wi-Fi local y se comunicaba con el servidor Smart Home que ejecutaba HomeAssistant a través del protocolo MQTT. Gracias a ello, pude utilizar el sistema de automatización HomeAssistant para programar la alimentación y dispensación de comida mediante comandos de Google Home. Cada comida se definió como un evento especial en el calendario de Google. Esto me permitió controlar fácilmente la hora de alimentación del gato y cambiarla cuando fuera necesario.
Por supuesto, esta generación se encontró con algunos problemas:
- el recipiente superior a veces se desprendía del asa del servomotor y derramaba toda la comida (yo lo llamaba "el efecto Jackpot"),
- no tenía el mejor diseño,
- el cartón empezó a deteriorarse.
Como la mayoría de las MVP, sólo se utilizó durante 2 años hasta que se rompió.
Segunda generación
Decidí que el próximo comedero para gatos debería:
- construirse a partir de piezas impresas en 3D,
- utilizar Raspberry Pi 3,
- tener una pequeña cámara para ver cómo reaccionaba el gato y qué hacía el animal.
Empecé todo el proceso desde el diseño de los elementos básicos para la división de los alimentos. Luego, cuando los diseños estuvieron listos, todos los elementos se imprimieron utilizando la Creality Ender-3 y PLA
Piezas
Tras asegurarme de que todo funcionaba, procedí a diseñar e imprimir el resto de las piezas:
Base para RaspberryPi (Nivel 0)

Tiene lugares especiales para tornillos para ayudar a instalar Raspberry Pi. Además, en la parte delantera, hay un pequeño agujero para facilitar el acceso a la tarjeta SD de Raspberry Pi.
Soporte para cuencos
Esta pieza de plástico sirve para colocar un comedero metálico (por supuesto, se imprimió con filamentos de oro, para fama y gloria de mi gato). Se conecta con la base mediante 2 imanes de neodimio.

Servoportador (Nivel 1)
Este nivel se utiliza para sostener el servo mientras gira la pieza en el siguiente nivel. También tiene una pequeña pendiente para servir mejor la comida.

Contenedor del mecanismo de racionamiento (Nivel 2)
Se trata de un simple nivel genérico que porciona alimentos de un recipiente colocado encima. Se hace girar mediante el servo.

Soporte para recipientes de alimentos (Nivel 3)
Esta pieza se utiliza para sujetar el contenedor de alimentos. Es la única pieza de plástico que no se imprimió en 3D. Quería minimizar el contacto de las piezas impresas en 3D con los alimentos. En teoría, el plástico PLA transparente no tiene contaminantes tóxicos, pero compré el dispensador de cereales más barato y le quité la parte del contenedor de comida, sólo para estar seguro. Además, queda muy chulo.

Carcasa y tapa
Las dos últimas piezas eran la carcasa y la tapa. Aquí no hay nada especial, salvo más oro para que tenga mejor aspecto y se gane la admiración del gato.

Todas las piezas

Montaje final

Software
Raspberry Pi está ejecutando un Raspbian aprovisionado utilizando el ansible playbook para ejecutar estos servicios:
MotionEye
MotionEye es un software de código abierto para construir su propia vigilancia privada. Detecta cualquier cámara conectada a Raspberry Pi. Además, fuera de la caja, se obtiene la detección de movimiento, un punto final para compartir la corriente y el apoyo webhook.
Servicio Servo
Este servicio controla la rotación del servo. Es un simple Python que se conecta al servidor MQTT que ejecuta mi software Smart House y espera un mensaje para activar la rotación.
Servicio dirigido
Al igual que el servicio servo, implementa un protocolo para fuente de luz controlada por el MQTT en InicioAsistente.
Domótica
Y, por último, la automatización HomeAssistant que activa la alimentación.
Activa la dispensación de alimentos en dos situaciones:
- cuando la hora de comer aparezca en el calendario,
- cuando la Estación Espacial Internacional esté sobre mi casa.
Esta automatización código se ve así:
- alias: Alimenta al gato
gatillo:
- plataforma: estado
entity_id: 'binary_sensor.iss'
de: "off
a: 'on'
- plataforma: estado
entity_id: calendar.cat_feed_schedule
de: "off
a: 'on'
acción:
- servicio: script.feed_the_cat
Resumen
Obviamente, esta versión no es la última. Pero cumple su propósito: el gato está bien alimentado y yo tengo mis mañanas perezosas 🙂 .
Más información:
– E-commerce: Nuevo estado del juego 2020 (informe)
– ¿Cómo gestionar una empresa durante la crisis?
– Programación en Ruby. Terminal para principiantes - parte 2