¿Quieres un sensor de aparcamiento? Arduino te asiste
Publicado por Loli Diéguez en
Los sensores de aparcamiento son muy comunes hoy en día y se pueden ver en casi todos los coches modernos y en el artículo de hoy os muestro como podemos construirnos uno de estos sensores con una placa Arduino.
Detallaré la conexión entre los componentes y el código necesario para que funcione.
Cómo funciona realmente el sensor ultrasónico Arduino
Para medir distancias con Arduino podemos hacerlo de diferentes formas. Está el sensor de infrarrojos, que utiliza las propiedades de la luz para calcular la distancia.
Y también está el sensor ultrasónico Arduino, que utiliza las propiedades de la propagación del sonido para medir distancias. Más específicamente usa ultrasonido. Estos tipos de ondas sonoras están por encima del espectro audible para los humanos.
El funcionamiento es muy sencillo. El sensor envía una onda ultrasónica a través del disparador, rebota en el objeto y el receptor detecta la onda que el objeto retorna.
Sabiendo cuánto tiempo ha tardado en viajar esta onda, podemos conocer la distancia, solo necesitas usar la famosa fórmula de la velocidad:
Donde v es la velocidad, d es la distancia y t es el tiempo. Si despejamos el espacio (d), quedaría de la siguiente manera:
d = v x t
El valor de la velocidad lo conocemos porque el sonido viaja a 343 m/s. El sensor ultrasónico de Arduino nos devolverá el tiempo a través de la API de Arduino.
Con todo esto podemos calcular la distancia a un objeto. La velocidad del sonido es de 343 m / s a una temperatura de 20º C. La velocidad aumenta o disminuye 0,6 m / s por grado centígrado. Podemos ser más exactos si usamos un sensor de temperatura como el LM35.
Por tanto, es importante conocer las frecuencias del espectro audible. Solo debemos quedarnos con el rango de frecuencia de 20 Hz (hercios) a 20 kHz (kilohercios).
Alrededor de los 20 Hz, el sonido es muy bajo. A medida que subimos la frecuencia, el sonido se vuelve cada vez más nítido. Esto nos servirá para avisarnos de que nos estamos acercando a un obstáculo al aparcar.
Tampoco podemos esperar un sistema de alta fidelidad con un zumbador Arduino, pero nos da la capacidad de generar tonos audibles para alarmas e incluso alguna melodía musical fácilmente reconocible.
Sistema de alerta con LED
Finalmente, incorporamos el sistema de alerta visual para el sensor ultrasónico Arduino. Esto nos permitirá visualizar si estamos cerca o lejos de un obstáculo. Con 3 LEDs (verde, amarillo y rojo) podemos determinar si estamos lejos, cerca o en una zona de peligro.
Componentes necesarios
Listado del material necesario para realizar este proyecto:
- Arduino UNO
- Placa prototipos
- Cables para hacer conexiones
- 3 resistencias de 220 Ω
- 1 LED verde
- 1 LED amarillo
- 1 LED rojo
- 1 sensor ultrasónico Arduino (HC-SR04)
- 1 zumbador para Arduino
Es un circuito muy sencillo. Por un lado tendremos todas las alertas, acústicas y visuales, y por otro lado el sensor de ultrasonidos. En el siguiente diagrama se puede observar la conexión.
Cosas a tener en cuenta
Las resistencias son de 220 Ω y están colocadas en serie con los LED. El sensor ultrasónico Arduino se conecta a dos pines digitales, uno para el disparador y otro para el receptor.
El zumbador Arduino se conecta a una salida PWM. Intenta colocar el sensor ultrasónico Arduino lo más cerca posible del borde de la placa de pruebas para que no te dé lecturas erróneas porque la señal coche con la propia placa de prototipos
Programación del sensor ultrasónico Arduino para medir la distancia
Comencemos con la parte de programación. Antes de meternos con el código analizaremos lo que tenemos que conseguir, así entenderemos mejor el código.
El sistema de estacionamiento consiste en detectar un objeto a través del sensor ultrasónico y avisar con señales luminosas y sonoras.
Por tanto, ya tenemos el primer problema, detectar el obstáculo y alerta con sonido y luces.
Umbral 1: se encuentra en la zona verde de 30 cm a 20 cm.
Umbral 2: se encuentra en la zona amarilla, de 20 cm a 10 cm.
Umbral 3: está en la zona roja, menos de 10 cm.
Recuerda que el sensor de que vamos a usar de Arduino tiene un rango de detección que normalmente oscila entre 2 cm y 400 cm.
Código
// Declaracion de pines
#define LEDGREEN 2
#define LEDYELLOW 3
#define LEDRED 4
#define TRIGGER 5
#define ECHO 6
#define BUZZER 9
// Declaracion de constantes
const float sound = 34300.0; // Velocidad del sonido en cm/s
const float threshold 1 = 30.0;
const float threshold 2 = 20.0;
const float threshold 3 = 10.0;
void setup() {
// inicia el circuito
Serial.begin(9600);
// definición del funcionamiento de pines
pinMode(LEDGREEN, OUTPUT);
pinMode(LEDYELLOW, OUTPUT);
pinMode(LEDRED, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(TRIGGER, OUTPUT);
pinMode(BUZZER, OUTPUT);
// Apagar los LEDs
turnoffLEDs();
}
void loop() {
// Preparar el sensor de sonido
initiateTrigger();
// Lee la distancia
float distance = calculatedistance ();
// Apaga LEDs
turnoffLEDs();
// Alerta si la distancia esta dentro de zona de alerta
if (distance < threshold 1)
{
// lanza alertas
alerts(distance);
}
}
// Apaga LEDs
void turnoffLEDs()
{
// Apaga Leds
digitalWrite(LEDGREEN, LOW);
digitalWrite(LEDYELLO, LOW);
digitalWrite(LEDRED, LOW);
}
void alerts (float distance)
{
if (distance < threshold 1 && distance >= threshold 2)
{
// Enciende Led Verde
digitalWrite(LEDGREEN, HIGH);
tone(BUZZER, 2000, 200);
}
else if (distance < threshold2 && threshold > threshold3)
{
// Enciende Led amarillo
digitalWrite(LEDYELLOW, HIGH);
tone(BUZZER, 2500, 200);
}
else if (distance <= threshold3)
{
// Enciende Led rojo
digitalWrite(LEDRED, HIGH);
tone(BUZZER, 3000, 200);
}
}
// Calcula distancia al objeto
float calculatedistance()
{
unsigned long time = pulseIn(ECHO, HIGH);
float distance = time* 0.000001 * sound / 2.0;
Serial.print(distance);
Serial.print(“cm”);
Serial.println();
delay(500);
return distance;
}
void initiateTrigger()
{
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
}