Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Pathfinder : Kit projet robot évitement d'obstacles Arduino UNO

Composants et fournitures

Outils et machines nécessaires

Applications et services en ligne

À propos de ce projet

Synopsis

Ce document présente la conception d'un robot évitant les obstacles, capable de détecter les objets sur sa trajectoire et de naviguer autour en prenant les décisions appropriées. Il démontre une unité robotique basée sur Arduino UNO et Adafruit Motor Shield, programmée dans l'Arduino IDE. L'évitement d'obstacles est un facteur clé pour les robots mobiles. L'intégration du capteur de distance ultrasonique sur un micro-servo offre une détection plus précise de l'environnement. Ce robot se distingue par l'intégration d'un buzzer magnétique et d'une LED RGB à cathode commune, lui permettant d'indiquer la procédure de détection et de contrôler la vitesse des moteurs à courant continu dans 4 situations distinctes. En tant que robot autonome, il manœuvre dans des conditions inconnues sans impact. Cette technologie peut être déployée pour des opérations militaires et l'assistance humanitaire en améliorant la détection d'objets en environnements variés.

Multimédia

Pathfinder : Kit projet robot évitement d obstacles Arduino UNO
Pathfinder : Kit projet robot évitement d obstacles Arduino UNO
Pathfinder : Kit projet robot évitement d obstacles Arduino UNO
Pathfinder : Kit projet robot évitement d obstacles Arduino UNO
Pathfinder : Kit projet robot évitement d obstacles Arduino UNO
Pathfinder : Kit projet robot évitement d obstacles Arduino UNO

Interprétation

Bibliothèques incluses :

AFMotor.h
Servo.h

Connexions définies :

#define BuzzPIN A0   // Buzzer +
#define TrigPIN A1   // HC-SR04 Trig
#define EchoPIN A2   // HC-SR04 Echo
#define LEDBPIN A3   // LED Bleu
#define LEDGPIN A4   // LED Vert
#define LEDRPIN A5   // LED Rouge
#define DCMROFF 25   // Décalage calibration moteurs

Programme prévu :

Toutes les opérations sont autonomes, sans contrôle externe.

Ce robot diffère des autres par : indication lumineuse/sonore, contrôle vitesse moteurs, manœuvre intensive par détection sur 180° devant lui – difficile à combiner par programmation. Basé sur Arduino UNO Rev3 + Arduino IDE v1.8.5. Fonctionne sans interaction humaine avec bonne précision. Évolutions futures : caméra embarquée + sans fil pour usage militaire ; unités de base pour assistance personnes malvoyantes/malentendantes.

Pathfinder : Kit projet robot évitement d obstacles Arduino UNO

Youth Zest Project Showcase

Code

Programme (Arduino)
#include <AFMotor.h>  // Bibliothèque Adafruit Motor Shield
#include <Servo.h>   // Bibliothèque Servo

#define BuzzPIN A0
#define TrigPIN A1
#define EchoPIN A2
#define LEDBPIN A3
#define LEDGPIN A4
#define LEDRPIN A5
#define DCMROFF 25

AF_DCMotor M1(1, MOTOR12_64KHZ);  // Moteur DC #1, PWM 64kHz
AF_DCMotor M2(2, MOTOR12_64KHZ);  // Moteur DC #2, PWM 64kHz
Servo SER1;                       // Objet Servo

int Search(void) {
  float Duration = 0.0;
  float CM = 0.0;
  digitalWrite(TrigPIN, LOW);
  delayMicroseconds(2);
  digitalWrite(TrigPIN, HIGH);
  delayMicroseconds(10);
  digitalWrite(TrigPIN, LOW);
  Duration = pulseIn(EchoPIN, HIGH);
  CM = (Duration / 58.8);  // Conversion en cm
  return CM;
}

int RightDistance, LeftDistance;
float Distance = 0.00;

void setup() {
  pinMode(BuzzPIN, OUTPUT);
  pinMode(TrigPIN, OUTPUT);
  pinMode(EchoPIN, INPUT);
  pinMode(LEDBPIN, OUTPUT);
  pinMode(LEDGPIN, OUTPUT);
  pinMode(LEDRPIN, OUTPUT);
  SER1.attach(10);  // Servo sur broche 10 (shield Adafruit)
}

void loop() {
  SER1.write(80);           // Servo face avant (80°)
  delay(100);
  Distance = Search();      // Mesure distance cm

  if (Distance < 30) {                    // Obstacle < 30 cm
    digitalWrite(BuzzPIN, HIGH);
    digitalWrite(LEDBPIN, LOW);
    digitalWrite(LEDGPIN, LOW);
    digitalWrite(LEDRPIN, HIGH);          // Rouge allumé
    M1.setSpeed(100);
    M2.setSpeed(100);
    ChangePath();                         // Changer direction
  }
  else if (Distance >= 30 && Distance < 60) {  // 30-60 cm
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH);          // Bleu allumé
    digitalWrite(LEDGPIN, LOW);
    digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(150);
    M2.setSpeed(150);
    Forward();
  }
  else if (Distance >= 60 && Distance < 90) {  // 60-90 cm
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, LOW);
    digitalWrite(LEDGPIN, HIGH);          // Vert allumé
    digitalWrite(LEDRPIN, LOW);
    M1.setSpeed(200);
    M2.setSpeed(200);
    Forward();
  }
  else {                                  // > 90 cm (libre)
    digitalWrite(BuzzPIN, LOW);
    digitalWrite(LEDBPIN, HIGH);          // Blanc (RGB allumé)
    digitalWrite(LEDGPIN, HIGH);
    digitalWrite(LEDRPIN, HIGH);
    M1.setSpeed(250);
    M2.setSpeed(250);
    Forward();
  }
}

void ChangePath() {
  Stop();
  Backward();
  Stop();
  SER1.write(12);          // Regarde à droite
  delay(500);
  RightDistance = Search();
  delay(500);
  SER1.write(160);         // Regarde à gauche
  delay(1000);
  LeftDistance = Search();
  delay(500);
  SER1.write(80);          // Retour centre
  delay(500);
  CompareDistance();
}

void CompareDistance() {
  if (RightDistance > LeftDistance) {
    TurnRight();
  } else if (LeftDistance > RightDistance) {
    TurnLeft();
  } else {
    TurnAround();
  }
}

void Forward() {
  M1.run(FORWARD);
  M2.run(FORWARD);
}

void Backward() {
  M1.run(BACKWARD);
  M2.run(BACKWARD);
  delay(500);
}

void TurnRight() {
  M1.run(BACKWARD);
  M2.run(FORWARD);
  M1.setSpeed(100 + DCMROFF);
  delay(300);
}

void TurnLeft() {
  M1.run(FORWARD);
  M2.run(BACKWARD);
  M2.setSpeed(100 + DCMROFF);
  delay(300);
}

void TurnAround() {
  M1.run(FORWARD);
  M2.run(BACKWARD);
  M2.setSpeed(100 + DCMROFF);
  delay(700);
}

void Stop() {
  M1.run(RELEASE);
  M2.run(RELEASE);
  delay(100);
}

Pièces personnalisées et boîtiers

Châssis

Châssis du robot pour l'assemblage de cette machine autonome.

Schémas

Schéma de câblage pour l'assemblage de cette machine autonome.

Processus de fabrication

  1. Maîtriser la syntaxe des netlists SPICE : nommage, composants passifs/actifs, sources
  2. Circuits intégrés (CI) : puces compactes et puissantes alimentant l'électronique moderne
  3. Transfert de données température/humidité entre deux Arduinos via Firebase
  4. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  5. Système de Capteur de Température Multi-Position pour Intégration Domotique
  6. Kit MOSMusic : MOSFET, Arduino et plus pour éclairage musical
  7. Microélectronique : Science des Composants Électroniques Miniatures
  8. Composants Essentiels d'une Perceuse : Vue d'Ensemble Complète
  9. Composants clés d'un moteur à combustion interne