Skyduino:~#
Articles
arduino, programmation, projet

[Arduino] BrossoGlisseur, le robot qui se déplace sur des brosses

Bonjour tout le monde !

Aujourd’hui je vous ai préparé un article qui, je l’espère, va en faire sourire plus d’un 😉
Un bon article avec de gros morceaux de « What the f*ck ! » dedans, et oui c’est samedi !

J’ai le plaisir de vous présenter : le brossoGlisseur !

Ceci est une révolution !

Bon concrètement qu’est ce que le brossoGlisseur ?
C’est un robot contrôlable à distance, jusque là rien de bien nouveau, mais qui utilise des balayettes comme moyen de propulsion.

Vous êtes sûrement en train de vous demander s’il s’agit d’un concept révolutionnaire ou d’un truc complètement dingue.
Ne cherchez pas c’est de la haute technologie moderne, même Apple n’aurait jamais imaginé un truc pareil 🙂

Le hardware est très simple :
– 2 balayettes (0.90€ pièces),
– 2 moteur à courant continu,
– une carte interface de puissance,
– une carte arduino,
– un module 433MHz.

Le principe :
En gros les moteurs font faire vibrer le bout des balayettes, ce qui a pour effet de générer une légère impulsion vers l’avant lorsque le poids accroché à l’axe du moteur descend puis remonte.
En faisant cela à une vitesse relativement élevée et en gérant indépendamment le moteur droite et le moteur gauche il est possible d’avancer ou de tourner.

Au niveau de l’interface de puissance j’ai ré-utilisé mon circuit à base de mosfet que j’avais réalisé pour un projet précédant.
Le schéma est disponible ici.

Les moteurs en eux même sont fixés avec de la colle chaude en mode « grosse brute ».
Tant qu’ils sont centrés tout va bien, après qu’il soit fixé avec des vis ou de la colle chaude … c’est juste une question de durabilité.

Pour contrôler tout ce petit monde j’utilise une seconde carte arduino avec un duo émetteur / récepteur 433MHz et la librairie VirtualWire.
Le contrôle des moteurs se fait avec l’axe X et Y du joystick.

Voici le code arduino pour les deux cartes :

Télécommande :

#include <VirtualWire.h>

#define MAX_SPEED 127 // Vitesse maximum (0 ~ 255)
#define MIDDLE_LIMIT 50 // Marge par rapport au centre du joystick

uint8_t buf[2];
int cal, balance, speed;
float bal1, bal2;

void setup() {
  pinMode(5, OUTPUT);
  pinMode(7, OUTPUT);
  digitalWrite(5, HIGH);
  digitalWrite(7, LOW); // Astuce pour utiliser le joystick sans câblage

  pinMode(A0, OUTPUT);
  pinMode(A4, OUTPUT);
  digitalWrite(A0, LOW);
  digitalWrite(A4, HIGH); // Astuce pour utiliser le module 433MHz sans câblage

  cal = analogRead(A2);

  vw_set_tx_pin(6);
  vw_setup(2000);
}

void loop() {
  balance = analogRead(A2);
  speed = analogRead(A3);

  balance -= cal;
  bal1 = (balance < -MIDDLE_LIMIT) ? -balance / cal : 1;
  bal2 = (balance > MIDDLE_LIMIT) ? balance / cal : 1;

  speed = map(speed, 0, 1023, MAX_SPEED, 0);

  buf[0] = speed * bal1;
  buf[1] = speed * bal2;

  vw_send(buf, 2);
  vw_wait_tx();
  delay(100);
}

Robot :

#include <VirtualWire.h>

uint8_t buf[VW_MAX_MESSAGE_LEN];
uint8_t buflen = VW_MAX_MESSAGE_LEN;

void setup() {
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  digitalWrite(5, LOW);
  digitalWrite(6, HIGH); // Astuce pour utiliser le module 433MHz sans câblage

  vw_set_rx_pin(7);
  vw_setup(2000);
  vw_rx_start();
}

void loop() {
  if (vw_wait_rx_max(200))
    if (vw_get_message(buf, &buflen)) {
      analogWrite(3, buf[0]);
      analogWrite(11, buf[1]);
    }
}

Au niveau de l’alimentation je voulais utiliser une batterie de modélisme, mais j’ai malencontreusement perdu mon chargeur.
Du coup je n’ai pas pu l’utiliser.

A la place j’utilise mon alimentation d’atelier avec un fils de 5m de long, c’est pas du tout pratique, mais bon on fait avec ce qu’on a.

Et comme promis voici une vidéo de démonstration du robot en action.
Pour une fois j’ai fait cette vidéo en mode relâche. Il doit y avoir une bonne dizaine de « et m*rde … », c’est du grand n’importe quoi.
Je vous ai gardé que le meilleur 🙂

Héhé maintenant vous ne regarderez plus les balayettes de la même manière 🙂
Qui sait, si ça se trouve les voitures de demain seront propulsés par ce système … ou pas ^^

Enjoy 🙂

Discussion

24 réflexions sur “[Arduino] BrossoGlisseur, le robot qui se déplace sur des brosses

  1. Excellent!
    Go ahead!

    Publié par Michel Glaize | 7 avril 2012, 15 h 58 min
  2. Là tu t’es fais plaisir skywood !!
    Excellent… 🙂
    Fais lui une copine « pelle a roulette » qui fais que la poursuivre pour ramasser…

    Publié par cutprod | 7 avril 2012, 21 h 39 min
    • Ouaip un petit projet « just for fun » de temps en temps ça fait toujours du bien ^^

      Au début j’étais parti à faire un robot avec une boite d’ariel bulle (boite ronde) puis je me suis dis que c’était pas assez 🙂

      Le robot pelle à roulette, ce serait de la haute technologie 2.0 ça x)

      Publié par skywodd | 7 avril 2012, 21 h 46 min
  3. Ouai et la a dégager leur robot aspirateur tout pourris qui cartonne en ce moment…
    Et vive le duo « brossoGlisseur & pelloSuiveur » on va se faire du blé 😉

    Publié par cutprod | 7 avril 2012, 22 h 28 min
  4. super j’adore ! continues comme ca je suis ton blog tout le temps!

    Publié par tibo | 8 avril 2012, 4 h 05 min
  5. j’avoue pas mal ^^
    vais m’en faire un en « dur »
    aurais tu un ptit schéma de câblage basique pour que je fasse un typon ?
    merci

    Publié par Arthur | 11 Mai 2012, 11 h 48 min
  6. @ARTHUR C’est le schéma de l’arduino que tu veut en gros ?

    Cliquer pour accéder à Arduino_Uno_Rev3-schematic.pdf

    Publié par skywodd | 11 Mai 2012, 18 h 36 min
    • nan du tout
      j’ai vraiment du mal avec cet chaleur et les examens
      dans ton code tu a déclarer les pin de sortie et d’entrée
      aurais tu une liste avec quel pin correspond a tel truc
      genre pin digital 2 ==> contrôle mosfet gauche etc

      Publié par Arthur | 11 Mai 2012, 18 h 42 min
      • J’utilise les broches D3 et D11, âpres laquelle est pour la gauche et laquelle est pour la droite je sait plus …
        Au pire c’est pas bien grave il te suffit de modifier les analogWrite() dans le code 😉

        Et D5 (GND), D6 (VCC) et D7 (SIG) pour le module RF.

        Publié par skywodd | 11 Mai 2012, 18 h 48 min
      • ah ^^
        c’est moi qui savais pas m’exprimer
        et coté télécommande?

        Publié par Arthur | 11 Mai 2012, 18 h 52 min
  7. @ARTHUR: RF -> D5 (VCC), D6 (SIG), D7 (GND)
    Joystick -> A0 (GND), A2 (X), A3 (Y), A4 (VCC)

    Ps: ça servira à rien de copier bêtement mon câblage et mon code;)
    Je n’ai pas donner le câblage dans l’article pour la simple et bonne raison que suivant ton matériel tu devras adapter le câblage et le code.
    Tu devrais regarder ce que tu as et faire ton typon en te basant dessus, tu n’aura pas du tout le même câblage 😉

    Publié par skywodd | 11 Mai 2012, 19 h 25 min
    • oui je sais bien vu que je n’est pas les même modules RF
      je tourne avec ceux de sparkfun
      je suis pas habituer a utiliser des analogique pour alimenter etc ( A4 (VCC)) donc ça me perturbe royalement
      un grand merci a toi
      PS: a quand une course ?

      Publié par Arthur | 11 Mai 2012, 19 h 41 min
  8. Génial!
    Fallait vraiment avoir l’idée de ce mode de propulsion pour le moins original!

    Publié par PatG | 31 Mai 2012, 17 h 23 min
  9. Manque une marche arrière, mais pas grave…quoique, vu le bazar que ça met en avant,..faut pas en rajouter…Quand les voitures avanceront sur ce principe, il y aura moins de morts, c’est sur ! Bravo continues comme ça, j’ai bien ri…

    Publié par richard | 24 août 2012, 15 h 56 min
    • >> Manque une marche arrière, mais pas grave…quoique, vu le bazar que ça met en avant,..faut pas en rajouter…

      J’ai eu la même réaction, c’était pas très « stable » en marche avant, donc pas de marche arrière, évitons le massacre ^^

      >> Quand les voitures avanceront sur ce principe, il y aura moins de morts, c’est sur !

      Et moins de voiture ^^ » »

      >> j’ai bien ri…

      Moi aussi, du reste ça aurait vraiment marché nikel ça aurait pas était aussi drôle 😉

      Publié par skywodd | 24 août 2012, 19 h 44 min
  10. Bientôt sur Mars ???

    Publié par JACLAVI | 24 août 2012, 17 h 05 min
  11. Très bon tuto mais je n’arrive pas a le faire fonctionné 😦 j’utilise un
    Dual H Bridge DC Stepper Motor sur un simple tamiya 70108 et un kit 433mhz rf Help me xD

    Publié par serpent | 17 juin 2013, 15 h 15 min
  12. Du grand n’importe quoi, mais j’adore … Bravo

    Publié par jp | 30 janvier 2014, 0 h 39 min
  13. Et le pire c’est que ça marche ^^

    Excellent 🙂

    Publié par LittleVince | 3 octobre 2014, 4 h 25 min
  14. Salut, moi j’aimerai savoir si vous pouvez m’aider à concevoir un programme arduino qui permet de déplacer un robot sur un damier en utilisant la distance d’une case sachant que la case fait 210 mm de long. je veux juste qu’il soit capable d’avancer d’une 2 3 4 5 ou 6 cases vers l’avant.
    Merci

    Publié par Nathan Ameya | 19 Mai 2015, 7 h 50 min

Rétroliens/Pings

  1. Pingback: [Arduino] BrossoGlisseur, le robot qui se déplace sur des brosses | Photoshooting | Scoop.it - 22 janvier 2013

  2. Pingback: Arduino - Cours de techno | Pearltrees - 12 août 2016

Skyduino devient Carnet du Maker

Le site Carnet du Maker remplace désormais le blog Skyduino pour tout ce qui touche à l'Arduino, l'informatique et au DIY.