Proyecto Carrito A Escala Control Bluetooth U III
Proyecto Carrito A Escala Control Bluetooth U III
Proyecto Carrito A Escala Control Bluetooth U III
505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
TEMA DEL
“Carro a Control Remoto” Controlado Por Bluetooth
PROYECTO:
INTRODUCCIÓN:
MODULO BLUETOOTH
Bluetooth es una especificación industrial para Redes Inalámbricas de Área Personal (WPAN) que posibilita la
transmisión de voz y datos entre diferentes dispositivos mediante un enlace por radiofrecuencia en la banda
ISM de los 2.4 GHz. (Ilustración 1)
Los principales objetivos que se pretenden conseguir con esta norma son:
Los dispositivos que incorporan este protocolo pueden comunicarse entre sí cuando se encuentran dentro de su
alcance. Las comunicaciones se realizan por radiofrecuencia de forma que los dispositivos no tienen que estar
alineados y pueden incluso estar en habitaciones separadas si la potencia de transmisión es suficiente. Estos
dispositivos se clasifican como “Clase 1”, “Clase 2” o “Clase 3” en referencia a su potencia de transmisión.
Los dispositivos con Bluetooth también pueden clasificarse según su capacidad de canal, en la tabla 1 se
representan dichas capacidades.
La especificación de Bluetooth define un canal de comunicación a un máximo 720 kbit/s (1 Mbit/s de capacidad
bruta) con rango óptimo de 10 m. Opera en la frecuencia de radio de 2,4 a 2,48 GHz con amplio espectro y
saltos de frecuencia con posibilidad de transmitir en Full Dúplex con un máximo de 1600 saltos por segundo.
Los saltos de frecuencia se dan entre un total de 79 frecuencias con intervalos de 1 MHz, esto permite dar
seguridad y robustez.
Tanto Bluetooth clásico como Bluetooth de baja energía aplican la característica de salto de frecuencia
adaptativa que detecta interferencias de. Por ejemplo, un dispositivo WLAN 802.11 b, g, n que transmite
cercano, si se detecta tal interferencia, el canal se coloca automáticamente en la lista negra. Con el fin de
manejar la interferencia temporal, un esquema implementado vuelve a intentar los canales de la lista negra y si
la interferencia ha cesado el canal se puede utilizar. AFH impide que Bluetooth interfiera con otras tecnologías
inalámbricas cercanas.
MODOS DE CONEXIÓN
Modo AT (Desconectado)
Entra a este modo tan pronto alimentas el modulo, y cuando no se ha establecido una conexión bluetooth
con ningún otro dispositivo. (Ilustración 5)
EL LED del módulo está parpadeando (frecuencia de parpadeo del LED es de 102ms).
En este modo es cuando se debe enviar los comandos AT en caso se quiera configurar, si se envían otros
datos diferente a los comandos AT el HC-06 los ignorará.
Modo Conectado
Entra a este modo cunado se establece una conexión con otro dispositivo bluetooth. (Ilustración 5)
El LED permanece prendido sin parpadear. Todos los datos que se ingresen al HC-06 por el Pin RX se
trasmiten por bluetooth al dispositivo conectado, y los datos recibidos se devuelven por el pin TX.
La comunicación es transparente.
En este Modo el HC-06 no puede interpretar los comandos AT
CONTROL DE MOTOR DC
Los motores DC son los más económicos y comunes. Existen de varios tipos, pero su principio de
funcionamiento es el mismo. Presentan las siguientes características:
Cuando el motor DC recibe su tensión nominal el motor alcanza su máximo torque y velocidad.
La velocidad del motor DC varía en forma proporcional con la tensión de trabajo.
Al invertir la polaridad de la tensión que ingresa al motor se invierte el giro.
Para invertir el giro de un motor DC, se debe invertir la polaridad de la tensión que alimenta al motor. La forma
muy común de realizar esta inversión es mediante un puente H, construido por transistores o directamente
utilizando el circuito integrado L293D.
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
MÓDULO L293D
El integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en especial pequeños
motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión
entre 4,5 V a 36 V. Los circuitos individuales se pueden usar de manera independiente para controlar cargas de
todo tipo y, en el caso de ser motores, manejar un único sentido de giro. Pero además, cualquiera de estos cuatro
circuitos sirve para configurar la mitad de un puente H. El integrado permite formar, entonces, dos puentes H
completos, con los que se puede realizar el manejo de dos motores. En este caso el manejo será bidireccional,
con frenado rápido y con posibilidad de implementar fácilmente el control de velocidad.
App Inventor 2 (AI2) es la versión mejorada de una herramienta de programación creada por el MIT (Instituto
Tecnológico de Massachusetts) y que fue adoptada por Google para sus usuarios como solución para crear de
una forma sencilla aplicaciones para dispositivos Android. (Ilustración 8)
1. Diseñador.
Muestra el display de un móvil y se utiliza para el diseño de las pantallas de la aplicación donde se
situarán los distintos componentes: imágenes, botones audios, textos, etc. configurando sus propiedades
(aspecto gráfico, comportamiento, etc.).
2. Editor de bloques.
Permite programar de una forma visual e intuitiva el flujo de funcionamiento del programa utilizando
bloques.
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
3. Generador de la aplicación.
Una vez terminada la aplicación se puede generar el instalador APK obteniéndose un código QR para
su descarga desde el móvil o bien el propio archivo APK para descargar y enviar.
OBJETIVOS:
Objetivo General
Construir un carro a escala controlado por la tecnología de comunicación inalámbrica conocida como
Bluetooth que sirva como una herramienta para el transporte de objetos a distancias menores a 10
metros.
Objetivos específicos
- Diseñar una aplicación móvil con la ayuda del Software Mit Inventor 2 para controlar el vehículo a
escala por medio de un celular.
- Diseñas los circuitos para las conexiones eléctricas del carro a escala, con la ayuda del simulador
ISIS.
- Implementar un código en Arduino con el cual se podrá conectar el Modulo Bluetooth a los distintos
elementos electrónicos usados en el carro a escala.
- Introducir conceptos de microcontroladores obtenidos en las horas clases.
MATERIALES Y EQUIPOS
Microcontrolador ATmega328.
Voltaje de entrada 7-12V.
14 pines digitales de I/O (6 salidas
PWM).
Arduino UNO
6 entradas análogas.
32k de memoria Flash.
Reloj de 16MHz de velocidad.
Llantas para
Llantas con facilidad de
motores dc acoplamiento para motores DC
Batería de
Batería de Polímero de litio “LIPO”
Litio
Modulo
HC-05
Bluetooth
INSTRUCCIONES
TRABAJO DIGITAL
1. Desarrollo de Aplicación para el control remoto del carro a escala por medio de un teléfono
celular.
Con el uso del Mit App Inventor, se realiza el diseño de los bloques los cuales serán los comandos de
la aplicación.
- Diseño mediante los bloques para la conexión Bluetooth, al teléfono o Tablet.
- Diseño mediante los bloques para el controlar el sentido del carro (Adelante, Atrás, Parar )
- Diseño mediante los bloques para el controlar el giro del carro (Derecha, Izquierda, Retorno)
Fig. 3- Bloque de Funcionamiento del control de giro del carro (Derecha, Izquierda, Retorno)
Fuente: Grupo de Trabajo
- Diseño mediante bloques para el control de luces, altas, medias y apagar luces.
Fig. 5- Bloque funcionamiento luces, Altas y Medias con su respectivo bloque de apagado
Fuente: Grupo de Trabajo
2. Implementar un código para controlas los elementos electrónicos del carro a escala.
int stop1=A2;
int stop2=A3;
int stop3=11;
int stop4=8;
//variables para comando del carrito
int izq = 5;
int der = 6;
int adel = 9;
int atr = 10;
int bocina;
void setup()
{
Serial.begin(9600);
pinMode(der, OUTPUT);
pinMode(izq, OUTPUT);
pinMode(adel, OUTPUT);
pinMode(atr, OUTPUT);
pinMode(stop1,OUTPUT);
pinMode(stop2,OUTPUT);
pinMode(stop3,OUTPUT);
pinMode(stop4,OUTPUT);
pinMode(alta1,OUTPUT);
pinMode(alta2,OUTPUT);
pinMode(media1,OUTPUT);
pinMode(media2,OUTPUT);
pinMode(bocina,OUTPUT);
}
void loop()
{
if(Serial.available()>0)
{
estado = Serial.read();
}
// Programación para que el carrito vaya hacia adelante//
if(estado=='a')
{
analogWrite(atr, 0);
analogWrite(adel, vel);
}
//Programación para que el carrito vaya hacia atras//
if(estado=='b')
{
analogWrite(atr, vel);
analogWrite(adel, 0);
}
//Programación para que el carrito pare//
if(estado=='c')
{
analogWrite(adel, 0);
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
analogWrite(atr, 0);
}
//Programación para que el carrito gire a la derecha//
if(estado=='d')
{
analogWrite(der, vel);
analogWrite(izq, 0);
}
//Programación para que el carrito gire a la izquierda//
if(estado=='e')
{
analogWrite(der, 0);
analogWrite(izq, vel);
}
//Programación para que el carrito retorne//
if(estado=='f')
{
analogWrite(der, 0);
analogWrite(izq, 0);
}
//Programación para que el carrito pare//
if(estado=='g')
{
digitalWrite(stop1, HIGH);
digitalWrite(stop2, HIGH);
digitalWrite(stop3, HIGH);
digitalWrite(stop4, HIGH);
}
//Programación para que el carrito no se mueva//
if(estado=='h')
{
digitalWrite(stop1, LOW);
digitalWrite(stop2, LOW);
digitalWrite(stop3, LOW);
digitalWrite(stop4, LOW);
}
//Programación para que el carrito encienda sus luces medias//
if(estado=='i')
{
digitalWrite(media1, HIGH);
digitalWrite(media2, HIGH);
digitalWrite(alta1, LOW);
digitalWrite(alta2, LOW);
}
//Programación para que el carrito encienda sus luces altas//
if(estado=='k')
{
digitalWrite(alta1, HIGH);
digitalWrite(alta2, HIGH);
digitalWrite(media1, LOW);
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
digitalWrite(media2, LOW);
}
//Programación para que el carrito apague sus luces//
if(estado=='j')
{
digitalWrite(media1, LOW);
digitalWrite(media2, LOW);
digitalWrite(alta1, LOW);
digitalWrite(alta2, LOW);
}
//Programación para que el carrito encienda direccional derecha//
if(estado=='l')
{
digitalWrite(stop1, HIGH);
digitalWrite(stop3, HIGH);
}
//Programación para que el carrito encienda direccional izquierda//
if(estado=='m')
{
digitalWrite(stop2, HIGH);
digitalWrite(stop4, HIGH);
}
//Programación para que el carrito apaga direccionales //
if(estado=='n')
{
digitalWrite(stop1, LOW);
digitalWrite(stop2, LOW);
digitalWrite(stop3, LOW);
digitalWrite(stop4, LOW);
}
//Programación para que el carrito encienda bocina//
if(estado=='o')
{
digitalWrite(bocina, HIGH);
}
//Programación para que el carrito encienda bocina//
if(estado=='p')
{
digitalWrite(bocina, LOW);
}
}
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
3. Diseño del circuito eléctrico de luces y bocina del carro a escala, con la ayuda de Software ISIS.
- Diseño de botones para el control de encendido y apagado de las luces del carro a escala.
Fig. 10- Insertar botones para el control de luces en el diseño de la Aplicación Gráfica.
Fuente: Grupo de Trabajo
- Diseño de botones para el control de las luces de parqueo del carro a escala.
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
Fig. 11- Insertar botones para el control de luces de parqueo en el diseño de la Aplicación Gráfica.
Fuente: Grupo de Trabajo
- Apariencia final de la Aplicación gráfica.
La aplicación tiene una fácil interfaz gráfica de uso. En ella podemos encontrarnos con las flechas que controla
la dirección del carro a escala.
El vehículo a escala va a moverse mientras que los botones de adelante y Atrás estén presionados
simultáneamente. El botón en medio de las flechas nos ayuda a parar el vehículo.
En el control de luces podemos encontrar dos botones con los iconos de luces que encontramos en el tablero de
un vehículo a escala normal, estos son de color anaranjado.
Para el control de las luces direccionales en la Aplicación gráfica tenemos unas flechas de color verde, las
cuales representan direccional a la derecha, direccional a la izquierda y apagar luces direccionales.
Las luces de parqueo se encenderán al activar el botón en forma de triángulo de color rojo. Así también ese
icono representa el botón de encendido de un carro a gran escala.
RESULTADOS OBTENIDOS:
1. Explicación de la conexión de la Aplicación al Teléfono celular o Tablet
Una vez culminado el desarrollo de la Aplicación para el control Bluetooth mediante bloques, y también
se haya acabado con el diseño de la parte gráfica, en el Mit Invento 2 nos vamos a dirigir al icono de
Generar. (Ilustración 9)
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
Al presionar el botón de Generar, se nos desplegará una ventana a con dos opciones.
Estas opciones nos permitirán generar un código QR o se generará un archivo apk. Este archivo apk lo
podremos descargar e instalar en nuestro Teléfono celular o Tablet. Cabe mencionar que estos aparatos
electrónicos mencionados deben contar con un sistema operativo Android para que exista una
compatibilidad con los archivos a descargar. (Ilustración 10)
Como se observa en la ilustración 12, ya se obtuvo nuestro archivo apk que fue generado y diseñado en el
Software Mit App Inventor 2.
Ya con el archivo apk, descargado en nuestro servidor (computadora). Procedemos a copiar el archivo en la
memoria de nuestro teléfono celular o Tablet, los cuales nos servirán para el control remoto del carro a escala.
(Ilustración 13).
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
Una vez guardado el archivo apk en nuestro servidor móvil. Procedemos a instalar la aplicación en el teléfono
móvil o Tablet. Una vez instalada la aplicación no nos quedará más que abrirla. (Ilustración 14).
Con la aplicación en nuestro teléfono móvil instalada, procedemos a emparejar el Bluetooth del teléfono con el
del carro a escala. Cabe mencionar que se debe tener activado el Bluetooth del teléfono móvil.
Para finalizar el proceso de instalación de la App. Escogemos el Bluetooth que se instaló en el carro a escala,
en este caso se seleccionará HC-05, tal como se indica en la ilustración 15.
Ahora si se procederá al uso del control remoto. (Ilustración 16)
- Con la letra “m” se procederá a encender las luces direccionales izquierdas. (Ilustración 18).
- Montaje de ruedas, sobre lo que representa al chasis del carro a escala. Conexiones de los motores
con el Arduino. (Ilustración 20).
- Ensamblaje del protoboard sobre el chasis del carro a escala. También se realizará las conexiones
de lo que vendrán a ser las luces del carrito a escala. (Ilustración 21)
CONCLUSIONES:
Con la ayuda del Software Mit App Inventor 2, se desarrolló la aplicación para el manejo y control del
carro a escala.
Se diseñó la aplicación gráfica la cual nos da una idea general de cómo se verá esta app en nuestro
teléfono móvil o Tablet.
Mediante el programa Arduino se realizó la implementación del cogido que nos permite controlar los
estados de los elementos electrónicos usados en las conexiones del carro a escala.
Se concluye que mediante el Software ISIS, se pudo realizar las conexiones del sistema de luces para el
vehículo a escala.
RECOMENDACIONES:
CÓDIGO: SGC.DI.505
INFORME DE PRÁCTICAS DE VERSIÓN: 2.0
FECHA ULTIMA
LABORATORIO, TALLER O CAMPO. REVISIÓN: 12/04/2017
BIBLIOGRAFÍA:
ANEXOS:
int vel = 200
char estado = 'c'
int media1=A0
int media2=A1
int alta1=13
int alta2=12
int stop1=A2
int stop2=A3
int stop3=11
int stop4=8
int izq = 5
int der = 6
int adel = 9
int atr = 10
int bocina
void setup()
Serial.begin(9600)
pinMode(der, OUTPUT)
pinMode(izq, OUTPUT)
pinMode(adel, OUTPUT)
pinMode(atr, OUTPUT)
pinMode(stop1,OUTPUT)
pinMode(stop2,OUTPUT)
pinMode(stop3,OUTPUT)
pinMode(stop4,OUTPUT)
pinMode(alta1,OUTPUT)
pinMode(alta2,OUTPUT)
pinMode(media1,OUTPUT)
pinMode(media2,OUTPUT)
pinMode(bocina,OUTPUT)
void loop()
Serial.available()>0
True
Programación para que el
estado = Serial.read() False carrito vaya hacia
adelante//
estado=='a'
True
analogWrite(atr, 0) False Programación para que el
analogWrite(adel, vel) carrito vaya hacia atras//
estado=='b'
True
analogWrite(atr, vel) False Programación para que el
analogWrite(adel, 0) carrito pare//
estado=='c'
True
analogWrite(adel, 0) False Programación para que el
analogWrite(atr, 0) carrito gire a la derecha//
estado=='d'
True
Programación para que el
analogWrite(der, vel)
False carrito gire a la
analogWrite(izq, 0)
izquierda//
estado=='e'
True
analogWrite(der, 0) Programación para que el
False
analogWrite(izq, vel) carrito retorne//
estado=='f'
True
analogWrite(der, 0) Programación para que el
False
analogWrite(izq, 0) carrito pare//
estado=='g'
True
digitalWrite(stop1, HIGH)
digitalWrite(stop2, HIGH) Programación para que el
False
digitalWrite(stop3, HIGH) carrito no se mueva//
digitalWrite(stop4, HIGH)
estado=='h'
True
digitalWrite(stop1, LOW)
Programación para que el
digitalWrite(stop2, LOW)
False carrito encienda sus luces
digitalWrite(stop3, LOW)
medias//
digitalWrite(stop4, LOW)
estado=='i'
True
digitalWrite(media1, HIGH)
Programación para que el
digitalWrite(media2, HIGH)
False carrito encienda sus luces
digitalWrite(alta1, LOW)
altas//
digitalWrite(alta2, LOW)
estado=='k'
True
digitalWrite(alta1, HIGH)
digitalWrite(alta2, HIGH) False Programación para que el
digitalWrite(media1, LOW) carrito apague sus luces//
digitalWrite(media2, LOW)
estado=='j'
True
digitalWrite(media1, LOW)
Programación para que el
digitalWrite(media2, LOW)
False carrito encienda direccional
digitalWrite(alta1, LOW)
derecha//
digitalWrite(alta2, LOW)
estado=='l'
True
Programación para que el
digitalWrite(stop1, HIGH)
False carrito encienda direccional
digitalWrite(stop3, HIGH)
izquierda//
estado=='m'
True
Programación para que el
digitalWrite(stop2, HIGH) False carrito apaga direccionales
digitalWrite(stop4, HIGH)
//
estado=='n'
True
digitalWrite(stop1, LOW)
digitalWrite(stop2, LOW) Programación para que el
False
digitalWrite(stop3, LOW) carrito encienda bocina//
digitalWrite(stop4, LOW)
estado=='o'
True
False Programación para que el
digitalWrite(bocina, HIGH)
carrito encienda bocina//
estado=='p'
True
digitalWrite(bocina, LOW)