Está en la página 1de 14

Proyecto Ratn con Acelermetro

Desarrollo de Proyectos 2 DPE


Juan Alberto Benito Pereira Enernesto Tejedor Agustn Yerpes Mesa 06 --- IES Vallecas I 04/03/2013

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 2

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes

Proyecto Ratn con Acelermetro

El proyecto que hemos decidido realizar es un ratn de ordenador cuyo manejo se realiza sin manos. Simplemente con los movimientos de la cabeza se puede manejar el ratn del ordenador. Por medio del acelermetro de 3 ejes ADXL335 y de Arduino hemos construido el interfaz para interactuar con el ordenador, acoplando el ADXL335 en una PCB que va pinchada en Arduino, y todo a su vez cosido a una gorra que es la que se adapta a la cabeza del usuario.

Descripcin del proyecto


Que es un acelermetro? Un acelermetro es un tipo de sensor que nos mide aceleraciones lineales. Las aceleraciones con estos sensores se suelen medir utilizando la unidad "G" que no es ms que la unidad de referencia de la aceleracin gravitatoria de la tierra. Que es un eje? Un eje es una direccin del espacio. Con dos ejes puedes medir un plano, con 3 todo el espacio tridimensional. Con un acelermetro de tres ejes y suponiendo el objeto en reposo podemos encontrar su orientacin en el espacio ya que sabiendo que est sujeto a una aceleracin de 1G, y con la ayuda de la trigonometra podemos definir su orientacin solo con las tres medidas de los ejes. Acelermetro ADXL335 El ADXL335 es un acelermetro de 3 ejes que nos permite medir aceleraciones del rango de +3G -3G. La interfaz se trata de un sensor analgico por lo que nos proporcionar mediante 3 pines, tres voltajes proporcionales a la aceleracin de cada eje. Analizando cada uno de los valores de tensin que nos da a la salida por medio de Arduino y estableciendo lo que seran los valores en reposo, comprobamos cuando se realizan movimientos y esos movimientos se traducen en seales que Arduino manda a Windows a travs de su librera Mouse.

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 3

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


Algo muy importante es que se trata de un dispositivo que se alimenta a 3.3v, por lo que se debe tener cuidado a la hora de alimentarlo a travs de Arduino en el pin de 3,3v y no en el de 5v, lo que producira su dao irreparable. El ADXL335 viene montando en su propia placa PCB donde esta conectadas a su salida los condensadores de desacoplo que recomienda el fabricante para limitar los ruidos. El esquema es el siguiente:

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 4

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes

Librera Mouse de Arduino


Esta librera nos permite manejar el ratn de Windows a travs de Arduino usando las funciones que vienen predefinidas en ella. Un aspecto importante es que esta librera no est disponible para todos los modelos de Arduino, as que hemos tenido que utilizar la ltima versin que es la Leonardo. En la librera estn todas estas funciones para el manejo del ratn, nosotros slo usamos las que necesitamos para nuestro proyecto.

Mouse.begin() Mouse.click() Mouse.end() Mouse.move() Mouse.press() Mouse.release() Mouse.isPressed()

Mouse.begin()
Descripcin Comienza la emulacin de un ratn conectado al ordenador. Debe ser llamada antes de comenzar a usar las dems. Sintaxis Mouse.begin() Parmetros Ninguno Returns Nada

Mouse.click()
Descripcin Enva un click al ordenador en la posicin donde se encuentre el puntero. Es lo mismo que apretar y soltar el botn del ratn. Mouse.click() sin ningn parmetro toma el click izquierdo por defecto.

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 5

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


Sintaxis Mouse.click(); Mouse.click(botn); Parametros Botn: el botn que se pulsa - char

MOUSE_LEFT (default) MOUSE_RIGHT MOUSE_MIDDLE Devuelve Nada

Mouse.end()
Descripcin Finaliza la emulacin del ratn en el ordenador. Sintaxis Mouse.end() Parmetros Ninguno Devuelve Nada

Mouse.move()
Descripcin Mueve el puntero del ordenador. El movimiento en la pantalla siempre es relativa a la posicin actual del puntero. Sintaxis Mouse.move(xVal, yPos, wheel); Parametros xVal: cantidad de movimiento en el eje X - int yVal: cantidad de movimiento en el eje Y-axis - int wheel: cantidad de movimiento en scroll wheel - int

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 6

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


Devuelve Nada

Mouse.press()
Descripcin Manda al ordenador la accin de apretar un botn pero no soltarlo Se puede cancelar con Mouse.release(). Sintaxis Mouse.press(); Mouse.press(botn); Parmetros botn: botn que est presionado - char

MOUSE_LEFT (default) MOUSE_RIGHT MOUSE_MIDDLE Devuelve Nada

Mouse.release()
Descripcin Enva que el botn se ha soltado. (Previamente tena que estar pulsado). Sintaxis Mouse.release(); Mouse.release(botn); Parmetros button: el botn a soltar - char

MOUSE_LEFT (default) MOUSE_RIGHT MOUSE_MIDDLE Devuelve Nada

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 7

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes

Mouse.isPressed()
Descripcin Comprueba el estado de los botones y devuelve si estn presionados o no. Sintaxis Mouse.isPressed(); Mouse.isPressed(botn); Parmetros botn: que botn va a comprobar - char

MOUSE_LEFT (default) MOUSE_RIGHT MOUSE_MIDDLE Devuelve boolean : Devuelve si est presionado o no.

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 8

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


CODIGO /* Proyecto Ratn con acelermetro Juan Alberto Benito Ernesto Tejedor Agustn Yerpes MESA 06 2DPE IES Vallecas I */ /* El programa lee los valores analgicos que recibe del acelermetro ADXL335 y tratando los datos manda informacin a Windows para el manejo del ratn y los botones. El programa tiene dos modos de funcionamiento: 1- Movimiento de ratn y Scroll 2- Clicks del botn

En el primer modo de funcionamiento se detectan los movimientos de la cabeza y se envan al ordenador para mover el puntero del ratn. Si la inclinacin en el eje Y es mayor o menor de ciertos valores, se considera que se desea hacer scroll y lo enva para hacer scroll de pantalla. En el segundo modo de funcionamiento se entra cuanto se deja el puntero del ratn quieto sobre unos 2 segundos. Una vez dentro el movimiento del puntero se detiene y los movimientos que se realicen sern para hacer distintos clicks de ratn o para salir del modo 2. Los clicks sern: Click Izquierdo - Inclinar la cabeza hacia delante Doble click izquierdo - Inclinar la cabeza hacia la izquierda Click Derecho - Inclinar la cabeza hacia la derecha Salir del modo clicks - Inclinar la cabeza hacia atrs.

*/ const int xPin = 0; //Pin para eje de la X const int yPin = 1; //Pin para eje de la Y //El eje Z no lo usamos en nuestro proyecto.

int espera=0;//Contador para detectar el tiempo de espera para cambiar de modo int estado=0;//Estado en el que se encuentra el programa

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 9

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes

void setup() { //Configuracion de los pines y se inicializa la comunicacion con el raton. pinMode(xPin, INPUT); pinMode(yPin, INPUT); Mouse.begin();

void loop() { //Variables para almacenar los datos recogidos del ADXL335 int accelerationX, accelerationY, accelerationZ; //Almacenamos los valores leidos en las variables. accelerationX=analogRead(xPin); accelerationY=analogRead(yPin);

//Se realize un mapeo de los valores analgicos leidos para obtener unos //valores mas manejables y poderlos enviar al ordenador. El valor en reposo que obtenemos es alrededor de 330 por lo que lo consideramos el 0. accelerationX = map(accelerationX, 230, 430, -20, 20); accelerationY = map(accelerationY, 230, 430, -20, 20);

//Empieza la comprobacion del estado de funcionamiento switch (estado) {//Modo movimiento y scroll case 0: if(accelerationY < -2) { //Se hace un scroll hacia abajo. Ponemos de valor -1 y se pone un // delay para que haga el scroll despacio y se pueda controlar con facilidad.

Mouse.move(0, 0, -1); delay(75);

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 10

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


espera=0; Anulamos la cuenta de espera cuando hay scroll

} else if(accelerationY > 2) { //Lo mismo pero scroll hacia arriba Mouse.move(0, 0, 1); delay(75); espera=0; Anulamos la cuenta de espera cuando hay scroll

} else {//Modo movimiento if (accelerationY == 0 && accelerationX == 0 ) {//Cada bucle en el que no hay movimiento aumenta el contador. espera++; } else { if ((accelerationY < 2 || accelerationY > -2) || (accelerationX < 2 || _ accelerationX > -2)) {//Si las aceleraciones estan entre estos rangos se manda //a Windows para que mueva el ratn. Se mandan negativos para //que se correspondan los ejes de Windows con los nuestros Mouse.move(-accelerationX, -accelerationY, 0); delay(2);//Delay para que no se acelere mucho espera=0;//Anulamos la cuenta de espera cuando se mueve } } }

if (espera>500) {//Cuando la espera llega a 500 se detecta cambio de modo espera=0;

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 11

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


estado=1; } break;

case 1: //En el modo boton dependiendo de los movimientos hacemos distintos clicks if(accelerationY < -3) //Inclinar la cabeza hacia delante { //Hacemos click Mouse.click(); estado=0; //Volvemos a estado movimiento y scroll delay(1000);//Delay para que despues de hacer click de tiempo a colocar //la cabeza en posicin recta. } else if (accelerationY >= 3) //Inclinar la cabeza hacia atras { //Salimos del modo click estado=0; //Volvemos a estado movimiento y scroll delay(1000); } else if (accelerationX < -3) //Inclinar la cabeza hacia la derecha { // Hacemos click derecho Mouse.click(MOUSE_RIGHT); estado=0; //Volvemos a estado movimiento y scroll delay(1000); } else if (accelerationX >= 3) //Inclinar la cabeza hacia la izquierda { //Hacemos doble click Mouse.click(); Mouse.click(); estado=0; //Volvemos a estado movimiento y scroll delay(1000); } break; }

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 12

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes


}

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 13

Juan Alberto Benito Ernesto Tejedor Agustn Yerpes

PCB

Vista 3D

Vista diseo de pistas

Proyecto Ratn con Acelermetro Desarrollo de Proyectos 2DPE IES Vallecas I 14

También podría gustarte