Comment construire une ligne simple suivant le robot avec Arduino

Se lancer dans un projet de robotique peut être à la fois passionnant et éducatif, surtout lorsque vous construisez quelque chose de tangible comme un robot de suivi de la ligne. L'utilisation d'un Arduino, l'un des microcontrôleurs les plus populaires, rend le processus accessible même pour les débutants. Dans ce guide, nous vous guiderons à travers les étapes pour créer un robot de suivi simple qui peut naviguer sur un chemin de manière autonome.

Matériaux dont vous aurez besoin

  • Arduino Uno - le cerveau de votre robot.
  • Module du conducteur du moteur (L298N) - pour contrôler les moteurs.
  • Motors CC avec roues - pour le mouvement.
  • Châssis - Le cadre pour contenir tous les composants.
  • Module de capteur de ligne (par exemple, QRE1113) - pour détecter la ligne.
  • Paquet de batterie - Source d'alimentation pour le robot.
  • Fils de cavalier - pour les connexions.
  • Planche à pain - pour les connexions de prototypage.
  • Vis, écrous et boulons - pour assembler le châssis.

Étape 1: assemblage du châssis

Le châssis sert de base à votre robot. Commencez par fixer les moteurs CC au châssis à l'aide de vis et d'écrous. Assurez-vous que les moteurs sont fixes en toute sécurité pour empêcher tout mouvement pendant le fonctionnement. Fixez les roues aux arbres du moteur et positionnez la batterie et Arduino sur le châssis. Assurez-vous que tous les composants s'adaptent bien et sont à portée de main pour le câblage.

Étape 2: Câblage des moteurs

Connectez les moteurs CC au module du conducteur du moteur (L298N). Le conducteur du moteur agit comme une interface entre l'Arduino et les moteurs, permettant à l'Arduino de contrôler la vitesse et la direction du moteur sans être surchargés.


// Connect motor A
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;

// Connect motor B
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;

void setup() {
  // Motor A
  pinMode(motorA_EN, OUTPUT);
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  
  // Motor B
  pinMode(motorB_EN, OUTPUT);
  pinMode(motorB_IN3, OUTPUT);
  pinMode(motorB_IN4, OUTPUT);
}

Étape 3: Connexion du capteur de ligne

Le capteur de ligne détecte le contraste entre la ligne et la surface. En règle générale, ces capteurs ont des LED et des photodiodes infrarouges pour détecter les surfaces réfléchissantes. Connectez le VCC et GND du capteur au 5V et GND d'Arduino respectivement. Les broches de sortie du capteur seront connectées aux épingles numériques ou analogiques d'Arduino en fonction du type de capteur.


// Line sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;

void setup() {
  pinMode(sensorLeft, INPUT);
  pinMode(sensorRight, INPUT);
}

Étape 4: Écriture du code Arduino

Le code Arduino lira les valeurs du capteur et contrôlera les moteurs en conséquence pour suivre la ligne. Vous trouverez ci-dessous un exemple simple de l'apparence du code:


// Define motor pins
const int motorA_EN = 9;
const int motorA_IN1 = 7;
const int motorA_IN2 = 8;
const int motorB_EN = 10;
const int motorB_IN3 = 5;
const int motorB_IN4 = 6;

// Define sensor pins
const int sensorLeft = A0;
const int sensorRight = A1;

// Threshold for line detection
const int threshold = 500;

void setup() {
  // Initialize motor pins
  pinMode(motorA_EN, OUTPUT);
  pinMode(motorA_IN1, OUTPUT);
  pinMode(motorA_IN2, OUTPUT);
  
  pinMode(motorB_EN, OUTPUT);
  pinMode(motorB_IN3, OUTPUT);
  pinMode(motorB_IN4, OUTPUT);
  
  // Initialize sensor pins
  pinMode(sensorLeft, INPUT);
  pinMode(sensorRight, INPUT);
  
  // Start serial communication for debugging
  Serial.begin(9600);
}

void loop() {
  int leftSensor = analogRead(sensorLeft);
  int rightSensor = analogRead(sensorRight);
  
  Serial.print("Left: ");
  Serial.print(leftSensor);
  Serial.print(" | Right: ");
  Serial.println(rightSensor);
  
  if (leftSensor > threshold && rightSensor > threshold) {
    // Move forward
    moveForward();
  }
  else if (leftSensor < threshold && rightSensor > threshold) {
    // Turn right
    turnRight();
  }
  else if (leftSensor > threshold && rightSensor < threshold) {
    // Turn left
    turnLeft();
  }
  else {
    // Stop
    stopMovement();
  }
}

void moveForward() {
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, HIGH);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 200);
  analogWrite(motorB_EN, 200);
}

void turnRight() {
  digitalWrite(motorA_IN1, HIGH);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, LOW);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 200);
  analogWrite(motorB_EN, 0);
}

void turnLeft() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, HIGH);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 0);
  analogWrite(motorB_EN, 200);
}

void stopMovement() {
  digitalWrite(motorA_IN1, LOW);
  digitalWrite(motorA_IN2, LOW);
  digitalWrite(motorB_IN3, LOW);
  digitalWrite(motorB_IN4, LOW);
  
  analogWrite(motorA_EN, 0);
  analogWrite(motorB_EN, 0);
}

Étape 5: Alimentation du robot

Une fois toutes les connexions établies, connectez votre batterie à l'Arduino et au conducteur du moteur. Assurez-vous que la polarité est correcte pour éviter tout dommage aux composants. C’est une bonne pratique de tester les connexions avec un multimètre avant de se mettre à l’alimentation.

Test et étalonnage

Après avoir mis à jour, placez votre robot sur une surface avec une ligne transparente (par exemple, du ruban noir sur du papier blanc). Observez comment il se comporte et effectuez les ajustements nécessaires. Vous devrez peut-être modifier le seuil du capteur ou ajuster la vitesse en modifiant les valeurs PWM dans le code pour obtenir des performances optimales.

Conseils pour réussir

  • Assurer des connexions stables: Les fils lâches peuvent provoquer un comportement intermittent. Utilisez une planche à pain pour le prototypage et envisagez de souder les connexions pour une configuration permanente.
  • Utilisez des capteurs de qualité: Des capteurs de ligne fiables peuvent considérablement améliorer les performances de votre robot.
  • Calibrez vos capteurs: Différentes surfaces et conditions d'éclairage peuvent affecter les lectures des capteurs. Calibrez vos seuils en conséquence.
  • Optimiser le code: Le code efficace garantit des temps de réponse rapides. Assurez-vous qu'il n'y a pas de retards inutiles dans votre boucle.

Améliorations et apprentissage supplémentaire

Une fois que vous avez construit avec succès un robot de base de base, envisagez d'ajouter plus de fonctionnalités pour améliorer ses capacités:

  • Détection d'intersection: Permettez à votre robot de prendre des décisions aux jonctions.
  • Contrôle de vitesse: Implémentez les ajustements de vitesse dynamique en fonction de l'entrée du capteur.
  • Contrôle sans fil: Ajoutez des modules Bluetooth ou Wi-Fi pour contrôler votre robot à distance.
  • Évitement des obstacles: Incorporez des capteurs à ultrasons pour naviguer autour des obstacles.

Construire un robot de suivi de ligne avec Arduino est un moyen fantastique de plonger dans le monde de la robotique et des systèmes intégrés. Il vous apprend des concepts fondamentaux tels que l'intégration des capteurs, le contrôle moteur et la prise de décision en temps réel. Avec patience et expérimentation, vous pouvez étendre ce projet de base en un robot plus complexe et plus capable. Bâtiment heureux!

Laissez un commentaire

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.