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.

Saturday, June 5, 2010

Premiers essais chassis

Ca y est ! J'ai pu faire mes premiers essais de chassis ! J'ai utilisé des kits Tamiya (les références se trouvent dans la page Budget SPOP) qui permettent d'obtenir un résultat bien supérieur à une bête plaque de contreplaqué.
Pour l'interface igepv2-hardware, j'ai décidé d'utiliser un Arduino Duemilanove, qui permet de prototyper rapidement.
La communication se fera via le port USB de l'Igepv2. En effet, les concepteurs de l'Arduino ont eu l'excellente idée d'intégrer à la carte un chipset qui est reconnu comme un port serie.

Sunday, March 14, 2010

Installation d'Angstrom

NB : la quasi totalité des commandes/actions sont réalisées sur un PC. Sauf mention contraire.

Démarrage

Avant toute chose, j'ai essayé de brancher ma carte sur ma télévision, mais celle-ci ne supporte pas le 1024x768, j'ai donc du me rabattre sur la connection RS232 (n'ayant pas envie de connecter mon écran d'ordinateur). Ce choix est meilleur puisque la trace de démarrage est envoyé dans un terminal qui permet de scroller ensuite (contrairement à un écran). Dernier avantage, lors du démarrage, certaines informations ne sont pas affichées sur l'écran (notamment uboot)

La connexion RS232 nécessite le cable vendu sur le site de l'igep, et ne coute que 4€. La connexion de celui-ci est génée par le port USB, mais en forçant doucement, j'ai finalement réussi. La configuration de minicom est expliquée sur le site de beagleboard

Construction de l'image Angstrom

Maintenant que la carte démarre, il lui faut un OS. J'ai donc utilisé le créateur d'image en ligne. Coup de chance (ou pas ?), celui-ci propose l'igepv2 dans sa liste de machine. J'ai pris la version stable, avec le système "task-base-extended", puis les options par défaut.

Pour la partie packages, j'ai ajouté :

  • python
  • All kernel modules
  • Bluez
  • I2C-tools
  • JamVM
  • Juluis
  • OpenCV
  • Dropbear SSH
  • Wireless-tools

Booter Angstrom

Il faut commencer par partitionner la microSD correctement. J'ai donc utilisé la documentation de référence et le script de XorA pour faire des SD bootables.

J'ai suivi à la lettre le tutorial du beagle board. La carte microSD est sur l'igep, mais à la mise sous tension, rien. La diode ne s'allume pas. Je retire donc la carte, branche l'alimentation, et, par automatisme, remet la carte, et là, Angstrom boote. Je réfléchi, regarde le méchanisme de boot, puis, un peu au hasard, supprime le fichier MLO sur la partition de boot (puisque nulle-part la documentation de l'igep n'en faisait mention). Et victoire, ça démarre !

Le wifi et le reste

Pour le wifi, absolument rien de sorcier, celui-ci est détecté au démarrage :

$ dmesg
[...]
libertas_sdio: Libertas SDIO driver
libertas_sdio: Copyright Pierre Ossman
libertas_sdio mmc1:0001:1: firmware: requesting sd8686_helper.bin
libertas_sdio mmc1:0001:1: firmware: requesting sd8686.bin
libertas: 00:13:e0:c3:0c:3c, fw 9.70.3p24, cap 0x00000303
libertas: unidentified region code; using the default (USA)
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: PREP_CMD: command 0x00a3 failed: 2
libertas: eth1: Marvell WLAN 802.11 adapter
[...]

J'ai du nommer correctement les fichiers (sd8686_heper.bin et sd8686.bin) du drivers Marvell car ceux-ci s'appellent différement dans l'archive téléchargée, puis les placer dans /lib/firmware/ de la partition qui s'appelle rootfs.

Configuration du wifi.

NB : Les commandes sont tapées dans l'igep.

Pour une raison que j'ignore, le wifi refusait de se connecter automatiquement à mon réseau wifi en utilisant le DHCP. J'ai donc configuré l'adresse en statique en éditant le fichier /etc/network/interfaces

Je peux maintenant me connecter en SSH sur l'igep ! Les choses sérieuses commencent !

Références :

  • http://elinux.org/BeagleBoardBeginners
  • http://wiki.myigep.com/trac/wiki/HowToSetupWifi
  • http://www.angstrom-distribution.org/narcissus/

Saturday, March 13, 2010

SPirit of OPportunity



Ça y est, je me lance... Ce blog me servira a répertorier toutes mes reflexions sur la conception et la réalisation d'un robot.

La base du robot est un beagleboard-clone, aka l'igepv2. Je me suis laissé séduire par plusieurs aspects de cette carte :
  • la faible consommation (environ 2W) (même si celle-ci est énorme pour un robot)
  • l'alimentation en 5V, qui est simple à générer
  • les ports USB, le wifi et le bluetooth, qui procure une connectivité impressionnante.
D'un point de vue logiciel, c'est encore mieux, on peut faire tourner un linux dessus. De Ubuntu à Android en passant par Angstrom, cette carte utilise un processeur OMAP3 qui est à la base de beaucoup de smartphones.

Enfin, cette carte dispose d'un port i2c ce qui me permettra de commander facilement un microcontrolleur (pic 16f628 à priori) pour toute la partie motorisation.

Parlons de la motorisation. Mon choix se porte sur des servos-moteurs, beaucoup utilisés dans le modélisme. J'en utiliserais 2 modifiés en moteur à courant-continu pour le déplacement. Ces servos seront fixés à une base en contreplaqué (pour commencer, par la suite, surement une plaque de métal).

Deux autres servo serviront à orienter la webcam, un peu à la façon d'une tête. De multiples capteurs de distances/chocs/santé générale seront positionné sur la base.

Enfin, pour alimenter tout le robot, je pensais acheter des accus Li-FePO4, aussi connus sous le nom de A123 qui sont, aux dires des commentaires que j'ai pu lire sur les différents sites une véritable merveille (et bien plus sur que les Li-Ion ou Li-Po)

Prochaine étape : Mon installation de Angstrom.