Lo mismo arreglo un cachivache, que fabrico un chirimbolo.
 RSS 2.0 

Posts filed under 'Hardware / Gadgets'

Parrot, iPAQ, Bluetooth

En el coche que he comprado de segunda mano, venia instalado un cacharro de esos Bluetooth para hablar por el movil mientras conduces tan ricamente. Ni conduzco mucho ni hablo por el móvil casi nunca, así que bueno, era una sorpresa agradable, pero tampoco me entusiasme demasiado, hasta que vi que el Parrot llevaba una antena GPS y que era el modelo CK3300, que es capaz de transmitir por bluetooth las coordenadas que capta la antena. Parrot 3300
Yo no tengo teléfono guapo de los que puedes meterles el TomTom, pero recordé que hace tiempo mi cuñado me regaló una Compaq iPAQ H3870 algo vieja que no le funcionaba el backlight, pero que tenia bluetooth y windows mobile 2002 de sistema operativo.
Lo primero fue arreglar el backlight, simplemente reconectando el cable plano del inversor que se había salido de su sitio. Luego intenté instalar algunos parches después de bajarme el activeSync de Microsoft y aprendí como reflashear la ROM, para mas tarde intentar instalarme el CompeGPSPocket y el tomtom 6.020 y 6.030 siguiendo las instrucciones de Manolo76, famoso seguramente entre los usuarios de PDA con tomtom.
No había forma, simplemente porque ambos solo funcionan en Windows Mobile 2003. Busqué la actualización a WM2003 y la intenté instalar, pero al estar la PDA en español, y la actualización en Inglés, el ActiveSync se negaba a reflashearme la PDA.
iPAQ H3870
Por último encontré a través de unos foros una explicación desmenuzada de como hacerlo saltándose la comprobación de idioma y de hecho, saltándose al mismo ActiveSync, aqui. Está en ingles, pero vamos, el resultado de la actualización también lo va a estar ya que NO EXISTE WM2003 en Español para la iPAQ H3870, así que si no sabes inglés no hace falta que lo intentes.

Que el activesync de microsoft es una auténtica basura me ha quedado bastante claro cuando he intentado copiar un archivo de 150Mb a la tarjeta de memoria de la PDA. Me ha sido imposible, y lo peor, no he visto solución aparente en ningún sitio.
Al parecer los archivos se copian primero en la memoria de la PDA y luego pasan a la tarjeta, con lo que si no tienes suficiente memoria libre en la PDA nunca consigues terminar la copia y la conexion entre PDA y PC se rompe y es necesario reiniciar el PDA para poder reactivarla.
Ni probando aplicaciones raras como el MobSync, que permite sincronizar carpetas enteras del PC al PDA pasando un poco del activesync, ni usando el Card Export II, que te presenta la tarjeta SD de la PDA ante el PC como si fuera una unidad de disco mas, pero que resulta que no funciona en la iPAQ 3870, ya que es un software que se ha hecho después de que quedase descatalogada.

Lo suyo para estos casos es tener un lector de tarjetas de memoria y copiar directamente los archivos, pero mira tu por donde, es de las pocas cosas de hardware trasnochado que no tengo, así que he tenido que salir a por uno y en un periquete tenia todo instalado y listo en la tarjeta SD.

Con esto y la conexión 3G de Yoigo en mi móvil Nokia con bluetooth, la pobre olvidada iPAQ ha vuelto a la vida, con navegación por internet y navegación por carretera.

1 comment Marzo 15th, 2008

El Cockpit

Senna a los mandos
Parece que todos los frikis que nos gusta la informática y el bricolaje, tenemos siempre dos proyectos ineludibles. Antes o después, acabamos por construir una máquina recreativa o mamecab y una cabina de pilotaje para jugar a los juegos de conducción. La verdad es que si he tardado tanto tiempo en hacer esta última es por una razón de lo mas simple: no me gustan los juegos de conducir (el GTA no cuenta como juego de conducir ;) ).
Tol cartonaje
El empujoncito me lo ha dado mi bro, que recientemente ha sido obsequiado con una PS2 (si, la 2, lo de ser un “late adopter” debe ser de familia) y algún que otro juego de coches y como a el si le gustan y ha sido su cumpleaños, pues me ayudó con el tema de elegir regalo y le he fabricado una cabina de pilotaje, para que no tenga que jugar tirado en una alfombra en el suelo.
Las especificaciones no estaban muy claras, pero al final llegamos a la conclusión de que debí­a ser algo “ligero” y que no desentonase demasiado con el resto de la decoración de la habitación donde lo iba a colocar y con una posición de conducción mas de F1 que de rally. Esto, y un presupuesto limitado, descartaban directamente ciertas monstruosidades que la gente super colgada con los juegos de coches, se construye por el mundo.
cockpit_01.JPG
Lo primero era conseguir un asiento. El elegido fue un asiento de un Ford Probe que por el estado en el que me lo trajeron a casa debí­a haber pasado por algún incidente que involucraba unos cuantos ‘G’ y otras fuerzas de torsión. La regulación del respaldo no funcionaba demasiado bien y el asiento parecía estar descoyuntado, así­ que lo desarmé para ver si podí­a arreglarlo. Encontré el problema pero no podí­a solucionarlo así­ que lo dejé en una inclinación cómoda pero fija. Aun así­ se podí­a regular la altura del asiento y también la distancia del volante.

Croquis del cockpit
A partir del asiento pude hacer el diseño del prototipo, primero en el Flash (es que es el único programa de dibujo vectorial que se manejar) y de ahí­ a cartón. Ajusté todas las piezas que me salí­an para que pudiese cortarlas de un único tablero de madera de pino macizo de 12mm (ligereza, precio… :) ) y me fui a mi almacén de confianza a comprarlo.

Vamos por partes
Después de varios ajustes de fallos en el diseño, algunos tan flagrantes como el hecho de que con la balda del volante colocada era imposible salir del asiento, corté todas las piezas, 18 en total, usando las plantillas de cartón que habí­a fabricado. Hice los orificios correspondientes a los tornillos de montaje, ya que el mueble debía ser desmontable para poder transportarlo, hice también los orificios para los espárragos de unión entre piezas y con la fresadora repasé todos los cantos vistos para eliminar las aristas.
Esto va tomando forma
Al acabar esta trabajosa fase monté el mueble para ver como iba quedando y para pulir la ubicación definitiva de algunos elementos, como la posición de los pedales, el reposapies de gomaespuma para los talones y la inclinación de la balda donde se coloca el volante, a gusto del consumidor, que vino a casa a “probarse” el modelito.
Por último vino el tratamiento de la madera, después de lijar, limpiar y unas capas de goma laca y betún de judea mas tarde, la cabina quedó envejecida, como si fuese un mueble antiguo.
Los años no pasan en balde
Y ya para guinda del pastel, me puse a fabricar un Bass Shaker casero para el asiento. Un bass shaker es una especie de altavoz de graves que no produce sonido sino vibración, y que le da un mayor realismo a los juegos de coches y aviones transmitiendo las vibraciones del sonido del motor al asiento. Pero vamos, si habeis leido mi post anterior, no necesito decir mucho mas acerca de este tema :D

El resultado es el que se puede ver en las fotos. Como le dije a mi hermano, solo se necesitan una llave allen del 5, 15 minutos y un poco de espíritu IKEA para montar la cabina.

cockpit_03.JPG cockpit_04.JPG cockpit_05.JPG
cockpit_06.JPG cockpit_07.JPG cockpit_08.JPG
cockpit_09.JPG cockpit_10.JPG cockpit_11.JPG
cockpit_14.JPG cockpit_15.JPG cockpit_16.JPG

15 comments Noviembre 30th, 2007

Tactile Transducer

Según iba avanzando con mi proyecto de la cabina de pilotaje para F1, proyecto que ya está terminado y del que pondré un post en breve, me iba rondando la idea de ponerle algo que vi alguna vez pero que no sabía muy bien como llamarlo. Se trataba de una especie de altavoz que pegado al asiento producía vibraciones que hacían que quien estuviera sentado pudiese “sentir” el sonido del motor y de los efectos de audio producidos por el juego.

El aparato en concreto se llama “Tactile Transducer” o “Bass shaker” y aunque realmente no es un altavoz, utiliza los mismos principios físicos que este para su funcionamiento, un imán, una bobina (voice coil) y en lugar de un cono de papel para provocar vibraciones en el aire, usa una plancha rígida y pesada para producir vibraciones y transmitirlas por los cuerpos sólidos a los que dicha plancha esté unida.

Comercialmente se venden desde hace bastantes años, pero no he encontrado ningún sitio en español donde trabajen con estos elementos, cuya marca mas extendida es Aura. De cualquier modo salen bastante caros para simplemente hacer pruebas así que me puse a buscar si había alguien que lo hubiese hecho “HUM” (hágalo usted mismo).
Como siempre hay gente para todo en este mundo, encontré varios modelos, a cual mas económico, que reutilizaban un altavoz defenestrado y se fabricaban su propio TT. Como ese es el espíritu de esta página, los estudié con avidez.

El artículo mas antiguo, de 1997, es el de Chad Gray que usa plomos para darle peso y que desafortunadamente ha perdido las fotos.
También interesante, por ser el mas sencillo de todos, es el que presentan en este foro.
Otra aproximación, usando el principio de la “plate reverb” que se usa en los estudios de grabación es la página de Gary Wolansky.
Pero el mas completo de todos, que te explica incluso los circuitos electrónicos necesarios para hacer un filtro de audio que solo deje pasar los graves y construir un amplificador a partir de componentes baratos es el de Rolan Van Roy y su simulador de vuelo.

Con toda esta información me he puesto a escarbar en mi montaña de basura a ver si tenía los ingredientes necesarios. Tengo altavoz, tengo pletina metálica, tengo tornillos e incluso un poco de pegamento epoxídico.
Así que aquí va un video-howto mas:



14 comments Noviembre 27th, 2007

Cirugía a un PVR

Mi colega el que me puso el mote que da nombre a esta página, el otro día me obsequió con un trabajito de investigación. Su mayor exponente de estar a la vanguardia de la tecnología, un PVR Thomson DTH 8550E se había estropeado y no le permitía acceder al menú del equipo debido a que la placa base del mismo estaba frita (palabras del servicio técnico).
Conectado al PC
En estos casos el aparato se lleva a la casa a hacer efectiva la garantía, pero mi amigo temía (con razón) por el destino que sufrirían las pelis que tenía guardadas en el disco duro, con vídeos de sus monstruitos haciendo el monstruo en diversos eventos sociales. Bueno el caso es que como en la tienda le iban a dar un aparato nuevo, me lo trajo al sanatorio de dispositivos electrónicos de Makinolo para tratar de extraer la información del disco antes de despedirse de el.

No me pareció en principio una tarea muy complicada. Al abrir el cacharro se observaba perfectamente una unidad grabadora de DVD Philips y un disco duro IDE Seagate ST3160022ACE de 160Gb.

Conecté el disco a uno de mis PCs y la BIOS lo reconoció a la primera. Sin embargo Windows XP, aunque lo detectó como dispositivo nuevo, no fue capaz de añadirlo a la lista de unidades.
Supuse que el problema era que el sistema de ficheros que usaba el disco duro no era el NTFS que usa XP así que metí un Knoppix en el CD y volví a arrancar. Se supone que esta distribución de Linux, autocontenida en un CD, es capaz de detectar y montar unidades de disco de los mas diversos sistemas de ficheros, incluyendo FAT, FAT32, EXT2, EXT3, EFS, NTFS y algunos mas que no se usan muy habitualmente.
El knoppix detectó el disco, pero a la hora de montarlo… no era capaz de determinar el sistema de ficheros. Lancé un fdisk -l para sacar la tabla de particiones del disco, pero me decía que no había tabla de particiones. Buscando alguna solución por Google di con una utilidad para Linux, llamada gpart que se supone capaz de adivinar el particionamiento de un disco duro que por cualquier causa haya perdido la tabla de particiones.
gpart, después de casi una hora de escaneo, no fue capaz de decirme nada en absoluto acerca del disco, así que solo me quedaba acudir a mis amigos de Soygeek, a ver si a alguno se le ocurría de que forma podía leer, de manera no invasiva (es decir, sin escribir nada en el disco, para no dejarlo inservible de cara al PVR), el dichoso disco.

Me indicaron una dirección de internet en la que se hablaba del disco duro de un aparato de la misma marca pero de un modelo anterior, el DTH 7000, donde confirmé que estos aparatos utilizan un formato propietario. Allí encontré el DTH Explorer que lee los discos del DTH 7000, creado por Didier Cadiou (Francés, al igual que la marca Thomson). No podía ser tan fácil. No funcionó. No identificaba el disco como un disco Thomson.
Esta página me llevo a un Grupo de Yahoo en el que se hablaba sobre el DTH 7000 y en el que habia otra utilidad mas espartana que se llamaba DRS 7000 Data Extraction Tool. Tampoco hubo suerte, no era capaz de detectar el disco.

Parecía como si entre las dos versiones del aparato hubiesen cambiado el formato del sistema de ficheros, así que me tocó explorar directamente el disco a nivel físico con la utilidad WinHex para ver si encontraba algo aprovechable.
Después de mirar un montón de bytes que parecían no tener ningún sentido encontré lo siguiente:

uJ e20A-og2 00 7

Parecía claro que era una fecha, el Jueves 20 de Agosto de 2007, pero codificada de alguna manera extraña. Observandolo atentamente se ve que se cogen los caracteres de 2 en 2 y se dan la vuelta, como si estuviese usando Big Endian de 16 bits pero con todos los valores, no solo los numéricos. En efecto, al darle la vuelta a los caracteres me salía:

Jue 02-Ago 2007

Esto podía ser perfectamente una entrada en una tabla de archivos que indicase la fecha de creación de uno de los vídeos del disco. Como había visto otros códigos raros en otras zonas del disco, repetidos muchas veces, pase a descifrarlos:

tSrogaLeba siTynDU F

Parece rumano, pero no, deshaciendo la encriptación rústica que usan:

StorageLabs TinyUDF

¡MAGIA!

Ahora si que Google iba a ser de mucha ayuda, el disco estaba usando el TinyUDF (Universal Disk Format) que es una variante del sistema de ficheros usado para almacenar archivos en medios ópticos como DVDs o CD. En concreto el aparato este usa la librería TinyUDF de StorageLabs.
Al parecer es bastante común que los PVR (aparatos de DVD y TDT) con disco duro usen este sistema de archivos por las ventajas que ofrece. UDF también lo usan las unidades REV removibles de Iomega.

Buscando mas por foros y mas foros, encontré que casi todos los que se habían visto en esta tesitura estaban usando con gran éxito un programa, el SiGMATek_DVBH_1000_HDD_Reader, que permite montar las unidades TinyUDF usadas en los PVR en un Windows XP.
Como cabía esperar, a mi no me funcionó, ni cuando desactivé el soporte para unidades virtuales de CD/DVD (Nero, Alcohol120%, etc…) que parece que entra en colisión con este software.
Busqué mas y llegué al pvr101disk, una especie de driver para windows que se interpone entre el driver de UDF que lleva el propio windows (udfs.sys) y el disco físico y hace el swapping de bytes on-the-fly. Hay que usarlo en modo línea de comandos después de instalarlo de manera rudimentaria.
Pero tampoco funciona y esto ya si que me terminó de cabrear.

Si cualquiera de vosotros ha llegado hasta aqui buscando como montar una unidad de disco de un PVR (DVD o TDT) en un PC, seguro que ya ha encontrado la solución en el anterior párrafo, porque la inmensa mayoría usan TinyUDF con encriptación de byte swapping. Solo los tíos con mala suerte como yo hacen que las historias estas continúen…

img_1852.JPG
La solución desesperada y ya por salvaguardar el honor de geek, como dice Futur3: comprar un disco duro de 160Gb, hacer una copia por sectores con el dd de Linux (tarda 3,3 horas poniendo los discos en buses IDE diferentes), usar un script a nivel físico con el 010Editor para swapear los bytes de todo el contenido y montar el disco como unidad UDF. El script de swap lo he tenido corriendo unas 20 horas y me he hartado, solo había llegado a 17Gb.
Aun así, con el swap a medio hacer, intenté montarlo como unidad UDF pero no había forma de que Windows o Linux la reconocieran.

La conclusión a la que llego es que los de Thomson han creado algún tipo de variación mínima sobre la encriptación básica del swapeo de bytes que usan todos los PVR clónicos (DAK, Airis, Sigmatek, Technosonic, etc…) y que por eso el programa de Sigmatek no vale para este PVR.
Lo único que me queda por hacer es descubrir cual es esa “variación” y reprogramar el pvr101disk.sys para que funcione, pero esa tarea me parece que demanda mucho mas tiempo del que puedo dedicarle a esto.

Lo que ha pasado en realidad, me he dado cuenta después de que mi amigo cambiase en la tienda el Thomson DTH8550E por un Thomson DTH8650E y me lo volviese a traer, es que al jodersele el aparato se corrompió parte de la estructura de archivos del disco UDF, por eso el software de sigmatek no era capaz de reconocerlo. Los datos de vídeo estan en su sitio (encriptados, eso si) pero las tablas de archivos no, por lo que el disco está desestructurado y sacar los vídeos va a ser un trabajo de chinos.

Ahora, sabiendo que los archivos de vídeo son VOB, como los del DVD (MPEG2) y que su firma son sectores que empiezan con la cadena hex 000001BA (en muchos de ellos aparece también la cadena ZORAN01, pero no encuentro referencias en google) , me resta sacar trozos de unos 5Gb del tirón (no me queda mas espacio en el otro disco del PC) y visionarlos con el videolan (es la caña, visualiza lo que sea sin hacer preguntas de formato de fichero ni nada) para ver si encuentro los dichosos vídeos. Luego me tocará recortar con el StreamClip o el VideoReDo (aunque este ultimo se cuelga en cuanto hay un cambio de timecode en el stream, y en mi caso hay muchiiiisimos) y exportarlos con no se aún que herramienta para convertirlos en DVD y haberme ganado con ello la salvación eterna, porque vamos, menudo trabajito.

Así que, como en los programas de al filo de lo imposible en los que no consiguen subir a la cima del monte himalayo de turno, y aun así retransmiten la gesta, pues yo publico este post de fracaso, con un par :) .

11 comments Octubre 17th, 2007

Soporte reciclado para GPS

Recientemente he sido el feliz receptor de un regalo “sorpresa” por mi cumpleaños: tan inesperado que yo mismo envié una URL lista para pinchar al encargado de la feliz compra.
El regalo ha sido un receptor GPS Garmin Venture CX que formaba parte de mi wishlist desde que descubrí la página de wikiloc. Elegí el Venture CX porque para ser en color, admitir tarjeta microSD para meter cartografía, tener conexión USB y disponer de un montón de características interesantes, es muy económico. El truco está en que es exactamente el mismo GPS que el Legend Cx pero viene sin mapas y sin cable USB, cosas que ya he conseguido yo por mi cuenta. Aqui se puede ver una comparativa de los distintos modelos de Garmin. Es una suerte que lo haya pillado ahora porque su sucesor, el Venture HC no admite ampliacion de memoria ni navegación puerta a puerta.

Después de un par de semanas frenéticas empapándome de información acerca de como conseguir cartografías, como hacerlas ruteables, como subir y bajar tracks del GPS y que programas eran mejores para cada cosa, llegó el momento de estrenarlo en la bici… pero claro, el soporte para manillar es un accesorio (cacho de plástico) que puede adquirirse por el módico precio de unos 30 Euros (por un cacho de plástico, repito), así que puse la masa encefálica a discurrir y mirando algunas de las cosas que tenía en mi escritorio di con la solución.
GPS y velocimetro
Ingredientes:

  • Velocímetro de bicicleta antiguo con su correspondiente montura de manillar, no importa que no funcione, me lo voy a cargar de todos modos (este era para el proyecto de anemómetro, por eso estaba encima de mi mesa, pero ya no lo voy a usar)
  • Pinza adaptadora para soporte de Garmin (viene con el GPS)
  • Perfil de aluminio en U de 15×15 mm (sobrante de cuando hice las puertas de los armarios)
  • Velocimetro desmontado

  • Tuerca del 4
  • Arandela del 4

Procedimiento:

Desmontamos el velocímetro quitándole la tapa posterior, le retiramos la tapa de la pila.
Pinza desmontada
Cortamos una sección de 10mm del perfil en U y con mucho cuidado doblamos los extremos 5 o 6mm (o mas, o menos, dependiendo de la forma del velocímetro que se vaya a usar) para que quede con la forma de una U con serifa (no se porque me molesto tanto en explicarlo si se ve en las fotos :D ). Con una broca del 3 realizamos un orificio en el centro de esta pieza, para que pueda pasar el tornillo. ¿Que tornillo? Pues el que viene con la pinza adaptadora de Garmin, que previamente sacaremos desatornillandolo.
Montaje presentado
Encima del orificio en el que va atornillada dicha pinza colocamos la tuerca, que solo hace de separador para que la pieza de aluminio no doble con la presión del tornillo, después introducimos nuestra pieza de aluminio por el orificio de la pila de la tapa posterior del velocímetro, ponemos la arandela sobre el agujero y metemos el tornillo. Atornillamos hasta que quede todo bien firme. Si no lo hace probar con diferentes tuercas y arandelas hasta conseguir que esté todo bien fijo.
Soporte montado
Solo falta introducir el GPS en el soporte de manillar del velocímetro y como medida de seguridad atar el cordón al manillar y rezar para que la próxima salida no tenga trialeras muy técnicas o bajadas muy empinadas y pedregosas :D .

Personalmente ha sido probado en una salida y aunque reconozco que he sido conservador en todas las bajadas (algo poco habitual en mi) porque no sabía si el invento iba a aguantar, lo cierto es que se ha comportado muy bien a pesar de la holgura que presenta el soporte ya que el GPS pesa bastante mas que el velocímetro original. La holgura se arregla con un poco de papel doblado en los carriles para que se ajuste mucho mejor.
Para qué comprar un soporte Garmin que cogerá holgura al cabo del tiempo si puedo hacerme uno gratis que ya tiene la holgura de serie X-D.

Soporte en el manillar GPS en situación


Y esto es todo: otro producto Makinolo a 0 Euros.

1 comment Octubre 9th, 2007

Anemousemeter (I)

Por fin me pongo en marcha con este proyecto tan completito y a la vez tan inútil que llevo meses intentando empezar.
Voy a fabricarme un anemómetro digital casero con la sana intención de medir el viento reinante en la zona donde vivo y sopesar si merece la pena montarme un generador eólico de “pinipon“, que por supuesto también estaría amparado bajo la filosofía del HUM.
Anemómetro de cazoletas
Mi primera idea era la que suele aparecer en todos los sitios en los que te explican como construir un anemómetro casero de cazoletas. Al conjunto rotatorio que forman las 3 cazoletas con el rodamiento se le incorpora un imán que al pasar por el sensor de efecto hall cierra un circuito que permite contabilizar una vuelta. Si calculas las vueltas por segundo ya tienes una medida de velocidad base que comparar con la velocidad del viento.
Es algo relativamente sencillo pero tiene un problema. No mide la dirección del viento. Se necesita una veleta adicional para medirlo.

Veleta
Para construir una veleta también había varias opciones, las mas simples con 8 sensores magnéticos como el comentado antes te permitían saber -mas o menos- la dirección del viento de entre 8 posibilidades. Bastante patético.
Sin embargo la aproximación mas directa era la del potenciómetro. Un potenciómetro rotativo al que se le incorporaba la veleta, va quedando siempre en una posición determinada dependiendo de la dirección en que sopla el viento. Para cada posición la resistencia ofrecida por el potenciómetro es distinta por lo que mediante un simple conversor analógico digital de resolución suficiente podemos obtener un amplio abanico de valores que nos indiquen la dirección exacta del viento.
Desde luego parece la mejor solución si no fuera porque los potenciómetros normales que existen en el mercado no superan en el mejor de los casos los 270º de giro, por lo que siempre quedaría una zona muerta de 90º en la que no podríamos medir el viento.
Por supuesto hay potenciómetros de 360º, incluso los hay sin tope para que puedan girar locos, pero su precio en España es mayor que el de un kit de veleta completo comprado en USA, y yo, además de pasarlo bien haciendo inventos, espero también que no me arruine con ellos.

Seguí investigando y leyendo sobre el tema hasta que di con un curioso invento: un anemómetro que combina en el mismo aparato la captación de la velocidad y dirección del viento. Se llama Rotorvane Anemometer y hasta hace unos años vendían un kit para hacértelo tu mismo. Ahora RayMarine les ha comprado la patente y ya no se puede ver libremente que tecnología usan, aunque explican a grandes rasgos como funciona el invento.
Anemómetro Rotorvane
Se trata de un anemómetro de cazoletas tradicional en el que una de sus cazoletas tiene una asimetría aerodinámica con respecto a las otras dos. Esto hace que a una velocidad de viento constante, la velocidad angular del conjunto varíe en determinado momento de cada giro dependiendo de por donde sopla el viento. Es decir, existe una diferencia entre la velocidad media del conjunto y la velocidad instantánea en algún punto de cada giro. Si sabes en que punto del giro se produce esa diferencia, sabes de donde viene el viento. Enrevesado, pero muy inteligente.
Afortunadamente el mundo esta lleno de frikis y James Derrick, que hizo el proyecto en 1999 (no ha llovido ni na), lo documentó de manera escueta, lo que me permite entender un poco mejor cuales son los pasos a seguir.

Lo que se me ocurrió a continuación fue fantástico y constata que tengo algún tipo de fijación con los ratones de ordenador. El principio por el que funcionan los ratones de bola es que un disco con perforaciones pasa por delante de un puente óptico que al ser interrumpido se interpreta como movimiento. Un ratón es capaz de dar distancia recorrida en 2 ejes mediante este principio y ademas el sistema es circular, así que me bastaría acoplar un disco perforado y engancharlo al sensor óptico de un ratón para que la circuitería del mismo me fuese diciendo el movimiento que realiza el rotor del anemómetro. La información me llegaría por el puerto PS/2 y un programa podría calcular la velocidad a partir de esos datos.
Prueba con ratón
Así que me puse manos a la obra para hacer alguna pequeña prueba. Desmonté el ratón, enganché la rueda dentada al rodamiento y la uní a un pequeño motor de DC mediante una goma de transmisión, conecté el motor a la línea de 5V de mi fuente de alimentación de pruebas intercalando un potenciómetro para controlar la velocidad de giro y conecté el cable al puerto PS/2 de mi servidor Linux.
En el servidor hice un pequeño programa en C que abre el /dev/psaux y se pone a leer de el. Ayudandome de la información que encontré en la página de Computer-Engineering he podido configurar el ratón para que actúe a la máxima capacidad de muestreo (200 muestras por segundo) y máxima resolución (8 counts por mm) y me ha permitido saber para que sirven cada uno de los 4 bytes que envía el ratón en cada muestreo. El programa acumula todos los movimientos que le llegan del eje Y y va calculando la velocidad media cada segundo.

#include <stdio .h>
#include <sys /time.h>
#define TRUE 1
#define FALSE 0

int main (int argc, char *argv[])
{
  FILE *pfile;
  char data[4];
  int end=FALSE;
  long acumulado=0L;
  struct timeval starttime, endtime, diff;
  long elapsed, totaltime=0;
  double  velocidad, vmax=0;

  pfile = fopen(“/dev/psaux”, “r+”);

  // Set sampling rate a 200                                                                                                                                                     
  fputc(0xF2, pfile);
  printf(“Preguntando por el device id, respuesta: 0x%x 0x%x\n, fgetc(pfile), fgetc(pfile));
  fputc(0xF3, pfile);
  printf(“Cambiando el sample rate, respuesta: 0x%x\n, fgetc(pfile));
  fputc(200, pfile);
  printf(“Cambiado el sample rate a 200, respuesta: 0x%x\n, fgetc(pfile));

  fputc(0xE8, pfile);
  printf(“Cambiando la resolucion, respuesta: 0x%x\n, fgetc(pfile));
  fputc(0×03, pfile);
  printf(“Resolucion, a 8count/mm respuesta: 0x%x\n, fgetc(pfile));

  gettimeofday(&starttime, NULL);
  elapsed = 0;
  while(! end)
  {
    data[0] = fgetc(pfile)// Info de los botones y desbordamientos
    data[1] = fgetc(pfile)// Incrementos del eje X
    data[2] = fgetc(pfile)// Incrementos del eje Y
    data[3] = fgetc(pfile)// Incrementos del eje Z (wheel)
    acumulado += data[2];

    gettimeofday(&endtime, NULL);
    timeval_subtract(&diff, &endtime, &starttime);
    elapsed += diff.tv_usec;
    starttime = endtime;

    if(elapsed>=1000000)
    {
      velocidad = (double)acumulado / (double)elapsed;
      if (vmax < velocidad ) vmax = velocidad;
      totaltime +=elapsed;
      elapsed = 0;
      acumulado = 0;
      printf(“Velocidad = %f t/s  Max:%f t/s  Tiempo de medicion: %f s\n, velocidad*1000000, vmax*1000000, (float)(totaltime / 1000000));
      printf(“          = %f km/h \n, velocidad * 1000000 * 9 * 0.0174 * 0.8 * 3600 / 100000 );
    } 
  }
  fclose(pfile);

}

/* Subtract the `struct timeval’ values X and Y,                                                                                                                                 
        storing the result in RESULT.                                                                                                                                             
        Return 1 if the difference is negative, otherwise 0.  */

     int
     timeval_subtract (result, x, y)
     struct timeval *result, *x, *y;
{
  /* Perform the carry for the later subtraction by updating y. */
  if (x->tv_usec < y->tv_usec) {
    int nsec = (y->tv_usec – x->tv_usec) / 1000000 + 1;
    y->tv_usec -= 1000000 * nsec;
    y->tv_sec += nsec;
  }
  if (x->tv_usec – y->tv_usec > 1000000) {
    int nsec = (x->tv_usec – y->tv_usec) / 1000000;
    y->tv_usec += 1000000 * nsec;
    y->tv_sec -= nsec;
  }

  /* Compute the time remaining to wait.                                                                                                                                         
     tv_usec is certainly positive. */

  result->tv_sec = x->tv_sec – y->tv_sec;
  result->tv_usec = x->tv_usec – y->tv_usec;

  /* Return 1 if result is negative. */
  return x->tv_sec < y->tv_sec;
}

</sys></stdio>

Los tiempos se toman en microsegundos (usec) y la velocidad lineal real de la rueda, que no tiene por qué ser la velocidad del viento cuando el invento esté montado, se calcula una vez por segundo y se hace a partir de los siguientes datos:

velocidad * 1000000 * 9 * 0.0174 * 0.9 * 3600 / 100000

Velocidad es la velocidad calculada tics por microsegundo. Se multiplica por 1000000 para tenerla en tics por segundo.
La rueda de mi ratón tiene exactamente 40 agujeros. Esto quiere decir que cada agujero representa aproximadamente 9 grados de circunferencia (360/40 = 9). Al multiplicar por 9 los tics por segundo, consigo la velocidad en grados por segundo. Como 1 grado = 0.0174 radianes (2*Pi/360), multiplico y obtengo la velocidad en radianes por segundo.
¿Para que necesito la velocidad en radianes / segundo?, porque esta es la velocidad angular y para averiguar la velocidad lineal de un punto del borde del disco dentado tengo la fórmula:

v = r * w (uve igual a erre por omega)

donde omega es la velocidad angular y r el radio de la circunferencia. Como el radio de la rueda de mi ratón mide 0.9 cm multiplico por esa cantidad y obtengo la velocidad en cm/s. Ahora solo queda multiplicar por 3600 segundos/hora y dividir por 100000 cm / Km y obtenemos la velocidad en Km/h.

Por supuesto esta expresión y otras partes del código se pueden simplificar, pero lo dejo así por motivos didácticos… vamos que si la simplifico no me entero ni yo de por qué he hecho lo que he hecho :)

Con este montaje y estos cálculos he logrado que la rueda alcance los 50Km/h. Supongo que si le meto 12V o quemo el motor, o consigo mas velocidad, pero no me preocupa demasiado ya que teniendo en cuenta que el anemómetro entero va a tener un radio de giro de 5 cm, para la misma velocidad angular, la velocidad del punto central de una cazoleta tendría que ser de ¡mas de 300 Km/h!

¡Esto no ha hecho mas que empezar! Os mantendré informados de los progresos.

13 comments Junio 20th, 2007

Diseccionando baterías

Aprovechando que mi ansia de desmontar cosas se ha juntado con una batería del portátil que no funciona y con un cartelito que reza “DO NOT disassemble”, me he propuesto aprender un poco mas acerca de estas caras muestras de la hijoputez de las multinacionales.

Pilas apiladasComo decía hace no mucho Dan Knight, de Low End Mac, en su artículo Inside Your Notebook’s Battery: Ordinary AA Li-Ion Cells, la batería de un portátil no deja de ser mas que una mera caja de plástico carísima que contiene pilas recargables de Iones de Litio de a 5 Euros la pieza acompañadas de un pequeño circuito integrado.
Ya intuía que estas baterías debían llevar dentro algo más. Al parecer todos esos integrados sirven para regular el régimen de carga y descarga y controlar el nivel de la batería y su temperatura, lo que debe implicar cierto nivel de comunicación entre baterías y portátiles. Investigando un poco he concluido que de los 5 contactos que posee la mía, 1 lleva la alimentación (14.8V), 1 es la masa, 2 se usan para las comunicaciones (clock y data) y el último para la medición de temperatura, pero es imposible saber con certeza cual es cual porque no hay forma de encontrar una hoja de especificaciones de una batería de estas, aunque si que he leído que algún manitas que se ha hecho un programa para comunicarse con la batería vía I2C (muy usado en la programación con microcontroladores) mediante el protocolo SMBus que es el estándar que se usa.

Mirando cuidadosamente el circuito que lleva la batería se descubren sus componentes básicos:

Esquema de una bateria inteligente

  • Un integrado encargado de monitorizar las pilas, en mi batería es uno marcado como bq2040 que resulta ser un medidor de carga con interface SMBus de transmisión serie implementando el estandar Smart Battery System. Es un circuito capaz de recalibrarse fijandose en lo que dura un ciclo completo de carga/descarga usando un timer y un sensor de temperatura internos. Parece ser que este chip se programa mediante una eprom externa para inicializarlo, lo que explicaría en cierta medida por qué mi batería, a pesar de dar casi 16V. a la salida, no funciona. Este maldito chip ha decidido que la edad de la batería, o el número de ciclos de carga, es suficiente para darla por desahuciada y a pesar de que se recarga, informa al portátil de que la batería está agotada. Hay otros integrados con la misma función aunque mucho mas complejos y completos, como el MAX1780.
  • Un fusible térmico que corta la corriente si hay un exceso de temperatura no controlado por el integrado anterior. No es recuperable ni reemplazable. Al mio, también fácilmente ubicable, le he medido la continuidad y da infinito… osea que está frito. Puede que el bq2040 no sea el culpable de todo al fin y al cabo.
  • Un grupo de TPC8103, transistores FET que al parecer actúan como interruptores de control que cortan el ciclo de carga o descarga bajo las señales de control del integrado .
  • Un regulador de corriente de 3A LM350
  • Una memoria EEPROM de 2 hilos S-240C0

Battery Pack
Dan Knight apunta muy acertadamente que si los fabricantes de portátiles incluyesen esa poca circuitería para el control de la batería dentro del propio portatil, el resto de los mortales podríamos comprar cualquier pila recargable y usarla para dar autonomía al mismo. Pero claro, eso le restaría unos suculentos ingresos a las citadas compañías. La batería de portátil mas barata debe andar por los 100Euros, que es probablemente la mitad de lo que cuesta todo el portátil en el momento que este necesite dicha batería.

Esto no soy yo ni el segundo ni el tercero en pensarlo, y para muestra un enlace, una página donde enseñan paso a paso como cambiar las pilas de una batería recargable modelo FPCBP25 de un Fujitsu – Siemens Lifebook S-Series además de dar unas cuantas lecciones acerca de esta parte del hardware tan desconocida.

Adaptador puerto paralelo SMBusLo que se les olvida mencionar en este fantástico artículo es la reprogramación del integrado de control de la batería. Resulta que para eso también hay software disponible. El AccPlus es una utilidad para comunicarse con una Smart Battery (se denominan así a las que implementan el SMInterface) y permite reprogramarla y leer sus EEPROMs a través de un adaptador del puerto paralelo del PC que lleva un integrado de Philips implementando el estandar de comunicación I2C. Algo de esto cuentan en el apartado de “How to service laptop batteries” de la página de la universidad de las baterías.

Circuiteria internaDe todos modos tengo que advertir, aunque no lo he vivido en carne propia, que las baterías de Iones de Litio son tan caras y vienen siempre montadas en packs por la sencilla razón de que son MUY PELIGROSAS si están dañadas o se manipulan de forma erronea… y tiene su lógica. 4400mAh que es la capacidad de mi batería, por ejemplo, significa que es capaz de descargar 4,4Amp a lo largo de una hora. Si por cualquier razon, cortocircuito, temperatura excesiva, rotura en el envoltorio, se produjese una descarga inmediata, 4,4 Amperios son muchos Amperios y sueltos en un ambiente lleno de sustancias químicas como son las pilas, puede producir una explosión bastante seria.
Además los iones de Litio se pueden llegar a convertir en Litio si hay escapes, y el litio combustiona al contacto con el H20, incluso si solo es el de la humedad del aire.
Por eso os digo amiguitos, NO JUGUEIS CON LAS BATERÍAS EN CASA… hacedlo por lo menos al aire libre y con algo de protección, eso si, como siempre, bajo vuestra propia responsabilidad, si es que la tenéis. Y si no la tenéis, compraros una.

Para saber casi todo lo que se puede saber sobre baterías, y aclarar muchos de los mitos que las rodean, mirad en la Battery University y en Batteries in a portable world.

8 comments Noviembre 13th, 2006

Laptopstein

Yo tenía un portátil HP Omnibook XE2 que un día decidió irse de viaje a Irlanda sin mi, había elegido mejor compañía. Lo cierto es que conmigo se aburría mucho porque no soy un tio muy viajero así que se piró, y yo no esperaba volver a verle. Sin embargo el destino y un vaso de agua derramado por encima de el, hicieron que el pobre portátil entrase en coma y volviese al hogar.
Por supuesto nadie repara un portátil al que le ha caído un vaso de agua por encima, mucho menos si es un PIII y tiene 5 o 6 años de antigüedad, así que me decidí a desarmarlo como todo lo que cae en mis manos.
Le saqué todas las entrañas, vi las marcas que había dejado el agua por todas partes y llegué hasta el punto donde realmente se había jodido la placa base, cerca de la toma de alimentación había un par de integrados totalmente chamuscados. Olvídate de que tenga arreglo.
Un buen día navegando por Ebay se me ocurrió buscar “Omnibook XE2″. Impresionante, un tio vendía SOLO la base del portátil, sin disco duro, sin pantalla, sin memoria, sin disquetera ni cd ni na… solo la placa base con su procesador y caja de plástico. Me decidí a pujar y me lo llevé. Cuando lo recogí me di cuenta de la cruda realidad. Hay 12 modelos de Omnibook XE2, empezando por PII a 333 y terminando por PIII a 500, pasando incluso por AMDs… y claro, como no pregunté, este era un PII a 333 cuya placa base no se parece en nada a la mía. Ahí se quedo en mi montón de chatarra informática.
Lote omnibooks
Pero unos meses después, con una búsqueda automática en Ebay, me llegó otro anuncio. Un tipo que vendía despieces de 4 portátiles XE2, igual que anteriormente, no venían pantallas, solo los marcos, no llevaban disco duro ni memoria, aunque había un par de CDs y de disqueteras. ¡Uno de los portátiles era un PIII! Loco de contento pujé por el lote y lo volví a ganar.
Con el en casa comencé de nuevo las cirugías. Le metí la memoria, un CD, el disco duro y ¡arrancó conectado al monitor externo! Yujuuuuu
Inversor
Luego le puse la pantalla LCD. Se veían cosas, pero no tenía retroiluminación. Parecía que el inversor estaba petado. Aunque en el lote de Ebay no venían pantallas si que venían los marcos… ¡con los inversores dentro! vamos, una potra total. Cambie el inversor y ale, ya funcionaba la pantalla.

Yo ya me las prometía muy felices, había recuperado el PIII y la pantalla, tenia el portátil como nuevo otra vez, así que me dispuse a entrar en windows para hacer backup de lo que hubiese en el disco y de repente… el portátil va y se apaga. ¿Que ocurre? Lo vuelvo a encender y al rato, se apaga de nuevo.
Placa base
Le cambie todas las piezas posibles por las que tenía pero nada, siempre lo mismo, al cabo de un rato, unas veces duraba mas, otras menos, se apagaba solo. Daba igual que tuviese todo conectado o la placa base desnuda sin nada. Daba igual que arrancase WindowsXP o Knoppix. Al cabo de un periodo aleatorio de tiempo, plof, apagado.
Naked board
Primero sospeche de la temperatura, pero no podía ser, porque a veces se tiraba media hora encendido, haciendo los diagnósticos internos, poniendo la CPU a tope y la memoria y no se apagaba.
Incluso encontré un manual de servicio del portátil, pero que servía de bien poco, ya que cualquiera de los problemas que se solucionaban en dicho manual eran bastante obvios.
No había un patrón identificable en el problema y no desaparecía ni cambiándole el procesador, así que he deducido que es de la placa base, pero como no tengo mas placas base de PIII pues a fastidiarse.
Al final acabe montando uno de los PII con todos los componentes que funcionaban bien del resto de portátiles y reinstalando Windows XP porque el PII no arrancaba con el disco duro tal como estaba (no se la razón).

Es decir, que tengo una especie de frankestein portátil, pero que funciona. Eso si, la batería está agotada, así que la denominación de “portátil” la cambiaremos por la de “facilmente trasladable” :D .

Add comment Noviembre 8th, 2006

Guia Pointing Gun

Tal y como prometí aquí voy con la guia “howto” de la pointing gun.
Pistola con sonido real de IMC
Como ya comenté en mi anterior post, se trata de una recreación hecha en casa del producto comercial Pistol Mouse FPS.
Como la guia tiene muchas fotos y es relativamente extensa, no la pongo aqui directamente. Entra en ella para leerla completa.

Continue Reading 5 comments Abril 24th, 2006

Pointing Gun

Ya se que estoy empezando a parecer un poco bélico con tanta pistolita, pero es que los FPS son bastante bélicos, que le vamos a hacer, y aquí hay otro accesorio que me ha llamado la atención para jugar a ellos.
Después de darle una pensada me he dado cuenta de que la LCD TopGun no era factible para los FPS ya que funcionan de distinta forma que los juegos para los que está pensada, que son los de tipo House of the dead o Time Crisis entre otros muchos. En estos juegos el cursor se mueve donde apuntas y el punto de vista no lo controlas porque es automático, mientras que en los fps lo que se mueve es el punto de vista, por lo que al mover la pistola esta queda apuntando, digamos por ejemplo a la derecha, mientras que el punto de mira en pantalla esta en el centro… porque siempre está en el centro. Lo que se mueve es el resto de las cosas.
MonsterGecko's Pistol Mouse FPS
Por eso este ratón con forma de pistola, el PistolMouse, me ha parecido muy adecuado, ya que mantiene la funcionalidad del ratón para mover el punto de vista, y permite una sujección del mismo mas ergonómica y mas realista. El botón de disparo es un gatillo y un simple giro de muñeca natural permite una gran amplitud de movimiento.
También he pensado en comprarmelo, pero de los $20 que cuesta en USA pasa a mas de 40 euros en España, y además es un buen proyecto cortito para amenizar las vacaciones de semana santa.
Así que he realizado un experimento HUM (ahora que se lo que significa, lo usaré hasta la saciedad) al que he bautizado Pointing Gun, para que no se note que es una copia de Pistol Mouse :-D .
En realidad Pistol Mouse no es más que un ratón óptico normal con un palo vertical en el extremo trasero y los botones llevados a diferentes partes de ese palo.
Ya que me he puesto a ello, le he provisto de un par de cosas que le faltan al Pistol Mouse. El retroceso del arma al disparar y que sea inalámbrico. Además he cambiado la posición del boton derecho, que en los reviews que he leido decian que se pulsaba involuntariamente con demasida facilidad.

Pointing Gun, hecho en casa!
El resultado es este que podeis ver aquí. Creo que ha quedado bastante bien, y ademas, ¡FUNCIONA! :-D
Eso si, no es perfecto. He descubierto por ejemplo porque la Pistol Mouse original no tiene retroceso: al presionar el gatillo el retroceso hace que el ratón se mueva (se mueve toda la mano :) ) y por tanto pierdes precisión a lo bestia, aunque es mucho mas realista, claro, jejeje. Supongo que puedo arreglarlo quitando el retroceso o haciendo que primero se produzca el click de ratón y el retroceso venga después. Ahora son practicamente simultaneos.
El botón derecho queda entre el dedo corazón y el anular, se puede accionar con cualquiera de los dos y está bastante escondido para no pulsarlo inintencionadamente. La rueda del ratón está colocada para manejarla con el dedo gordo y por supuesto también tiene tercer botón.
Eso si, como soy diestro, la rueda está colocada para diestros.

Ingredientes:

  • Ratón óptico inalámbrico barato, un Labtec Mini wireless que tenía muerto de risa por ahí.
  • Pistola de juguete de un todo a euro (en realidad esta me ha costado 10, pero merecia la pena), cuanto mas barato mejor
  • Unos trozos de metacrilato para la base de la pistola
  • Un poco de cable de red UTP cat 5 para las conexiones de los botones
  • Un conector hembra de 10 pines con cable paralelo (puerto serie)
  • Unos trozos de placa perforada de circuitos.
  • Cola termofusible con su pistola (mira, esta también podria haber sido reconvertida ;-) )
  • Sierra de calar, dremel y algunas limas
  • Destornilladores, alicates de punta, soldador, estaño y mucha paciencia y cuidado.

En breve escribiré una guía ilustrada con los pasos que he seguido para construirlo.
Hasta entonces… me voy a matar unos cuantos nazis, viva el COD2!!

8 comments Abril 15th, 2006

Next Posts Previous Posts

 Guias

 Comentarios

 

  • Cargando...
  •  Categorías