Saturday, May 18, 2013

DIY Cat feeder v2.0

Bingo, I just finished my cat feeder v2.0 ! No more cereal dispenser, I built everything myself ! I had the choice between different systems, but i chose an archimedes' screw. I had several prerequisites:

  • An accuracy of 5grs
  • Dispense food in two bowls
  • Easily get feedback

So I chose the Archimedes' screw, but I still had to supply it with dry food. So I get my saw and medium to build the box. I had set a size constraint : do not exceed the formwork of the radiator in the kitchen, or 11cm. In addition, I wanted to hang it on the wall and paint it in the color of the kitchen, in order to make it less visible.

The box is 11cm x 30cm x 32cm, and is made mostly from 8mm and 12mm medium. (It is almost my stock of wood scrap that determined the thickness).

The system is simple : It's a funnel for the dry food fall into the Archimedes' screw. I had some trouble with biscuits blocked in the hole (causing empty distribution). I solved the problem with some dremel sanding to cut the holes. I then have no worry with it.

When the biscuits reach the bottom of the tank, the Archimedes' screw, which is inside a 4cm diameter PVC pipe, moves the dry food to the two holes.

On this intermediate release, you can see the various components i used : an Arduino, a proto-shield, a DS1307 based RTC board, and a relay board with the IKEA screwdriver motor (FIXA 3.6V).
To attach the motor to the wood, i used polymorph. The binding is very strong and stable, I did not notice any vibration at startup. Pretty awesome.

I also improved the interface by adding a LCD screen, and a serial interface to allow modification of parameters (RTC time, number of distributions per day, reset the last fooding date) and dispense a dose, by sending command throught serial link : h to print help, + to increase the daily distributions...

And finally, here is the LCD display when a distribution occurs. It's a HD77480 LCD screen I bought on ebay for 5€. I used the classical 4-bits interface and the LiquidCrystal library available with the Arduino IDE. I create some custom characters to draw a small clock on the second line.
The first line print the current time and the number of distribution per day, the second the remaining time before the distribution.

Here is a test-run of 24 distributions :

All the code is available on my github

Distributeur de croquettes, v2.0

Ca y est, j'ai fini mon distributeur v2.0 ! Cette fois-ci, pas de distributeur de céréales, pas de bricolo-bricolette, j'ai tout construit moi-même. Plusieurs systèmes se sont présentés à moi, mais j'ai choisi la vis d'archimède. J'avais plusieurs pré-requis :

  • Être précis à 5grs près
  • Distribuer dans deux gamelles
  • Avoir facilement un feedback

J'ai donc choisi la vis d'archimède, mais encore fallait-il l'alimenter en croquettes. J'ai donc sorti ma scie et mon MDF pour construire la "boite". J'avais une contrainte de taille fixée : ne pas dépasser du coffrage du radiateur de la cuisine, soit 11cm. De plus, je voulais pouvoir l'accrocher au mur, et, le peindre dans la couleur de la cuisine, afin de le rendre peu visible.

La boite fait donc 11cm x 30cm x 32cm, et est faite en majorité de MDF de 8mm et 12mm d'épaisseur (C'est surtout les chutes qui me restaient qui ont déterminé l'épaisseur).

Le système est simple : il s'agit d'un entonnoir pour que les croquettes tombent au niveau de la vis d'archimède. J'ai eu quelques problèmes de blocage de croquettes au niveau du trou (provoquant une distribution à vide), mais j'ai résolu en passant à la dremel le trou afin d'arrondir les angles. Depuis, je n'ai plus eu de souci.

Une fois que les croquettes atteignent le bas de la réserve, la vis d'archimède qui est à l'intérieur du tube de PVC (4cm de diamètre) permet de déplacer les croquettes vers les deux trous.

Sur cette version intermédiaire, on peut voir les différents composants utilisés : Arduino, un proto-shield, la carte à base de DS1307, une carte à relais ainsi que le moteur de FIXA 3.6V.
Pour fixer le moteur sur le bois, j'ai utilisé du polymorph. La fixation est très stable, je ne remarque aucune vibration au démarrage - le rêve -.

J'ai aussi amélioré l'interface en ajoutant un écran LCD, ainsi qu'une liaison série permettant de modifier certains paramètres (heure du RTC, nombre de distributions par jour, réinitialiser la dernière distribution, et distribuer une dose), en envoyant sur la liaison série différentes commandes : h pour afficher l'aide, + pour augmenter les distributions quotidiennes...

Et enfin, voici l'affichage au moment où une distribution a lieu. Il s'agit d'un écran HD77480 que j'ai eu pour quelques euros sur ebay. J'ai utilisé l’interfaçage classique sur 4 bits ainsi que la librairie LiquidCrystal disponible en standard sur Arduino. J'ai pu construire des caractères personnalisés pour dessiner une petite pendule sur la deuxième ligne.

Un essai de 24 distributions pour calibrer le total :

Vous pouvez trouver le code sur mon github

Friday, April 19, 2013

The Awesomeness of Plastic

For many years, I'am looking for THE ultimate tool to build something. I looked at CNC-router (but they are expensive, cumbersome, and they make a lot of dust), 3D printers (very expensive, cumbersome and weak material), and conventional wood working tools. All of these tools don't satisfy me : I live in a parisian flat, and I miss time to learn wood-working.

One day, I ran accross Sugru. I hoped that the search for my Grail was over. I bought a 8-pack and started to hacked my things. I used it on my keys to make them nicer to handle. I repaired many things. I protected my Mac chargers. But nothing big, because i'd need more than 5g of Sugru !

My needs

I'm currently working on the 2nd version of my Cat-feeder (in french). This first version's portion is quite inaccurate. The distribution unit is the volume contained in one of the distribution wheel separation. And because I have no position feedback on the wheel, I turn the wheel for 200ms, which is almost a 1/6 turn. But i would like to be more accurate with 5g portions.

We see the axially spaced compartments. 1 compartment is the unit.

I studied some possibilities :

  • Increase the axis size to reduce the compartment volume. I could use Sugru for that.
  • Use a servo to create horizontal movement and push a 5g portion.
  • And my favorite : Use a double archimede screw with inverted screw thread to push biscuit to two ends (One end by cat)

Problem

Have you ever search on ebay a 4cm archimed screw, with 4cm thread ? They exist but in an industrial flavor : only 1500$ the 3m stainless steel screw ! But the plastic version of 20cm for DIYers, you're wasting your time. I looked for epoxy resin, but that causes an allergic reaction on skin. Because I am aware of my cat health, I prefer not poison them. And one day i was deperate, I search in google : "DIY plastic". On the first page, I found DIY Material Guide : A Polymorph Plastic. You can almost make everything. Here is a guide to help you starting modeling polymorph. With a little training, it's easy to obtain simple forms. And you can try a lot, because you only need to heat it, and retry.

I found mine on ebay (BLRTronic), less than 15€ for 500g. To give you an idea of the price, my archimede screw weight about 20 grams... I will use it for axis, motor fixation, and electronic case .

I'm a big fan of polymorph, i think i found the grail, and my archimede screw is almost done !

PS : The axis of my polymorph screw is an Aluminum rod.

Saturday, February 23, 2013

Le plastique, c'est fantastique !

Depuis plusieurs années, je suis à la recherche de l'outil ultime pour construire quelque chose. J'ai cherché du coté des CNC (Cher, encombrant, et usage incompatible avec la vie en appartement du fait de la poussière !), des imprimantes 3D (Beaucoup trop cher, encombrant, et matériau trop fragile), des outils en tout genre pour le bois. Cette liste à la Prévert ne me convient pas : j'habite un appartement parisien et je n'ai pas le temps de faire un CAP/BP menuiserie/ébenisterie.

Un jour, je suis tombé sur Sugru. J'y ai mis beaucoup d'espoir : peut-être était-ce mon graal ? J'en ai donc acheté, j'ai utilisé les 8 packs de 5 grammes. J'ai rendu mes clefs plus agréables à prendre en main. J'ai réparé quelques petits objets. J'ai fait la protection pour les chargeurs Mac. Réparé un éclat du plan de travail de la cuisine. Mais rien d'énorme, et pour cause : 5g de Sugru, c'est tout petit.

Le besoin

Je travaille depuis quelques mois sur la version 2 de mon distributeur de croquettes pour chats. En effet, la version actuelle n'est pas très précise sur la quantité distribuée. L'unité de distribution est le volume contenu dans une des séparation de la roue à "aubes". Et comme je n'ai pas intégré de feedback sur la position de la roue, la distribution est faite globalement pour un temps donné : 200ms, ce qui correspond à peu près à 1/6 de tour. Mais j'aimerais pouvoir distribuer à 5g près.

On voit bien ici la portion minimale

J'ai donc étudié diverses possibilités :

  • Augmenter la taille de l'axe pour réduire le volume d'une séparation. J'imaginais utiliser de la Sugru pour ça.
  • Utiliser un servo pour pousser une portion de croquette.
  • Et ma préférée : utiliser une vis d'archimède double avec un filetage dans chaque sens pour déplacer les croquettes vers 2 sorties (une par chat)

Le problème

Avez-vous déjà cherché sur ebay une vis d'archimède d'environ 4cm de diamètre, et de pas 4cm ? Elles existent, mais en version industrielle : comptez 1500$ les 3m en acier. Mais en version plastique aux dimensions de mon distributeur (environ 20cm de longueur), c'est peine perdue. J'ai cherché du coté des résines époxy, mais leur contact avec la peau peut provoquer des réactions allergiques, étant attentif à la santé des chats, je préfère ne pas les intoxiquer. Et puis un jour, désespéré, je tape dans google : "plastic diy". Sur la première page, je trouve : DIY Material Guide : A Polymorph Plastic. Les utilisations sont infinies, je vous laisse constater. On trouve des guides un peu partout. Cela demande un peu d'entrainement, mais le fait de pouvoir refondre et recommencer laisse le temps de bien apprivoiser la chose !

J'ai trouvé le mien sur ebay chez BLRTronic, pour un peu moins de 15€ les 500g. Pour vous donner une idée, ma vis d'archimède pèse environ 40g... Je vais m'en servir pour faire les roulements d'axe, les fixations moteur et le boitier de l'électronique.

Bref : je suis fan, j'ai enfin trouvé le Graal, et j'ai presque fini ma vis d'archimède !

PS : j'ai fixé le polymorph sur une tige en alu de section carrée 7,5mm.

Monday, November 19, 2012

Rechargement du passe navigo sous linux


Il y a peu de temps, j'ai reçu un email de la RATP me disant que j'avais été sélectionné pour participer à la phase de test du rechargement de passe navigo directement sur son ordinateur. J'ai gratuitement reçu un lecteur de cartes à puce, mais des lecteurs de type Gemalto ou autres fonctionnent aussi (et ne coute qu'une dizaine d'euros sur ebay !)
Malheureusement, en se connectant sur le site rechargercommandernavigo.fr, mon système d'exploitation n'est pas supporté. Et pour cause, seul Windows et MacOS sont supportés. Que se passe-t-il en changeant mon user-agent ? La configuration a l'air d'être bonne ! En cliquant sur continuer, ça coince un peu. Message d'erreur, mon lecteur n'est pas connecté. Dommage, ça aurait pu fonctionner. Mais il est hors de question que je baisse les bras.

Monday, June 11, 2012

RTC avec un arduino - Distributeur de croquettes pour chats

Cet article est la suite de mon article précédent et nous nous intéresserons à la gestion du temps.

Quelle heure avez-vous ?

Pour ce projet, j'ai utilisé un RTC, qui permet de fournir au Arduino une source de temps, y compris en cas de redémarrage ou même de coupure de courant. C'est d'ailleurs le composant qui est utilisé dans les ordinateurs pour maintenir l'heure du BIOS. Il existe plusieurs versions de RTC : certaines donnent l'heure, d'autres, permettent de programmer une heure de réveil.
L'autre avantage du RTC par rapport à la gestion de temps "basique" de l'Arduino est qu'il permet de s'abstraire également de toute la gestion du calendrier (jour de la semaine, mois à 30 ou 31 jour et année bissextile).
J'ai donc utilisé un composant de chez Maxim, le DS 1307, qui est un RTC sur bus i2c. Il a l'avantage d'avoir une librairie arduino prête à l'emploi, ce qui facilitera grandement l'intégration !
Le câblage est très simple et nécessite quelques composants auxiliaires :

  • Un quartz 32.768 KHz
  • 2 résistances de pull-up 2.2k
  • Une pile bouton CR2032
J'ai commencé par câbler le RTC sur une plaque de prototypage.
Puis j'ai soudé le composant sur une plaque d'essai en bakélite. Rien de bien compliqué.

La gestion du RTC dans l'Arduino

Une librairie arduino facilite grandement l'exploitation du composant. Comme il s'agit d'un composant I²C, la connexion se fait sur les E/S dédiées de l'Arduino :
  • SDA (data line) sur l'E/S analogique 4
  • SCL (clock line) sur l'E/S analogique5
Ensuite, c'est simplissime, grâce à librairie d'Adafruit :
#include 
#include "RTClib.h"

RTC_DS1307 RTC;

void setup () {
    Serial.begin(57600);
    Wire.begin();
    RTC.begin();

  if (! RTC.isrunning()) {
    Serial.println("RTC is NOT running!");
    // following line sets the RTC to the date & time this sketch was compiled
    RTC.adjust(DateTime(__DATE__, __TIME__));
  }
}
La lecture de l'heure se fait ensuite de manière triviale :
DateTime now = RTC.now(); 

Et après ?

Je vous parlerais de la partie électronique de puissance, c'est à dire de la façon dont j'ai interfacé le moteur du tournevis électrique.

PS

Une fois que j'avais soudé sur plaque en backélite, j'ai trouvé sur mon site préféré un petit module tout fait à base de DS1302, à un prix défiant toute concurrence : 3.60$ !
Le DS1302 est un peu différent du DS1307 : il n'utilise pas d'interface I²C, mais une interface série "à l'ancienne". Ce n'est pas vraiment un problème pour l'interfaçage, on perd juste l'avantage du bus I²C (qui permet d'interfacer plusieurs (jusqu'à 127) modules sur les 2 pins dédiées). D'ailleurs, le DS1302 est suffisamment répandu pour avoir (au moins) une librairie sur github.

Friday, May 18, 2012

Distributeur de croquettes pour chats

Avoir des animaux de compagnie est souvent source de contraintes : Il faut qu'ils aient, eux aussi, de la compagnie ! Et c'est d'autant plus vrai lors des week-ends où l'on voudrait prendre le large.

Beaucoup de chats se suffisent à eux même et peuvent rester seul pendant quelques jours : ils vivent d'amour (des croquettes en quantité suffisante) et d'eau fraîche (un évier rempli d'eau par exemple). La situation se complique lorsque les chats sont gloutons : les miens. Ils ne se régulent pas et se goinfrent littéralement.
La solution parait simple ; Il existe sur Amazon des distributeurs automatiques dont le prix est prohibitif (près de 100€) et dont l'efficacité est fort douteuse. Certains commentaires parlent de produits HS au bout de 3 mois, d'autres que les croquettes ne sont pas forcement adaptées et bloquent l'appareil. Étant grand fan de robotique, de DIY, et de hacking, je me suis donc lancé, il y a un peu moins d'un an, dans la création d'un distributeur de croquettes. Laissez-moi vous présenter mon aventure.