Este artículo detalla un fascinante proyecto de electrónica y programación que combina la precisión de un sensor ultrasónico HC-SR04 con la acción controlada de un servomotor SG90 para crear un mecanismo de apertura automática de una caja. El sistema está diseñado para levantar la tapa de la caja cuando se detecta un objeto (como una mano) a una distancia muy cercana (específicamente a 5 cm).
El corazón de este proyecto reside en la capacidad de los microcontroladores, como el Arduino Uno (placa ideal para este tipo de prototipos), para interpretar datos del mundo real y generar respuestas físicas. Este proyecto es perfecto para aficionados que deseen explorar la interacción entre la detección de proximidad y el control de movimiento.
🔩Funcionamiento
Diseñar e implementar un sistema que, utilizando una placa Arduino, detecte la proximidad de un objeto mediante un sensor ultrasónico (HC-SR04) y controle el movimiento de un servo motor. El servo deberá girar 15 grados aproximadamente cuando un objeto se acerque a 5 centímetros del sensor y regresar a su posición inicial de 90 grados cuando el objeto se aleje de esta distancia.
El Sensor Ultrasónico HC-SR04
El HC-SR04 es un componente esencial para la detección de distancia. Funciona emitiendo una ráfaga de sonido ultrasónico (frecuencia inaudible para el oído humano) y midiendo el tiempo que tarda el eco en regresar.
- Principio de Funcionamiento: Se basa en el cálculo de la distancia a partir de la fórmula: Distancia = (Tiempo * Velocidad del Sonido) / 2. El tiempo se divide por dos porque la señal recorre la distancia de ida y vuelta.
- Pines de Conexión:
- VCC: Alimentación positiva (5V).
- GND: Tierra (masa).
- Trig (Trigger): Pin de entrada al que se le envía un pulso corto para iniciar la emisión del sonido.
- Echo: Pin de salida que se pone en alto mientras se espera el pulso de eco. La duración de este pulso es el tiempo de vuelo.
El Servomotor SG90
El SG90 es un pequeño pero potente actuador rotatorio, ideal para este tipo de mecanismos. Se caracteriza por su capacidad para girar a una posición angular específica (generalmente entre 0° y 180°), a diferencia de los motores de corriente continua que giran continuamente.
- Principio de Funcionamiento: El servomotor se controla mediante una señal de Modulación por Ancho de Pulso (PWM). La duración del pulso (ancho) determina el ángulo al que girará el eje. Por ejemplo, un pulso corto puede corresponder a 0°, y un pulso más largo a 180°.
- Pines de Conexión:
- Rojo: Alimentación (VCC, 5V).
- Marrón/Negro: Tierra (GND).
- Naranja/Amarillo: Señal de control (conectado a un pin PWM del Arduino).
🔨Componentes
| Componente | Cantidad | Especificación | Función |
|---|---|---|---|
| Placa Arduino | 1 | Arduino Uno, Nano, etc. | Control de componentes(cerebro) |
| Sensor ultrasónico | 1 | HC-04 | Calcular la distancia de un objeto |
| Servo | 1 | SG90 o similar | Levantar la tapa la caja |
| Cables de conexión | n | Unir componentes | |
| Fuente de Alimentación | 1 | 5v | Suministro de energía |
🔌Conexiones
- Conexión del sensor HC-04::
- VCC a 5V de Arduino
- GND a GND de Arduino
- TRIG a pin 9 de Arduino
- ECHO a pin 10 de Arduino
- Conexión del servo:
- VCC a 5V de Arduino o a fuente de alimentación
- GND a GND de Arduino o a fuente de alimentación
- Pin de señal del servomotor al pin digital 2 del Arduino.
0️⃣Código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include <Arduino.h> #include <Servo.h> // Importar la librería para controlar el servo // Pines del sensor ultrasónico const int triggerPin = 9; const int echoPin = 10; const int servoPin = 2; // Creación del objeto servo Servo myServo; void setup() { // Configuración de los pines pinMode(triggerPin, OUTPUT); pinMode(echoPin, INPUT); // Inicialización del servo en el pin 6 myServo.attach(servoPin); myServo.write(90); // Posición inicial del servo: 90 grados // Inicialización del puerto serie Serial.begin(9600); } void loop() { // Medición de la distancia long duration; float distance; // Generar un pulso de Trigger digitalWrite(triggerPin, LOW); delayMicroseconds(2); digitalWrite(triggerPin, HIGH); delayMicroseconds(10); digitalWrite(triggerPin, LOW); // Leer el tiempo de respuesta del Echo duration = pulseIn(echoPin, HIGH); // Calcular la distancia en centímetros distance = duration * 0.034 / 2; // Imprimir la distancia medida en el monitor serie Serial.print("Distancia: "); Serial.print(distance); Serial.println(" cm"); // Control del servo según la distancia medida if (distance <= 5.0) { myServo.write(15); // Girar a 15 grados delay(3000); } else { myServo.write(90); // Regresar a 90 grados } // Pequeña pausa para estabilizar las lecturas delay(100); } |
Explicación del Código:
- Librería del Servo: Se utiliza la librería
Servo.hpara facilitar el control del motor. - Configuración del Sensor Ultrasónico: Los pines
triggerPinyechoPincontrolan el disparo y la recepción de los pulsos ultrasónicos. - Cálculo de la Distancia: La fórmula
(duration * 0.034 / 2)convierte el tiempo en microsegundos a distancia en centímetros. - Control del Servo: Según la distancia medida, el servo gira a 15 grados o regresa a 90 grados.
🖌️Diseños

🎬Videos
📑Conclusión
El proyecto de la Caja de Apertura Automática encapsula de manera práctica el concepto de Interacción Humano-Máquina (HMI) básica dentro del ámbito de la Internet de las Cosas (IoT) y la robótica de consumo.
Este ejercicio no es solo un montaje de componentes, sino la creación de una “inteligencia” sencilla: el sistema percibe (a través del HC-SR04), toma una decisión (comparar la distancia con el umbral de 5 cm, y ejecuta una acción física (movimiento del SG90).
El éxito del proyecto radica en:
- Fiabilidad del Umbral: La estricta dependencia de la distancia de 5 cm garantiza que la caja solo se abra ante una intención clara y cercana del usuario, evitando aperturas accidentales y optimizando el consumo de energía del servomotor.
- Actuación Precisa: El uso de un servomotor fue la elección óptima, ya que permite controlar el ángulo exacto de la tapa, asegurando que se abra lo suficiente para el acceso y que se cierre de forma segura sin brusquedad, algo difícil de lograr con motores DC estándar.
- Prototipado Eficiente: Utilizando el dúo popular Arduino/HC-SR04/SG90, se demuestra la rapidez con la que se pueden desarrollar soluciones funcionales de automatización de bajo costo, siendo una plataforma ideal para proyectos escolares o prototipos de soluciones de “tocar sin contacto” (touchless), cada vez más relevantes en la vida cotidiana.


Hello! I hope you’re having a great day. Good luck 🙂