Vous êtes sur la page 1sur 10

Arduino

En esta web ir colgando, poco a poco, mis avances con arduino.


viernes, 1 de febrero de 2013

Bluetooth

Despus de tanto tiempo liado sin poder hacer nada por los exmenes, ahora parece que estoy algo ms libre, as que voy a ir intentando explicar poco a poco (segn yo lo vaya aprendiendo), como usar, de una forma bsica el mdulo bluetooth, unido a android. Este es mi mdulo bluetooth, comprado en DX, creo que era el ms barato que haba. El conexionado es muy sencillo, solo hay que tener en cuenta que el emisor del arduino tiene que ir con el receptor del bluetooth y viceversa:

Conectas Vcc del bluetooth a +5V GND a GND TX--->RX

RX--->TX Cuidado, es importante no confundir la polarizacin, invertir Vcc y gnd, ya que te cargars el bluetooth, COMPROBADO. Si la placa de arduino est alimentada, cuando lo conectes, empezar a parpadear una luz. Una vez aqu ya puedes sincronizar tu dispositivo con el mvil. El nombre es linvor y el pin por defecto es 1234. Cuando lo sincronices, la luz que parpadeaba se quedar fija. Una vez sincronizados los dos dispositivos, qu hacemos?

Por Internet hay varios programas que sirven para hacer alguna cosa con ambos dispositivos (amarino, ArduinoCommander,...). Yo despus de varios intentos con estos programas he decidido dejarlos de lado y crearme mi propio programa para android de una forma sencilla (uniendo bloques desde esta pagina), pero esto lo explicar ms tarde, ahora vamos a ver que comandos podemos usar para la comunicacin. Es una comunicacin serial, as que voy a ir explicando los distintos comandos que tiene arduino para la comunicacin serial. Antes de nada dejo este enlace para quien no sepa lo que son los baudios, y as no ande perdido. Como podres observar, algunas definiciones son tal cual copiadas de la pgina oficial de arduino. Mi dispositivo tiene una velocidad de serie de 9600 buadios, esto es necesario saberlo para as poder establecer la comunicacin entre los dispositivos.

Comandos Comunicacin Serial:

begin()
Usado para establecer la velocidad a la que se comunicarn nuestro dispositivos. La sintaxis es la siguiente:

Serial.begin(velocidad)
Las velocidades ms comunes son: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600 o 115200. Se suele poner en la parte del setup.

end()
Desactiva la comunicacin serie, permitiendo a los pines RX and TX ser usados como entradas o salidas digitales. Para reactivar la comunicacin serie, llama al mtodo Serial.begin(). Sintaxis:

Serial.end() available()

Devuelve el nmero de bytes (caracteres) disponibles para ser leidos por el puerto serie. Se refiere a datos ya recibidos y disponibles en el buffer de recepcin del puerto (que tiene una capacidad de 128 bytes). Sintaxis:

Serial.available()

read() Lee los datos que le llegan por el puerto serie. Sintaxis: Serial.read() Si no hay datos disponible devuelve -1; si hay algo disponible, va recibiendo datos byte a byte. print() Este comando imprime en el puerte serie. Puede tener dos sintaxis, dependiendo de si queremos o no dar formato a lo que imprimimos: Serial.print(valor) Ejemplos:

Serial.print(78) imprime el nmero "78" Serial.print(1.23456) imprime el float"1.23" Serial.print(byte(78)) imprime el caracter "N" (cuyo cdigo ASCII es 78) Serial.print('N') imprime el caracter "N" Serial.print("Hola Mundo") imprime la cadena "Hola Mundo."

Serial.print(valor,formato) Ejemplos:

Serial.print(78, BYTE) imprime el caracter "N" Serial.print(78, BIN) imprime "1001110" Serial.print(78, OCT) imprime "116" Serial.print(78, DEC) imprime "78" Serial.print(78, HEX) imprime "4E" Serial.print(1.23456, 0) imprime "1" Serial.print(1.23456, 2) imprime "1.23" Serial.print(1.23456, 4) imprime "1.2346"

println() Es lo igual que print(), pero con la diferencia de que hace que lo prximo que se imprima en el puerto, sea en linea nueva. La sintaxis es la misma: Serial.println(valor) Serial.println(valor, formato)

El siguiente, es un sencillo ejemplo, cuya finalidad es imprimir lo que le llega por el puerto serie. int dato;

void setup(){ Serial.begin(9600); } void loop(){ dato=Serial.read(); if(dato>0){ Serial.print(dato); } } write()


Escribe datos binarios en el puerto serie. Estos datos se envan como un byte o una serie de bytes; para enviar los caracteres que representan los dgitos de un nmero usar funcion print () en su lugar. Sintaxis:

Serial.write(caracter) Envia un solo byte Serial.write(cadena) Envia una cadena como serie de bytes Serial.write(buf, longitud) Envia un 'array', de una determinada longitud, como una serie de bytes flush()

Vaca el bfer de entrada de datos en serie. Es decir, cualquier llamada a Serial.read () o Serial.available () devolver slo los datos recibidos despus la llamada ms reciente a Serial.flush (). Sintaxis:

Serial.flush()

Una vez llegado a este punto ya sabes todo lo que podemos hacer desde la parte de Arduino, ahora nos hace falta saber como enviar esto desde Android. Primero vamos a crear el programa para nuestro arduino desde el IDE. Mi programa quiero que me permita encender y apagar 4 diodos. Mi programa es el siguiente:

int dato;

//en esta variable almacenare el dato que obtengo del puerto serie

//asigno a cada led un pin int ledAzul=10; int ledRojo=11; int ledNaranja=12; int ledVerde=13; //variables logicas para almacenar el estado de los leds (1=encendido,0=apagado)

boolean estadoAzul=0; boolean estadoRojo=0; boolean estadoVerde=0; boolean estadoNaranja=0; //inicializo el puerto serie y los pines de los diodos como de salida void setup(){ Serial.begin(9600); pinMode(ledAzul,OUTPUT); pinMode(ledRojo,OUTPUT); pinMode(ledVerde,OUTPUT); pinMode(ledNaranja,OUTPUT); } void loop(){ //obtengo dato del puerto serie dato=Serial.read(); //comprobamos si el dato es alguno de los valores que utilizo para cambiar de estado los diodos (1,2,3,4) //si es asi, cambio el estado del diodo correspondiente if(dato==1){ estadoVerde=!estadoVerde; }else if(dato==2){ estadoNaranja=!estadoNaranja; }else if(dato==3){ estadoRojo=!estadoRojo; }else if(dato==4){ estadoAzul=!estadoAzul; } //les asigno a cada diodo su estado digitalWrite(ledVerde,estadoVerde); digitalWrite(ledAzul,estadoAzul); digitalWrite(ledRojo,estadoRojo); digitalWrite(ledNaranja,estadoNaranja); //imprimimos lo que nos llega por el puerto serie (siempre que se envie algo) if(dato>0){ Serial.print(dato); } }

Una vez definido el programa, lo debemos de compilar y subir a Arduino. CUIDADO, en mi caso, si tengo conectado el bluetooth al arduiono, a la hora de pasar un programa, me da error, por lo que debo de desconectar de receptor de la placa e arduino( emisor del bluetooth) para evitar interferencias. Una vez copiado el programa, tenemos que disear la aplicacin para android.Para ello vamos a la pgina http://beta.appinventor.mit.edu/ all asociamos (si teneis y si no la creais) vuestra cuenta de gmail.

Es un entorno bastante intuitivo. Lo primero de todo es crear un nuevo proyecto, le damos a My proyects y a nuevo, y escribimos un nuombre, yo lo he llamado pruebas arduino. En ese momento nos aparecer algo como esto:

Esta pagina tiene varias partes: En la parte izquierda aparecen todos los objetos que podemos incluir en nuestra aplicacin

En la parte central aparece el entorno grfico de nuestra aplicacin En la parte central-derecha, aparece un listado de los objetos de nuestra aplicacion.

En la parte derecha aparecen las propiedades de los objetos de nuestra aplicacin. La aplicacin que vamos a desarrollar va a poder apgar/encender cuatro diodos de colores. Estos diodos yo los he colocado en las salidas de pwm 13 (el diodo verde), 12 (el naranja), 11 (el rojo) y 10 (el azul). Para encender cada uno vamos a utilizar un checbox. Entonces cogemos y arrastramos cuatro Checkbox a nuestra aplicacin. para cambiarles de nombre vamos al listado de componentes y en la parte inferior le damos a Rename. TRambin podemos cambiarles el texto que muestran, en propiedades, text.Una vez hecho nos quedar algo as

Adems de los CheckBox, tenemos que aadir un cliente de bluetooth, para ello vamos a Palette y pinchamos en Other Stuff, ah buscamos BluetoothClient, y lo arrastramos a nuestra ventana. Adems para establecer la conexin usaremos un botn, yo le he puesto de texto conectar. Una vez aadidos todos los objetos, tenemos que decirle al programa que queremos que haga cada uno. Para ello pulsamos en "Open Blocks Editor", para abrir esto es necesario tener java instalado en nuestro ordenador. Se nos descargar un archivo, le damos, y despues de acptar varias cosas, se nos abrir algo como esto:

En esta otra pestaa ser en la que programaremos las acciones. No lo haremos directamente con programacin, si no de una forma ms intuitiva, arrastrando bloques. El panel lateral es donde se encuentran todos los bloques, los Built-In son los bloques de uso general (estructuras de programacin tpicas, listas, textos, nmeros,...); en la pestaa My blocks nos aperecen las acciones que pueden realizar los objetos que tenemos en creados en nuestra aplicacin. Lo primero de todo queremos que al pulsar en el boton que hemos creado, se conecte al dispositivo: -Arrastramos, dentro de nuestro boton, el primero bloque que nos aparece, el que pone click.

-Ahora vamos al bluetooth y vamos al que ponga Conect. Observamos que no lo podemos poner directamente, ya que no encajen, para que encajen, nos hace falta un bloque intermedio. Vamos a los generales, pulsamos en Definition y arrastramos el primero que nos aparece, hacemos encajar todos los bloques. hasta que nos quede algo como esto. En el hueco que nos keda para encajar, tenemos que poner la mac de nuestro dispositivo, en mi caso es 00:12:11:23:28:27, aadimos un texto, y la ponemos tal cual. Ahora tenemos que aadir las acciones de cada uno de nuestro checbox, para ello pinchamos en cada uno y seleccionamos el bloque que pone Changed. Queremos que envie un valor cada vez que cambie, asi que de subbloque le tenemos que poner uno del bluetooth que envie un digito, este es el que pone Send1ByteNumber. A cada uno checbox le ponemos que envie un numero distinto. AL final nos queda algo como esto:

Una vez acabado esto, tenemos varias posibilidades, desde la venta principal (la de diseo del programa) nos permite la opcin de descargarnos la aplicacin en este ordenador, solo tendriamos que copiarla e instalarla. Otra opcin ms prctica es poder probar continuamente los cambios en nuestro terminal. Para esta opcin necesitamos estar conectados con el ordenador y el movil en la misma red wifi. Adems necesitamos descargarnos la aplicacin del market MIT AICompanion. Una vez instalada la ejecutamos, nos pedira un cdigo. Para obtenerlo vamos, en nuestro ordenador, a la ventana de los bloques y le damos, en la parte superior a Connetc to Device, y selecionamos WIFI, el codigo que nos da, lo metemos en la app y ya podremos probar continuamente los cambios que hagamos en la aplicacin OnLine. Para probar la app, le damos a conectar, dejara de parpadear la luz, y al tocar los checbox, cambiara el estado de las luces por arte de magia.

Espero que os haya sido til esta informacin y que esto os sirva de base para desde ahi poder empezar a desarrollar, ya que a mi lo que en verdad me cost ha sido empezar y saber como comunicarme entre el movil y Arduino ya que me intentaba basar en aplicaciones ya hechas. De todas formas, por si os sirve de ayuda, os adjunto un archivo con el programa para arduino la la aplicacion para android. Cualquier fallo, duda, sugerencia, petencion... es agradecida. Descargar Archivos

Vous aimerez peut-être aussi