Code de recherche

Code Arduino et vidéo : Capteur d'obstacles infrarouge à 4 canaux pour voiture intelligente à base d'Arduino

Code Arduino et vidéo : Capteur d'obstacles infrarouge à 4 canaux pour voiture intelligente à base d'Arduino

Dans ce tutoriel, nous allons explorer comment utiliser un module de capteur d'évitement d'obstacles infrarouge à 4 canaux pour créer une voiture intelligente. Ce module se compose de quatre capteurs infrarouges capables de détecter des obstacles dans plusieurs directions, ce qui permet à votre véhicule robotique de réagir en conséquence. Chaque capteur fournit des informations de proximité, vous permettant de programmer des réponses en fonction des obstacles détectés.

Au fil de ce projet, nous aborderons les composants matériels, les instructions de câblage et le code nécessaires au fonctionnement efficace des capteurs. Vous pouvez trouver des précisions supplémentaires dans la vidéo (à 00:00).

Le matériel expliqué

Le composant principal de ce projet est le module d'évitement d'obstacles infrarouge à 4 canaux, qui utilise le comparateur différentiel quadruple LM339. Ce circuit intégré peut fonctionner entre 2 et 36 volts, mais dans notre cas nous utiliserons 5 volts pour la compatibilité avec l'Arduino. Chaque capteur du module possède une entrée inverseuse et une entrée non inverseuse, ce qui lui permet de comparer la lumière infrarouge réfléchie par les obstacles et d'émettre un signal en conséquence.

Le module est conçu avec des résistances pull-up qui maintiennent la sortie à l'état haut lorsqu'aucun obstacle n'est détecté. Lorsqu'un objet est détecté, la sortie passe à l'état bas, fournissant un signal clair à l'Arduino. De plus, le module comporte des LED qui s'allument lorsque un obstacle est détecté, améliorant le retour d'information pour l'utilisateur pendant le fonctionnement.

Détails de la fiche technique

FabricantInconnu
Numéro de pièceÉvitement d'obstacles infrarouge à 4 canaux
Tension logique/E/S5 V
Tension d'alimentation2 à 36 V
Courant de sortie (par canal)10 mA (typique)
Courant de crête (par canal)20 mA (max.)
Conseils sur la fréquence PWMSans objet
Seuils logiques d'entréeBAS < 0.8 V, HAUT > 2.0 V
Chute de tension / RDS(on)/ saturation0,2 V (typique)
Limites thermiquesTempérature de fonctionnement : -40 à 125 °C
ColisModule
Notes / variantesComprend 4 capteurs à sensibilité réglable

  • Utilisez une masse commune pour tous les composants afin d'éviter des entrées flottantes.
  • Ajustez le potentiomètre de sensibilité pour une portée de détection optimale.
  • Assurez-vous que la tension d'alimentation est correcte pour éviter d'endommager les capteurs.
  • Vérifiez les connexions des câbles pour éviter des lectures erronées des capteurs.
  • Utilisez des condensateurs de découplage pour stabiliser l'alimentation des capteurs.
  • Testez chaque capteur individuellement avant de les intégrer au système principal.

Instructions de câblage

Pour câbler le module d'évitement d'obstacles infrarouge à 4 canaux sur l'Arduino, commencez par connecter l'alimentation et la masse. Connectez la broche VCC du module capteur à la sortie 5V de l'Arduino. Ensuite, connectez la broche GND du module à la masse (GND) de l'Arduino. Cela fournira l'alimentation nécessaire au fonctionnement des capteurs.

Ensuite, connectez les broches de sortie des capteurs aux broches d'entrée numériques de l'Arduino. Par exemple, connectez la sortie du capteur avant-gauche (étiquetée commeN1) à la broche numérique 2, le capteur avant droit (N2) vers la broche 3, le capteur arrière gauche (N3) sur la broche 4, et le capteur arrière droit (N4) sur la broche 5. De plus, vous pouvez connecter la sortie de frein à la broche 8, l'indicateur d'obstacle avant à la broche 9 et l'indicateur d'obstacle arrière à la broche 10. Assurez-vous que toutes les connexions sont sécurisées pour un fonctionnement fiable.

Exemples de code et tutoriel pas à pas

Le code Arduino commence par définir des constantes pour chaque broche de capteur afin de pouvoir s'y référer plus facilement dans l'ensemble du programme. Par exemple,FRONT_LEFTest défini comme la broche 2, ce qui clarifie quel capteur correspond à quelle broche.

#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor

Dans lesetup()fonction, chaque broche du capteur est configurée comme une entrée en utilisantpinMode(). Cette configuration permet à l'Arduino de lire les états des capteurs pendant le fonctionnement.

void setup() {
  Serial.begin(9600);
  pinMode(FRONT_LEFT, INPUT);
  pinMode(FRONT_RIGHT, INPUT);
  pinMode(REAR_LEFT, INPUT);
  pinMode(REAR_RIGHT, INPUT);
}

Dans la boucle principale, l'état de chaque capteur est lu à l'aide dedigitalRead(). Si un obstacle est détecté (indiqué par un signal BAS), la LED d'obstacle correspondante est activée et un message est imprimé sur le moniteur série.

void loop() {
  int FR = digitalRead(FRONT_RIGHT);
  int FL = digitalRead(FRONT_LEFT);
  
  if( FR == LOW || FL == LOW) {
    digitalWrite(FRONT_OB,HIGH);
    Serial.println("Front obstacle");
  } else {
    digitalWrite(FRONT_OB,LOW);
  }
}

Cette structure de code permet une extension et une modification faciles, vous permettant d'adapter les réponses en fonction des besoins spécifiques de votre application. Pour le code complet, veuillez consulter la section de chargement ci-dessous.

Démonstration / À quoi s'attendre

Une fois que tout est câblé et que le code est téléchargé, vous devriez vous attendre à ce que les LED du module s'allument chaque fois qu'un obstacle est détecté par l'un des capteurs. Le moniteur série affichera également des messages indiquant la présence d'obstacles à l'avant ou à l'arrière. Si les capteurs sont correctement positionnés, la voiture intelligente réagira en s'arrêtant ou en changeant de direction comme programmé (dans la vidéo à 02:30).

Les pièges courants incluent un câblage incorrect, qui peut entraîner des entrées flottantes ou des lectures erronées. Assurez-vous que les capteurs sont correctement calibrés et que le potentiomètre est réglé sur la sensibilité souhaitée. Tester chaque capteur indépendamment peut aider à identifier les problèmes avant l'intégration complète.

Horodatages vidéo

  • 00:00- Introduction au projet
  • 01:30- Explication du matériel
  • 02:30- Revue du code
  • 03:45Instructions de câblage
  • 04:50- Démonstration en direct

Images

4 channel infrared sensor module-6
4 channel infrared sensor module-6
4 channel infrared sensor module-1
4 channel infrared sensor module-1
4 channel infrared sensor module-3
4 channel infrared sensor module-3
4 channel infrared sensor module-
4 channel infrared sensor module-4
4 channel infrared sensor module-
4 channel infrared sensor module-5
60-This is the Arduino code for a 4-channel infrared obstacle sensor.
Langue: C++
++
/*
 * This is the Arduino code for 4-channel Infrared Obstacle Sensors for a smart car.
 * Watch YouTube video: https://youtu.be/6Qs4iFYm_lg
 * 
 * Written by Ahmad Nejrabi for Robojax.com
 * on January 15, 2018 at 21:04 in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: This code is "AS IS" and for educational purposes only.

 */
/*
4-Channel Infrared Obstacle Avoidance kit
Written by Ahmad Nejrabi for Robojax.com
on January 15, 2018 at 21:04 in Ajax, Ontario, Canada

What it does?
This module has 4 IR (infrared) sensors that sense obstacles and based on the position of the
obstacle, you can program your Arduino to take action. If you are using it for a smart car, you can
change the direction of the car, apply the brake, or stop it.
 */
  // 4 Infrared Obstacle code for Robojax.com
#define FRONT_LEFT 2 // pin 2 for front-left sensor
#define FRONT_RIGHT 3 // pin 3 for front-right sensor
#define REAR_LEFT 4 // pin 4 for rear-left sensor
#define REAR_RIGHT 5 // pin 5 for rear-right sensor
#define BREAK 8 // pin 8 to apply break or turn LED ON
#define FRONT_OB 9 // pin 9 when obstacle is at front
#define REAR_OB 10 // pin 10 when obstacle is at rear

void setup() {
  Serial.begin(9600);
  pinMode(FRONT_LEFT, INPUT);//define front-left input pin
  pinMode(FRONT_RIGHT, INPUT);//define front-right input pin
  // 4 Infrared Obstacle code for Robojax.com
  pinMode(REAR_LEFT, INPUT);//define rear-left input pin
  pinMode(REAR_RIGHT, INPUT);//define rear-right input pin 
  pinMode(BREAK, OUTPUT);// define pin for break
  pinMode(FRONT_OB,OUTPUT);// define front obstacle detection  pin
  pinMode(REAR_OB,OUTPUT);// define rear obstacle detection  pin
}

void loop() {
    // 4 Infrared Obstacle code for Robojax.com
  int FR = digitalRead(FRONT_RIGHT);// read FRONT_LEFT sensor
  int FL = digitalRead(FRONT_LEFT);// read FRONT_RIGHT sensor
  int RR = digitalRead(REAR_RIGHT);// read REAR_RIGHT sensor
  int RL = digitalRead(REAR_LEFT);// read REAR_LEFT sensor   

  if( FR == LOW || FL == LOW)
  {
    digitalWrite(FRONT_OB,HIGH);
    Serial.println("Front obstacle");
  }else{
    digitalWrite(FRONT_OB,LOW); 
    
  }


  if( RR == LOW || RL == LOW )
  {
    digitalWrite(REAR_OB,HIGH);
    Serial.println("Rear obstacle");
  }else{
    digitalWrite(REAR_OB,LOW); 
   
  } 

  delay(200);
}

Ce dont vous pourriez avoir besoin

Ressources et références

Aucune ressource pour le moment.

Fichiers📁

Aucun fichier disponible.