Radar de Aparcamiento DIY con Arduino UNO y Sensores Ultrasónicos HC-SR04
Componentes y suministros
| Arduino UNO | ×1 |
| Sensor ultrasónico HC-SR04 genérico | ×3 (izquierda, centro, derecha) |
| Mini displays de batería (chip TM1651) | ×2 (izquierda, derecha) |
Sobre el proyecto
Proyecto sencillo de radar de aparcamiento DIY basado en 3 sensores HC-SR04: uno por cada lado y uno central. Dos mini displays de batería (chip TM1651) muestran la distancia a obstáculos por cada lado, según distancia máxima configurable.
Partes
Componentes usados (añadir jumpers y protoboard si se desea). Los displays de batería usan chip TM1651.
Funcionamiento
Tres módulos ultrasónicos: Derecha, Centro, Izquierda. Dos displays: Derecho e Izquierdo.
- Sensor central afecta a ambos displays.
- Sensores laterales afectan solo a su respectivo display.
Ejemplo: dos obstáculos (derecha y centro). El código toma el más cercano para mostrarlo.
- Si el centro es el más cercano → ambos displays cambian según su distancia.
- Si el lado derecho es el más cercano → display derecho muestra valor menor que izquierdo.
Hay una distancia máxima configurable (ej. 20 cm). Por encima: espacio seguro, display al máximo. Por debajo: displays cambian proporcionalmente a la distancia.
Ejemplos visuales
Las imágenes adjuntas muestran casos: obstáculo solo derecha, solo centro, solo izquierda, combinaciones. El último caso (display derecho bajo, izquierdo alto) ocurre si: obstáculos centro+derecha (derecha más cerca), o izquierda+derecha (derecha más cerca), o los tres (derecha más cerca).
Mejoras posibles
- Añadir más sensores para cubrir área mayor.
- Pantalla para mostrar valor numérico de distancia.
- Cambiar sensores a versiones impermeables (JSN-SR04T).
- Añadir alerta sonora.
Código
Parking_sensor_v1.ino (Arduino)
/* Código para 3 módulos HC-SR04 y 2 displays TM1651
* Sensor de aparcamiento: muestra proximidad y dirección
* Según MaxDistance: por encima = seguro, por debajo = cambia proporcional
* Referencia: www.SurtrTech.com
*/
#include <TM1651.h>
#define CLK 3 // Display derecho
#define DIO 2
#define CLK2 5 // Display izquierdo
#define DIO2 4
#define trigPin 6 // Ultrasónidos: Centro
#define echoPin 7
#define trigPinR 8 // Derecha
#define echoPinR 9
#define trigPinL 10 // Izquierda
#define echoPinL 11
#define Maxdistance 20 // Distancia máxima 20 cm
long duration;
int distance;
TM1651 DisplayR(CLK, DIO);
TM1651 DisplayL(CLK2, DIO2);
void setup() {
pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
pinMode(trigPinR, OUTPUT); pinMode(echoPinR, INPUT);
pinMode(trigPinL, OUTPUT); pinMode(echoPinL, INPUT);
DisplayR.init(); DisplayR.set(BRIGHTEST);
DisplayL.init(); DisplayL.set(BRIGHTEST);
}
void loop() {
int distanceM = CDistance(trigPin, echoPin);
int distanceR = CDistance(trigPinR, echoPinR);
int distanceL = CDistance(trigPinL, echoPinL);
int R = min(distanceM, distanceR); // Mínimo entre centro y derecha
int L = min(distanceM, distanceL); // Mínimo entre centro e izquierda
if (R > 0 && R < Maxdistance) {
short LevelR = map(R, 0, Maxdistance, 0, 7); // Escalar 0-20cm → 0-7
DisplayR.displayLevel(LevelR);
}
if (R >= Maxdistance) DisplayR.displayLevel(7); // Seguro
if (L > 0 && L < Maxdistance) {
short LevelL = map(L, 0, Maxdistance, 0, 7);
DisplayL.displayLevel(LevelL);
}
if (L >= Maxdistance) DisplayL.displayLevel(7);
delay(50);
}
int CDistance(int a, int b) { // a=Trigger, b=Echo
digitalWrite(a, LOW); delayMicroseconds(2);
digitalWrite(a, HIGH); delayMicroseconds(10);
digitalWrite(a, LOW);
duration = pulseIn(b, HIGH);
distance = duration * (0.034 / 2);
return distance;
}
Librería display TM1651
Facilita enormemente el control: https://github.com/ne0x/fuel_display
Esquemáticos

Proceso de manufactura
- Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
- Construya un Sensor de Humedad de Suelo de Bajo Coste para Riego Inteligente con Raspberry Pi
- Monitor de temperatura casero con Raspberry Pi, MCP9808, InfluxDB y Grafana
- Integrar radar pulsado Acconeer A111 con Raspberry Pi: guía práctica
- Sensor de Emociones y EEG: Hardware de Bajo Coste para Detección de Emociones en Tiempo Real
- Transferir datos de temperatura y humedad entre dos Arduinos usando Firebase
- Entendiendo el sensor de oxígeno (O2): función, ubicación y señales de fallo
- Mouser presenta las últimas tecnologías de sensores en Sensors Expo 2019
- Sensores Radar Explicados: Funcionamiento y Aplicaciones Modernas
- Sensores de Aparcamiento: Funcionamiento y Aplicaciones Clave
- Ambarella adquiere Oculii por 307,5 M$, expandiendo radar y fusión de sensores para vehículos autónomos