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í