Robot controlado por bluetooh

 

El “robot controlado por bluetooh” que se propone, es un dispositivo móvil con tres ruedas, dos movidas cada una por un motor (ruedas motrices), y la tercera será loca. Se dispone de  Módulo Bluetooth HC-05, este módulo nos sirve para que nuestro Arduino y teléfono móvil puedan comunicarse a través de Bluetooth. 

 

Lista de materiales

 Circuito eléctrico



Código

Realizaremos el programa en dos etapas:

  •  En primer lugar realizaremos un test de funcionamiento de los motores, lo realizaremos sin conexión bluetooh.

 El código es el siguiente:

int I1 = 10;
int I2 = 9;
int I3 = 5;
int I4 = 4;
int tiempo;
void setup() {
  // put your setup code here, to run once:
pinMode (I1, OUTPUT);     
  pinMode (I2, OUTPUT);
  pinMode (I4, OUTPUT);     
  pinMode (I3, OUTPUT);
               
  Serial.begin(9600);
}

void loop() {
 //Movemos el robot ha e delate por 1 segundo

Mover_Adelante();

delay(1000);

//Movemos el robot a la derecha por (1 segundo)

Mover_Derecha();

 
}
 

void Mover_Adelante() {
 
  digitalWrite (I1, HIGH);
  digitalWrite (I2, LOW);
  digitalWrite(I3, HIGH);
  digitalWrite(I4, LOW);
}
void Mover_Atras() {
 
  digitalWrite (I1, LOW);
  digitalWrite (I2, HIGH);
  digitalWrite(I3, LOW);
  digitalWrite(I4, HIGH);
}

void parar() {
  digitalWrite (I1, LOW);
  digitalWrite (I2, LOW);
  digitalWrite (I3, LOW);
  digitalWrite (I4, LOW);
}

void Mover_Izquierda() {
  digitalWrite (I1, HIGH);
  digitalWrite (I2, LOW);
  //digitalWrite (I4, HIGH);
  //digitalWrite (I3, LOW);  
}

void Mover_Derecha() {
  //digitalWrite (I1, HIGH);
  //digitalWrite (I2, LOW);
  digitalWrite (I3, HIGH);
  digitalWrite (I4, LOW);  
}
 
Como se observa la programación es fácil, se ha programado cada movimiento del robot en funciones separadas, las cuales llamamos desde el void loop(),

Para probar los movimientos hay que ir probando cada función y ver si nuestro robot se mueve de la misma manera como se lo ha programado, por ejemplo así como está el código, después de encender o resetear el Arduino debe moverse hacia delante por 1 segundos, seguidamente debe girar a la derecha por un segundo más y luego repetir la secuencia, si el robot gira en dirección equivocada, entonces debemos de cambiar la polaridad de motor que gira en sentido erróneo.


Podemos ir probando los movimientos de forma individual reprogramando cada vez para cambiar el movimiento o programar todos a la vez con pausas entre movimientos, eso dependerá de cada uno, después de estar seguros que nuestro robot funciona correctamente pasamos a implementar la comunicación Bluetooth. 


  • Robot Móvil controlado por Bluetooth

Para controlar el Robot usaremos una aplicación en nuestro teléfono móvil, para esto debemos de instalar en nuestro  teléfono móvil la siguiente aplicación.

 


Arduino Bluetooth Control: Instalar desde Google Play

Arduino Bluetooth Control es una aplicación que le permite controlar su placa arduino (y placas similares) a través de Bluetooth, y así crear proyectos increíbles y totalmente personalizados, con las nuevas funciones disponibles dentro de la aplicación.

El apartado de configuración te permite adaptar la aplicación a tus necesidades, a través de una interfaz sencilla e intuitiva.

La aplicación también recuerda inteligentemente su módulo bluetooth y siempre intentará conectarse automáticamente al último que haya usado, por lo que no tendrá que seleccionarlo cada vez que lo use.

También puede usar la aplicación en un dispositivo portátil si tiene alguno.

 
 
Para este proyecto vamos a utilizar la opción "Teclas de flecha", esta herramienta proporciona botones de dirección que se pueden personalizar completamente con los datos a enviar, y la sensibilidad, que permite enviar datos de forma continua a la placa al mantenerlos presionados durante mucho tiempo.
 

La aplicación consta de 4 botones una para cada dirección, al presionar el botón para mover adelante, la aplicación envía por Bluetooth el carácter ‘1’ y lo sigue enviando constantemente mientras se tenga presionado. De igual manera para los otros botones, la aplicación envía ‘2’ para retroceso, ‘4’ para izquierda y ‘3’  para mover a la derecha.

Arduino debe de leer estos 4 caracteres y realizar el movimiento, además al no tener un botón stop, nuestro Arduino deberá detener de forma automática los movimientos cuando no se tenga presionado ningún botón.


Antes de cargar el programa a Arduino debemos de desconectar los cables de nuestro Bluetooth y después de terminado la carga podemos volverlo a conectarlo.


El  código que debemos de cargar a nuestro Arduino es el siguiente:

int I1 = 10;
int I2 = 9;
int I3 = 5;
int I4 = 4;
int tiempo;
 

void setup() {
  // put your setup code here, to run once:
pinMode (I1, OUTPUT);     
  pinMode (I2, OUTPUT);
  pinMode (I4, OUTPUT);     
  pinMode (I3, OUTPUT);
               
  Serial.begin(9600);
}

void loop() {
  if (Serial.available()) {
     char dato= Serial.read();
     if(dato=='1')
     {
        Mover_Adelante();
        tiempo=0;
     }
     else if(dato=='2')
     {
        Mover_Atras();
        tiempo=0;
     }
     else if(dato=='3')
     {
        Mover_Derecha();
        tiempo=0;
     }
     else if(dato=='4')
     {
        Mover_Izquierda();
        tiempo=0;
     }   
   
  }

  if(tiempo<200) // 100 ciclos de 1ms
  {    
    tiempo=tiempo+1;
  }
  else   //ya transcurrió 100ms (100ciclos)
  {
    parar();
  }
 
 
  delay(1); //pausa de 1ms por ciclo
 
}
void Mover_Adelante() {
 
  digitalWrite (I1, HIGH);
  digitalWrite (I2, LOW);
  digitalWrite(I3, HIGH);
  digitalWrite(I4, LOW);
}
void Mover_Atras() {
 
  digitalWrite (I1, LOW);
  digitalWrite (I2, HIGH);
  digitalWrite(I3, LOW);
  digitalWrite(I4, HIGH);
}

void parar() {
  digitalWrite (I1, LOW);
  digitalWrite (I2, LOW);
  digitalWrite (I3, LOW);
  digitalWrite (I4, LOW);
}

void Mover_Izquierda() {
  digitalWrite (I1, HIGH);
  digitalWrite (I2, LOW);
  //digitalWrite (I4, HIGH);
  //digitalWrite (I3, LOW);  
}

void Mover_Derecha() {
  //digitalWrite (I1, HIGH);
  //digitalWrite (I2, LOW);
  digitalWrite (I3, HIGH);
  digitalWrite (I4, LOW);  
}


Como se observa al código del primer ejemplo solo le hemos agregado la parte de la comunicación serial, en donde leemos el dato y comparamos para ver si es el carácter correspondiente para realizar su respectivo movimiento, adicionalmente si durante 100 milisegundos no llega ningún dato detenemos el robot, y tan pronto le llega uno de los datos reiniciamos la cuenta de los 100ms.


Una vez que tengan todo listo, tan solo hay que abrir la App, conectarnos a nuestro modulo Bluetooth y empezar a mover nuestro robot con los botones.

No hay comentarios: