Fabrication d’une luge

Ce matin mes enfants se sont réveillés avec une idée bien précise en tête : fabriquer une luge.

Ça m’a paru envisageable et on s’est lancés avec le minimum de réflexion pré-montage, c’est à dire qu’on est allés dans le garage attraper tous les bouts de bois qui nous ont semblé pertinents – et en particulier nous sommes tombés sur LES BONS bouts de bois : des lattes d’un vieux sommier, à l’avantage d’être légèrement courbées.

Quelques mesures plus tard,

dsc_1493

Puis quelques coups de scie sauteuse (principalement exécutés par Paul), quelques vis, et nous voilà propriétaires d’une luge magnifique !

dsc_1495Espérons qu’il neige cette année, on ira l’essayer à Pech David !

dsc_1496Je vais devoir y retourner, car Gaspard voudrait maintenant construire… un bateau de 100 passagers.

My own homemade BB-8

After having seen the latest Star Wars movie, I, like numerous other geeks, fell in awe with the BB-8 droid, and, like numerous other geeks, I wanted to try and build one.

So, I started by getting a 300mm plastic ball and another of 180mm diameter (which was more of a 160mm ball according to my ruler…), a pair of motors, and got the electronic parts box out of the cupboard, guessing I’d just start and solve problems as they come instead of spending a lot of time with plans, and getting demoralised half-way.

DSC_0526

The start was rather easy: get the useless parts out of the balls, and sand them so the paint would adhere.

DSC_0534

Then I made a few calculations to create the main board at the lowest possible place, and placed the motors and wheels at each side.

DSC_0541

Going on with the battery holder, even lower, in order to help with stability:

DSC_0544

Spoiler alert, this USB smart battery didn’t provide enough current, so later it got replaced with a S2 LiPo battery I use in RC cars.

DSC_0550

The fun part began, with a bit of Arduino programming. I used a standard 2.4GHz receiver for control, added a 3-axis gyroscope in order to try and compensate wobbling with the motors.

DSC_0558

About everything, laid out. Spoiler alert: the gyro is of no use, because the motors, which are DC motors with reductors, are far from precise enough to compensate anything. Also, even if they were precise, they could compensate pitch (front-to-back wobbling) but not roll (lateral).

DSC_0563

After upgrading the battery, the first test was rather promising:

And here came the time for the difficulties: adding the mast:

DSC_0562

And the head, with magnets to hold it in place, and caster balls to have it roll freely:

12552541_10205407629492323_2296425100086899696_n

Spoiler alert: the very little caster balls did not roll freely at all, and too much approximation in the magnets’ placement made them touch the body’s ball, making very unpleasant sounds (and also the head had that tendancy to fall):

But still, it was promising. So I started painting.

DSC_0565

DSC_0569

DSC_0570

DSC_0571

And after hours of masking, painting, re-masking, re-painting, I arrived at an unperfect, but not too shameful result:

DSC_0573

Went on with the head…

DSC_0574

DSC_0576

But with just the added weight of the two “eyes”, it couldn’t sit on BB-8 more than a couple meters… So I ditched it and re-made it from a styrofoam ball (this time of the correct size), and while I was at it, re-made the magnetic mechanism with better magnets, better caster balls and better measurements.

DSC_0578

DSC_0589

And the result looks pretty good in my opinion!

DSC_0593

It also rolls much better, although there are still a few noises and it can look like BB-8 had a few beers:

It took my three weeks to get to this point. I knew I could make it a month, so I’ve upgraded a few things, mostly so I don’t have to open the body each time I want to power BB-8 on: first, a magnetic switch (don’t use a bicycle odometer’s sensor, it won’t accept so much current and will solder itself the first time), which I can use to power on BB-8 from the outside (after a bit of searching each time):

DSC_0591

It’s made out of a bendable piece of metal and a magnet.

You can also see there a pair of relays, which are used to auto-power-off the Arduino and its motor shield after two minutes of RC signal loss; this way, I don’t have to open the body to shut it down either.

DSC_0590

And I’ve stuck in a little LiPo battery tester, so that it can scream at me when the LiPo’s starting to be too discharged (LiPos don’t like that, and when LiPos are unhappy, they tend to catch fire if you look at them wrongly, so.)

I now consider my BB-8 complete although it’s far from perfect ! I think it wasn’t the easiest robot to start building robots, but then, I enjoyed making it. Maybe next time I’ll do an R2D2, and although the body work will be harder, the mechanics will be a walk in the park.

After building it I’ve watched other videos from other BB-8 makers, and it is really fun to see how many different designs there are. Some are very simple with an RC car at the bottom of the ball, some roll by direct transmission and have turning performed by a fly wheel; some are holonomous robots with multi-directional wheels, some use indirect transmission like mine, but a flywheel to turn (this guy is good, but also has access to great resources, so I do think I could do much better if I had CNC mills, 3D printers and ACTUALLY GOT PAID TO DO IT), and this 17 years old’s model works exactly like mine, but damn this kid is skilled.

Mon petit BB-8 fait maison

Après avoir vu le dernier Star Wars, comme de nombreux geeks, j’ai été épaté par le petit droïde BB-8, et comme de nombreux geeks, j’ai eu très envie d’essayer d’en faire un.

J’ai commencé par dégoter une sphère en plastique de 300mm, et une de 180mm (qui ressemblait plus, d’après mon pied à coulisse, à une sphère de 160mm quand je l’ai reçu…) ; une paire de moteurs. Puis j’ai sorti la boîte à électronique du placard, avec en projet : me lancer et résoudre les problèmes comme ils viennent, plutôt que de  commencer par planifier plein de trucs et de perdre courage au milieu.

DSC_0526

Le début était plutôt facile : enlever les parties inutiles des boules, puis les poncer pour que la peinture tienne (et qu’elles soient bien lisses).

DSC_0534

Ensuite quelques petits calculs pour savoir où placer le châssis le plus bas possible, une petite découpe de contre-plaqué, et j’ai commencé par fixer les moteurs.

DSC_0541

J’ai ensuite ajouté la batterie, le plus bas possible pour essayer de stabiliser le tout le mieux possible :

DSC_0544

Spoiler alert : Cette batterie USB, bien que capable de sortir 2.4A en 5V, n’a pas la pêche nécessaire pour faire bouger quoi que ce soit. Elle s’est vue remplacée par une batterie LiPo 2S que j’utilisais pour mes voitures radiocommandées.

DSC_0550

Puis j’ai commencé la partie facile (pour moi) : un peu de programmation Arduino. J’ai utilisé un récepteur 2.4GHz standard, et ajouté un gyroscope électronique 3 axes, imaginant pouvoir l’utiliser pour compenser un peu le tangage. Enfin, j’ai utilisé un shield moteurs Adafruit pour les moteurs.

DSC_0558

Le résultat.. Spoiler alert : le gyro ne sert à rien, car les moteurs à courant continu et réducteurs sont bien trop imprécis pour compenser quoi que ce soit. Même s’ils l’étaient, ils pourraient compenser le tangage (d’avant en arrière) mais pas le roulis (latéral).

Enfin si, le gyro sert à couper les moteurs et faire marche arrière quand on va droit dans un mur (sinon, le châssis commence à grimper dans la boule et la tête finit par tomber en arrière.)

DSC_0563

Après l’upgrade de batterie, le premier test était plutôt encourageant :

Et voilà les difficultés qui commencent, avec l’ajout du mât :

DSC_0562

Et de la tête, dotée d’aimants pour la maintenir en place (avec ceux du mât en dessous), et des billes multi-directionnelles pour rouler librement sur le corps.

12552541_10205407629492323_2296425100086899696_n

Spoiler alert :les toutes petites billes multidirectionnelles sont bourrées de frottements et roulent très mal. D’autre part, trop d’approximation dans le placement des aimants les faisaient frotter contre le corps, occasionnant de disgracieux grincements (et de disgracieuses chutes de tête).

Mais bon, c’était prometteur. Donc je me suis lancé dans la peinture.

DSC_0565

DSC_0569

DSC_0570

DSC_0571

Après plusieurs heures de masquage, peinture, démasquage, jurons, remasquage, repeinture, etc, je suis arrivé à un résultat imparfait mais pas trop honteux.

DSC_0573

J’ai donc continué avec la tête… (Ici, les “yeux”)

DSC_0574

DSC_0576

Mais à mon grand désespoir, le simple poids des deux yeux (pourtant fabriqués en véritables boules de Noël) entrainait inexorablement la tête vers le sol. J’ai fini par me décider qu’elle était irrécupérable, et je l’ai toute refaite, cette fois ci avec une boule en polystyrène (de la bonne taille cette fois !), et pendant que j’y étais, j’ai refait tout le mécanisme avec de meilleurs aimants, de meilleures billes multidirectionnelles (trois fois plus grosses et sur roulements), et surtout, de meilleures mesures.

DSC_0578

DSC_0589

Et le résultat rend plutôt bien, si vous voulez mon avis !

DSC_0593

Ça roule aussi beaucoup mieux, même s’il y a encore quelques vibrations parasites et qu’il puisse semble que BB-8 a bu un coup ou deux de trop :

Ça m’a pris trois semaines d’arriver à ce point de la construction. Je n’en avais pas encore tout à fait marre, donc j’ai amélioré deux-trois trucs. Principalement, je n’avais pas envie de devoir ouvrir BB-8 à chaque fois que je voulais l’allumer. J’ai donc bricolé un interrupteur magnétique (avec un aimant et un trombone. N’essayez pas avec un vieux capteur de compteur de vélo, ça ne supporte pas l’ampérage, et ça s’auto-soude au premier essai. Ne me demandez pas comment je le sais.)

Évidemment, pour repérer l’interrupteur magnétique de l’extérieur et en approcher les aimants, ce n’est pas évident, mais bon, ça marche quand même car je connais à peu près la hauteur du châssis et je l’ai positionné à peu près à l’ “avant” (qui se repère par l’oeil de BB-8).

DSC_0591

J’ai aussi ajouté une paire de relais, qui sont utilisés pour que l’Arduino puisse s’auto-éteindre au bout de deux minutes sans signal de la télécommande. Cela me permet de ne pas avoir à l’ouvrir pour l’éteindre non plus.

DSC_0590

Et enfin, j’ai collé un mini testeur de batterie LiPo, pour qu’il puisse bipper quand la batterie commence à se vider dangereusement (je dis dangereusement, parce que les LiPo c’est susceptible, ça peut prendre feu si on les regarde de travers).

Voilà, je considère mon petit BB-8 terminé, même s’il est loin d’être parfait ! Je crois que ce n’était pas le plus simple des robots pour un premier, mais bon, je me suis bien amusé à le construire. Peut-être que la prochaine fois je ferai un R2D2, qui, bien que plus demandeur au niveau carrosserie, sera “les doigts dans le nez” niveau mécanique.

Après la construction, je suis allé voir sur Youtube des vidéos d’autres constructeurs de BB-8, et c’est plutôt amusant de voir combien de solutions il y a pour faire rouler une boule sur elle-même. Il y en a de très simples avec une voiture télécommandée dans la boule, d’autres roulent par transmission direct et tournent via une roue inertielle ; d’autres encore sont des robots holonomes équipés de roues multi-directionnelles (très amusant à voir rouler), certains utilisent une transmission indirecte comme le mien, mais une roue inertielle pour tourner (Ce type est bon, mais il a aussi accès à pléthore de matériel, et j’aime à croire que je pourrais faire bien mieux si j’avais des imprimantes 3D, des usineuses CNC, tout le tintouin ET QU’ON ME PAYAIT POUR ÇA), et enfin le modèle de cet ado de 17 ans fonctionne exactement comme le mien, mais bordel ce môme est doué.

Self-shutting-down Arduino

I have recently finished building my own BB-8 robot (more on that later!) and faced the problem of not wanting to open its body to power it on and off. I came up with the following idea.

self-shutting-down-arduino_schem

Here, the battery is connected to the Arduino’s ground and a simple relay’s ground. The positive lead of the battery is connected to the NO (normally open) pin of the relay, and the Arduino’s VIN pin is connected to the MAIN pin of the relay. So, as long as the relay’s open, no current goes to the Arduino. To start the Arduino, I’ve also connected a push button to the NO and MAIN pins of the relay. When I push the button (in BB-8’s case, it’s a magnetic button), this lets the Arduino boot up.

The only thing needed then, in order to be able to release the button and have the Arduino stay powered, is to close the relay programmaticaly :

 

#define POWER_PIN 2
void setup() {
  pinMode(POWER_PIN, OUTPUT);
  digitalWrite(POWER_PIN, LOW);
}

Then you only need to keep the button pressed during the Arduino’s bootup, and as soon as you hear the relay click, you can release it.

Now, to power off the Arduino, it’s just a matter of setting the relevant pin HIGH on a predefined condition (in BB-8’s case, it’s after 60 seconds of RC signal loss):

void loop() {
  /* do your normal stuff */

  if (now() - rc_signal_lost > 60) {
    power_off();
}

void power_off() {
  digitalWrite(POWER_PIN, HIGH);
}

In my case, the circuit is more complicated, because I’m using a 2S LiPo battery. These things hate being over-discharged, so I added a LiPo battery tester which beeps when the cells’ voltage drop below a certain level. The tester is plugged on the three charge balancing leads of the LiPo battery, which allow to test each cell independantly. So, in my bot I have wired two relays, one of them for each cell’s positive lead. This allows to have the LiPo battery tester without having it draining the power when the bot is off.

Here is the schematics for my bot:

self-shutting-down-arduino_schem

Les hauts et les bas de la paternité

La journée commence à 9h30 après une super grasse matinée offerte par les enfants qui m’ont laissé dormir.

Ils ouvrent leur calendrier de l’avent du jour, préparé par leur maman, et y trouvent un jeu de bulles chacun.

On petit déjeune.

Une fois habillés, ils vont dans le jardin et font de belles bulles pendant dix minutes. Puis deux bulles se collent par terre et chacun a l’idée de les écraser en même temps. Gaspard étant le plus rapide, c’est lui qui se fait écraser le pied par Paul. Il râle. Il se jette sur Paul et fait tomber son tube de bulles. Paul pleure. Je râle. Je partage le tube de Gaspard, seul rescapé, entre les deux enfants. Gaspard râle et renverse son tube dans l’herbe exprès. Puis il fait une colère.

On part chercher le sapin de Noël et Paul tire la remorque que j’ai prévue pour ne pas que nous nous fatiguions trop. Gaspard est déguisé en chevalier. On choisit le sapin ensemble, on rentre, on le pose, puis on mange. Les enfants débarrassent leurs assiettes et leurs couverts avec plaisir.

Ils n’ont pas envie de faire la sieste et moi oui ; donc nous tombons d’accord sur un temps calme et ils me laissent dormir très gentiment.

Lorsque vient l’heure de me réveiller, ils chahutent en rigolant, puis quelque chose part de travers et l’un des deux pleure et se fâche contre l’autre. Je les renvoie dans leur chambre en leur demandant de réessayer dans cinq minutes, en plus calme s’il vous plaît.

On fait un gâteau et chacun se réjouit d’aider. Ils se chamaillent un peu pour savoir qui va verser qui va mélanger qui va beurrer le moule mais ça va. Ils raclent le plat avec plaisir jusqu’au moment où Gaspard monopolise le bol. Paul hurle sur Gaspard. Je fais la police. Puis Paul demande à faire la vaisselle et lave tout.

Pendant que le gâteau cuit puis refroidit, nous décorons le sapin de Noël. Les enfants se chamaillent pour que personne n’aie plus de boules que l’autre. Problème, il y en a 17. Heureusement que j’en trouve une dix-huitième.

Une fois les boules réparties équitablement, Gaspard me confie les siennes car il n’a pas envie de les accrocher. OK.

Après le goûter, qu’ils ont rangé tout seuls sans même que je le demande, les enfants jouent dans leur chambre sagement. Au bout de quelques minutes, Gaspard pleure : Paul a cassé son hélicoptère en légo. Je demande à Paul de réparer cette injustice et de réparer lui-même l’hélicoptère. Quelques minutes plus tard, il arrête : “Gaspard a fini de le casser lui-même”.

Je plie la lessive et Paul m’aide : il plie tous leurs t-shirts, les serviettes de bain et ça va super vite, du coup.

Pendant le bain de Gaspard, je prépare le dîner et on danse avec Paul en écoutant Bloodhound Gang – heureusement que les paroles sont en anglais.

Avant le diner, je découvre que Gaspard a arraché un panneau de la cuisine en bois qu’il avait eu pour Noël il y a deux ans car, je cite, “il n’en voulait plus”. Paul pleure.

Puis après le dîner, on fait vingt minutes de devinettes (on rigole bien), puis je lis l’histoire et les enfants se couchent tout gentiment.

Ce qui est sûr, c’est qu’on n’a pas le temps de s’ennuyer…

news for few, stuff no-one cares about