====== Distributeur de croquettes connecté - iRoger ====== Un distributeur de croquettes pour chat 2.0, en wifi via VNC, ou ethernet via un navigateur web. {{:projets:distributeur_de_croquettes_connecte_-_iroger:iroger_plongee.png?nolink&300 |}} {{ :projets:distributeur_de_croquettes_connecte_-_iroger:iroger_contreplongee.png?nolink&300|}} La machine a trois fonctions : - distribuer une ration de croquettes directement - planifier un/plusieurs repas quotidien(s) - prendre une photo de la gamelle Objectif : Pouvoir partir en vacances sans - trop - se soucier du chat! Un grand remerciement à toute l'équipe du meilleur fablab de Paris, notamment pour l'impression 3D et la découpe laser, votre aide a été géniale! Le projet est open-source dans la mesure de ses composants (Raspberry Pi 0, Dynamixel XL320) : les modules python, une image complète de l'OS Raspbian Jessie (Linux) fonctionnel, de la documentation en extra dont un manuel, ainsi que la dizaine de pièces imprimées en 3D sont disponibles à l'adresse github ci-dessous. {{{project picture: machines: materiaux: logiciels: sources: https://github.com/Maxzor/iRoger liens: tags: usager:maxzor licence:cc-by-sa }}} {{ :projets:distributeur_de_croquettes_connecte_-_iroger:iroger_vue_elec_-_copie.png?nolink |}} ===== Logiciel ===== Ayant trempé depuis un moment dans l'univers Raspberry, je me suis servi naturellement d'une de ces cartes. J'avais comme projet à moins court terme de créer une bibliothèque temps réel pour servomoteur, ce projet était tout trouvé pour m'initier à de la programmation de bas niveau d'un Dynamixel :) L'occasion aussi de bidouiller un chouïa de QT pour l'interface graphique et de SQLite pour la base de données. Des plans pour le petit programme : {{:projets:distributeur_de_croquettes_connecte_-_iroger:20161227_195857.jpg?nolink|}} L'interface graphique du logiciel est réalisée à l'aide du binding Qt-Python PyQt.http://ogirardot.developpez.com/introduction-pyqt/ La commande linux pyuic permet ainsi de passer d'une extension .ui créée sous QtCreator à un module python. Plusieurs façons existent pour faire communiquer un Raspberry à un servomoteur Dynamixel, dont la carte Pixl du projet Poppy (https://forum.poppy-project.org/t/informations-sur-la-carte-pixl-raspberry-pi-xl320/2125/39), ou celle que j'ai retenue, utilisant un buffer trois états http://www.oppedijk.com/robotics/control-dynamixel-with-raspberrypi J'ai crée une "librairie" de commandes moteurs très succinte (des librairies beaucoup plus complètes existent!) grâce à la documentation Dynamixel - le programme de calcul des clés CRC (Cyclic Redundant Check) est fourni par Robotis, le constructeur, un analyseur logique s'est en plus avéré très utile.http://support.robotis.com/en/product/actuator/dynamixel_x/xl_series/xl-320.htm La programmation des distributions se fait via un CRUD(Create, Read, Update, Delete) sur la base de donnée très simple et légère SQLite. Un système de threads intégré à Qt permet de faire tourner en fond un module reposant sur la librairie schedule. [[https://schedule.readthedocs.io/en/stable/]] Etant ignorant complet en programmation web, après m'être essayé à NodeJS, j'ai préféré pour la connexion à distance recourir à l'application clé en main VNC ^_^. Remot3It se greffe en plus pour éviter d'exposer le port Raspberry au-delà de la box internet. ===== Electronique ===== Schéma des composants : {{:projets:distributeur_de_croquettes_connecte_-_iroger:electrical_circuit.pdf|}} Pour piloter une LED de puissance, requérant donc plus que l'alimentation faiblarde des ports GPIO du Raspberry, consulter ces très bons tutoriels : https://www.youtube.com/watch?v=Dn2NEZC5dEM&t=5s ===== Menuiserie et quincaillerie ===== J'ai opté pour une structure en bois massif, mais d'autres projets traînent sur Youtube en contreplaqué découpé par CNC plus économes. Le réservoir à croquette consiste en une bouteille en plastique, la distribution se fait par une "roue à aube" vers un tube en PVC qui mène à la mangeoire. Une trappe sur la façade avant permet de voir les entrailles du mécanisme ( la Led de puissance à l'intérieur s'allume pendant les distributions). Des plans pour la menuiserie : {{:projets:distributeur_de_croquettes_connecte_-_iroger:20170105_185921.jpg?nolink|}} Et de l'huile de coude! L'assemblage : {{ :projets:distributeur_de_croquettes_connecte_-_iroger:20170117_193011.jpg?nolink& |}} ===== Liste de courses ===== == Electronique == - un raspberry pi 0 - 5€ - un dongle wifi https://www.adafruit.com/product/814 - 10€ - la caméra pi noir - 15€ - un servomoteur Dynamixel XL320 - 15€ - trois convertisseurs de tension, un secteur 230V AC - 12V DC, un 12V-5V pour le raspberry et les modules logiques et un 12V-7,5V pour le servomoteur et la LED de puissance - 15€ - un buffer tri-state 74LS241 https://www.selectronic.fr/circuit-logique-ls-74-ls-241.html?suggestion=produit - 1€ - un transistor NPN 2SC2497 https://www.selectronic.fr/tr-npn-2sc2497-q-boitier-to-126.html?suggestion=produit - 2€ - une LED de puissance https://www.selectronic.fr/led-blanc-chaud-180lm.html?suggestion=produit - 5€ - une résistance de 5,5 Ohm 1/2 W, une autre de 250 Ohm 3W - 1€ == Autre == - Bois, contreplaqué - 15€ - Quincaillerie - 5€ On peut donc s'en sortir dans les 90€. ===== Tutoriels vidéos ===== {{youtube>MPzYqXy6vQ8?medium}} {{youtube>4A13pfu1AwI?medium}} ===== Difficultés rencontrées ===== A posteriori j'aurais du adopter un mécanisme de vis sans fin, sans doute mois sujets aux contraintes mécaniques : j'ai dû bidouiller un module de débourrage, le servomoteur intelligent permet en effet de mesurer une vitesse instantanée, un couple subi... Pour la partie électronique, pas autant de hics que de satisfaction à toucher à plein de domaines : buffer trois états pour la conversion UART/TTL, transistor NPN pour le contrôle de la LED de puissance... ===== Suites du projet ===== Le choix de faire de la photo au lieu de vidéos est délibéré, le but est d'augmenter la durée de vie de la carte microSD donc du système. Mais on peut sans problème rêver d'un module OpenCV, ou simplement XXX pour détecter la présence du chat et envoyer un alerte mail, avec même un gif sur le réseau. Un module hardware pour un contrôle filaire de la machine avec un petit écran LCD et quelques boutons est une autre piste d'évolution.