Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Proyecto de Carro Controlado Por Bluetooth
Proyecto de Carro Controlado Por Bluetooth
Introducción
Objetivo general
Objetivo especifico
Materiales
Podemos usar cualquiera de las placas Arduino, nosotros usaremos el Arduino Uno
R3 por ser uno de los más usados.
Este módulo nos sirve para que nuestro Arduino y el celular puedan comunicarse a
través de bluetooth. Para esta aplicación podemos usar cualquiera de los dos
modulo pues los trabajaremos en modo esclavo.
Si usan un HC-06 estaría listo para usar, si usan un HC-05 deben verificar que
esté configurado como esclavo. La velocidad con la que vamos a trabajar es a
9600baudios, que es la velocidad que viene por defecto tanto en el HC-06 como
en el HC-05.
Driver Puente H
Batería
Esto tal vez sea lo más difícil de establecer, lo primero que hay que tener en cuenta
es el voltaje. Arduino trabaja con un voltaje entre 6 y 12V, aparte de esto hay que
tener en cuenta el voltaje del motor. También hay que considerar la corriente y la
capacidad, por ejemplo, si usamos una pila económica de 9V nos durará menos de
un minuto, se recomienda que la capacidad sea superior a 500mAH
A continuación, mostramos las opciones que pueden usar dependiendo del motor
que tengan:
Motor de 6V:
Opción 2: 1 celda de litio (batería de celular) para los motores y una pila de 9V para
el Arduino
Opción 2: Cualquier batería superior a 6V (de suficiente corriente) y un step down
para bajar el voltaje.
Motor de 12V:
Independiente del valor del voltaje de la batería podemos usar conversores DC-DC
para aumentar (step up) o reducir (step down) el voltaje.
Esto dependerá del diseño de cada uno, pueden hacerlo, o comprar uno hecho. El
chasis básicamente es en donde se va a poner los dos motores con llanta y los
demás componentes, adicionalmente se necesita una rueda giratoria o una
ballcaster, que será el tercer punto de apoyo junto a las otras dos llantas.
Otros accesorios:
Existen varios diseños en internet que nos pueden ayudar, así como existen
plataformas comerciales. Esto dependerá de cada uno,
Para nuestro tutorial usaremos la locomoción diferencial, que utiliza dos ruedas
principales que dan la tracción y por diferencia de velocidad en estas podremos
realizar giros. Usaremos esta configuración por ser fácil de implantar, a diferencia
de la configuración Ackerman (la que usan los vehículos motorizados) que es más
complicado de implementar la parte mecánica.
Conexiones eléctricas:
Para este caso si necesitamos usar una sola batería, es mejor usar un step down y
no alimentar los motores con los 5V del Arduino, pues sobrecalentaríamos el
regulador interno que tiene.
La betería tiene que ser superior a 6V para que pueda trabajar nuestro Arduino pero
se recomienda que tampoco sea superior a los 12V, adicionalmente la batería debe
tener suficiente corriente para que pueda alimentar los dos motores, de lo contrario
nuestro Arduino se va a estar reseteando cuando empiecen a funcionar los motores.
Antes de instalar el step down hay que regular al voltaje que deseamos, puede ser
6v, 5V, 3v, etc, variando este voltaje también estamos modificando la velocidad de
los motores.
De esta forma el voltaje que ingresa a los motores es el mismo que el de la batería.
Dependiendo del tipo de motor puedes usar la batería que más se adecue a tu
necesidad, teniendo en cuenta que tenga la suficiente corriente y duración.
Las conexión son similares para otros tipos de Drivers Puente H, pueden revisar
nuestro tutorial de uso del L298N en caso estén usando ese módulo.
Para que tengan una mayor comprensión trabajaremos el programa en dos etapas:
Test de movimientos
El código es el siguiente:
void setup() {
// inicializar la comunicación serial a 9600 bits por segundo:
Serial.begin(9600);
// configuramos los pines como salida
pinMode(Pin_Motor_Der_A, OUTPUT);
pinMode(Pin_Motor_Der_B, OUTPUT);
pinMode(Pin_Motor_Izq_A, OUTPUT);
pinMode(Pin_Motor_Izq_B, OUTPUT);
}
void loop() {
//movemos el robot hacia delante por 2 segundos
Mover_Adelante();
delay(2000);
//movemos el motor a la derecha por 2 segundos
Mover_Derecha();
delay(2000);
void Mover_Adelante()
{
digitalWrite (Pin_Motor_Der_A, HIGH);
digitalWrite (Pin_Motor_Der_B, LOW);
digitalWrite (Pin_Motor_Izq_A, HIGH);
digitalWrite (Pin_Motor_Izq_B, LOW);
}
void Mover_Retroceso()
{
digitalWrite (Pin_Motor_Der_A,LOW );
digitalWrite (Pin_Motor_Der_B,HIGH );
digitalWrite (Pin_Motor_Izq_A,LOW );
digitalWrite (Pin_Motor_Izq_B,HIGH );
}
void Mover_Derecha()
{
digitalWrite (Pin_Motor_Der_A,LOW );
digitalWrite (Pin_Motor_Der_B,HIGH );
digitalWrite (Pin_Motor_Izq_A,HIGH);
digitalWrite (Pin_Motor_Izq_B,LOW);
}
void Mover_Izquierda()
{
digitalWrite (Pin_Motor_Der_A,HIGH);
digitalWrite (Pin_Motor_Der_B,LOW);
digitalWrite (Pin_Motor_Izq_A,LOW );
digitalWrite (Pin_Motor_Izq_B,HIGH );
}
void Mover_Stop()
{
digitalWrite (Pin_Motor_Der_A, LOW);
digitalWrite (Pin_Motor_Der_B, LOW);
digitalWrite (Pin_Motor_Izq_A, LOW);
digitalWrite (Pin_Motor_Izq_B, LOW);
}
Para probar los movimientos hay que ir probando cada función y ver si nuestro robot
se mueva 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 2 segundos, seguidamente debe girar a la derecha por dos segundos
más y lego 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.
Para controlar el Robot usaremos una aplicación en nuestro celular, para esto
debemos de instalar en nuestro celular la siguiente aplicacion.
int tiempo=0;
void setup() {
// inicializar la comunicación serial a 9600 bits por segundo:
Serial.begin(9600);
// configuramos los pines como salida
pinMode(Pin_Motor_Der_A, OUTPUT);
pinMode(Pin_Motor_Der_B, OUTPUT);
pinMode(Pin_Motor_Izq_A, OUTPUT);
pinMode(Pin_Motor_Izq_B, OUTPUT);
void loop() {
if (Serial.available()) {
char dato= Serial.read();
if(dato=='a')
{
Mover_Adelante();
tiempo=0;
}
else if(dato=='r')
{
Mover_Retroceso();
tiempo=0;
}
else if(dato=='d')
{
Mover_Derecha();
tiempo=0;
}
else if(dato=='i')
{
Mover_Izquierda();
tiempo=0;
}
void Mover_Adelante()
{
digitalWrite (Pin_Motor_Der_A, HIGH);
digitalWrite (Pin_Motor_Der_B, LOW);
digitalWrite (Pin_Motor_Izq_A, HIGH);
digitalWrite (Pin_Motor_Izq_B, LOW);
}
void Mover_Retroceso()
{
digitalWrite (Pin_Motor_Der_A,LOW );
digitalWrite (Pin_Motor_Der_B,HIGH );
digitalWrite (Pin_Motor_Izq_A,LOW );
digitalWrite (Pin_Motor_Izq_B,HIGH );
}
void Mover_Derecha()
{
digitalWrite (Pin_Motor_Der_A,LOW );
digitalWrite (Pin_Motor_Der_B,HIGH );
digitalWrite (Pin_Motor_Izq_A,HIGH);
digitalWrite (Pin_Motor_Izq_B,LOW);
}
void Mover_Izquierda()
{
digitalWrite (Pin_Motor_Der_A,HIGH);
digitalWrite (Pin_Motor_Der_B,LOW);
digitalWrite (Pin_Motor_Izq_A,LOW );
digitalWrite (Pin_Motor_Izq_B,HIGH );
}
void Mover_Stop()
{
digitalWrite (Pin_Motor_Der_A, LOW);
digitalWrite (Pin_Motor_Der_B, LOW);
digitalWrite (Pin_Motor_Izq_A, LOW);
digitalWrite (Pin_Motor_Izq_B, 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.
CONCLUSIONES