Publicaciones

armar carro robot a control remoto controlado por bluetooth con app desde celular

Cómo armar un carro robot a control remoto controlado por bluetooth con app desde celular  para cuatro principales movimientos. Puede servir para gruas, carros, Brazos y más.



En esta oportunidad Moveremos un carro robot.



Todo este procto se hará con un Arduino, en este caso con un Arduino UNO

Para Facilitar las conexiones usaremos un arduino shield v5.

Puente H L298N

Puente H, aquí con los detalles de conexión.


Sensor Ultrasinido, para detectar Obstaculos

modulo bluetooth Para la comunicación desde un terminal remoto

Aquí Tenemos toda la configuración completa.



Algunos alcanses de APK, Puede bajar desde la Parte Final.



Flecha N "Norte" = 'n'
Flecha S "Sur" = 's'
Flecha O "Oeste" = 'o'
Flecha E "Este" = 'e'
Flecha P "Parar" = 'p'
Boton Verde "Encender" = 'h'
Boton Rojo "Apagar" = 'l'
Boton Enlaces = Esta selecciona el Modulo Bluetooth a que se va a conectar y/o sincronizar


 

// INICIO DEL CÓDIGO
int Pecho = 4;    // define Pecho como (echo) para el Ultrasonido
int Ptrig = 5;    // define Ptrig como (trig) para el Ultrasonido
int LaIzAn = 6;  // Giro Lado Izquierdo AntiHorario
int LaIzHo = 7;  // Giro Lado Izquierdo Horario
int LaDeHo = 8;  // Giro Lado Derecho Horario
int LaDeAn = 9;  // Giro Lado Derecho AntiHorario

int Mov = 255;            // Movimiento de motor (0-255)
int estado = 'l';         // inicia detenido

int duracion, distancia;  // Para Calcular distacia

void setup()  {
  Serial.begin(9600);    // inicia el puerto serial para comunicacion con el Bluetooth
  pinMode(LaDeHo, OUTPUT);
  pinMode(LaDeAn, OUTPUT);
  pinMode(LaIzHo, OUTPUT);
  pinMode(LaIzAn, OUTPUT);
 
  pinMode(Pecho, INPUT);   // define el pin 4 como entrada (echo)
  pinMode(Ptrig,OUTPUT);   // define el pin 5 como salida  (trig)
}

void loop()  {

  if(Serial.available()>0){        // lee el bluetooth y almacena en estado
    estado = Serial.read();
  }
  if(estado=='n'){           // Desplazar hacia Adelante "Norte"
    analogWrite(LaDeAn, 0);   
    analogWrite(LaIzAn, 0);
    analogWrite(LaDeHo, Mov);
    analogWrite(LaIzHo, Mov);     
  }
    if(estado=='s'){          // Desplazar hacia Atras "Sur"
    analogWrite(LaDeAn, Mov);   
    analogWrite(LaIzAn, Mov);
    analogWrite(LaDeHo, 0);
    analogWrite(LaIzHo, 0);     
  }
  
    if(estado=='o'){           // Desplazar hacia LadDerecha "Oeste"
    analogWrite(LaDeAn, 0);   
    analogWrite(LaIzAn, 0);
    analogWrite(LaIzHo, 0);
    analogWrite(LaDeHo, Mov);}
    
 
  if(estado=='e'){          // Desplazar hacia LadIzquierdo "Este"
    analogWrite(LaDeAn, 0);   
    analogWrite(LaIzAn, 0);
    analogWrite(LaIzHo, Mov);
    analogWrite(LaDeHo, 0);

  }
 
  if(estado=='p'){         // Detenerse; Detiene los motores
    analogWrite(LaDeAn, 0);   
    analogWrite(LaIzAn, 0);
    analogWrite(LaDeHo, 0);  
    analogWrite(LaIzHo, 0);
  
  }



 
  if (estado =='h'){          // Boton Verde Modo automatico con sensor Ultrasonido
 
     digitalWrite(Ptrig, HIGH);   // genera el pulso de trigger por 10us
     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){    // si la distancia es menor de 15cm
      
        analogWrite(LaDeAn, 0);                  // Parar los motores por 1/4 de segundo
        analogWrite(LaIzAn, 0);
        analogWrite(LaDeHo, 0);  
        analogWrite(LaIzHo, 0);
        delay (250);
      
        analogWrite(LaDeHo, 0);  
        analogWrite(LaIzHo, 0);
        analogWrite(LaDeAn, Mov);               // Reversa durante 1/2 de segundo
        analogWrite(LaIzAn, Mov);
        delay(500);         
      
        analogWrite(LaDeAn, 0);                // Girar durante 1 segundo
        analogWrite(LaIzAn, 0);
        analogWrite(LaDeHo, 0);
        analogWrite(LaIzHo, Mov);
        delay(1000);
      
     }
     else{                   // Si no hay obstaculos se desplaza al frente
         analogWrite(LaDeAn, 0);   
         analogWrite(LaIzAn, 0);
         analogWrite(LaDeHo, Mov);
         analogWrite(LaIzHo, Mov);
     }
  }
  if(estado=='l'){          // Boton OFF, detiene los motores.
     analogWrite(LaDeAn, 0);   
     analogWrite(LaIzAn, 0);
     analogWrite(LaDeHo, 0);  
     analogWrite(LaIzHo, 0);
  }
}

//FIN DEL CÓDIGO

Bajar el APK desde Aquí
Share this Article on :
 
d Copyright Electrónica Net Andino 2006 | Design by Net Andino | Published by Editor de Templates | Powered by Net Andino .