Código de búsqueda

Código y vídeo: Sensor infrarrojo de 4 canales para coche inteligente con Arduino

Código y vídeo: Sensor infrarrojo de 4 canales para coche inteligente con Arduino

En este tutorial, exploraremos cómo usar un módulo sensor de evitación de obstáculos por infrarrojos de 4 canales para crear un coche inteligente. Este módulo consta de cuatro sensores infrarrojos que pueden detectar obstáculos en varias direcciones, lo que permite que tu vehículo robótico reaccione en consecuencia. Cada sensor proporciona retroalimentación sobre la proximidad, lo que te permite programar respuestas en función de los obstáculos detectados.

A medida que avancemos en este proyecto, cubriremos los componentes de hardware, las instrucciones de cableado y el código necesario para operar los sensores de forma eficaz. Puede encontrar aclaraciones adicionales en el video (en 00:00).

Hardware explicado

El componente principal de este proyecto es el módulo de evitación de obstáculos por infrarrojos de 4 canales, que utiliza el comparador diferencial cuádruple LM339. Este CI puede funcionar entre 2 y 36 voltios, pero en nuestro caso usaremos 5 voltios para compatibilidad con el Arduino. Cada sensor del módulo tiene una entrada inversora y una no inversora, lo que le permite comparar la luz infrarroja reflejada por los obstáculos y emitir una señal en consecuencia.

El módulo está diseñado con resistencias pull-up que mantienen la salida en alto cuando no se detecta ningún obstáculo. Cuando se detecta un objeto, la salida pasa a nivel bajo, proporcionando una señal clara al Arduino. Además, el módulo cuenta con LEDs que indican cuando se detecta un obstáculo, mejorando la retroalimentación al usuario durante la operación.

Detalles de la ficha técnica

FabricanteDesconocido
Número de piezaEvitación de obstáculos por infrarrojos de 4 canales
Tensión lógica/E/S5 V
Tensión de alimentación2-36 V
Corriente de salida (por canal)10 mA (típ.)
Corriente de pico (por canal)20 mA (máx.)
Guía de frecuencia PWMNo aplica
Umbrales lógicos de entradaBAJO < 0.8 V, ALTO > 2.0 V
Caída de tensión / RDrenador-Fuente (en conducción)/ saturación0.2 V (típ.)
Límites térmicosTemperatura de funcionamiento: -40 a 125 °C
PaqueteMódulo
Notas / variantesIncluye 4 sensores con sensibilidad ajustable

  • Conecte todos los componentes a una masa común para evitar entradas flotantes.
  • Ajuste el potenciómetro de sensibilidad para un alcance de detección óptimo.
  • Asegúrese de que la tensión de alimentación sea la adecuada para evitar dañar los sensores.
  • Compruebe las conexiones del cableado para evitar lecturas erróneas de los sensores.
  • Utilice condensadores de desacoplo para estabilizar la alimentación de los sensores.
  • Pruebe cada sensor individualmente antes de integrarlo en el sistema principal.

Instrucciones de cableado

Para cablear el módulo de evitación de obstáculos por infrarrojos de 4 canales al Arduino, comienza conectando la alimentación y la tierra. Conecta el pin VCC del módulo sensor a la salida de 5V del Arduino. Luego, conecta el pin GND del módulo a la tierra (GND) del Arduino. Esto proporcionará la energía necesaria para que los sensores funcionen.

A continuación, conecte los pines de salida de los sensores a los pines de entrada digital del Arduino. Por ejemplo, conecte la salida del sensor delantero izquierdo (etiquetado comoN1) al pin digital 2, el sensor delantero derecho (N2) al pin 3, el sensor trasero izquierdo (N3) al pin 4, y el sensor trasero derecho (N4) al pin 5. Además, puede conectar la salida del freno al pin 8, el indicador de obstáculo delantero al pin 9 y el indicador de obstáculo trasero al pin 10. Asegúrese de que todas las conexiones estén seguras para un funcionamiento fiable.

Ejemplos de código y guía paso a paso

El código de Arduino comienza definiendo constantes para cada pin de sensor para facilitar su referencia a lo largo del programa. Por ejemplo,FRONT_LEFTse define como el pin 2, dejando claro qué sensor corresponde a qué pin.

#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

En elsetup()función, cada pin del sensor se configura como entrada usandopinMode(). Esta configuración permite que el Arduino lea los estados de los sensores durante el funcionamiento.

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

En el bucle principal, el estado de cada sensor se lee usandodigitalRead(). Si se detecta un obstáculo (indicado por una señal LOW), se activa el LED de obstáculo correspondiente y se imprime un mensaje en el monitor serial.

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);
  }
}

Esta estructura de código facilita la expansión y modificación, permitiéndole adaptar las respuestas según las necesidades específicas de su aplicación. Para el código completo, consulte la sección de carga a continuación.

Demostración / Qué esperar

Una vez que todo esté cableado y el código subido, deberías esperar que los LEDs del módulo se enciendan cada vez que cualquiera de los sensores detecte un obstáculo. El monitor serial también mostrará mensajes indicando la presencia de obstáculos en la parte delantera o trasera. Si los sensores están posicionados correctamente, el coche inteligente reaccionará deteniéndose o cambiando de dirección según lo programado (en el video a las 02:30).

Los errores comunes incluyen el cableado incorrecto, que puede provocar entradas flotantes o lecturas erróneas. Asegúrese de que los sensores estén correctamente calibrados y de que el potenciómetro esté ajustado a la sensibilidad deseada. Probar cada sensor de forma independiente puede ayudar a identificar problemas antes de la integración completa.

Marcas de tiempo del vídeo

  • 00:00- Introducción al proyecto
  • 01:30- Explicación del hardware
  • 02:30- Revisión del código
  • 03:45- Instrucciones de cableado
  • 04:50- Demostración en vivo

Imágenes

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.
Idioma: 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);
}

Cosas que podrías necesitar

Recursos y referencias

Aún no hay recursos.

Archivos📁

No hay archivos disponibles.