sensor-mouse: Sensor de movimiento con un mouse

Sensor Mouse es un proyecto que nos permite monitorear el estado de las puertas y ventanas mediante algun dispositivo conectado a un computador (generalmente mouse).
Ya escribi sobre este proyecto hace un par de meses, pero la informacion de como hacerlo ya no esta accesible, asi que publicare el articulo completo.

Materiales:
En este caso utilizaremos un Mouse optico (cualquier marca) USB, pero tambien puede ser un mouse no-optico y de cualquier interfaz (usb, ps/2, etc) y algunas rejillas para sostener el mouse sobre la puerta dejandolo a una distancia razonable para que active el sensor, acomodaremos la sensibilidad con materiales extras como carton o plastico que nos ayuden con el roce de la puerta con el Mouse.

  1. Mouse:
  2. Cable de red o usb para extension: Con este cable de red o cable largo usb podremos crear una extension por si nuestro PC esta lejos de la puera o ventana.
  3. Cinta adhesiva: Para poder fijar nuestro mouse a la plataforma que crearemos donde se generara el roce.

Preparacion (el hack):

Abrimos nuestro Mouse y lo desconectamos del cable, lo dejamos libre

Creamos alguna plataforma de apoyo en la pared donde este la ventana o la puerta que queremos monitorear y montamos el mouse con la imaginacion de cada uno:

Cuando ya tengamos todo montado, debemos alargar el cable usb del mouse para que llegue hasta nuestro computador.  Se puede hacer cortando a la mitad el cable del mouse y añandiendo una extension de cable de red, no muy larga, 3 o 4 metros.

Cuando tengamos la conexion hecha revisamos que todo quedo en orden, conectamos el un extremo del cable al computador y el otro exremo al mouse, verificamos que funcione perfecto, que se encienda la luz, verificamos los logs de systema dmesg|tail o tail /var/log/syslog y todos esos sintomas que nos dicen. Dejamos ejecutando en una consola el comando: cat /dev/input/mice si es usb o cat /dev/psaux si es un mouse ps/2, una vez hecho esto vamos a donde esta el mouse y calculamos una distancia apropiada para que al cerrar o abrir la puerta (o ventana) el mouse detecte el movimiento, cuando en la consola donde dejamos corriendo el comando aparezcan caracteres raros es porque ya esta listo. Si les queda muy alto el mouse de la puerta, puede agregar un carton o un plastico (como un ala) que haga el roce con la puerta.

Cuando esten todos estos pasos cumplidos, tendremos nuestro sensor ya instalado, lo probamos abriendo y cerrando la puerta y vamos viendo la salida del comando cat en nuestra consola. que el mouse fue detectado.

Podemos asegurar nuestro Mouse para que quede bien firme.

Cerramos nuestra consola donde teniamos ejecutando a cat, sellamos bien el mouse, dejamos todo bien instalado.

Aplicacion/Programa:

– Descarga:
He desarrollado un prqueño software (libre porsupuesto) que nos permitira interactuar con nuestro querido sensor. Lo pueden descargar desde aqui.
– Instalacion:
Nos situamos en el directorio donde lo hemos descargado y escribimos: tar xjvf door-version.tar.bz2 Ingresamos al directorio creado: cd door-version (Pueden leer el fichero README y el INSTALL para mas informacion) Compilamos el programa: make Nos ponemos como root y lo instalamos: make install Nos quedamos como root y ejecutamos el programa de la siguiente manera: door /dev/input/mice 5 (lease README para mas informacion) Y comenzamos a disfrutar de nuestro mouse sensor.

Demostracion:

httpv://www.youtube.com/watch?v=AuSOYCTA4Es

50 comentarios

  1. Eso si es friki, compraré un mouse para probar ^.^

  2. Eso es friki, pero no daña a nadie que uno se le ocurran cosas nuevas e inventarlas 🙂

  3. una pregunta:

    evidentemente la puerta (s) no estará cerca del pc. cual es la distancia máxima de extensión del cable usb? como lo puedo extender sin que caiga la señal?

    gracias…

  4. Zerial

    enero 22, 2009 a las 1:03 pm

    No tengo muy claro cuantos metros soporta el cable usb antes de que falle.. creo que son 5 metros.
    Creo que depende el cable que uses, en mi caso, hice una extencion usb usando un cable de red.

    pd: leyendo por ahi, me encontre con esto:

    El estándar USB soporta longitudes de cable de entre 0.5 y 5 metros. Existen pequeñas extensiones con clavijas macho-hembra, (los cables USB tienen dos clavijas macho), para alargar esos cables, sin que se puedan sobrepasar los 5 m que te comento.

    Para longitudes más altas deberías usar un “cable de extensión activo”, que básicamente es un cable USB con un hub integrado, y con una longitud máxima de 5 m. De estos se pueden encadenar hasta cinco cables, (y cuatro hubs), con un total de 25 m.

    saludos

  5. Y como le asignas una accion?… como por ej, que suene una musica??.. salu2

  6. Zerial

    junio 1, 2009 a las 10:55 am

    @oscar: En el codigo del programa “door” puedes agregar la llamada a la funcion “system” o “exec” para ejecutar un comando. Ese comando puede ser el que tu quieras, incluyendo la reproducción de un sonido o musica.

    saludos!

  7. si algien me puedo explicar lo del pograma porke no entendio porfavor,

  8. cuando pege los cables ylo conecte ala pc , se empezo a calentaar el mouse

  9. @raul orlando: El programa es para Linux. ¿Que parte del programa no entiendes?
    Y la otra pregunta,c omo hiciste la conexion de los cables?

    saludos

  10. cambie el cable ke tenia por uno usb , y se calienta cuando lo conecto , ttsss y entonces con xp no podre usar el pograma ?

  11. @raul orlando: no podras usar el programa con xp, la forma de manejar el puerto paralelo es distinto.

  12. Hola..!!Que pasa si quiero utilizar 2 mouses en un cuarto que posea 2 puertas, no crearia conflicto al estar conectado 2 mouses a la compu……gracias

  13. Zerial

    octubre 5, 2009 a las 1:11 pm

    @Luis: Si conectas dos mouses al PC, podras ver que, muevas uno o el otro, solo habra un cursos, por lo que el dispositivo será solo uno. No se si habra una forma de configurar dos ratones, con dos cursores distintos. Si fuese posible, entonces no tendrias problemas al conectar los dos y controlarlos de forma separada y tener un script corriendo para cada dispositivo.

  14. ok..muchas gracias..!!!otra cosita mas, me podrias dar alguna sugerencia de cómo hacer un programa que mediante el movimiento de un mouse active un cronómetro, y con otro mouse, que mediante la deteccion un movimiento tambien, desactive ese cronometo, lo que quiero es colocar 2 mouses en una cierta distancia, y que al cruzar un objeto por el mouse, active el cronometro, y que cuando el objeto pase por el otro mouse, desactive ese cronometro…

  15. oigan me explican… no entiendo mucho, miren ya abri el mouse y luego como es eso de conectarlo a un pc¿?(tngo un xp) y luego de conectarlo(no se como o por donde) donde lo configuro o ke hago???

    gracias

  16. mi mouse no es optico

  17. @Jose: hola!

    El programa que publique no sirve para Windows.

    saludos

  18. Hola soy Diego de Argentina, estoy intentando instalar la aplicación en un ubuntu 8.04, la versión de mi kernel es 2.6.24-24, tengo instalado las librerias necesarias, y el error que me da al ejecutar el make es:
    cc -c -o src/leds.o src/leds.c
    src/leds.c:22:20: error: asm/io.h: No existe el fichero ó directorio
    make: *** [src/leds.o] Error 1
    Me da el mismo error con las 3 versiones existentes. Cual sería la solución?
    Muchas gracias.

  19. Hola @Diego: Gracias por reportar el problema. He publicado la version 0.4 que esta corregido el problema.

    Puedes descargarla desde:
    http://blog.zerial.org/files/sensor-mouse/0.4/

    saludos!

  20. Muchas gracias por compartirlo. Es un gusto poder ser util. Saludos.

  21. q tal zerial te cuento q no puedo descargar tu programa y quisiera saber si me lo puedes en viar a mi corre porfa, mi correo es m-i-g-u-e@hotmail.com gracias

  22. Zerial

    febrero 18, 2010 a las 9:36 pm

    @miguel: Gracias por resportar el problema. Ahora si puedes descargarlo:

    http://blog.zerial.org/files/sensor-mouse/

    saludos!

  23. Oye, da la casualidad que necesito realizar una práctica con ese tipo de sensores y quisiera saber si pueden explicar un poco más el funcionamiento de código fuente, no tanto como instalarlo, sino más bien cómo funciona.

    Gracias

  24. Zerial

    marzo 14, 2010 a las 10:36 am

    hola @auraham: El funcionamiento del codigo fuente es bien sencillo.
    La logica y fucnionamiento del codigo esta basada en que cada movimiento que tenga el mouse es un bit que puedes leer usando leyendo directamente el dispositivo correspondiente, y por cada X bits leidos, segun el estado actual del sensor, detecta si la puerta o ventana se abrio o se cerro. Entiendes?

    Por ejemplo si al abrir la ventana el mouse lee 10 bits, entones le decimos al programa que cada 10 bits tome en cuenta que la ventana se cerro y marque el estado de la ventana como “abierto” y luego, al volver a leer 10 bits, significa que la ventana se cerro y como esta marcado como “abierto”, que lo marque como cerrado.

    ¿Se entiende?

  25. Pues así como lo describes sí te entiendo, pero a la hora de leer el código, pues ya es otra cosa.

    Sí me gustaria un post (si no es mucha molestia) desde cero, aunque sea sólo el código, para entender función por función. Además, nos serviría al resto del grupo para no comprar una interfase aparte…Mil gracias

  26. Zerial

    marzo 17, 2010 a las 2:47 pm

    @auraham: Voy a ver si puedo escribir un post relacionado a lo que pides, sino vere si hago una documentacion mas detallada a ver si te ayuda.

  27. Podrías poner un ejemplo del código para poder reproducir un sonido cuando detecte movimiento?

  28. hola zerial soy zonek mira tu proyecto me gusto mucho y lo comente en clase ps al parecer no me creyeron que sirva ps lo estoy asiendo pues asta ase apenas hoy tube un problema mira pues al principio de todo cuando lo instale me marcaba esto al mover el raton
    sh: beep: not found
    bueno no se si esto me indica que no se encuentra que onda simpre que lo muevo y pues en la descripcion no dice que hace tu programa si me puedes indicar que es lo que ase o que te indica me guztaria que me agregaras
    y el otro probelma que ahora deves de me marke eso cuando lo muevo al darle clip izquierdo no se que ize y no puedo configurarlo ayudame
    !!!!!!!!!!!!!!!!!!!!HELP¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡

  29. Zerial

    mayo 30, 2010 a las 9:43 pm

    @zonek: El codigo viene por defecto para que suene el speaker de tu computador (usando el comando beep), si te dice “beep: command not found” pues instala beep o cambia la instruccion desde el codigo

  30. Oks muchas gfracias, pero en que archivos modificaria (door.c, events.c, leds.c, OpendDivice.c) y con que lo compilo que version de c utilizaste o programa para compilar. saludos y disculpa las molestias
    espero me contestes

  31. ***zerial hola bueno queria saber si es posible pasar el turbo c++ no se si eso sea posible ??
    ****Oks muchas gracias, pero en que archivos modificaria (door.c, events.c, leds.c, OpendDivice.c) y con que lo compilo que version de c utilizaste o programa para compilar. saludos y disculpa las molestias
    espero me contestes

  32. @zonek: Si bien recuerdo, Tubro C++ es un compilador de Borland para Windows. Debido que Windows no maneja el puerto paralelo de la misma forma y no usa las mismas librerias, no puedes usar este codigo para Tubro C. Practicamente tendrias que hacer el codigo de nuevo … La forma en que maneja los dispositivos como el mouse tambien es distinta. Lo que hace este codigo es usar el dispositivo del mouse /dev/XXX.

  33. okey gracias pero dime como instalo el beep , y en donde que archivos puedo modificar el beep (door.c, events.c, leds.c, OpendDivice.c) y con que lo compilo
    saludos espero tu respuesta gracias y disculpa por las molestias

  34. Zerial

    junio 2, 2010 a las 10:18 am

    @zonek: Dependiendo de tu distribucion puedes instalar el beep usando el gestor de paquetes. Por ejemplo en debian: apt-get install beep

    No entiendo a que te refieres con que archivos modificar.. que quiers hacer?

    Preguntame y yo te respondo 🙂

  35. hola zerial muchas gracias por tua ayuda pues ya pude crear mi sensor con un raton yahu la verdad ps no puede con tu programa ya que tiene mucho errores es la verdad pues me tube que desvelar y pensar mucho para crear el mio en c++ la verdad me guztaria compartirlo como vez no se si te guzte la verdad igual que ati me guzta crear nuevas cosas pero pues yo estoy mas chabo meguztaria que me agregaras y me dieras un espacio para subir mi program que esta echo compatible para windows ,
    deja me decirte que yo amo linux pero no lo domino al 100% como y pues windows ya lo conosco y se manejar algunos lenguajes no se si kieres que suba el programa o si te molesta
    si alguno tiene alguna duda o kiere el programa
    pues agregenme
    zonek@hotmail.es
    y espero tu comentaria zerial
    y muchas gracias por la ayuda sinti no ubiera podido aser mi software ya que me baase en tu diseño del raton sale graxias
    SALUDOS

  36. @zonek: Si quieres enviame el codigo por correo y yo lo publico a este post, a mas de alguien le puede servir.

  37. si me parese bien y ps si kieres pasame tu correo y te lo envio
    solo te pido un espacio que diga ayuda de zonek no jajaja no es cierto puro coto si claro pasame tu correo y ps te lo envio y deveras algo que les dejo a este blog jajaj ps gracias al mi invetos que ise de prueba al creaar al principio este programa el primer intento que hiz bole mi bosina del beep de mi compu jajaja pero ya la aregle y aregle el codigo y suena perfecto ya puedes tener tu sensor lo uniko que me falta y no se si alguien me puede ayudar es a configurar dos punteros distintos eslo que no e podido encontar sale espero y si me ayuden
    sale zerial agregame o pasame tu correo
    SALUDOS

  38. zonek: en la seccion contacto aparece mi correo!

  39. Hola zerial, mira por casualidad tengo ke hacer una especie de proyecto = al ke esta aka en la pag pero tengo un problema, ke el alkance del haz de luz del sensor del mouse es muy corto, ya ke al dejar pasar unos kuantos segundos el mouse baja la intensidad de alcance por lo cual una vez ke se vuelve a abrir la puerto o lo ke sea el sensor no lo detecta
    ¿como lo hago para ke el sensor esta activo todo el rato???
    se agradeceria tu respuesta
    Saludos. Gracias

  40. Zerial

    junio 21, 2010 a las 10:51 pm

    @Franko: No me imagino como podrias hacerlo … Tal vez comprar otro mouse? Uno barato, de esos malos. Lo otro seria hacer algun tipo de adaptador para que la puerta quede mas al roce del mouse y asi pueda “sentir” cuando la puerta se abre o se cierra …

    Pero asi por comando o por codigo (programa) no me imagino como hacerlo.

    saludos

  41. Zerial: lo único que puedo decir es que, GRACIAS.

    la filosofia GPL es una pasada, espero algún día poder ayudar de manera parecida.

    Suelto una cuestión: comentas que tu programa lo que hace es leer el movimiento en bit, pero… ¿no sería mas interesante leer el carracter ASCII que te entra? de esta forma podrias diferenciar 4 caracteres distintos y podrias saber si habres o cierras la puerta.

    En la explicación que has dado mas arriba, comentas que cuentas 10 bit (pones un flag como puerta abierta) y luego cuando vuelves a contar 10bit (pones, puerta cerrada) pero…. ¿y si lo que haces es mover la puerta en pequeños movimientos pero no la cierras? te estaria contando bit hasta diez pero en realidad la puerta estaria abierta. ¿no?, eso no pasaría si de algún modo se pudiese controlar cual de los 4 caractares estas leyendo.

    bueno no se si me he explicado. De todas formas un DIEZ gracias por la aportación. Espero haya algien que sepa como obtener esto carateres.

  42. Por sierto… estoy con los compañeros de arriba. Para matizar el “aprendizaje” modificar ciertas cosas y aportarlas depués por aquí. ¿podrías de algún modo comentar con que has compilado los ficheros para linux y una descripción de como funcionan los ficheros que aportas en tu version 4.0?

    De nuevo gracias por adelantado.

  43. Zerial

    julio 17, 2010 a las 10:52 pm

    @vito: Se como transformar esos bits en caracteres ascii, pero estoy seguro de que cuando mueves el mouse siempre genera los mismos bits. Creo que son bits aleatorios los que genera, no estoy seguro.

    Respecto a lo que dices sobre mover despacio varias veces la puerta para que envie bits y asi vulnerar el sistema para que crea que esta abierta cuando en realidad esta cerrada, tienes razon, pero piensa que esto del sensor-mouse es solo una idea llevada a la realidad, se puede mejorar mucho y si piensas en usarla de verdad, para alarmas o cosas asi, obviamente hay muchas cosas que mejorar. Esto es solo el principio ….

    Gracias por tu comentario!

  44. lo siento pero me parece que te pasas…..
    mucho “parapeto”
    yo hice uno con el el maus sin necesidad de tenerlo
    conectado al fuck pc
    Dios mio, !!imaginacion!! por favor
    que “no la tenemos”

  45. q tal serial podrias ayudarme para poder aserlo en ubuntu porfabor soy nuebo en este sistema i me gustaria poner en practica este sensor

  46. amigo no tendras en codigo para hacerlo funcionar en windows vista de 32 bits porfa vor te lo agradeceria demasiado
    saludos desde veracruz mexico

  47. oye si dices en el primer paso que desconectemos el cable del mause despues donde conectamos de nuevo ?? o donde se conecta el cable largo?

  48. @arturo: No tengo el codigo para Windows.

    El cable largo va al puerto PS/2 o USB, segun corresponda el mouse

  49. por favor me pueden mandar el programa para xp please…

  50. HOLA KE TA ZERIAL OYE TE MOLESTO TANTITO PIDIENDOTE AYUDA, VERAS NO SE USAR LINUX PERO KIERO IMPLEMETAR ESTO Y PS NO SE SI SERIA MUCHA MOLESTIA KE ME EXPLICARAS UN POCO MEJOR COMO HACERLE, YA QUE BAJE LOS 4 ARCHIVOS PERO DE AHI NO SE, BUENO ESPERO TU RESPUESTA Y MUCHAS GRACIAS POR TAN BUEN APORTE =)

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Esto sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.