La App Makers

En este artículo vamos realizar un pequeño robot casero controlado por la placa Arduino UNO. El objetivo del auto será el de evitar obstáculos mediante un sensor por ultrasonidos si se activa “ON” y si se quiere controlar a través de comandos de flechas se tendrá que activar el botón “Bluetooth”.

Materiales:

  • Una placa Arduino.
  • Puente H (L293D).
  • Dos motores DC .
  • Dos ruedas para los Motores.
  • Una Rueda loca.
  • Un sensor ultrasonido.
  • Modulo Bluetooth HC-06.
  • Una batería de 7,2v.
  • Una  Protoboard .
  • Unos cables Macho Macho.

Sensor Ultrasonido HC-SR04

El sensor HCSR04 es un módulo que incorpora un par de transductores de ultrasonido que se utilizan de manera conjunta para determinar la distancia del sensor con un objeto colocado enfrente de este. Un transductor emite una “ráfaga” de ultrasonido y el otro capta el rebote de dicha onda.

Puente H L293D

El circuito integrado L293D incluye en su interior 4 drivers o medio puente H. La corriente máxima que el L293D puede manejar es de 600 mA con voltajes desde 4.5 volts a 36 volts.

Gracias a que este circuito integrado es capaz de producir corrientes bidireccionales, es útil en aplicaciones que requieran controlar la dirección de giro y velocidad de motores de DC.

Motores DC

El motor de corriente continua, denominado también motor de corriente directamotor CC o motor DC (por las iniciales en inglés direct current), es una máquina que convierte energía eléctrica en mecánica, provocando un movimiento rotatorio, gracias a la acción de un campo magnético.

Montaje:

El montaje de los elementos puede ser en la misma protoboard de 800 puntos, pero lo pueden hacer en una madera “MDF“, algún soporte realizado en impresión 3D. Es de acuerdo a la estética que le quieran dar al auto a control.

Conexiones:

para controlar el auto deberán descargar la siguiente aplicación para el smartphone “Arduino Control Robot“:

Haz clic sobre la imagen

En cuanto al código tiene la posibilidad de que el auto funcione como un esquiva obstáculo si se presioma el botón “On” , si se vincula a través del botón “Bluetooth” va a pasar a funcionar por medio de los comandos de flechas y el botón centrar sirve para frenar. El código tiene diferentes funciones para cuando se requiera desplazar hacia la derecha, izquierda, adelante, atrás y frenado.

//Definición de variables
int izqA = 5; // Pines que se conecta al arduino
int izqB = 6; 
int derA = 9; 
int derB = 10; 
int vel = 255;            // Velocidad de los motores (0-255)
int estado = 'c';         // inicia detenido

int pecho = 2;            // define el pin 2   para el Ultrasonido
int ptrig = 3;            // define el pin 3 para el Ultrasonido
int duracion, distancia;  // para calcular distancia
//Seteo de la configuración
void setup()  { 
  Serial.begin(9600);  //inicia el puerto serial para comunicación Bluetooth
  pinMode(derA, OUTPUT);
  pinMode(derB, OUTPUT);
  pinMode(izqA, OUTPUT);
  pinMode(izqB, OUTPUT);
  pinMode(pecho, INPUT);   // define el pin 2 como entrada pecho 
  pinMode(ptrig,OUTPUT);   // define el pin 3 como salida  ptrig 
  pinMode(13,OUTPUT);
 
} 

void loop()  { 

  if(Serial.available()>0){        // lee el bluetooth si es mayor a 0
    estado = Serial.read();        // lo almacena en estado
  }
// Pregunta por diferentes opciones
  if(estado=='a'){           // Para desplazar al Frente
    Desplazar_frente ();       
  }
  if(estado=='b'){          // Para desplazar izquierda 
   Desplazar_izquierda ();    
  }
  if(estado=='c'){         // Para frenar el auto
    Frenar_auto ();
  }
  if(estado=='d'){          // Para desplazar a la derecha
    Desplazar_derecha ();
  } 

  if(estado=='e'){          // Para desplazar hacia atrás
    Desplazar_atras ();      
  }
  // Funcionamiento de modo esquiva obstáculos
  if (estado =='f'){   //Si se hace clic en  ON se mueve sensando distancia 
  
     digitalWrite(ptrig, HIGH);   // genera el pulso de trigger
     delay(0.01);
     digitalWrite(ptrig, LOW);
     
     duracion = pulseIn(pecho, HIGH);          // Lee el tiempo del Echo
     distancia = (duracion/2) / 29;   // calcula la distancia en centimetros
     delay(10); 
     
     if (distancia <= 15 && distancia >=2){
        digitalWrite(13,HIGH);                 // Enciende LED
        
        analogWrite(derB, 0);             // Parar los motores 200 miliseg
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);    
        analogWrite(izqA, 0); 
        delay (200);
        
        analogWrite(derB, vel);          // marcha atras 500 miliseg
        analogWrite(izqB, vel); 
        delay(500);           
        
        analogWrite(derB, 0);            // Girar durante 600 milisegundos   
        analogWrite(izqB, 0); 
        analogWrite(derA, 0);  
        analogWrite(izqA, vel);  
        delay(600);
        
        digitalWrite(13,LOW);
     }
     else{                     // Si no hay obstaculos se desplaza al frente  
         analogWrite(derB, 0);     
         analogWrite(izqB, 0); 
         analogWrite(derA, vel);  
         analogWrite(izqA, vel); 
     }
  }
    
}

void Desplazar_frente ()
{
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, vel);  
    analogWrite(izqA, vel);
}

void Desplazar_izquierda ()
{
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, 0);  
    analogWrite(izqA, vel);  
}
void Frenar_auto ()
  { 
    analogWrite(derB, 0);     
    analogWrite(izqB, 0); 
    analogWrite(derA, 0);    
    analogWrite(izqA, 0); 
}
void Desplazar_derecha ()
{ 
    analogWrite(derB, 0);     
    analogWrite(izqB, 0);
    analogWrite(izqA, 0);
    analogWrite(derA, vel);  
}
 void Desplazar_atras ()
{ 
    analogWrite(derA, 0);    
    analogWrite(izqA, 0);
    analogWrite(derB, vel);  
    analogWrite(izqB, vel);
}

Bueno espero que les sea útil este tutorial . Saludos Maqui

  • Tutorial
  • Arduino
0 Comentarios

Contesta

CONTACTANOS

Esta es su red social de tecnología para compartir tus ideas y proyectos. Puedes enviarnos un correo si tienes dudas.Nos vemos

Enviando

Nuevo informe

Cerrar

Inicia Sesión con tu Usuario y Contraseña

o    

¿Olvidó sus datos?

Create Account