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
| Fabricante | Desconocido |
|---|---|
| Número de pieza | Evitación de obstáculos por infrarrojos de 4 canales |
| Tensión lógica/E/S | 5 V |
| Tensión de alimentación | 2-36 V |
| Corriente de salida (por canal) | 10 mA (típ.) |
| Corriente de pico (por canal) | 20 mA (máx.) |
| Guía de frecuencia PWM | No aplica |
| Umbrales lógicos de entrada | BAJO < 0.8 V, ALTO > 2.0 V |
| Caída de tensión / RDrenador-Fuente (en conducción)/ saturación | 0.2 V (típ.) |
| Límites térmicos | Temperatura de funcionamiento: -40 a 125 °C |
| Paquete | Módulo |
| Notas / variantes | Incluye 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
++
/*
* 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
-
Amazonas
Recursos y referencias
Aún no hay recursos.
Archivos📁
No hay archivos disponibles.