Hack-MotorSkin-Tester
Préambule
Surélever la plateforme
Pour faire nos premiers test, nous vous proposons de placer votre plateforme robotique sur une boîte de sorte que les moteurs puissent tourner librement.
Cela facilitera grandement nos premiers tests.
Assurez-vous d'avoir copié les fichiers de la bibliothèque sur votre PyBoard comme expliqué dans cette partie du tutoriel.
Préparer la plateforme
- Brancher votre PyBoard sur votre ordinateur à l'aide via le port USB.
- Placer toutes les piles pour alimenter l'étage moteur du MotorSkin.
- Démarrer une session REPL sur votre PyBoard comme expliqué dans nos tutoriels pour la PyBoard.
Vous êtes prêt? C'est maintenant que l'on commence à jouer.
Tests
Vous pouvez tester facilement toutes ces fonctionnalités en utilisant le mode REPL et en saisissant les lignes suivantes une à une.
Marche avant/arrière
Nous allons maintenant utiliser la classe Robot2Wheel pour contrôler le Robot deux roues avec les raccordements mentionnés dans ce tutoriel, les broches à utiliser étant déjà mentionnées dans la classe.
Allons y:
from r2wheel import Robot2Wheel
r2 = Robot2Wheel()
r2.forward( 80 )
r2.halt()
Dans cet exemple, nous avons demandé à la plateforme d'avancer à la vitesse de 80% avec r2.forward(80), vous pourriez utiliser {{{1}}}.
Vous l'aurez compris, pour passer la marche arrière, il suffit de...
r2.backward()
r2.backward( 80 )
r2.backward( speed=80 )
Voyez la section dépannage si l'un des moteurs ne tourne pas dans le bon sens.
Tourner à droite/gauche
Pour tourner à droite, il y a la méthode turn(), cette méthode peut prendre plusieurs paramètres.
Nous allons commencer simplement, nous allons faire tourner la plateforme 2 roues sur place... en faisant tourner un moteur dans un sens et l'autre dans l'autre sens.
from r2wheel import Robot2Wheel
r2 = Robot2Wheel()
r2.turn( Robot2Wheel.RIGHT_ROTATE )
r2.halt()
Vous pouvez également indiquer une vitesse moteur durant la rotation.
r2.turn( Robot2Wheel.RIGHT_ROTATE, speed=60 )
Voyez la section dépannage si robot ne tourne pas dans le bon sens.
Tourner à droite/gauche (bis)
Il existe des méthodes plus directes right() et left() pour tourner sur place à droite ou à gauche.
from r2wheel import Robot2Wheel
r2 = Robot2Wheel()
r2.right()
r2.halt()
r2.left()
r2.halt()
Voyez la section dépannage si l'un des moteurs ne tourne pas dans le bon sens.
Les virages
Il est également possible de négocier un virage, technique plus appropriée pour le suivi de tracé... ou négocier des parcours avec la meilleure optimisation possible.
La technique est simple, il suffit de ralentir le moteur du côté où l'on désire prendre le virage... l'autre moteur restant à vitesse plus élevée, le trajectoire du mobile va inévitable suivre un arc de cercle.
Plus la différence de vitesse est grande et plus le rayon de courbure est petit (donc virage plus serré). Ce parcours en arc de cercle signifie que l'on circule sur le périmètre d'un cercle... si le mobile poursuit son parcours suffisamment longtemps... il dessinera un cercle.
Ce cercle à un centre et il y a donc un rayon entre le centre et votre plateforme robot.
Dans l'exemple suivant, nous allons entamer un virage à droite Robot2Wheel.RIGHT_BEND. Pour cela, nous allons ralentir le moteur droit de 40% (speed=40) par rapport au moteur gauche.
Lorsqu'il n'y a qu'un seul paramètre de vitesse, ce paramètre speed mentionne la différence de vitesse entre les deux moteurs.
from r2wheel import Robot2Wheel
from pyb import delay
r2 = Robot2Wheel()
r2.turn(Robot2Wheel.RIGHT_BEND, speed=40)
delay( 15000 )
r2.forward()
delay( 5000 )
r2.halt()
Il est également possible de contrôler la vitesse du mobile durant un virage en précisant 2 vitesses. Lorsqu'il y a deux vitesses mentionnées: la vitesse globale du mobile est précisée avec speed, puis la différence de vitesse entre les deux moteurs dans speed2.
from r2wheel import Robot2Wheel
from pyb import delay
r2 = Robot2Wheel()
# Vitesse globale 70, RALENTIR le moteur gauche de 40%
# Vitesse moteur droit = 70%, Vitesse moteur gauche = 30%
r2.turn(Robot2Wheel.LEFT_BEND, speed=70, speed2=40)
delay( 15000 )
r2.forward()
delay( 5000 )
r2.halt()
Dans l'exemple ci-dessus, nous tournons à gauche avec une vitesse globale du mobile de 70% et une différence de vitesse de 40%. Le moteur droit fonctionne donc à 70% et le moteur gauche à 70%-40%, soit 30%.
Senseur Ultrason
Vous pouvez utiliser un senseur ultrason avec le moteur-skin. Etant donné que le senseur HC-SR04 fonctionne en 5V, il sera nécessaire de monter un régulateur 5V sur votre motor-Skin.
Le HC-SR04 est un module ultrason permettant l'évaluation d'une distance de 2cm à 400cm. La mesure est réalisée "sans contact" et dispose d'une précision de 3mm dans les conditions optimales. Le module inclus un émetteur et un récepteur ultrason ainsi qu'une électronique de contrôle. Le fonctionnement de ce module s'apparente à celui d'un sonar de sous marin et sa mise en oeuvre est relativement simple.
principe de fonctionnement
- Le module émet une onde sonar composée d'une série de 8 impulsions à 40 kHz.
Un son à 40 KHz est inaudible pour l'oreille humaine capable de percevoir des sons entre 16Hz et 16KHz (cfr Wikipédia). - En utilisant la broche Trig, vous envoyez un signal pour activer le déclenchement de l'impulsion sonar.
- Si le signal revient... la sortie passe au niveau haut durant toute la période où l'onde voyage vers l'objet et revient après avoir été réfléchit par se dernier.
Note: L'avantage d'utiliser un son plus aigu est qu'il est directionnel (se propage en ligne droite) alors que les basses fréquences transitent plutôt par la matière. C'est pour cette raison que l'on entend uniquement les basses de la sono lorsque les voisins font la fiesta!
Voyez notre tutoriel HC-SR04 pour PyBoard pour plus d'information.
Boutons utilisateurs
x
La dérive
x
Dépannage
Un moteur tourne dans le mauvais sens
Je suis en marche avant (ou arrière) et un moteur tourne dans le mauvais sens!
Si vous avez l'un ou l'autre de vos moteurs qui ne dans le mauvais sens... c'est que celui-ci est branché à l'envers sur le pont-H.
Solution:
- Inverser la fiche de branchement de ce moteur sur le motor-skin. Lui faire faire un demi-tour.
- Faire la même chose mais de façon logicielle.
Vous pouvez inverser la commande de l'un OU l'autre OU des deux pont-H durant la création de l'objet Robot2Wheel... voici les différentes syntaxes à votre disposition.
r2 = Robot2Wheel( reverse_mot2 = True )
r2 = Robot2Wheel( reverse_mot1 = True )
r2 = Robot2Wheel( reverse_mot1 = True, reverse_mot2 = True )
Le robot tourne dans le mauvais sens
Le robot tourne à droite au lieu de tourner à gauche!
Assurez vous que la marche avant et marche arrière fonctionne comme attendu! |
Si la marche avant et marche arrière fonctionnent correctement, cela signifie que le moteur gauche se prend pour le moteur droit (et inversement).
Vous avez deux solutions:
- Intervertir le raccordement du moteur 1 avec celui du moteur 1 (l'approche la plus simple et plus facile)
Re-testez d’abord la marche avant et marche arrière pour vous assurer que les moteurs tournent dans le bon sens après inversion PUIS rester la rotation à droite et à gauche). - Intervertir les deux moteurs de façon logiciel
Vous pouvez échanger le moteur droit et le moteur gauche durant la création de l'objet Robot2Wheel... voici la syntaxs à votre disposition.
r2 = Robot2Wheel( fix_rotate = True )
Après cela, la plateforme tournera dans le bon sens.
Créé par Meurisse D. pour MCHobby.be - Created by Meurisse D. for MCHobby.be
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.