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 🙂
Excellent!
Go ahead!
Là tu t’es fais plaisir skywood !!
Excellent… 🙂
Fais lui une copine « pelle a roulette » qui fais que la poursuivre pour ramasser…
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)
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é 😉
super j’adore ! continues comme ca je suis ton blog tout le temps!
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
Je donne le schéma de la partie moteur dans l’article 😉
https://skyduino.wordpress.com/2011/07/25/controleur-moteur-pwm-news/
oui effectivement je sais plus ecrire
je me suis mal exprimé
plutot les I/O utilisé sur les arduino des deux cotés
ou ce branche le module RF etc
merci
@ARTHUR C’est le schéma de l’arduino que tu veut en gros ?
Cliquer pour accéder à Arduino_Uno_Rev3-schematic.pdf
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
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.
ah ^^
c’est moi qui savais pas m’exprimer
et coté télécommande?
@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 😉
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 ?
Génial!
Fallait vraiment avoir l’idée de ce mode de propulsion pour le moins original!
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…
>> 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 😉
Bientôt sur Mars ???
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
Du grand n’importe quoi, mais j’adore … Bravo
Et le pire c’est que ça marche ^^
Excellent 🙂
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