1. Introduction

L'objectif de ce projet est de réaliser une voiture commandée, en utilisant un Arduino. Deux choix peuvent être opté pour réaliser ce défi. En premier lieu, l'idée est d'obtenir une voiture contenant trois roues. Ainsi, les deux roues se trouvant à l'arrière de la voiture, servent à donner la vitesse à cette dernière et en modifiant la vitesse de chaque roue, cela permet également de diriger l'automobile. L'unique roue se trouvant à l'avant de la voiture sert à la stabiliser. En deuxième lieu, il paraîtrait peut-être plus naturelle d'avoir une voiture contenant quatre roues. Les deux roues à l'arrière donneront donc la vitesse à la voiture, alors que celles de devant la dirigeront. Cependant, en optant pour la deuxième solution, le code nécessaire pour son bon fonctionnement devient moins évident, car il ne s'agit pas seulement de contrôler la vitesse des deux roues, mais il s'agit de contrôler la vitesse de deux roues, mais également de contrôler la trajectoire de celles se trouvant à l'avant.

Malgré l'allure moins usuelle d'une voiture, la première option sera utilisée pour la raison citée ci-dessus. Les deux roues seront chacune commandées avec un joystick se balançant d'avant en arrière pour donner l'impulsion à la voiture, ainsi que la ralentir. Ce projet se divise en trois parties. Celle Software, se résume simplement au code établi pour diriger la voiture. La partie Hardware est celle expliquant comment la partie électronique a été montée autour de l'Arduino et pour finir la partie manuelle du travail consiste au montage du kit de la voiture.

2. Matériel et méthodes

2.1 Matériel

2.1.1 - Software

  • L'application Arduino (1.8.5) sous Windows 1

2.1.2 - Hardware

  • Deux Modul HP-AMO-STK Joysticks 2
  • Quatre piles AA (1.5 V)
  • Des files électriques (fourni)
  • Un L298N (Dual H-Bridge L298N DC Stepper Motor Drive Controller Board Module) 3
  • Deux moteurs à engrenage 4
  • Un Arduino (fourni)
  • Une breadboard (fourni)

2.1.3 - Manuel

  • Un ordinateur
  • Un clavier
  • Une souris
  • Un châssis de voiture 4
  • Deux pneus de voiture 4
  • Des attaches 4
  • Une roue universelle 4
  • Un boîtier batterie pour piles 4
  • Un tourne-vis
  • Des vis 4
  • Des écrous 4
  • Une pince

2.2 Méthode

2.2.1 - Software

Premièrement, il faut mettre en place les variables pour lier les pins de l'Arduino à ceux du L298N

*define v1 n1
*define v2  n2
*define v3 n3
*define v4 n4
*define v5 n5
*define v6 n6

Les deux moteurs valent 0 à la base:

int motorSpeedA = 0;
int motorSpeedB = 0;

Pour initialiser les variables:

void setup() {
  pinMode(v1, OUTPUT);
  pinMode(v2, OUTPUT);
  pinMode(v3, OUTPUT);
  pinMode(v4, OUTPUT);
  pinMode(v5, OUTPUT);
  pinMode(v6, OUTPUT);
}

Il faut créer une boucle. Les joysticks peuvent être en rotation sur deux axes. L'axe verticale Y et l'axe horizontale X. Chaque axe se situe entre 0 et 1023 et le centre se situe à 512. Pour s'assurer de ne pas faire avancer la voiture si le joystick est frôlé, il vaut mieux attribuer le centre entre 450 et 570. Si l'axe des Y est inférieur à 450, cela veut dire que le joystick est poussé vers le bas et par conséquent, la voiture doit reculer.

void loop() {
  int yAxis = analogRead(A0); // Read Joysticks Y-axis
  int yAxis = analogRead(A1); // Read Joysticks Y-axis
  if (yAxis(A0) < 450) {
    digitalWrite(v2, HIGH);
    digitalWrite(v3, LOW);
  }
  if (yAxis(A1) < 450 {
    digitalWrite(v5, HIGH);
    digitalWrite(v6, LOW);

Si l'axe des Y est inférieur à 450, le moteur se met à vitesse maximale, ce qui correspond à 255.

    motorSpeedA = map(yAxis, 450, 0, 0, 255);
    motorSpeedB = map(yAxis, 450, 0, 0, 255);
  }

Même système que ci-dessus, mais cette fois, si l'axe des Y est au-dessus de 570, la voiture avance.

  else if (yAxis(A0) > 570) {
    digitalWrite(v3, LOW);
    digitalWrite(v4, HIGH);
  }
   else if (yAxis(A1) > 570 {
    digitalWrite(v5, LOW);
    digitalWrite(v6, HIGH);
    motorSpeedA = map(yAxis, 570, 1023, 0, 255);
    motorSpeedB = map(yAxis, 570, 1023, 0, 255);
  }

si les joysticks restent au centre, les moteurs ne bougent pas:

  else {
    motorSpeedA = 0;
    motorSpeedB = 0;
  }

2.2.2 - Hardware

Il a fallu commander les pièces suivantes: Deux joysticks 2 ainsi qu'un contrôleur de moteur L298N 3. Ensuite, il a faut relier les moteurs au L298N, relier les joysticks à l'Arduino, relier l'Arduino au L298N et finalement alimenter le tout.

Le schéma Hardware n'est pas complété car le composant L298N ne correspondait pas.

2.2.3 - Manuel

Une fois le kit 4 acheté et livré, il a fallut monter la voiture en fixant les roues arrières, la roue universelle à l'avant et le boîtier à piles, ainsi que fixer l'Arduino accompagné de sa breadboard.

Image à la fin du montage de la voiture.

3. Résultats

Les résultats n'ont pas pu être vérifié pour le moment, car la pièce L298N n'est pas en ma possession.

4. Discussion

Tout le débat reste autour de la façon d'utiliser les joysticks et les différentes roues. Il est vrai que si le code pour l'axe des Y est maîtrisé, le code pour l'axe des X, c'est-à-dire l'axe horizontale n'est pas bien compliqué. Il serait donc envisageable de réaliser une voiture comportant quatre roues, dont deux serviraient à donner l'impulsion aux moteurs, et dont les deux restantes serviraient à diriger l'automobile. Un joystick contrôlerait les deux roues de devant, et un autre joystick contrôlerait les roues de derrière. En somme, les coûts à la création d'une telle voiture seraient certes plus élevé, mais la précision de la voiture serait bien plus importante, car la roue universelle que comporte la voiture dans ce projet rend l'automobile moins précise.

Une autre façon de réaliser une voiture de façon très similaire à ce projet, serait également de bénéficier de trois roues (deux à l'arrière et une à l'avant). Les deux roues à l'arrière pourraient être contrôlées simultanément pour n'utiliser qu'un seul joystick, et l'axe des Y comme l'axe des X serait pris en compte, permettant à la voiture de se déplacer où elle le désir.

5. Conclusion

Comme à mon habitude, je me suis renseigné que tardivement pour mon projet, ce qui m'a valu de ne pas pouvoir le finir. Malgré cette erreur, je suis content d'avoir appris comment fonctionne un moteur, ainsi qu'un joystick. J'ai également appris la syntaxe pour coder en Arduino, et les recherches sur le WEB n'ont pas été sans résultats. Je pense tout de même que mon projet est un échec car je ne saurai le rendre dans les temps.

6. Références

6.1 Références téléchargements