Slide 1
KIT DE ROBOTICA BASADO EN ARDUINO
Image is not available
El Kit de Robótica Basado en Arduino es una solución completa para aprender y experimentar con la robótica y la programación.

20% DESCUENTO

Slide 1
KIT DE ROBOTICA BASADO EN ARDUINO
Image is not available
El Kit de Robótica Basado en Arduino es una solución completa para aprender y experimentar con la robótica y la programación.

20% DESCUENTO

Slide 1
KIT DE ROBOTICA BASADO EN ARDUINO
Image is not available
El Kit de Robótica Basado en Arduino es una solución completa para aprender y experimentar con la robótica y la programación.

20% DESCUENTO

previous arrowprevious arrow
next arrownext arrow
Sensor Ultrasonico Arduino

Nuestro Primer Robot evade obstáculos con sensor ultrasónico

Crear un robot que use servomotores y un sensor ultrasónico HC-SR04 para evitar obstáculos es un proyecto interesante y educativo. Los servos pueden ser útiles para mover el robot en diferentes direcciones o ajustar la posición de los componentes, mientras que el sensor ultrasónico se encarga de medir las distancias y detectar obstáculos.

Materiales Necesarios:

  • Arduino Uno (o cualquier otra placa compatible)
  • Sensor ultrasónico HC-SR04
  • Servomotores (por ejemplo, 2 servos para mover el robot)
  • Batería o fuente de alimentación para el robot
  • Cables y protoboard
  • Chasis para montar los servos y componentes

Para facilitar los materiales utilizaremos el kit de robotica basado en Arduino (Inf aqui).

Descripción del Proyecto:

En este proyecto, el sensor HC-SR04 medirá la distancia a los objetos cercanos. Si un obstáculo es detectado dentro de un rango determinado (por ejemplo, 20 cm), el robot tomará una acción, como girar o retroceder. Los servomotores controlarán el movimiento del robot y las direcciones de las ruedas.

Conexiones:

  1. Sensor ultrasónico HC-SR04:
    • VCC del sensor HC-SR04 a 5V de Arduino.
    • GND del sensor HC-SR04 a GND de Arduino.
    • Trig del sensor HC-SR04 a un pin digital (por ejemplo, el pin 8).
    • Echo del sensor HC-SR04 a otro pin digital (por ejemplo, el pin 7).
  2. Servomotores:
    • Conecta los pines de control de los servomotores a los pines PWM de Arduino (por ejemplo, el pin 2 y el pin 3).
    • VCC y GND de los servos a 5V y GND de Arduino, respectivamente.

Código de Ejemplo:

El código que se muestra a continuación hace que el robot avance hasta que detecte un obstáculo. En caso de que se detecte un obstáculo dentro del rango, el robot girará.

#include <Servo.h>

#define trigPin 7
#define echoPin 8
#define servoPin1 2
#define servoPin2 3

Servo servo1;  // Servo para la rueda Derecha
Servo servo2;  // Servo para la rueda Izquierda

void setup() {
  Serial.begin(9600);

  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);

  // Inicializa los servos
  servo1.attach(servoPin1);
  servo2.attach(servoPin2);
  
  // Poner los servos en la posición inicial
  servo1.write(90); // Posición 90 es hacia adelante
  servo2.write(90); // Posición 90 es hacia adelante
}

void loop() {
  long duration, distance;
  
  // Enviar pulso ultrasónico
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Medir el tiempo que tarda en volver el pulso
  duration = pulseIn(echoPin, HIGH);
  
  // Calcular la distancia en cm
  distance = (duration / 2) / 29.1;
  
  // Imprimir la distancia
  Serial.print("Distancia: ");
  Serial.print(distance);
  Serial.println(" cm");
  
  // Si detecta un obstáculo a menos de 20 cm
  if (distance < 20) {
    // Detenerse
    stopMovement();
    delay(500); // Pausa
    // Girar a la derecha (por ejemplo, moviendo el servo del lado derecho)
    turnRight();
    delay(1000); // Tiempo para girar
    // Continuar avanzando después de girar
    moveForward();
    delay(500); // Pausa
  } else {
    // Continuar avanzando si no hay obstáculos
    moveForward();
  }
}

// Función para mover hacia adelante
void moveForward() {
  servo1.write(0);  // Avanzar con servo 1 (gira en sentido adecuado)
  servo2.write(180);  // Avanzar con servo 2 (gira en sentido adecuado)
}

// Función para detener los motores
void stopMovement() {
  servo1.write(90);  // Detener
  servo2.write(90);  // Detener
}

// Función para girar a la derecha
void turnRight() {
  servo1.write(90);  // Mantener en posición
  servo2.write(180);   // Mover la rueda trasera a la izquierda (giro hacia la derecha)
  delay(500);         // Pausa para completar el giro
  servo2.write(90);  // Regresar la rueda trasera a la posición neutral
}

Explicación del Código:

  1. Medición de la distancia: El sensor HC-SR04 envía un pulso ultrasónico y calcula el tiempo de retorno del eco. A partir de esto, se obtiene la distancia.
  2. Movimiento del robot:
    • Avanzar: Cuando no se detectan obstáculos, ambos servos giran a 90 grados, lo que hace que el robot avance.
    • Evitar Obstáculos: Si el sensor detecta que hay un obstáculo a menos de 20 cm, el robot detiene su movimiento y gira hacia la derecha.
  3. Control de servos:
    • Los servos controlan las ruedas del robot. La función servo.write(90) coloca los servos en una posición neutral (hacia adelante), y al cambiar esa posición, el robot puede girar.

Mejoras Posibles:

  • Más servos: Agregar más servos para controlar otras ruedas o partes del robot, o para darle más maniobrabilidad.
  • Rotación más suave: En lugar de hacer que el robot se detenga completamente para girar, puedes hacer que gire lentamente sin detenerse por completo.
  • Más sensores: Usar más sensores ultrasónicos en distintas posiciones para mejorar la capacidad del robot de evitar obstáculos en 360 grados.

Este proyecto te permitirá practicar la integración de sensores y actuadores, además de aprender sobre el control de servomotores con Arduino. ¡Espero que disfrutes el proceso de construcción y programación de tu robot!