Construimos un coche cuyos movimientos controlamos por Bluetooth.
Funcionamiento
El circuito del coche contiene un dispositivo bluetooth que permite su comunicación con cualquier móvil. Utilizando una app de control bluetooth para Arduino, podrás dirigir el coche con un móvil Android. La app envía una serie de códigos a la placa Arduino y ésta interpreta los códigos generando el
movimiento deseado en los motores.
Lista de materiales
1 Plataforma móvil LOG 8080
1 Servo motor LOG 06
4 Tornillos M3 x 10 mm LOG 464
6 Tornillos M3 x 16 mm LOG 464M
6 Tornillos M4 x 16 mm LOG 467
3 Tornillos M2 x 20 mm LOG 474
10 Tuercas M3 LOG 480
6 Tuercas autoblocantes M4 LOG 484
1 Tuerca autoblocante M2 LOG 482P
1 Controlador de motores L298N LOG 8444
1 Shield Bluetooth HC-06 LOG 8458
1 Conector 9V para Arduino LOG 7734
2 Ruedas eje 2,5 mm LOG S46
8 Latiguillos hembra-macho LOG S7518
8 Latiguillos macho-macho LOG S7519
6 Bulones de plástico LOG S220P
1 Hoja Técnica H1402
Construcción
Montar la plataforma móvil según sus instrucciones.
Soldar un latiguillo macho-macho a cada uno de los terminales de las reductoras.
Atornillar la placa Arduino UNO en la plataforma superior, utilizando 2 tornillos M3 LOG 464M, 2 bulones de plástico y 2 tuercas M3 LOG 480.
Atornillar el controlador de motores con 4 tornillos M3 LOG 464M, 4 bulones de plástico y 4 tuercas M3 LOG 480.
Conexión del controlador de motores
El esquema incluye un controlador de motores L298N puente H. Un puente H consiste en 4 interruptores que nos permiten controlar la polaridad de la corriente que llega a los dos motores conectados al controlador de motores. Así en función de la polaridad podemos controlar el sentido de giro de los motores. Además funcionan como regulador de corriente, pudiendo determinar una velocidad de giro de 0 a 255.
Para poder controlar la velocidad de giro de los motores, se han conectado a las salidas 5, 6, 9 y 10 de Arduino que permiten la modularidad (PWM).
Conexión del módulo bluetooth
El shield bluetooth es el encargado de la comunicación bidireccional entre la tarjeta Arduino y el dispositivo móvil con el que controlaremos el coche.
El shield bluetooth tiene 4 pines:
– GND: Se conecta a un pin GND de Arduino
– V: Se conecta al pin 5V del controlador de motores
– TXD: Se conecta al pin RX de Arduino
– RXD: Se conecta al pin TX de Arduino
Los pines TX y RX son los que se van a encargar de la transmisión y recepción de datos.
PROGRAMACIÓN
Arduino IDE es una herramienta de programación por códigos basado en C++. Para instalar el software de Arduino, entramos en www.arduino.cc/en/Main/Software y descargamos el software Arduino IDE.
Una vez instalado, abrir «Arduino IDE»:
– Pinchar en la pestaña «Herramientas», seleccionar donde pone «Placa» y pinchar en «Arduino/Genuino UNO».
– Pinchar en la pestaña «Herramientas», seleccionar donde pone «Puerto» y pinchar en «COM*Numero* Arduino/Genuino UNO».
Una vez realizado la conexión con la tarjeta ya podemos programar
int motor1Avance = 6;
int motor1Atras = 5;
int motor2Avance = 10;
int motor2Atras = 9;int estado = 0;
int i = 0;
void setup() {
pinMode(motor1Avance, OUTPUT);
pinMode(motor1Atras, OUTPUT);
pinMode(motor2Avance, OUTPUT);
pinMode(motor2Atras, OUTPUT);
analogWrite(motor1Avance, 0);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 0);
analogWrite(motor2Atras, 0);
Serial.begin(9600);
}
void loop() {
if(Serial.available() > 0)
{
estado = Serial.read();
}
Serial.println(estado);
if (estado == ‘c’)
{
analogWrite(motor1Avance, 0);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 0);
analogWrite(motor2Atras, 0);
Serial.println(«parado»);
}
else if (estado == ‘a’)
{
analogWrite(motor1Avance, 255);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 248);
analogWrite(motor2Atras, 0);
Serial.println(«adelante»);
}
else if (estado == ‘d’)
{
analogWrite(motor1Avance, 100);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 200);
analogWrite(motor2Atras, 0);
Serial.println(«derecha»);
}
else if (estado == ‘b’)
{
analogWrite(motor1Avance, 200);
analogWrite(motor1Atras, 0);
analogWrite(motor2Avance, 100);
analogWrite(motor2Atras, 0);
Serial.println(«izquierda»);
}
else if (estado == ‘e’)
{
analogWrite(motor1Avance, 0);
analogWrite(motor1Atras, 255);
analogWrite(motor2Avance, 0);
analogWrite(motor2Atras, 255);
Serial.println(«atras»);
}
Serial.println(i++);
}