Pathfinder : Kit projet robot évitement d'obstacles Arduino UNO
Composants et fournitures
- 1 × Arduino UNO (composant principal)
- 1 × Capteur ultrasonique HC-SR04 (composant principal)
- 2 × Batterie Li-Ion 1000 mAh (composant principal)
- 1 × LED RGB diffuse cathode commune (composant principal)
- 1 × Buzzer (fourniture nécessaire)
- 3 × Résistance 330 Ω (fourniture nécessaire)
- 1 × Câble USB-A vers B (fourniture nécessaire)
- 20 × Fils de connexion (fourniture nécessaire)
Outils et machines nécessaires
- Arduino Materia 101 (machine principale)
- Tournevis Digilent (outil nécessaire)
Applications et services en ligne
- Arduino IDE (application principale)
- Autodesk Fusion 360 (service 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






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 :
- Détecter les objets par plages de distances prédéfinies.
- Chercher un nouveau chemin vers une direction libre.
- Indiquer la détection et contrôler la vitesse.
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.

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