Carro Controlado Por Bluetooth

by jehiel.martinez.7 in Circuits > Remote Control

29511 Views, 27 Favorites, 0 Comments

Carro Controlado Por Bluetooth

IMG_20141104_093156.jpg
IMG_20141104_093225.jpg
Screenshot_2014-11-20-09-50-37.png

A continuacion quiero compartir este proyecto para los que quieran hacerlo. Es una buena forma de aprender acerca de microcontroladores: como se comunican, como hacer para que le ''hablen'' al telefono y como controlarlo inalambricamente.

Consiste en un carro que puede controlarse por un joystick digital en el telefono atraves de bluetooth y ademas lleva un sensor de distancia que envia los datos a la aplicacion.

Para la programacion del microcontrolador utilizamos el buien conocido ARDUINO IDE y para la programacion de la aplicacion en el Android utilizamos la plataforma MIT App Inventor.

Pueden visitar las siguientes direcciones para mas informacion:

www.arduino.cc

www.appinventor.mit.edu

Partes

IMG_20140914_134822.jpg
IMG_20141108_103337.jpg
IMG_20140914_134836.jpg

Las partes utilizadas fueron:

1. Microcontrolador Atmega328P-PU

2. 3 capacitores de 22pF

3. Regulador de Voltaje 7805

4. Capacitor de 22uF

5. Modulo Bluetooth HC-06

6. Modulo H-Bridge Zitrades L9110S

7. Resistencia de 10 Kohm y 2 ohm

8. Kit de Carrito y Motores TAMIYA

9. Pack de Baterias

10. Sensor Ultrasonico HC-SR04

*En las fotos no se muestra el sensor pero sera explicado en el diagrama.

Diagrama Del Circuito

IMG_20141104_093210.jpg
schematic page.png

En el Diagrama se puede observar los componentes básicos que se utilizan y como conectarlos.

Los conectores de arriba corresponden al MODULO BLUETOOTH y el de Abajo del Diagrama corresponde al MODULO CONTROLADOR DE LOS MOTORES.

El crystal es de 16 Mhz, el capacitor de 22 uF. También esta especificados los pines del Sensor Ultrasonico.

CODIGO EN MICROCONTROLADOR

El código comienza declarando los pines que vamos a utilizar en el microcontrolador y dos variable que van a especificar el intervalo tiempo que queremos que se envie la informacion al puerto Serial.

Aclaramos que estamos utilizando el Arduino UNO Bootloader como compilador, así que el código se programa en en Arduino IDE y los pines se nombrarian como se haria en el Arduino UNO.

Cada pin debe especificarse como una salida ‘‘OUTPUT’’, estos son los que enviaran el voltaje lógico para controlar los motores mediante el H-Bridge. Solamente el ‘‘echoPin‘’’ se especifica como un entrada ‘‘INPUT’’, pues es el que recoge la señal ultrasónica. Se comienza la comunicación serial a 9600 bps.

Ahora procedemos a programar las funciones que nos permiten controlar el Carro. Cada función le establece un nivel de voltaje a cada pin mediante ‘‘ANALOGWRITE’’. Este comando utiliza PWM que es una función del microcontrolador que permite la variación de voltaje al ajustar el tiempo en el que se enciende y apaga el pin en cuestión, así el voltaje promedio que se registra a la salida es proporcional a la anchura del pulso de oscilación que controlamos mediante un valor entre 0 y 255. De esa manera somos capaces de controlar la velocidad de cada uno los motores DC.

A continuación declaramos una funcion ‘performCommand’ que va a leer el Puerto Serial del Microcontrolador y va a actuar conforme a lo que recoja o lea en el. La logica va asi:

Si el Puerto Serial está activo, entonces guardar en la variable ‘‘val’’ lo que sea que este alli; Si la variable es igual a f, entonces ejecutar funcion go_foward sino entonces, si la variable es igual a b, entonces ejecutar funcion go_reverse sino entonces… etc

La funcion ‘‘medition’’ realiza la medición de distancia. Primero declaramos las variables de duración y distancia. Encendemos el ‘‘trigPin’’ durante 10 microsegundos, este envía un pulso de sonido a través del espacio. Luego duration va a ser igual al tiempo que tarda el pulso de sonido en regresar a ‘‘echoPin’’. Con esa información ahora podemos calcular la distancia en centímetros valiéndonos de la velocidad del sonido y lo almacenamos en la variable distancia. Dicha variable es enviada al Puerto Serial cada segundo.

La función ‘‘VOID LOOP’’ permite al Microcontrolador repetir una y otra vez los comandos en su interior. Alli ejecutamos la función ‘performCommand’ para que se repita mientras el controlador esté encendido. También habilitamos el procedimiento de medición de distancia del sensor ultrasónico, valiéndonos de la función ‘‘millis’’ que realiza un conteo de lo microsegundos en que el programa ha estado funcionando, así vamos comparando intervalos de 1000 milisegundos para ejecutar la funcion de medicion.

APP EN ANDROID

IMG_20140914_134924.jpg

Google App Inventor es una aplicación de Google Labs para crear aplicaciones de software para el sistema operativo Android. De forma visual y a partir de un conjunto de herramientas básicas, el usuario puede ir enlazando una serie de bloques para crear la aplicación. El sistema es gratuito y se puede descargar fácilmente de la web. Las aplicaciones fruto de App Inventor están limitadas por su simplicidad, aunque permiten cubrir un gran número de necesidades básicas en un dispositivo móvil.

El editor de bloques de la aplicación utiliza la librería Open Blocks de Java para crear un lenguaje visual a partir de bloques. El compilador que traduce el lenguaje visual de los bloques para la aplicación en Android utiliza Kawa como lenguaje de programación, distribuido como parte del sistema operativo GNU de la Free Software Foundation.

A continuación el instalador de la aplicacion para que la puedan descargar y instalarla en su Teléfono Android.

Downloads