Búsqueda personalizada

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:


20 septiembre 2007

Vivir en dos zonas horarias

Hace unos días, poniendo en hora el reloj aprovechando la multitud de páginas que te ofrecen la hora de los relojes atómicos, me topé con un mapa, como el que se muestra al final del post, en el que se podían ver las diferentes horas que se dan en las distintas zonas horarias de Europa:

Pues el caso es que, viendo cómo algunas zonas cercanas tienen dos horas diferentes, me pregunté cómo viviría la gente que esté justo en el límite de dos usos horarios. Por ejemplo, Portugal tiene una hora menos que España. En la frontera, la gente tiene el reloj en hora a la mitad? o adelantado o retrasado una hora? La televisión la verán dos veces... Son cuestiones estúpidas, pero para mí no deja de tener misterio... je je.


Materialismo...

Esta mañana he visto dos anuncios y un artículo que me han hecho pensar y me han impulsado a escribir este post.


El primero ha sido un artículo que he visto en una revista. No recuerdo el nombre de la misma, pero la estuve ojeando mientras estaba en la sala de una notaría. Su contenido, el de la revista, trataba sobre aspectos legales, notariales, fiscales... y era adecuado al sitio donde la hallé. Pero lo que me llamó la atención fue un artículo que hablaba sobre el Calentamiento Global. Sí ya sé que es un tema muy tocado, que continuamente se habla sobre ello, pero lo que despertó en mí fue lo materialistas que podemos ser incluso en situaciones tan graves y serias como puede ser ese. En ese artículo no se hablaba del mal que sufre nuestro planeta en consecuencias que atañen al mismo sino en repercusiones que afectan más a nuestro bolsillo, a las arcas de los estados. Se hablaba sobre PIB, inversiones extra para paliar daños, daños en mercados vulnerables... pero en ningún caso se hablaba sobre especies en peligro, pérdida de paraísos naturales, desplazamiento o exilio de poblaciones, nada. Entiendo que he ido a escoger una revista donde cualquier información que en ella se encuentre siempre irá enfocada hacia ese punto de vista pero, en el fondo, casi todo el mundo mira por el mismo agujero, el que deja entrever el dinero.

Respecto a los dos anuncios de televisión, el primero de ellos también se refiere al planeta, a su cuidado y a cómo puedes proteger algo más el mundo en el que vives si compras ese coche. Es una lástima que algo tan serio se utilice como técnica de "márketing" para atraer a miles de personas confundidas con la cantidad de mala información que se ofrece sobre este tema, el del "Calentamiento Global". Es una forma muy cómoda y sencilla, tanto para el fabricante como para el cliente, de lavar sus conciencias en lo que atañe a este problema. Yo, el fabricante, rebajo (que no anulo) un ligerísimo porcentaje las emisiones de CO2 por vehículo fabricado y me permito añadir un distintivo que me permita vender gato por liebre. A su vez, el cliente, ilusionado con la compra de un vehículo "ecológico!!!" se va pisando a fondo que para eso es más limpio. Recordemos las peticiones que hacía hace unos días la canciller alemana Angela Merkel sobre el tope de emisiones de CO2 para no afectar a un mercado que en su país mueve muchos millones. De nuevo, anteponemos el aspecto material al problema real.

El otro anuncio también hablaba sobre un estupendo coche. Me ha hecho gracia porque qué bien saben hacer su trabajo los de publicidad. O qué mal, según se entienda. El vehículo, un Ford .... max?? nos permite dejar de ser sedentarios!! Increíble pero cierto. En el spot nos hacían ver que nuestra sociedad era cada vez más sedentaria, más vaga y que era hora de que eso cambiase y de que saliésemos (entremezclaban escenas de bicicletas, gente corriendo, saltando), pero eso sí, sin olvidar nuestro vehículo... De nuevo, un ejemplo de amor por el dinero a costa de buenos valores y prácticas sanas.

Cada vez odio más el modelo capitalista que nos devora...

15 septiembre 2007

Cambia tu aspecto

Caminando por la red (¿por qué siempre tengo que navegar?) me he topado con una herramienta muy curiosa y divertida.

Se trata de Face Tranformer, un método de análisis y tratamiento de rostros desarrollado por la universidad de St. Andrews que, a partir de la selección de tres puntos en un retrato (los dos ojos y la boca) nos permite modificar el mismo eligiendo un formato de salida (el rostro de bebé, de anciano, africano, asiático, 50% chimpancé...).

Para poder ver los resultados sobre nuestra imagen tan sólo hay que cargarla, encuadrar nuestro rostro y seleccionar los tres puntos comentados anteriormente, una vez hecho esto, tan sólo queda ir viendo cómo seríamos si nuestros padres fuesen asiáticos o si alguno de ellos hubiese tenido algún tonteo con un... chimpancé!

Como muestra: Yo, Greco, Niño, Asiático, Afroamericano.



02 septiembre 2007

Dos nuevas rutas

Aprovechando la vuelta de las "vacaciones" pego dos rutas que tuve ocasión de realizar estando en mi pueblo.

La primera puede resultar de "entrenamiento" para la segunda, pues es más suave.

Discurre cerca del Pantano de Béjar, entre pinos, cortafuegos y sendas marcadas con hitos. Desde aquí tendremos una divisoria del valle de Hervás y, más tarde, de la Sierra de Candelario con La Hoya Moros observándonos.




La segunda ruta, más técnica y no apta para los que tengan vértigo, es muy recomendable por las vistas que desde allí se pueden contemplar, de la hermosura de las lagunas y su entorno.




Más rutas en Saltamontes

¿Triunfará Blue Ray por su logo?

La primera pregunta que voy a hacerte es:

¿Qué soporte de almacenamiento conoces más? ¿BlueRay o HD-DVD?




Saber que tanto BlueRay como HD-DVD son los sucesores inmediatos del DVD que todos conocemos, que se basan en tecnología de láser azul (de ahí blue), que tanto el tamaño físico (12 cm, igual que un cd) como el format de compresión son idénticos.

Lo que varía es su capacidad. BlueRay ofrece entre 25 y 100 GigaBytes mientras que HD-DVD algo menos. BlueRay es algo más caro y más delicado (subsanando esos problemas actualmente).

Entonces, ¿qué puede determinar una elección? ¿Convivirán los dos formatos con ventas equilibradas?

Tal vez sea mi impresión, pero yo apuesto por BlueRay y no me apoyo nada más que en el simple hecho de que han elegido un buen nombre y un buen logotipo.



Creo que esa nimiedad (para un publicista nada de nimiedad), puede condicionar la compra de un producto u otro en buena medida. Y es que, aparte de que detrás de ese formato hay un gran apoyo por parte de Philips y Sony (con su PSP3 que reproduce ese formato), a mí me confunde mucho más la palabra HD-DVD (dos conceptos ya conocidos por nosotros, el disco duro y el DVD) que BlueRay (algo novedoso y atrayente).

Con el tiempo ya veremos si tenía razón o fue sólo casualidad.