SENSOR DE PROXIMIDAD CON ARDUINO: PROYECTO PARA MEDIR DISTANCIAS

DESCRIPCIÓN DEL PROYECTO
En este proyecto vamos a programar un sensor de proximidad con Arduino para detectar objetos y medir la distancia a la que se encuentran. Primero conectaremos correctamente el sensor a la placa Arduino utilizando los pines correspondientes. Después programaremos el sistema para calcular la distancia entre el sensor y los objetos cercanos mediante ondas ultrasónicas. Finalmente observaremos cómo, a través de pequeñas modificaciones en el código, podemos crear sistemas inteligentes similares a los utilizados en puertas automáticas, robots o sensores de aparcamiento.
FUNCIONAMIENTO
¿Cómo funciona el HC-SR04?
A diferencia de nosotros, que usamos la vista, este sensor utiliza el principio de ecolocalización, el mismo que emplean los murciélagos y delfines.
- Disparo (Trigger): El sensor emite una ráfaga de 8 pulsos de ultrasonido (40 kHz).
- Rebote: El sonido viaja por el aire, choca con un objeto y regresa.
- Eco (Echo): El sensor detecta el retorno y calcula cuánto tiempo pasó entre la emisión y la recepción.
La matemática detrás del sensor
Para convertir el tiempo en distancia, usamos la velocidad del sonido (343 m/s en condiciones normales). La fórmula simplificada para obtener la distancia en centímetros es:
Distancia=2Tiempo×0.0343
(Dividimos entre 2 porque el sonido hace un viaje de ida y vuelta).
MATERIALES
- Arduino Uno (o cualquier variante como Nano o Mega).
- Sensor Ultrasónico HC-SR04.
- Cables de salto (Jumpers).
- Protoboard.
Conexiones (Pinout)
| Pin del Sensor | Pin en Arduino | Función |
|---|---|---|
| VCC | 5V | Alimentación |
| Trig | Pin 9 | Gatillo (Salida) |
| Echo | Pin 8 | Eco (Entrada) |
| GND | GND | Tierra |
CÓDIGO
// Definición de los pines
const int TriggerPin = 3; // Pin para enviar el pulso (Trigger)
const int EchoPin = 2; // Pin para recibir el eco (Echo)
void setup() {
Serial.begin(9600); // Inicializa la comunicación serial
pinMode(TriggerPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop() {
long duracion, distancia_cm;
// Enviar pulso de disparo (Trigger)
digitalWrite(TriggerPin, LOW);
delayMicroseconds(4);
digitalWrite(TriggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(TriggerPin, LOW);
// Leer el tiempo que tarda en volver el pulso
duracion = pulseIn(EchoPin, HIGH);
// Calcular la distancia (velocidad del sonido es aprox. 340 m/s)
// Fórmula: $distancia = \frac{duracion}{29.2} \div 2$
distancia_cm = duracion / 29.2 / 2;
// Imprimir los resultados en el monitor serial
if (distancia_cm > 0 && distancia_cm < 400) {
Serial.print(“Distancia: “);
Serial.print(distancia_cm);
Serial.println(” cm”);
}
delay(500); // Espera medio segundo antes de la siguiente medición
}
PRUEBAS REALIZADAS:
CÁLCULO DE DISTANCIA ENTRE EL SENSOR Y NUESTRA MANO:
Primero, probamos si el sensor era capaz de medir esa distancia, poniendo nuestra mano a 20-30cm aproximadamente y obteniendo esa distancia como resultado.
CÁLCULO DE DISTANCIA ENTRE EL SENSOR Y EL TECHO:
Posteriormente, apuntamos el sensor, hacia el techo y obtuvimos una distancia de alrededor de 220cm.
Etiqueta:AIDARAC, arduino, Arduino Mega 2560, CDyPC, ciencia, hc-sr04, ies monterroso

