Cliquez moi.
Voici mon dernier né. Il s'agit d'un robot roulant, ou UGV ( Unmanned Ground Vehicle ).
L'idée, c'était de faire un robot roulant de bonne taille, et très facile à faire, en moins d'une heure.
Cela a été rendu possible, grâce aux GeekServo verts à rotation continue que l'on peut voir sur l'image.
Comme à mon habitude, un Arduino Nano est enfiché sur le NANO Shield de Keyestudio.
Ce Shield est très pratique car il possède un interrupteur. Le seul problème est le petit connecteur d'alimentation JST PH2, alors que les petites batteries sont souvent munis d'un connecteur JST 2P, basique. Mais j'ai trouvé un adaptateur.
Ce robot ne montera pas des escaliers et il n'est pas tout terrain. Sa vocation est de rouler sur une surface lisse, quoique ses grandes roues lui permettent de franchir un obstacle carré de 4cm, ce qui est déjà pas si mal.
Tout cela fait de ce robot une excellente base pour tout débutant désireux de se lancer dans la robotique. Pour commencer, on peut , par exemple, y ajouter un détecteur d'obstacle à ultrasons ou à infrarouge, ou une caméra Huskylens pour faire un suiveur de ligne, voir un GPS pour se repérer sur une surface.
Si j'avais une application à faire, ce serait un suiveur de mur, comme le projet de Dakota99. Mais ici, pas de problèmes mécaniques ! Il suffirait de monter un capteur à ultrasons (ou autre) sur un GeekServo 360°, gris, pour valider la faisabilité. Ne resterait que le développement du programme, qui, à mon avis, est le plus important dans ce type de projet.
Le code fait moins de 30 lignes, ceci grâce à la fonction Go() qui a . . . . 3 lignes. Je me suis un peu amusé. L'idée, c'était de faire une fonction de guidage universelle avec un seul paramètre. Ce paramètre est basé sur les cadrans du cercle trigonométrique.
Le premier cadran permet de paramétrer la courbure à gauche ou à droite en marche avant, à 45° on avance en ligne droite. Le troisième cadran fait la même chose en marche arrière. Le deuxième et le quatrième cadrans, pour des valeurs respectives de 135° et 315°, permettent de tourner sur place, à gauche ou à droite. Avec ces derniers cadrans, on pourrait également faire varier l'angle de rotation sur place. Cela peut être une alternative au premier et troisième quadran.
Ici, le code propose une séquence de démonstration pour ma future vidéo. Bientôt.
// UGV-RollingRobot - 10/07/2022 void(* resetFunc) (void) = 0; // soft reset function #include <Servo.h> Servo RF,RB,LF,LB; // right servo and left servo int Bp=A0, Speed=50; void setup() { delay(500); // for reset consideration Serial.begin(9600); pinMode(Bp,INPUT_PULLUP); // start/stop/reset button attachment RF.attach(2,500,2500);RF.write(90); // right front servo initialization RB.attach(3,500,2500);RB.write(90); // right back servo initialization LF.attach(4,500,2500);LF.write(90); // left front servo initialization LB.attach(5,500,2500);LB.write(90); // left back servo initialization Serial.print("\n\t To start, click on the Start button"); while(digitalRead(Bp)); delay(400); Serial.print("\n\t Started"); } void loop() { if (! digitalRead(Bp)) resetFunc(); Go( 15); delay(5000); Go( 75); delay(5000); Go(135); delay(3000); Go(315); delay(3000); Go( 45); delay(3000); Go(225); delay(3000); } void Go(int a){ // Value of a // Forward : from 15 to 44 turn right, 45 straight forward, from 75 to 46 turn left // Backward : from 195 to 224 turn left, 225 straight Backward, from 255 to 226 turn right // Left spin spot : 135 , Right spin spot : 315 float S=sin(a*PI/180), C=cos(a*PI/180); RF.write(90+(Speed*S)); RB.write(90+(Speed*S)); LF.write(90-(Speed*C)); LB.write(90-(Speed*C)); }
L'adaptateur JST PH2 vers JST 2P. https://fr.aliexpres...ayAdapt=glo2fra
Le GeekServo vert à rotation continue.
Le NANO Shield de Keyestudio.