Ejemplos Arduino y sensor ultrasónico HC-SR04

Indice.

  1. Todo a saber del sensor HC-SR04
  2. Mostrar datos del sensor ultrasonico por monitor serial
  3. Mostrar datos del sensor ultrasonico en pantalla lcd

1. Todo a saber del sensor HC-SR04

En muchos de nuestros proyectos, tenemos la necesidad de sensar nuestro entorno, saber si en frente hay un obstáculo y a que distancia se encuentra, el sensor HC-SR04 nos permite hacer eso.

En este tutorial, vamos a conocer de forma detallada las características del sensor HC-SR04, como calibrar el sensor, como conectarlo y como utilizarlo con Arduino.

El sensor HC-SR04 es un sensor de distancia de bajo costo, su uso es muy frecuente en la robótica, utiliza transductores de ultrasonido para detectar objetos.

Su funcionamiento consiste en emitir un sonido ultrasónico por uno de sus transductores, y esperar que el sonido rebote de algún objeto presente, el eco es captador por el segundo transductor. La distancia es proporcional al tiempo que demora en llegar el eco.

Para empezar a utilizar el sensor HC-SR04 solo necesitas una placa Arduino, en este tutorial utilizaremos un Arduino Uno R3, pero puedes utilizar cualquier placa de Arduino, el procedimiento es el mismo.

Empezamos insertando el sensor ultrasónico en un protoboard y con cables hacemos las siguientes conexiones:

– Trigger del sensor al pin 2 del arduino

– Echo del sensor al pin 3 del arduino

Todas las conexiones se realizan con el Arduino Apagado (desconectado de la PC o de cualquier fuente externa):

Partimos de la siguiente formula:

Formula velocidad del sonido, arduino

Donde  Velocidad es la velocidad del sonido 340m/s, pero usaremos las unidades en cm/us pues trabajaremos en centímetros y microsegundos, tiempo es el tiempo que demora en llegar el ultrasonido al objeto y regresar al sensor, y la distancia recorrida es dos veces la distancia hacia el objeto, reemplazando en la formula tenemos:

Ecuación para calcular la distancia, hc-sr04

Finalmente enviamos serialmente el valor de la distancia y terminamos poniendo una pausa de 100ms, que es superior a los 60ms  recomendado por los datos técnicos del sensor

A continuación se muestra el código completo del programa.

2. Mostrar datos del sensor ultrasonico por monitor serial

const int Trigger = 2;   // Pin digital 2 para el Trigger (disparador)
const int Echo = 3;      // Pin digital 3 para el Echo (receptor)

void setup() {
  Serial.begin(9600);           // Inicia comunicación serial a 9600 baudios
  pinMode(Trigger, OUTPUT);      // Configura el Trigger como salida de pulso
  pinMode(Echo, INPUT);          // Configura el Echo como entrada de señal
  digitalWrite(Trigger, LOW);    // Inicializa el Trigger en 0V para limpieza
}

void loop() {
  long t; // Tiempo que demora en llegar el eco (microsegundos)
  long d; // Distancia calculada en centímetros

  // Generación del pulso ultrasónico
  digitalWrite(Trigger, HIGH);   // Activa el pulso de salida
  delayMicroseconds(10);         // Mantiene el pulso por 10 microsegundos
  digitalWrite(Trigger, LOW);    // Corta el pulso de salida

  // Medición y cálculo
  t = pulseIn(Echo, HIGH);       // Mide el tiempo que el pin Echo está en HIGH
  d = t / 59;                    // Fórmula para convertir tiempo en cm

  // Impresión de resultados en el Monitor Serie
  Serial.print("Distancia: ");   // Imprime el texto de referencia
  Serial.print(d);               // Imprime el número de la distancia
  Serial.println(" cm");         // Imprime la unidad y salta de línea

  delay(100);                    // Pausa de 100ms antes de la siguiente lectura
}

Conecte el Arduino Uno y cargue el programa.

Después de esto el Arduino y sensor ya deben estar trabajando, para poder visualizar los datos vaya a herramientas y habrá el monitor serial

Abrir el monitor serial de arduino

En el monitor serial le aparecerán los valores de la distancia que sensa el HC-SR04, ponga un objeto al frente y varíe su distancia respecto al sensor y verifique que la distancia mostrada en el monitor serial sea la correcta.

Datos en monitor serial arduino

3. Mostrar datos del sensor ultrasonico en pantalla lcd.

#include <Wire.h>               // Librería para comunicación I2C
#include <LiquidCrystal_I2C.h>  // Librería para el LCD I2C

// Configuración LCD: Dirección 0x27 (común), 16 columnas y 2 filas
LiquidCrystal_I2C lcd(0x27, 16, 2); 

const int Trigger = 2;   // Pin digital 2 para el Trigger
const int Echo = 3;      // Pin digital 3 para el Echo

void setup() {
  Serial.begin(9600);    // Inicia monitor serial
  
  // Configuración del LCD
  lcd.init();            // Inicializa la pantalla
  lcd.backlight();       // Enciende la luz de fondo
  lcd.setCursor(0, 0);   // Se ubica en columna 0, fila 0
  lcd.print("Iniciando..."); 
  
  pinMode(Trigger, OUTPUT); 
  pinMode(Echo, INPUT);
  digitalWrite(Trigger, LOW);
  delay(1000);           // Pausa para estabilizar
  lcd.clear();           // Limpia el mensaje inicial
}

void loop() {
  long t; // Tiempo
  long d; // Distancia en cm

  // Pulso del sensor
  digitalWrite(Trigger, HIGH);
  delayMicroseconds(10);
  digitalWrite(Trigger, LOW);

  t = pulseIn(Echo, HIGH);
  d = t / 59;

  // --- Mostrar en LCD ---
  lcd.setCursor(0, 0);       // Primera fila
  lcd.print("Distancia:      "); // Espacios para limpiar restos de números previos
  lcd.setCursor(0, 1);       // Segunda fila
  lcd.print(d);              // Imprime el valor
  lcd.print(" cm           "); // Imprime unidad y limpia sobrantes

  // --- Mostrar en Monitor Serial ---
  Serial.print("Distancia: ");
  Serial.print(d);
  Serial.println(" cm");

  delay(200); // Pausa ligeramente mayor para que el LCD no parpadee tanto
}

Detalles importantes para que funcione:

  1. Librería: Si no tienes la librería instalada, ve a Programa -> Incluir Librería -> Administrar Bibliotecas y busca «LiquidCrystal I2C». Instala la de Frank de Brabander.
  2. Dirección I2C: La mayoría de módulos usan la dirección 0x27, pero algunos usan 0x3F. Si no enciende nada, prueba cambiando 0x27 por 0x3F en el código.
  3. Contraste: Si la pantalla enciende pero no ves las letras, ajusta el potenciómetro azul que está detrás del módulo I2C del LCD.