Imaginez une telle situation : il est 6 heures du matin un samedi, vous êtes confortablement allongé dans votre lit, vous dormez encore à poings fermés. Soudain, vous entendez votre chat gratter à la porte, ses miaulements bruyants deviennent insupportables et votre chat a tout le temps de vous faire part de ses besoins. Savez-vous ce dont il a vraiment besoin ?
Imaginez une telle situation : il est 6 heures du matin un samedi, vous êtes confortablement allongé dans votre lit, vous dormez encore à poings fermés. Soudain, vous entendez votre chat gratter à la porte, ses miaulements bruyants deviennent insupportables et votre chat a tout le temps de vous faire part de ses besoins. Savez-vous ce dont il a vraiment besoin ? Je sais : votre chat veut de la nourriture tout de suite ! Tout de suite ! Comment le sais-je ? Parce qu'à un moment donné, j'ai commencé à nourrir mon chat à cette heure-là... Et, bien sûr, c'est devenu une nouvelle heure standard pour obtenir de la nourriture.
Ce scénario m'a inspiré la construction d'un distributeur automatique de nourriture pour chats, qui supprimerait les problèmes liés à l'alimentation du chat le matin et le rendrait heureux.
Première génération
La première génération de mangeoires pour chats était une simple MVP Il est constitué d'un peu de carton, d'un simple servo et d'un ESP WeMos. Il utilise un servo pour faire pivoter le récipient supérieur de 180 degrés afin de distribuer la nourriture.
VIDEO
Un microcontrôleur a été connecté à mon Wi-Fi local et a communiqué avec le serveur Smart Home exécutant HomeAssistant via le protocole MQTT. Grâce à cela, j'ai pu utiliser le système d'automatisation HomeAssistant pour programmer l'alimentation et la distribution de nourriture par le biais de commandes Google Home. Chaque repas a été défini comme un événement spécial dans le calendrier Google. Cela m'a permis de contrôler facilement l'heure des repas du chat et de la modifier si nécessaire.
Bien sûr, cette génération a rencontré quelques problèmes :
le récipient supérieur se détachait parfois de la poignée d'asservissement et renversait toute la nourriture (j'ai appelé cela "l'effet Jackpot"),
il n'avait pas le meilleur design,
le carton a commencé à se détériorer.
Comme la plupart des MVP, il n'a été utilisé que pendant deux ans, jusqu'à ce qu'il se casse.
Deuxième génération
J'ai décidé que la prochaine mangeoire pour chat devrait :
être construits à partir de pièces imprimées en 3D,
utiliser le Raspberry Pi 3,
disposer d'une petite caméra pour observer la réaction du chat et le comportement de l'animal.
J'ai commencé l'ensemble du processus en concevant des éléments de base pour le cloisonnement des aliments. Une fois les dessins prêts, tous les éléments ont été imprimés à l'aide de la machine Ender-3 de Creality et de PLA.
VIDEO
Pièces détachées
Après m'être assuré que tout fonctionnait, j'ai commencé à concevoir et à imprimer le reste des pièces :
Base pour RaspberryPi (Niveau 0)
Il comporte des emplacements spéciaux pour les vis afin de faciliter l'installation du Raspberry Pi. De plus, sur le devant, il y a un petit trou pour faciliter l'accès à la carte SD du Raspberry Pi.
Porte-bol
Cette pièce en plastique sert à placer un bol de nourriture en métal (bien sûr, elle a été imprimée avec des filaments d'or, pour la gloire de mon chat). Elle est reliée à la base par deux aimants en néodyme.
Porte-servo (niveau 1)
Ce niveau sert à maintenir le servo pendant qu'il fait tourner la pièce au niveau suivant. Il présente également une petite pente pour mieux servir les aliments.
Conteneur de mécanisme de rationnement (niveau 2)
Il s'agit d'un simple niveau générique qui prélève des portions de nourriture dans un récipient placé au-dessus. Il est mis en rotation par le servo.
Support pour récipients alimentaires (niveau 3)
Cette pièce sert à maintenir le récipient alimentaire. C'est la seule pièce en plastique qui n'a pas été imprimée en 3D. Je voulais minimiser le contact des aliments avec les pièces imprimées en 3D. En théorie, le plastique PLA transparent ne contient pas de contaminants toxiques, mais j'ai acheté le distributeur de céréales le moins cher et j'ai enlevé la partie contenant la nourriture, juste pour être sûr. De plus, il a l'air vraiment cool.
Boîtier et couvercle
Les deux dernières pièces étaient le boîtier et le couvercle. Rien de spécial ici, si ce n'est un peu plus d'or pour embellir le tout et gagner l'admiration du chat.
Toutes les pièces
Assemblage final
Logiciel
Le Raspberry Pi utilise une version de Raspbian approvisionnée à l'aide de la commande cahier de jeu ansible pour faire fonctionner ces services :
MotionEye
MotionEye est un logiciel open source permettant de créer sa propre surveillance privée. Il détecte toute caméra connectée à Raspberry Pi. De plus, vous bénéficiez de la détection de mouvement, d'un point de terminaison pour le partage du flux et de la prise en charge des webhooks.
Service d'assistance
Ce service contrôle la rotation du servo. Il s'agit d'un simple Python qui se connecte au serveur MQTT exécutant mon logiciel Smart House et attend un message pour déclencher la rotation.
Service dirigé
Tout comme le service d'asservissement, il met en œuvre un protocole pour les sources lumineuses contrôlées par le protocole MQTT en Assistant(e) à domicile .
Assistant domestique
Et enfin, l'automatisation HomeAssistant qui déclenche l'alimentation.
Il déclenche la distribution d'aliments dans deux situations :
lorsque l'heure du repas apparaît dans le calendrier,
lorsque la station spatiale internationale se trouve au-dessus de mon domicile.
Cette automatisation code ressemble à ceci :
- alias : Nourrir le chat
déclencher :
- plateforme : état
entity_id : 'binary_sensor.iss'
de : 'off'
à : 'on'
- plateforme : état
entity_id : calendar.cat_feed_schedule
de : 'off'
à : 'on'
action :
- service : script.feed_the_cat
Résumé
Évidemment, cette version n'est pas la dernière. Mais elle remplit son rôle - le chat est bien nourri et j'ai mes matinées de farniente 🙂 .
VIDEO
En savoir plus :
– E-commerce : Nouvel état du jeu 2020 (rapport)
– Comment gérer une entreprise pendant la crise ?
– Programmation en Ruby. Terminal pour débutants - partie 2