martes, 14 de octubre de 2008

Primera prueba de alcance WiFi

En la anterior entrada dije que contaría los resultados de la primera prueba de alcance WiFi, y eso haré en esta.

A pesar de que los cálculos teóricos decían que con una antena omnidireccional de 12 dBi y otra de 2 dBi se puede cubrir una distancia de más de 2 Km, no acababa de creérmelo. Las redes inalámbricas domésticas y de oficina no suelen llegar mucho más allá de un par de habitaciones, con antenas grandes o pequeñas. Está claro que las paredes atenúan mucho la señal, pero ¿tanto?.

Tenía que hacer una prueba para convencerme, así que dejé un punto de acceso configurado en modo "master" con la omni de 12 dBi en el jardín de casa y me fui con el coche para ver a dónde era capaz de llegar la cobertura de red. Para probar la cobertura llevaba un portátil, un adaptador USB-WiFi y un par de antenas: una omni de 2 dBi y una Yagui de 12 dBi. La primera parada, a menos de 300 metros en línea recta, ya me dejó claro que la red tenía más alcance de lo que mi intuición me había dicho. La señal se recibía con fuerza con la omni de 2 dBi.


Alentado por el resultado me fui al lugar más alejado posible con visión directa al punto de acceso, que resultó ser de 1,2 Km, después de consultarlo en Google Maps. La señal se recibía más tenue con la omni, pero todavía con fuerza suficiente como para establecer un enlace a 54 Mbps. Mucha mejor señal que la que obtengo del router desde mi habitación, a menos de 10 metros de distancia.



Con la antena Yagui, la señal era perfecta. El Network Manager indicaba un 98 % de calidad del enlace. Debería haber tomado las medidas de señal en dBm, utilizando, por ejemplo, la salida del comando iwlist scan, o el contenido del archivo /proc/network/wireless. Pero por alguna razón el adaptador de USB que uso no parece dar valores en dBm, o yo no les he encontrado el sentido. Tengo que investigar eso un poco más.

Aquí hay una vista desde el lugar donde estaba situada la Yagui. La situación del punto de acceso está indicada por la flecha roja:


Coninua...

sábado, 11 de octubre de 2008

Experimentos con redes inalámbricas

Hace unos días leí un libro llamado "Redes inalámbricas en los países en desarrollo", disponible gratuitamente en la web http://wndw.net. Trata muchos de los aspectos prácticos necesarios para montar una red inalámbrica de largo alcance, cubriendo tanto el hardware como el software. Llevaba unos días estudiando algo sobre la teoría de radioenlaces en su parte más teórica, y este libro fue el complemento perfecto para poder asociar la teoría con la práctica. Es el libro de referencia para aquel que quiera montar una red o un enlace WiFi cubriendo una gran distancia. Eso sí, es necesario tener ciertos conocimientos sobre administración de sistemas GNU/Linux para entender muchos de los capítulos.

Todo esto forma parte del proyecto en el que estoy trabajando (sí, en el trabajo, no en casa). Entre mil cosas más, tenemos que estudiar diferentes posibilidades para la comunicación entre unos equipos bastante alejados entre sí, y de ahí mi actual interés en esta tecnología. Este tipo de cosas son las que hacen que me encante mi trabajo.

Pues bien, esta semana me llegaron varias antenas, un punto de acceso y un adaptador USB-WiFi con conector para antena externa. Todos ellos son de lo más económico, ya que únicamente se usarán para hacer algún experimento y, si todo va bien, quizá un prototipo funcional.

Aquí va una foto de una de las antenas Yagi de 12 dBi, montada sobre un trípode de cámara fotográfica:


Hoy he hecho las primeras pruebas de alcance, pero como quiero mantener los textos cortos, lo dejo para el próximo post. Coninua...

miércoles, 24 de septiembre de 2008

Los Verdaderos Programadores

In the beginning, there were Real Programmers.
[...]
Some people who grew up in the Real Programmer culture remained active into the 1990s. Seymour Cray, designer of the Cray line of supercomputers, was among the greatest. He is said to have once toggled an entire operating system of his own design into a computer of his own design through its front-panel switches. In octal. Without an error. And it worked. Real Programmer macho supremo.


Eric S. Raymond, The Cathedral & The Bazaar

Traducción:

Al principio estaban los Verdaderos Programadores.
[...]
Alguna gente que creció en la cultura de los Verdaderos Programadores se mantuvo activa a lo largo de los años 90. Seymour Cray, diseñador de la linea se supercomputadores Cray, estaba entre los mejores. De él se cuenta que en cierta ocasión introdujo un sistema operativo completo de diseño propio en un computador de diseño propio mediante los conmutadores de su panel frontal. En octal. Sin un solo error. Y funcionó. El macho supremo de los Verdaderos Programadores.

Eric S. Raymond, La catedral y el bazar
Coninua...

lunes, 22 de septiembre de 2008

París y fotografía

Hace unos días llegué de pasar unos días de vacaciones en París. No era mi primera vez allí, así que pudimos aprovechar bien el tiempo. Además, esta vez llevé la Canon EOS 350D y me harté a sacar fotos. Unas cuatrocientas y pico, en total. Y como acostumbro a disparar en formato raw, la tarjeta CF de 2 GB se me quedó corta y tuve que comprar otra (en el FNAC del Forum des Halles, para más información).


Acabo de subir unas pocas de ellas a mi galería de Picasa. ¡A ver si alguien se anima y escribe algún comentario!

Disparar en raw es casi imprescindible si uno quiere hacer fotos decentes. El problema es que ocupan una barbaridad y, sobretodo, que hay que "revelarlas" para pasarlas a un formato más estándar, como jpg. Hasta hace poco usaba UFRaw para esta tarea, antes de pasarlas a GIMP para reencuadrar, enderezar y demás. Pero hace poco me encontré con rawstudio, que permite trabajar mucho más rápido al poder copiar y pegar ajustes de una foto a otra. También tiene un modo de procesamiento en batch que puede ahorrarnos mucho trabajo.

Pero cuando tenía todas las fotos reveladas a jpg (un trabajo de varias horas que se va tornando aburrido hacia el final) me di cuenta de un gran fallo de rawstudio: ¡no exporta los datos EXIF! Y los datos EXIF son tan fundamentales para una foto como los tags ID3 para un archivo MP3. Como no me daba la gana de empezar desde el principio y volver a hacerlo todo con UFRaw, me puse a buscar un poco y encontré exiftool, una potente herramienta escrita en Perl que puede hacer todo tipo de operaciones relacionadas con datos EXIF.

Entre otras cosas, permite copiar las etiquetas de un archivo de imagen a otro, con la siguiente orden:

exiftool -tagsfromfile a.cr2 a.jpg

Así que solucionado. En unos minutos escribí un pequeño script para aplicar la orden a todos los archivos. ¡Para que después alguno todavía diga que la línea de comandos está obsoleta frente a las interfaces gráficas!

Por suerte, el bug de rawstudio está registrado y solucionado en una versión posterior, según su página de bugzilla.
Coninua...

martes, 22 de julio de 2008

Webcam para el microscopio

Hace unas semanas compré una cámara web Philips SPC900NC en eBay con la intención de aplicarla al ocular del telescopio. Había leído muy buenos comentarios sobre ella y hay por ahí bastante documentación acerca de su utilización para fines astronómicos. No es una cámara barata, pero en eBay se puede conseguir por menos de la mitad del precio que piden en otras tiendas.

La semana pasada encargué la fabricación de un par de piezas adaptadoras de aluminio a una empresa que se dedica al prototipado de partes mecánicas. Una de las piezas adapta la cámara al ocular del telescopio y la otra la adapta al microscopio. Las dos se diferencian únicamente en una cota.

Como ya comenté en una entrada anterior, mi microscopio es un Biolux de Bresser (que es la marca "low cost" de Meade, nada menos). Es el famoso microscopio que Lidl vende de vez en cuando, y creo que es lo mejor que se puede conseguir por menos de 100 euros. Viene con una sencilla cámara USB que se coloca en lugar del ocular. Pero, si bien la calidad del microscopio es buena, la cámara deja bastante que desear. Por eso pensé en utilizar en su lugar la SPC900NC.

Lo primero que hice fue abrir la cámara y cortar la pista que va al LED blanco. Cuando la iluminación es demasiado débil, la luz generada por el LED puede producir reflejos internos. En la siguiente imagen se ve el pequeño corte a la izquierda del LED (el pequeño componente rectangular y blanco que se encuentra centrado en el lado de abajo).


La siguente foto muestra la cámara, a la que le he desenroscado el objetivo, y dos de las piezas adaptadoras fabricadas. Una de ellos está acoplado al casquillo de aluminio que utilizaba la cámara original del telescopio. La he pintado de negro mate para evitar reflexiones.


Por último un par de fotos de la cámara con su nuevo adaptador, sin y con microscopio. Otro día publicaré alguna imagen o algún vídeo para mostrar su utilidad.



Coninua...

lunes, 23 de junio de 2008

Analema con PyEphem

Una de las mejores características de Python es la gran cantidad de módulos existentes. Una instalación básica ya incorpora multitud de ellos, por eso se suele decir que Python viene "con pilas incluídas". Pero fuera de la librería estándar hay una infinidad creciente de utilidades que permiten utilizar Python para casi cualquier aplicación concebible. Hoy voy a presentar uno de ellos: PyEphem.

PyEphem es un módulo de Python creado alrededor de la librería libastro (algo que en programación se llama wrapper), que contiene multitud de funciones de cálculo astronómico y es la parte central del magnífico software XEphem. PyEphem permite calcular efemérides y posiciones de astros con gran precisión, teniendo en cuenta efectos como la precesión y nutación de la Tierra, o la refracción atmosférica. No voy a entrar a describir las clases y funciones de la librería, porque para eso está la página oficial. Pero sí voy a mostrar un ejemplo de lo que se puede hacer con PyEphem y unas pocas líneas de Python.

Si observamos la posición del Sol en el cielo cada día a la misma hora y la representamos en un gráfico, al cabo de un año obtendremos una figura con forma de ocho conocida como analema. La razón de que se forme esta figura está en la inclinación del eje de la tierra frente al plano de la eclíptica, y en que la Tierra avanza con velocidad variable en su órbita ligeramente elíptica. El Sol se encuentra en los extremos superior o inferior de la analema en el solsticio de Verano y de Invierno, respectivamente.

El siguiente código en Python calcula el analema que sería visible en 2008 desde mi casa, observando el Sol cada día a las 12 horas de tiempo solar medio. El analema es dibujado en una gráfica utilizando el módulo matplotlib/pylab.


#!/usr/bin/python

import ephem
from pylab import *

obs = ephem.Observer()
obs.long = '-5:44:16'
obs.lat = '43:29:4'
hour = 12 - ephem.degrees(obs.long)/pi*12
obs.date = (2008, 1, 1, hour)

sun = ephem.Sun()
sun_alt = []
sun_az = []

for i in range(365):
sun.compute(obs)
sun_az.append(sun.az*180/pi)
sun_alt.append(sun.alt*180/pi)
obs.date = obs.date + 1

plot(sun_az, sun_alt, '.')
axis('equal')
grid()
show()

En primer lugar se crea el objeto obs, que representa al observador, y se fijan parámetros: latitud, longitud y fecha inicial. A continuación se crea el objeto Sol y un par de listas vacías donde después se guardarán las coordenadas (azimut y altura) del Sol para cada día. Después un bucle ejecuta el cálculo de la posición para cada día del año y va rellenando las listas. Por último se crea la gráfica y se representa. El código es sencillo de entender incluso sin haber programado nunca en Python. Lo más complicado quizá sea el cálculo de la hora de observación a partir de la longitud del lugar. Hay que tener en cuenta que PyEphem trabaja únicamente con tiempo universal.

Aquí el resultado:


Este es sólo un educativo ejemplo de lo que puede hacerse con este potente módulo. A cualquier aficionado a la astronomía y a la programación se le pueden ocurrir otras aplicaciones más útiles.
Coninua...

martes, 17 de junio de 2008

Python

Dos son los eventos que han hecho que vuelva a sentir mi antigua fascinación por la informática: La transición definitiva a GNU/Linux y el descubrimiento de Python. Si el hecho de usar Linux me ha devuelto la pasión por explorar y manipular los entresijos del sistema operativo, Python ha hecho que la programación vuelva a ser un placer.

Aprendí mis primeros conceptos de programación con unos doce años, en la época del Spectrum y del Amstrad CPC, leyendo libros de Basic para niños. Después de aqueños primeros pasos he programado muchas líneas en C y C++, unas cuantas más en Pascal, Visual Basic, Matlab y PHP, y unas pocas en Java, Javascript, Bash, y diferentes ensambladores. Quizá no haya llegado a conocer suficientemente bien algunos de estos lenguajes como para poder emitir un juicio de valor, pero en mi opinión ninguno de los anteriores lenguajes puede proporcionar nada parecido a la experiencia de programar en Python.

Python fue creado en 1990 por Guido van Rossum, quien bautizó a su creación en honor al grupo cómico Monty Python. En los últimos años el lenguaje está teniendo cada vez más seguidores, habiendo sido declarado "lenguaje de mayor crecimiento del 2007" según el índice TIOBE. Actualmente, según este índice, Python sigue creciendo en popularidad, mientras los gigantes C, C++ y Java van cayendo mes tras mes.

Python hace fácil y divertido lo difícil y tedioso, algo que Guido refleja en su lema "Computer Programming for Everybody". Pero no menos importantes son otras de sus características: es libre y gratuito, es multiplataforma y cuenta con una enorme cantidad de módulos que simplifican cualquier tarea existente, desde la programación de aplicaciones gráficas a la robótica.

Python tiene algún detalle que puede resultar chocante al principio, como el hecho de que los tabuladores sean significativos, pero uno enseguida se acostumbra y se da cuenta de que la sintaxis de Python es mucho más natural y fácil de recordar que la de la mayoría de lenguajes. Si después de escribir unas cuantas líneas de Python aún no te has quedado completamente prendado, puede ser por alguna de las siguientes razones:

  • Eres un auténtico incondicional de Perl o de Ruby y no piensas cambiar. Punto.

  • Aún no has escrito suficiente código. Prueba a escribir algunas líneas más.

  • Quizá al fin y al cabo la programación no sea lo tuyo. Prueba con Visual Basic.

Vale, quizá sea demasiado categórico en mis afirmaciones. No soy en absoluto un hacker de la programación, mis funciones no suelen funcionar a la primera y tengo que pensarme dos veces qué límites aplicar a un bucle for antes de escribirlo. Después de todo no soy informático, así que quizá los programadores no deban tomarse muy en serio mis palabras. Pero a quien sí deberían tomar en serio es a un hacker tan legendario como Eric S. Raymond, quien habla muy sesudamente de sus impresiones acerca de Python en su artículo Why Python?

De verdad. Si te interesa la programación y aún no lo has probado, hazlo. Si usas GNU/Linux o Mac OS ya lo tendrás instalado. Sólo tienes que abrir un terminal y escribir "python". Si usas Windows tendrás que descargártelo de www.python.org.
Coninua...