Búsqueda personalizada

28 diciembre 2007

De radioblogclub a DEEZER

Lo siento mucho por Radioblogclub, quizá todavía haga alguna visita, pues la ventaja de Radioblogclub es que reunían playlist personales y podías descubrir canciones sobre un mismo tema. Sin embargo, creo que Deezer también lo puede hacer.

Explico lo que aquí voy a contar.

Hace unos meses hablaba sobre Radioblogclub como una muy buena página web sobre streaming de música, organizada por playlist personales, con búsqueda de temas y fuerte diseño de presentación.

A finales del 2006 (si no me equivoco), apreció Blogmusik, un skin al estilo Ipod que trabajaba como buscador de canciones y, si no se equivoca enrique en su post, también hacía streaming directamente de Radiobloclub.

Al parecer, a lo largo de este año se ha hecho fuerte y ha dejado de hacer búsquedas para, directamente albergar sus canciones, todo esto, como puede verse en este comunicado, de forma legal (al parecer, una parte de lo que recaudan a través de la publicidad, va destinado a la causa SACEM, o SGAE francesa).

Sea como sea, el sitio ha evolucionado y ahora pasa a llamarse Deezer.

Su estética es muy muy atrayente, mucho más que la de Radioblogclub, al más puro estilo iTunes.

Pero eso no es todo, su modo de reproducción aleatorio, a través de la "Smart Playlist", de la capacidad de crear playlist personales (igual que Radioblogclub) y, lo más importante, para mí, creo, y que Radiobloclub lo hacía de una forma muy incómoda (insertando en páginas personales scripts de reproducción de listas sobre las que un usuario debía apañárselas para alojar los temas que sonarían en ellas), es la ventaja de poder subir tus mp3 para hacer crecer la base de datos de Deezer. Repito, todo esto, de forma legal.



Habréis oído hablar de GoEar, de Pandora (Genoma Project Music), de Screamer Radio, del ya mencionado y alabado Radiobloglcub, y otros tantos sitios para escuchar música online pero, creo que coincidiréis conmigo una vez que veáis Deezer. Me parece el mejor.

free music



Adjunto un buen argumento que encontré en el blog de Enrique sobre el uso de estos servicios:

"Esperaba y deseaba un servicio así: cuando la tendencia y la lucha apuntan a la descarga, el sentido común dice que lo realmente interesante no es bajar música sino escucharla.

Yo no quiero POSEER música o pelis. Sólo quiero poder acceder a ellos cuando me plazca."


Y esque, más allá de lo que puedan pensar las grandes discográficas, el negocio no está sólo en vender millones de discos, creo que esta es una muy buena opción de dar a conocer artistas y obtener beneficios de forma diferente.

11 diciembre 2007

Snow?, dónde estás?

Con todo este lío que tiene el clima últimamente creo que la nieve ya no recuerda cuándo debe hacer acto de presencia.
Se va echando de menos, y es que por estas fechas, hace ya tres años, disfrutábamos en Andorra de unos paisajes nevados como éste


A día de hoy, exactamente el viernes pasado, las nieves no han visitado todavía los picos más altos de la sierra de Guadalajara (abajo, Pico San Totis).


Esperemos que entrado el año nuevo podamos disfrutar igual que lo hacen los chicos de Snowbored.



Por cierto, que un buen vídeo de Snowbored puede verse a través de Joost, en el canal Mpora. Para aquellos que no sepan que es Joost, sabed que es una de las mejores televisiones en internet que existen, con un cliente muy muy atractivo y una programación muy amplia (de momento, casi todos los canales en inglés).



Os dejo aquí dos buenos temas que suenan en dicho documental.

The Rat. (Walkmen)



Wrong Again. (Moving Units)

07 diciembre 2007

Google Book

Me disponía a cerrar la jornada, pero en una última visita a la página dirson, estuve leyendo la noticia sobre manos escaneadas de los trabajadores de google.

Al final, como ocurre muchas veces, encadenas una serie de sitios en internet y acabas haciendo algo muy distinto de lo que empezaste. Esto es un ejemplo.

Hoy hablo de Google Book, o el buscador de libros que tiene Google (y ¿qué no tienen? ...)

Muchos ya lo conoceréis, para aquellos que no lo hayan descubierto todavía decir que este motor de búsqueda recorre unos 6 millones de ejemplares digitalizados (a día de hoy) mediante una tecnología propia para devolver los resultados de la búsqueda en décimas de segundo.

Lo más interesante es que esta búsqueda nos devuelve dos tipos de ejemplares. Unos protegidos por copyright, y otros que son de libre publicación. Aún así, para los que están protegidos, la lectura puede realizarse de forma parcial, pudiéndonos hacer una idea de la temática del mismo, algo muy estudiado si tenemos en cuenta que las primeras páginas pueden enganchar a un lector, y, dado que el buscador ofrece la opción de venta del ejemplar, las editoriales ven cada vez más esta herramienta, no como un sistema de pérdida de mercado, como se pensó al principio, sino todo lo contrario.

Aparte de esto, la estética del buscador está muy cuidada, podemos realizar la búsqueda, siguiendo la misma línea que tanto caracteriza a Google:


La presentación de resultados es también muy atractiva:


Su lectura a pantalla completa:


Y las herramientas de selección de zonas de libros (no protegidos) también es muy útil a la hora de realizar trabajos, exposiciones sobre autores... Véase Don Miguel de Cervantes:

No hay textoPRIMERA PARTE DEL INGENIOSO HIDALGO DON QUIJOTE DE LA MANCHA CAPITULO PRIMERO Que traia de la condicion y ejercicio del famoso hidalgo D Quijote de la Mancha En un lugar de la Mancha de cuyo nombre no quiero acordarme no ha mucho tiempo que vivía un hidalgo de los de lanza en astillero adarga antigua rocin Пncо у galgo corredor Una olla de algo mas vaca que


Aquí podéis ver la lectura de Don Quijote de la Mancha.

27 noviembre 2007

¿El futuro del Cine? - Immersive Media

Hace unos días hablaba Wolo de la cantidad de aplicaciones que tenía Microsoft en la sombra, bajo la etiqueta de "Lab Applications".

Una de las que más me llamó la atención fue "Photosynth", en proceso de desarrollo. Esta aplicación realiza modelos en tres dimensiones partiendo de un estudio semántico de multitud de imágenes sobre un determinado lugar u objeto, analizando los puntos comunes entre ellas, para extraer las distancias y referencias espaciales.

Pues bien, este proyecto novedoso me recordó a otro que ya había visto hace tiempo pero al que no presté demasiada atención hasta hace unos días, tras recordar que el contrato que tenía Immersive Media con Google llegaba a su fin, teniendo presente que Google terminará de desarrollar la misma tecnología, seguramente, en breve.

Pero... ¿de qué proyecto se trata? y... ¿cómo puede afectar esto al cine?

El proyecto Immersive Media permite, a través de una tecnología desarrollada para tal efecto, capturar vídeo de los 360º que rodean a la cámara. Es decir, tenemos una visión global de todo lo que nos rodea.

Es, sin duda, una tecnología innovadora, pero joven. Pero el tiempo decidirá y entonces sabremos si los directores cinematográficos optan por adaptar sus películas a esta tecnología.

He aquí un ejemplo.

Ajax Simple


Vamos a ser breves, concisos y prácticos.


Ajax = Asynchronous JavaScript And XML (JavaScript asíncrono y XML), según Wikipedia.

Lo más útil = XMLHTTPRequest.

¿Qué es? Es una clase javascript con los siguientes atributos:

  • readyState.
  • responseText.
  • responseXML.
  • status.
  • statusText.

Quedémonos con: readyState y con responseText.

Veamos readyState: Define el ciclo de vida por el que pasa una petición:



Gracias a estos valores, disponibles en readyState, podremos tomar una decisión teniendo en cuenta el valor de este atributo.

Ahora veamos responseText. Cuando hacemos una petición a una URL determinada, ésta pasará por los anteriores estados. Cuando readyState = 4, (petición completada), el atributo responseText contendrá los datos que existan en dicha URL.

Terminando con un ejemplo práctico...

Estoy en la bandeja de Gmail. Hagamos dos divisiones. Por un lado todo el menú y entorno Gmail (zona verde). Por otro la zona que deseamos actualizar (zona roja) cuando vayamos a leer un email, sin recargar la zona verde.



¿Cómo operaríamos?

bajo javascript crearíamos una función que se llamase al hacer click sobre un email a leer y que crease un nuevo objeto XMLHTTPRequest:

mipeticion = new XMLHttpRequest ();

Tras esto, debemos realizar la petición de lectura de nuestra URL, pongamos, por ejemplo, un archivo .html local en nuestro servidor:

mipeticion.open('GET','miarchivo.html',true);

siendo 'GET' el método de petición, 'miarchivo.html' el archivo a cargar y true establece el modo de forma asíncrona.

Finalmente, y tras esto, bastaría con esperar a que el estado llegase a completado. El comportamiento en cada cambio de estado viene definido por el atributo "onreadystatechange" y suele asignarse a una función que comprueba en qué estado está nuestra peticion. Así, mientras estamos en 1 (loading), podemos mostrar la típica etiqueta "Cargando..." En otras palabras:

mipeticion.oreadystatechange = function(){
if (mipeticion.readyState == 1) { mostramos la etiqueta}
else{ if (mipeticion.readyState == 4) {cargamos la página dentro del div. "contenedor"}


Esta última parte se llevaría acabo mediante la típica asignación (o de forma similar):

document.getElementById('contenedor').innerHTML =mipeticion.responseText;

Debemos decir que lo anterior expuesto es una idea muy simple de la técnica Ajax y, sin duda, un buen manejo de la misma requiere leer mucho y estudiar muchos ejemplos.

21 noviembre 2007

Trabajos de literatura

Hace ya unos ocho años (creo...) que cursé bachillerato.

Cursé la rama de bachillerato tecnológico pero, aún así, el nivel de lengua y literatura que teníamos en el instituto era superior al nivel que tenían los de la rama de humanidades o ciencias sociales. No porque el plan de estudios fuera distinto, sino porque teníamos un profesor que daba la clase muy bien, pero que también exigía mucho, algo que, años más tarde, agradezco.

Entre esas exigencias se encontraba la presentación de dos trabajos por trimestre, aparte de multitud de redacciones o ejercicios a lo largo del curso. Todavía recuerdo las noches que tuve que acostarme tarde para acabar los manuscritos.

Pues bien, hace unos días, tras llevar a cabo una escrupulosa reordenación de los archivos del pc, volví a leer alguno de esos trabajos y pensé en que quizá a algún joven alumno de bachillerato pueda servirle de guía (al estilo rincondelvago). Digo esto porque sé que ningún trabajo descargado de internet servirá de forma directa como entrega a un profesor. Pero sí que sirve el contenido, lo que en él se dice, cómo se dice y lo que se puede aprender de él. Y esto es mejor que no hacer nada.

Dicho esto, saco a la luz algunos de los típicos trabajos que suelen pedirse en bachillerato.

19 noviembre 2007

El minuto 23



Hace unos días estuve viendo El número 23, una película que habla sobre la obsesión de un hombre, convertida en paranoia, al ver cómo el número 23 parece perseguirle hasta el punto de estar leyendo, en un libro - El número 23 - la descripción de su propia vida.

Ahora se me ocurre a mí perder, seguramente, 23 minutos en pegar este post con la excusa de ocupar, de aquí en adelante, alguna entrada con el mismo sentido.

Me explico. A continuación insertaré 1 minuto de audio correspondiente al minuto 23 de una película elegida al azar.



La pregunta es: ¿De qué película se trata?

El premio: Saber que has sido el primero en contestar bien.

Mi premio: perder 23 minutos.

Actualización: Misterio resuelto. La película era Stay (Tránsito), como muy bien adivinó gizer20.

08 noviembre 2007

Súmate al apagón

Al igual que ya sucedió hace aproximadamente un año, y "coincidiendo con la presentación del Informe científico de las Naciones Unidas sobre cambio climático durante la semana del 12 al 17 de noviembre en Valencia", se vuelve a convocar un apagón con el lema "Frente al cambio climático: Actúa Ya".

La convocatoria está prevista para el día 15 de Noviembre de 2007 de 20.00 a 20.05 con el fin de "llamar la atención de la sociedad y de las instituciones sobre la necesidad de tomar medidas urgentes ante esta grave amenaza".

Los efectos positivos de ese apagón, como ya vimos en el anterior, pasarán prácticamente desapercibidos, pero lo que no pasará desapercibido será el gran simbolismo que este gesto tiene y cómo debemos concienciarnos cada vez más de que debemos cambiar nuestra forma de actuar, tanto a nivel personal como institucional, en lo que se refiere al tema medioambiental.

07 noviembre 2007

Ellos hablan de gphone, hablemos nosotros también.

Y digo hablemos porque seguramente Wolo hablará, y muy pronto, de él.

Puede haber nacido Iphone. Puede haber habido un remake de Ipod a Ipod touch. Y puede que yo no haya hablado sobre ninguno de ellos.

Lo que no puede ocurrir es que se oigan rumores, se confirmen los rumores, se espere su salida a mediados del 2008 y yo no diga nada.


Debemos hablar porque hay que reconocer que Google sabe hacer las cosas bien, por no decir muy muy bien. Ha ido creciendo a base de proyectos novedosos, en silencio, mostrándolos muchas veces a pocos usuarios privilegiados hasta estar seguros de que serían productos aceptables. Sería inútil nombrarlos aquí a todos, pero lo que está claro es que cada vez más gente espera con inquietud nuevas salidas a escena. Cada vez la espera es más impaciente. Sin duda, ¿Gphone? será una de esas esperas.

Debemos decir que Gphone se basa en tecnología propia de Google sobre la que ha estado trabajando desde que compró Android. Esta tecnología, según versa en su website, se fundamenta en el uso de aplicaciones libres y, de hecho, el corazón del teléfono será un núcleo linux con JVM. Debemos decir que se confirma a T-mobile como la operadora exclusiva en Estados Unidos y que posiblemente sea Orange aquí en España.

Dicho esto, ¿por qué motivo ésta será una espera impaciente?

Lo será para nosotros, pues reunirá la tecnología que estamos acostumbrados a utilizar en un único dispositivo y, seguramente, aprovechándonos de unas condiciones bastante razonables (o eso esperamos). Si tenemos en cuenta que tienen varias patentes sobre publicidad georeferenciada ( Method and system to provide wireless access at a reduced rate, Method and system to provide advertisements based on wireless access points, Method and system for dynamically modifying the appearance of browser screens on a client device), sus ingresos a partir de esa fuente supongo será compartida con las operadoras, redundando en nuestro bolsillo.

Lo será para ellos. Por un lado, porque el uso de software libre permite tener grupos de desarrolladores desinteresados (o interesados, según se mire), que generan aplicaciones a su medida (y eso siempre es útil, pues el usuario es quien sabe lo que quiere). Estas aplicaciones, al igual que pasa con los widgets de IGoogle, serán componentes esenciales en el dispositivo.

Por otro lado, sin duda, el papel que tendrá este dispositivo como arma de estudio social. Si tenemos en cuenta que Google es información, saber qué quieren sus usuarios es básico. Gphone brinda al usuario información pero también se la extrae: localización, búsquedas, llamadas, frecuencia de llamadas...

Hasta qué punto va a ser clave este nuevo servicio en Google. Sólo podemos vaticinar, pero la tendencia en el precio de las acciones de Google (que seguro comente Wolo) nos debe dar cierta idea.



Actualización: una vez presentado Android, la idea de un dispositivo físico o un sistema de telefonía con exclusividad hacia alguna operadora, de momento, queda descartado.

25 octubre 2007

Jugando con HDR

Hace algún tiempo que vengo leyendo los interesantísimos consejos que ofrece la página dZoom sobre fotografía. En ella puedes aprender técnicas muy buenas para mejorar tus capturas y evitar así que éstas caigan dentro del conjunto de fotos que a diario se toman sin sentido ni forma.

Entre esas técnicas, una muy llamativa e interesante se llama HDR (High Dynamic Range). Resumiré diciendo que este método se basa en unir tres fotografías idénticas en las que lo único que varía es su luminosidad (habremos variado el valor EV en nuestra cámara). Desde luego que yo no soy el experto, pero en dZoom nos hablan de esa técnica muy bien.

Tan sólo muestro el efecto que yo (un inexperto) puede conseguir tonteando un poco.

Las tres tomas serían éstas:




Y he aquí el resultado de aplicar la técnica de HDR:






Pero si queréis ver buenas fotos en las que se usa esta técnica, un experto es Valpopando. He aquí su impecable trabajo:


12 octubre 2007

Secure Digital 16 Mb

No me gusta añadir entradas al blog carentes de contenido. Muchas veces me topo con bitácoras repletas de post, actualizadas a diario, pero que tan sólo se reducen a pensamientos exteriorizados muy muy livianos, algo parecido a las miles de entradas que puede tener twitter en un día cualquiera, o algo parecido al post que estoy iniciando ahora mismo. Por ese motivo, no me gusta este post.

El caso es que el hecho en sí se merecía una entrada.

Y es que cuando 1 Gbyte se queda pequeño, cuando blu-ray y hd-dvd entran ya en nuestras casas, entonces llega Canon y me regala, junto con la Powhershot 720IS, una tarjeta de memoria SD de 16MB. Está claro que es algo común en las cámaras de fotos, no como memoria externa, pero sí interna, esos 16 ó 8 MB que suelen implementar. Tú te debes ocupar de ampliar su capacidad e ignorar esa "caché" inútil.

Hé aquí la pieza de museo:

03 octubre 2007

Sé famoso. Face Morphing - Sqirlz Morph

En un post anterior enlazaba con una página que hacía un tratamiento automático de rostros para hacernos una idea de cómo seríamos si fuésemos de otra raza (o incluso de otra especie). Pues bien, lo que traigo ahora es una herramienta que he encontrado en la red, Squirlz Morph, y cuya funcionalidad y características las presentan muy bien en este blog.

La aplicación, en resumen, es capaz de hacer transiciones entre imágenes haciendo uso de puntos de referencia en ambas instantáneas. Así, podríamos hacer la cuadratura del círculo (recuerdos del bachillerato) a través de este programa.

Sin embargo, y he aquí lo más interesante, es que al aplicar esta herramienta sobre rostros nos permite fusionar rasgos de dos personas dando como resultado una mezcla muy llamativa. La transición puede guardarse tanto en .gif como en formato vídeo o incluso obtener la fotografía de la mezcla en diferente grado de "parentesco".

Es muy interesante ver los resultados de mezclar nuestro "careto" con personajes conocidos y, porqué no, imaginarnos en sus papeles más emocionantes.

Como muestra, mi jeta con:




29 septiembre 2007

Preguntas de lo más curiosas


Si sabéis lo que es Yahoo Respuestas sabréis de lo que hablo. Para todos los demás, sabed que Yahoo Respuestas es un website social (web2) donde los usuarios lanzan sus preguntas y otros intentan resolver las respectivas dudas, premiándolos con unos estimulantes puntos y niveles que te dan respeto y credibilidad frente a los demás.

Sin duda no es nada nuevo y lleva bastante tiempo funcionando, y bastante bien.

El caso es que basta con pasear por la página durante 5 minutos, leer alguna pregunta y asegurarnos alguna carcajada viendo las cuestiones que a algunas personas se le pasan por la cabeza.

He aquí algunas (respetos al máximo):



Y así podría continuar y mucho...

27 septiembre 2007

Cámara Digital - Compara mucho antes de elegir


Hace algún tiempo escribí un post en el que hablaba sobre qué puntos debíamos considerar a la hora de adquirir una cámara fotográfica digital.

Ahora vuelvo con éste para matizar aquello que dije sobre "Olvídate de comprarla, sin probarla, por internet".

Matizo el hecho de que una cámara podemos comprarla sin probarla siempre y cuando podamos ver sus resultados y, claro está, la tienda nos ofrezca la posibilidad de devolución en caso de no estar conforme. En este sentido Ebay no es una opción muy buena, me estoy refiriendo a tiendas en Internet situadas en España, que ofrecen unos precios bastante bajos en comparación con los centros comerciales.

Pero si optamos por comprar sin probar debemos realizar una serie de comprobaciones y comparativas de modelos que nos ofrezca la seguridad de que estamos haciendo la compra acertada.

Para ello en esta página (quesabesde) nos ofrecen multitud de evaluaciones de modelos diferentes, de casi todas las marcas, con precios en el mercado (siempre los más bajos), opiniones de los consumidores, imágenes de prueba, manuales, videoreportajes sobre las mismas, y un largo etcétera.

Atendiendo a una serie de características que nos llamen la atención podremos buscar todos los modelos que se asemejen y realizar comparativas entre ellas.

Finalmente, y una vez que tengamos en mente unas cuantas, debemos pasearnos una y otra vez por esta otra página (flickr), en la sección de cámaras, para poder comprobar los resultados conseguidos por miles de personas sobre un modelo determinado. Ésta es la parte más importante, a mi juicio, pues es donde puedes ver claramente el potencial de una cámara, de manos de profesionales, aficionados o usuarios iniciados.

22 septiembre 2007

Control Webcam - Arduino & Linksys

Mas proyectos en: http://eduardomarin.es/node/2

Nota: Versión revisada con servidor thttp + php aquí.

Hacía ya casi un año que no volvía a trastear con la placa Arduino y con el router Linksys, desde que monté el display en este último.

Pero debe ser la presión psicológica que nos ofrece la vuelta a los libros la que haya hecho que me haya puesto a matar el tiempo entre circuitos y código.

Idea--

La idea de este proyecto es recrear los sistemas de control de cámaras de seguridad que pueden verse en muchos centros comerciales o locales. Desde luego, la estética que suelen tener estos dispositivos (una semiesfera de cristal ahumado en cuyo interior gira la cámara) dista mucho de la que yo he conseguido, pero la funcionalidad se aproxima bastante.

Además, dado que el control de Arduino se realiza a través del router Linksys WRT54G nos ofrece la posibilidad de operar el sistema remotamente a través de un cliente web, que es lo que aquí mostraremos.

Así, resumiendo, tenemos una Webcam (que realiza streaming) y que está montada sobre un "brazo" compuesto por dos servomotores que son controlados por Arduino. Éste a su vez recibe a través del puerto serie que instalamos en el router Linksys las señales procedentes del cliente Web que envía la señal desde cualquier punto de Internet.



Montaje "Hardware"--

Aunque el movimiento conseguido no es el más óptimo, pues en ciertos ángulos se pierde la orientación espacial, se consiguen resultados satisfactorios mediante el montaje que hemos realizado. Hemos partido de dos servomotores para conseguir dos planos de rotación. El primer plano lo forma el servomotor que va acoplado directamente a la Webcam en su centro de giro, así, tendremos una panorámica de 360º sobre la horizontal. El otro servomotor va acoplado perpendicularmente sobre el anterior servo perimitiendo hacer giros de 360º sobre la vertical, barriendo así una esfera casi completa (por limitaciones de cableado).


Circuitería--

Señalamos que la parte principal se encuentra en torno a Arduino. Así, tendremos un cable "serie" que comunica a éste con el router (y que puede verse una explicación más detallada en este otro post), y la conexión que hemos tenido que realizar entre Arduino y los servomotores. El esquema puede verse en la siguiente imagen:



Código en Arduino--

Respecto al código que se implementa en Arduino hay que decir que parte se basa en esquemas y proyectos que ya realicé con anterioridad, sobretodo a la hora de comunicarse el router con la placa base. Aún así resumiré los conceptos fundamentales.

Por un lado, el router Linksys dispone de un corazón basado en linux y, por lo tanto, ofrece un shell y un intérprete de shell script que hace muy flexible y potente su uso. Además gracias al puerto serie que instalamos podemos enviar a Arduino flujos de bytes con significado subjetivo. En nuestro caso, y he aquí el cambio respecto a post anteriores, tan sólo tenemos que mover dos pines (que se asocian a los dos servomotores). Por otro lado, tengo que señalar que los servomotores han perdido la funcionalidad de posicionamiento, es decir, tuve que usarlos para rotación contínua y no he querido molestarme en volver a abrirlos para recuperarlos (aunque eso hubiese sido lo mejor). Debido a esto sus ángulos de posición no pueden controlarse con exactitud y su movimiento ahora se basan en tiempo de rotación. Por lo tanto, Linksys debe mandar a Arduino información sobre el tiempo que estarán rotando. Por conveniencia usaremos la señal Xi0000 para referirnos al servomotor X que girará en la dirección i (izquierda) y lo hará durante un tiempo de 0000 milisegundos (o microsegundos?? ya no recuerdo). Por lo tanto, en el router habrá un programa en shell script que se encargará de enviar a través del puerto serie dichas codificaciones.

En Arduino existe el siguiente código para manejar tanto la señal proveniente del puerto serie como la necesaria para manejar los servomotores:



#include "WProgram.h"

void pulseon(int rin, int pulso);

/* Adquisici\u00f3n de datos y control de salidas para

linksys WRT45GL a trav\u00e9s de puerto serie */



//Definimos las variables necesarias

int i,valor,valoraux,digito,pin,retraso;

byte dato,decenas,unidades,sentido,millares,centenas,motor;

int x = 13;

int y = 12;



void setup(){

for (i=2;i<=13;i++){

pinMode(i,OUTPUT);

}

Serial.begin(9600);

}

void pulseon (int rin, int pulso){

digitalWrite(rin,HIGH);

delayMicroseconds(pulso);

digitalWrite(rin,LOW);

}

void loop(){



//Comprobamos si llega se\u00f1al del router:

while(! Serial.available()){

}

motor=Serial.read();

if (motor=='X' || motor=='Y'){

while(! Serial.available()){

}

sentido=Serial.read();



while(! Serial.available()){

}

millares=Serial.read();

//eco de comprobacion serialWrite(decenas);

pin=(millares-48)*1000;



while(! Serial.available()){

}

centenas=Serial.read();

//eco de comprobacion serialWrite(decenas);

pin=pin + (centenas-48)*100;



while(! Serial.available()){

}

decenas=Serial.read();

//eco de comprobacion serialWrite(decenas);

pin=pin + (decenas-48)*10;



while(! Serial.available()){

}

unidades=Serial.read();

//eco de comprobacion serialWrite(unidades);

retraso=pin+(unidades-48);

if(motor=='X'){

if(sentido=='d'){

for (int i=0; i<= (retraso); i++){

pulseon(x,1700);

delay(19);

}

}

else{

for (int i=0; i<= (retraso); i++){

pulseon(x,1300);

delay(19);

}

}

}

if(motor=='Y'){

if(sentido=='d'){

for (int i=0; i<= (retraso); i++){

pulseon(y,1200);

delay(19);

}

}

else{

for (int i=0; i<= (retraso); i++){

pulseon(y,1513);

delay(19);

}

}

}

}



}






Una vez que los servomotores responden convenientemente a las señales que envía el router ya podemos trabajar algo más el interfaz con Linksys para hacerlo más intuitivo y atractivo.

Una de las ventajas de nuestro router es la de ofrecernos un servidor web con una puerta trasera a linux. Así, existe una comunicación entre nuestra web y nuestro linux totalmente transparente.

La idea del interfaz es visualizar las imágenes de la webcam y aportar los controles básicos para mover la cámara. Intuitivamente aparecen cuatro movimientos (arriba, abajo, derecha, izquierda) que implementaremos con cuatro simples botones. Como nuestro objetivo no es crear una página perfecta, usaremos html básico con un poquito de javascript que nos ofrece el programa que nos realiza el streaming de vídeo. Cada vez que oprimamos uno de los cuatro botones nos refrescará la página (he aquí una solución poco elegante) y ejecutará el código shellscript que mueve los servomotores.

Así, el código de nuestra página sería el siguiente:

<HTML><HEAD><BODY>

<script LANGUAGE="JavaScript">

<!--

function Mostrar(boton)

{

sc.executeScript("echo Xi0001>/dev/cua/1");

return true;

}

//-->

</script>



<div align= center><h1>Control Cámara Web</h1></div><br></br><br></br>



<div align=center>

<table>

<tr>

<td colspan="3"><div align=center>

<form method=get action="/cgi-bin/arriba.sh">

<input type="hidden" name="IsisScript" value="./prueba.sh">

<input type="submit" name="Arriba" value=" Arriba ">

</form>

</td>

</tr>

<tr>

<td><form method=get action="/cgi-bin/izquierda.sh">

<input type="hidden" name="IsisScript" value="./prueba.sh">

<input type="submit" name="Izquierda" value="<--">

</form>

</td>

<td><div align= center><img src="loading.jpg" class="webcam_in_frame" id="webcam1" onmousedown="PTZMouseDown1(event)" width="320" height="240" alt="webcam" /></div></td>

<td><form method=get action="/cgi-bin/derecha.sh">

<input type="hidden" name="IsisScript" value="./prueba.sh">

<input type="submit" name="Derecha" value="-->">

</form>

</td>

</tr>

<tr>

<td colspan="3"><div align=center><form method=get action="/cgi-bin/abajo.sh">

<input type="hidden" name="IsisScript" value="./prueba.sh">

<input type="submit" name="Abajo" value=" Abajo ">

</form>

</div></td>

</tr>



</table></div>





<script type="text/javascript">

<!--

errorimg1= 0;

document.images.webcam1.onload = DoIt1;

document.images.webcam1.onerror = ErrorImage1;

function LoadImage1()

{

uniq1 = Math.random();

document.images.webcam1.src = "http://xxxxx/cam_1.jpg?uniq="+uniq1;

window.status = "[powered by webcamXP]";

}

function PTZMouseDown1(e)

{

var IE = document.all?true:false;

var x,y;

var myx,myy;

var myifr = document.getElementById("_iframe-ptz");

tp = getElPos1();

myx = tp[0];

myy = tp[1];

if(IE){

x = event.clientX - myx + document.body.scrollLeft;

y = event.clientY - myy + document.body.scrollTop;

} else {

x = e.pageX - myx;

y = e.pageY - myy;

}

//alert(x + " :: " + y);

if (myifr != null) myifr.src = "http://xxxxx/ptz?source=1&moveto_x=" + x + "&moveto_y=" + y +"";

return true;

}

function getElPos1()

{

el = document.images.webcam1;

x = el.offsetLeft;

y = el.offsetTop;

elp = el.offsetParent;

while(elp!=null)

{ x+=elp.offsetLeft;

y+=elp.offsetTop;

elp=elp.offsetParent;

}

return new Array(x,y);

}

function ErrorImage1()

{

errorimg1++;

if (errorimg1>1){

document.images.webcam1.onload = "";

document.images.webcam1.src = "http://www.darkboard.net/webcam/offline.jpg";

}else{

uniq1 = Math.random();

document.images.webcam1.src = "http://xxxxx/cam_1.jpg?uniq="+uniq1;

}

}

function DoIt1()

{

errorimg1=0;

window.setTimeout("LoadImage1();", 70);

}

//-->

</script>

</BODY>

</HTML>



Y el código de uno de los botones (arriba) sería este otro:


#!/bin/sh

echo Xd0001>/dev/cua/1

echo Content-type: text/html

echo ""



/bin/cat << EOM

<HTML>

<HEAD>

<META HTTP-EQUIV="Refresh" CONTENT="0; URL=/Mis_Webs/webcam/webcam.html">

</HEAD>



EOM




Podéis ver fotos:





Y vídeo: