jueves, 14 de enero de 2016

La panorámica más grande del planeta fue tomada en España

Sólo se necesitaron ocho meses para que la imagen panorámica más grande del mundo deba ceder el trono a un nuevo proyecto. Atrás quedaron los 365 gigapíxeles del famoso Monte Blanco, para dar lugar a «Calblanque, La Manga, El Mar Menor y campo de golf», trabajo realizado por Carlos Caravaca Escavy. El número asciende a 401.72 gigapíxeles, y si alguien tratara de imprimirla a 300 DPI, la foto final tendría más de cien metros de largo.

Panorámica
La panorámica más grande del planeta fue tomada en España
La imagen panorámica más grande continúa siendo la que nos enseña a la superficie lunar, con un total de 681 gigapíxeles. Dicha imagen demandó cuatro años de trabajo, uniendo los cuadros provenientes de la cámara instalada en el Lunar Reconnaissance Orbiter. Sabemos que es cuestión de tiempo para que este récord sea pulverizado, y sólo basta con ver los avances aquí en la Tierra. A fines de mayo pasado vimos la espectacular panorámica que Filippo Blengini tomó del Monte Blanco, alcanzando los 365 gigapíxeles. Pero hoy, el nuevo rey de las panorámicas tiene de su lado un mural que perfora la barrera de los 400 gigapíxeles.
Panorámica
Un sencillo ejemplo del impresionante zoom en la panorámica
«Calblanque, La Manga, El Mar Menor y campo de golf» es una creación de Carlos Caravaca Escavy. El tamaño exacto es de 401.72 gigapíxeles (1.335.000 por 300.913 píxeles), y contiene 8.967 cuadros interpolados. Si la matemática no me falla, serían cerca de 45 megapíxeles virtuales por foto, pero Caravaca no reveló el equipo utilizado, por lo tanto, no sabemos con precisión el tamaño original de cada cuadro sin interpolación. Aún así, la panorámica nos entrega una gigantesca cantidad de material para explorar. A simple vista, la sensación es de un lugar muy vacío, pero no se tarda mucho en encontrar coches desplazándose, y por supuesto gente, especialmente en la playa.
El responsable de la panorámica explica que el material fue capturado a 336 metros de altura en el Cabezo de la Fuente (Los Belones, España), y que demandó un total de 735 gigabytes de espacio. La carga de la panorámica al portal Gigapan fue especialmente tortuosa, al demorar 19 días y 5 horas. Al menos por un rato, el récord mundial de panorámicas se queda en España. Tal vez el propio Caravaca decida romper su marca personal con un nuevo proyecto, o puede que llegue algo desde otro lugar...

Fuente:
http://www.neoteo.com/la-panoramica-mas-grande-del-planeta-fue-tomada-en-espana

jueves, 7 de enero de 2016

Consiguen instalar Linux en una PS4 y ejecutar un emulador de Game Boy

A mediados de mes nos hacíamos eco de una publicación que hablaba sobre la posibilidad de piratear la PlayStation 4 que parecía ser la definitiva. Desde entonces no hemos tenido más noticias al respecto hasta ahora ya que se ha conseguido instalar el sistema operativo Linux en la máquina de Sony y, además, ejecutar un emulador de Game Boy Advance con el juego Pokemon.
Un grupo dedicado al hacking de consolas bajo el nombre de Fail0verflow ha conseguido acceder a la PlayStation 4 y cargar una copia completa de Linux. Se trata de un paso crucial para acercar la llegada de software casero e, incluso, las copias piratas de juegos. Esto también convierte a la consola de la firma nipona en un ordenador completo que ejecuta un sistema operativo como cualquier otro equipo de sobremesa.
Además, no sólo han logrado instalar una versión de Linux, también han ejecutado con éxito un emulador de Game Boy Advanced con una copia modificada de Pokemon a la que han bautizado como “PlayStation Version”. Para dejar constancia de lo logrado, los chicos de Fail0verflow han grabado una demo en vídeo de lo que han logrado. Este es el vídeo en cuestión:

Además de ver en acción el emulador de la vieja consola de Nintendo, también podemos ver todo el trabajo que han realizado para adaptar Linux a PlayStation 4 debido a las notables diferencias de arquitectura introducidas por el fabricante con respecto a un ordenador tradicional. Durante la presentación, vemos que queda mucho trabajo por hacer para pulir la compatibilidad y mejorar el rendimiento.
Lo cierto es que el emulador de Game Boy Advanced funciona a las mil maravillas aunque lo más interesante es que conectaron esa misma consola a la PlayStation 4 y la utilizaron como mando para controlar el grupo. Esto habla de las posibilidades que nos ofrece este método de hackeo en el futuro.
Tendremos que seguir muy de cerca los pasos de Fail0verflow para ver todo lo que consiguen con la PlayStation 4. Por el momento, el proyecto avanza por buen camino y sus desarrolladores han demostrado que son capaces de ejercer un alto nivel de control sobre el sistema que sólo puede ir a más con el paso del tiempo.

Fuente:
http://www.adslzone.net/2015/12/31/consiguen-instalar-linux-en-una-ps4-y-ejecutar-un-emulador-de-game-boy/

martes, 5 de enero de 2016

Control relés con una bombilla simulando motor lavadora - 2º intento



Este segundo intento ha sido satisfactorio. En la primera ocasión se me bajaba el magnetotérmico de la vivienda y se me fundió dos optoacopladores de la placa del módulo de 8 relés.

Básicamente lo que he hecho es esto indicado en el boceto de abajo.




Para evitar fluctuaciones se le pone en su salida enparalelo de la carga, en este caso una bombilla, un condensador y resistencia en serie como indica abajo.
Con condensador y resistencia.




En mi caso no he hecho nada de esto, lo comento para que lo sepan, son medidas de seguridad. En mi caso he puesto una bombilla de bajo consumo de 12 W frente a las antiguas de 100 W que tenía guardada desde hace mucho tiempo. A parte de ello, el ejemplo conmuta cada 10 segundos así se evita fluctuaciones y no saltan los magnetotérmicos.

Código de ejemplo básico de Arduino:
// include el código de la librería.
#include

// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);

unsigned long inicio, fin, transcurrido;
long Veces = 0;

int LuzFondo = 10; // Pin 10 para saber que es luz de fondo.

void setup()
{
   // Formato de pantalla.
  lcd.begin(16, 2);
  lcd.print("Foro ELECTRONICA");

  /*
  delay(2000);
  lcd.setCursor(0,0);
  lcd.print("Cambio de giro  ");
  lcd.setCursor(0,1);
  lcd.print("motor lavadora. ");
  delay(2000);
  lcd.clear(); // Limpia la pantalla.
  lcd.setCursor(0,0); // En el primer carácter y primera fila.
*/

  pinMode(3,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(LuzFondo,OUTPUT);

  digitalWrite(LuzFondo, HIGH);
  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  Serial.begin(115200);
}

void loop()
{
  lcd.setCursor(0,1);
  lcd.print(inicio=millis()/15000); // 15 seg. antes de empezar.

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

  digitalWrite(2, !HIGH);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 ON ");
  delay(10000);

  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  delay(10000);

  digitalWrite(3, !HIGH);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 ON ");
  delay(10000);

  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(10000);

Veces++;
 lcd.setCursor(0,1);
 lcd.print(Veces);
 
  }

  while (true);

     // Cuando llegue aquí, tiene que pararse el motor siempre.
     // No se que instrucciones darle para que lo haga.
}








Vídeo:

Siguiendo el proyecto principal de crear una placa.

lunes, 4 de enero de 2016

Programar Arduino con Visual Studio

Razones para dar el salto

Más de uno se estará preguntando, ¿Qué puede aportarme Visual Studio frente con respecto al IDE Arduino? Creo que si has estado mucho tiempo usando el IDE de Arduino te habrás dado cuenta de que es un editor pensado para simplificar la tarea de programar. Para hacer que programar sea algo sencillo el editor prescinde de muchas características como integración con git o mercurial o como un gestor de archivos, bibliotecas.
No digo que no puedas dividir tu código en varios .cpp o que no puedas incluir tus propios .h, lo que digo es que si estás mínimamente acostumbrado al editor de Microsoft vas a ser más productivo. Además vas a disfrutar de características que apreciamos los programadores como el autocompletado, etc.
¿Te he convencido? En cualquier caso, es mejor que lo pruebes tu mismo.

Visual Studio y Arduino IDE

Para seguir el tutorial es necesario tener Arduino IDE y Visual Studio instalados. Las versiones de ambos programas que están indicadas para usar el plugin de VS que nos permite compilar fácilmente para Arduino son las siguientes:
  • Arduino IDE versión 1.6.1 ó anterior.
  • Visual Studio versiones: 2008, 2010, 2012, 2013.
Importante! Las versiones Visual Stduio Express no están soportadas, pero si que podéis usar la versión Visual Studio 2013 Community Edition que es gratuito. Podéis descargar el dicha versión gratuita del siguiente enlace:

 Visual Micro

Es el plugin de Visual Studio que vamos a instalar para compilar los skeches de Arduino. Tiene características de pago que disfrutaremos durante un tiempo de evaluación, y que luego pasaremos a la versión gratuita sin estas características. Con la versión gratuita el programa cumple sobradamente su cometido, las características premium incluyen por ejempo una herramienta para ayudarnos a depurar nuestro programa. Para bajaros el plugin podéis hacerlo desde su página web:

Instalación y primer ejemplo

En el siguiente vídeo voy a explicar el proceso de instalación de Visual Micro una vez tenemos instalados Visual Studio y Arduino IDE y voy hacer un pequeño ejemplo en el que demuestro lo fácil que resulta subdividir nuestro código y usar librerías propias.

Fuente:
https://geekytheory.com/programar-arduino-con-visual-studio/

Puertos y Buses 1: I2C y UART

Puertos y Buses. Generalidades

Están ahí, los usamos a diario sin darnos cuenta, hablamos de ellos. Los puertos y los buses son los encargados de que haya comunicación entre dispositivos microncontrolados. Son conceptos muy amplios, y abarcan desde puertos tangibles como los USB a intangibles como puertos internos de un SOC (System on a chip), al igual que tenemos buses como el cable del teclado o buses de fibra óptica. Mucha gente usa el termino “puerto” y “bus” de manera indistinta como si se tratase de lo mismo, de hecho yo he hablado de puerto USB cuando USB significa “Universal serial Bus”. Y es que son dos conceptos inherentes el uno del otro.
Tal y como yo lo entiendo el puerto es el punto de entrada y/o salida de los buses. Haciendo una analogía tenemos dos dispositivos que serán mi casa y la casa de mi vecino, los puertos serían las puertas de ambas casa y el bus sería el pasillo.

En qué se diferencia un puerto de otro

Tenemos muchos tipos de puertos y de muchas características distintas. Los puertos paralelos, como su propio nombre indica, tienden a enviar la información en mayor medida de forma paralela, lo cuál hace que usen buses con mayor número de cables o pistas. Los puertos serie son los que más se usan, USB, UART, I2C, CAN bus, RS232 son puertos serie. Por tanto van a tender a usar pocos cables y la información se enviará secuencialmente.
Por otro lado podemos distinguir entre buses síncronos y asíncronos. La diferencia entre ambos reside en que a la hora de comunicar dispositivos que trabajan a frecuencias distintas necesiten o no de una señal de sincronización.
La mayoría de los puertos que vamos a presentar a continuación son puertos serie y asíncronos, en la mayoría se usan buses de 3 ó 4 pistas cómo mínimo más alguna opcional. Entonces, ¿En qué se diferencian? A nivel eléctrico encontramos diferencias en cuanto a voltajes y a nivel computacional encontramos diferentes protocolos de comunicación. Veamos más concretamente las características de cada uno.

Algunos tipos de Buses

Cómo electrónico, los puertos de los que voy a hablar son los principales puertos de comunicación entre microcontroladores, existen otros para redes de Internet, etc…que no voy a tratar. No pretendo hacer un copia y pega de la información que podéis encontrar en Wikipedia, quiero esclarecer las dudas sobre estos puertos que me han ido surgiendo según los he tenido que ir utilizando para que antes de que os veáis en mi situación tengáis varios conceptos claros.

I2C

Es un bus que está formado por 2 cables conocidos como SDA y SCL más 1 para conectar las masas (GND) de los dispositivos, seguramente os suene verlos en Arduino. Con este tipo de bus podéis conectar bastantes dispositivos entre sí. Contructivamente lo único que hace falta es que conectéis una resistencia de 2.2KOhm de algún punto de SDA a Vcc y otra resistencia de 2,2KOhm desde un punto de SCL hasta Vcc, es decir, que las líneas SDA y SCL deben tener una resistencia de pull-up.
También es importante decir que en cada momento uno de los dispositivos toma el papel de maestro y el resto de esclavos. El maestro genera una señal de reloj por SCL que se usará para sincronizar todos los dispositivos. Y por SDA viaja la información propiamente dicha. Cada esclavo debe tener configurada una dirección de esclavo. Esta dirección es una variable de 8 bits donde los 7 primeros son un número en binario y el último bit indica si es una lectura o escritura lo que quiere hacer el maestro.
AN50987
Existen dos escenarios distintos, o bien el maestro es un escritor en los esclavos, o bien el maestro es el que pide a los esclavos que le envíen información. En cualquier caso la comunicación se realiza con la siguiente secuencia:
  • Se configuran todas las direcciones de esclavos
  • El maestro envía una dirección de esclavo más el bit de lectura/escritura e indica además cuantos bytes será de larga de comunicación.
  • El esclavo se prepara enviar la información solicitada o para recibir la siguiente información.
  • O bien el esclavo envía información o bien el maestro envía información.
  • Todos los esclavos vuelven a estar disponibles de nuevo.

UART y USART

Las siglas de estos buses significan “Universal Asynchronous Receiver/Transmitter” y “Universal synchronous Asynchronous Receiver/Transmitter” respectivamente. En general las dos diferencias que hay entre ellos es que el USART puede trabajar en modo síncrono y asíncrono y puede ir más rápido (más baudios) mientras que el UART sólo funciona de manera síncrona.
BAUDIO: Es el número de símbolos por segundo, importante no confundir con tasa de bits por segundo, ya que cada símbolo puede suponer el envío de más de 1 bit.
Estos buses están compuestos por 3 pistas fundamentales: TX, RX y GND.  De tal manera que el pin TX de un dispositivo esté conectado RX del otro dispositivo y viceversa y que las masas de ambos estén conectadas. Si sólo conectamos un TX a un RX, la comunicación puede existir de manera unidireccional, es decir, que sólo 1 envía y sólo 1 recibe. No es el mejor bus para comunicar más de 2 elementos, de hecho no lo recomiendo para esto. Es mejor abrir 1 puerto UART distinto para cada dispositivo al que quieras conectarte. Lo que hace muy útil a este puerto es que trabaja con niveles lógicos TTL (transistor-transistor logic) lo cual hace que dos micros se puedan comunicar sin necesidad de convertir los voltajes con transreceptores/drivers.
 bus uart
Es muy utilizado para programar los microprocesadores de sistemas embebidos con un ordenador debido a que no hace falta que los micros traigan un bootloader precargado. Si queremos programar nuestro micro a través de un puerto UART tan sólo necesitamos un cable FTDI (con TX, RX, GND y Vcc conectados a nuestro micro) y un programa adecuado.
Esquema cable FTDI:
cable ftdi
Como me estoy alargando continuaré en otro artículo hablando sobre CAN bus y RS-232.

Fuente:

Cómo emular un procesador Z80 con un microcontrolador Pic

El procesador Z80 fue muy popular hace unos 35 años probablemente, y fue de alguna manera muy similar al 8080 de Intel y de toda la familia que después se convertiría en los populares Pentium. Por ejemplo, la computadora de Radio Shack, la TRS-80, modelo I, tenía un procesador Zilog Z80, que corría a 1.77 Mhz (no GHz), aunque muchas otras computadoras usaron este procesador también.
El Z80 fue diseñado por Federico Faggin (de acuerdo a la Wikipedia), quien fue el diseñador en jefe del procesador Intel 4004 y del 8080. Faggin dejaría la empresa en 1974 y fundaría Zilog, en donde comenzó a trabajar en el Z80 y dos años después sus esfuerzos se concretarían en ese procesador. El Z80 era compatible con el código del 8080, y no podía ser de otra manera, pues de alguna manera hablamos del mismo diseñador del hardware. De hecho, la idea de Faggin era que además, fuese compatible con el sistema operativo CP/M, uno de los más populares en ese momento.
Ya de esto han pasado muchos años, pero siempre hay quien se mete en un proyecto personal, cuya finalidad probablemente sea la de aprender, más que hacer algo que sea útil o eficiente. Así, Jaromir Sukuba, construyó un emulador de Z80, de bajo consumo de energía usando un microcontrolador Pic. Si vemos las fotos de su proyecto, notaremos que usó un teclado construido casi a mano, aparentemente, además de una pantalla de 4×40 caracteres. El sistema de Sukuba puede conectarse vía un RS232, que es una conexión serial.
Más allá del proyecto, me parece que lo que queda claro es que los procesadores modernos, los microcontroladores, que están diseñados para sistemas embebidos normalmente, tiene tanto poder que ya los microprocesadores del pasado pueden literalmente emularse sin ningun problema. En mi opinión, estos proyectos son todos notables, simplemente por el esfuerzo que representan y porque nos muestran los avances de la electrónica y el cómputo.

Fuente:
https://www.unocero.com/2015/01/07/como-emular-un-procesador-z80-con-un-microcontrolador-pic/

viernes, 1 de enero de 2016

Control relés con una bombilla simulando motor lavadora




Estoy indignado de una cosa con este proyecto de pruebas, se me bajaron las palancas de la casa y no me fucniona el relé K2, pesnaba que era el transistor, pero no, porque me enciende el Led rojo pero no activa el relé, rompí el diodo D2 para sustituirlo, no es el diodo, probé el relé directamente y funciona, solo el relé, claro. Así que tiene que ser el optoacoplador. 

Por mucho que encienda el Led D2, opté por el relé K3 del INT 3, al rato de apagarse y encender la bombilla, se vuelve a bajar las palancas de mi casa, el magnetotérmico, no el digerencial, sin chispas o estampido de algo.



El optoacoplador le pasó lo mismo del INT 3 que al INT 2, se acabó máspruebas. Dentro de un rato pongo mis experiencias en mi blog sobre este proyecto. Deja ver si venden estos optoacopladores a parte en mi local habitual. En este mismo momento me quedan unos minutos para subir un vídeo qu esubiré aquí para que vean la idea del proyecto.

Dejo claro que aún no he puesto el motor, primero uan bombilla de 100 W a 230 VAC 50 Hz en España. A lo mejor de apagar y encender la bolbilla cada dos segundos, se bajaron las palancas, aunque no entiendo, porqué se fastidian los optoacopladores.

Estoy un poco desmotivado por tonterías como estas.

Se está trabajando con Arduino UNO r3.

Se hará poco a poco un buen código de lo que pretendo hacer, como ven, no se recomienda usar delay, como este es un ejemplo, es para hacer pruebas rápidas.

Esquema:





Código de Arduino:

// include el código de la librería.
#include

// Inicializa la librería con sus pines indicados.
// RS, RW, Enable, D4, D5, D6, D7.
LiquidCrystal lcd(8, NULL, 9, 4, 5, 6, 7);

unsigned long inicio, fin, transcurrido;
long Veces = 0;

int LuzFondo = 10; // Pin 10 para saber que es luz de fondo.

void setup()
{
   // Formato de pantalla.
  lcd.begin(16, 2);
  lcd.print("Foro ELECTRONICA");

  /*
  delay(2000);
  lcd.setCursor(0,0);
  lcd.print("Cambio de giro  ");
  lcd.setCursor(0,1);
  lcd.print("motor lavadora. ");
  delay(2000);
  lcd.clear(); // Limpia la pantalla.
  lcd.setCursor(0,0); // En el primer carácter y primera fila.
*/

  pinMode(3,OUTPUT);
  pinMode(2,OUTPUT);
  pinMode(LuzFondo,OUTPUT);

  digitalWrite(LuzFondo, HIGH);
  //digitalWrite(2, !LOW); // !LOW es HIGH.
  //digitalWrite(3, !LOW);
  Serial.begin(115200);
}

void loop()
{
  lcd.setCursor(0,1);
  lcd.print(inicio=millis()/15000); // 15 seg. antes de empezar.

     for (int i=0; i <= 10; i++)
   {
  
  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(2000);

  digitalWrite(2, !HIGH);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 ON ");
  delay(2000);

  digitalWrite(2, !LOW);
  lcd.setCursor(3,1); // RL 1.
  lcd.print("1 OFF");
  delay(2000);

  digitalWrite(3, !HIGH);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 ON ");
  delay(2000);

  digitalWrite(3, !LOW);
  lcd.setCursor(9,1); // RL 2.
  lcd.print("2 OFF");
  delay(2000);

Veces++;
 lcd.setCursor(0,1);
 lcd.print(Veces);
 
  }

  delay(1000000);

     // Cuando llegue aquí, tiene que pararse el motor siempre.
     // No se que instrucciones darle para que lo haga.
}


Imágenes:


Vídeo:



A la próxima probaré una bombilla de bajo consumo haber si esta vez no se me bajan las palancas. A parte de eso, detallar un poco más con una tabla, paso por paso lo que tiene que hacer Arduino con los relés.

Sigue las actualizaciones en el proyecto principal de crear una placa de lavadora.