Detector de movimiento sobre un ATMega88

9 de marzo de 2010 por cogollo

Como mi último post se alargó más de la cuenta, dejé pendiente la implementación del sensor de presencia mediante nuestra nueva plataforma de desarrollo. Bueno, pues ya va tocando.

Por si ya lo has olvidado, vamos a montar un sistema que detecta la presencia de gente mediante un PIR. Si hay alguien presente enciende unas luces paulatinamente hasta llegar a su máximo de intensidad y después, tras un cierto tiempo sin que se detecte a nadie, las apaga también paulatinamente. Aquí tienes el vídeo otra vez:

Para completar este magnífico artefacto necesitarás montar unos pocos “periféricos” además de la placa con el micro. Veámoslos uno por uno después del salto.


Leer el resto… »

Publicado en Hackeos e ideas, Nuestros hacks, Open Source | 1 Comentario »


Sobre entrada de datos y circuitos eléctricos (Puerto paralelo II)

8 de septiembre de 2009 por cogollo

Hace unos meses ya hablamos de la salida de datos a través del puerto paralelo, pero dejé para más tarde hablar de la entrada. Bien, supongo que ya es lo bastante tarde.

Para que quede claro, veremos qué hay que hacer para poder leer datos digitales a través del puerto paralelo del PC, mediante un programa en C y en un entorno Linux (aunque los circuitos que usaremos son validos para cualquier entorno).

Recapitulemos: el conector del puerto paralelo tiene 25 pines, que se corresponden con tres lineas de datos diferentes (Data, Control y Status) según este esquema:

Valor de los pines del puerto. Extraido de CodeProject

Valor de los pines del puerto. Extraido de CodeProject

Además tenemos que Data es de entrada/salida, Control es sólo de salida y Status sólo de entrada. Y que en un determinado pin 0V representan un 0 lógico y 5V un 1 lógico, salvo en los pines que están invertidos (Y este puede ser un buen momento para repasar el primer artículo).

Vimos también que para sacar un byte a través de un puerto hay que usar la función:

outb(Byte,Puerto);

donde Byte es el byte de datos que queremos mostrar y Puerto es el numero del puerto que queremos usar y que en la mayoría de los casos es 0x378 para el puerto de datos, 0x379 para el puerto de status y 0x380 para el puerto de control.

Pues bien, para la entrada de datos tenemos una función similar:

inb(Puerto);

que devuelve un byte de datos leidos a traves de Puerto. Por ejemplo, para leer desde el puerto de status y guardarlo en la variable input pondríamos:

short int input = inb(0x379);

Y eso es todo amigos, pero antes de ponernos con un programa de ejemplo deja que aclare una cosilla sobre circuitos eléctricos.


Leer el resto… »

Publicado en Hackeos e ideas, Nuestros hacks, Open Source | 11 Comentarios »


Accediendo al mundo real: El puerto paralelo

16 de febrero de 2009 por cogollo

Si hay una tecnología que se está extinguiendo ahora mismo, que se va desechando lenta pero inexorablemente, esa es la del puerto paralelo. Y es una lástima. No sólo porque este conector ya estuviera presente en el primer PC que fabricó IBM en 1981, también porque el puerto paralelo ha sido uno de los mayores aliados del hacking. Con sus 25 pines, no es precisamente el conector más discreto que puedes encontrar en un ordenador . Ni el más rápido. Pero tiene una cosa que lo hace muy atractivo para el aficionado: Es muy fácil de usar. Casi trivial.

El puerto paralelo según Wikipedia

El puerto paralelo según Wikipedia

Básicamente, lo que podemos hacer con estos pines es ponerlos a 0 o 5 voltios. A voluntad. Puede que esto no parezca gran cosa, pero es suficiente para activar un relé que, a su vez, active una radio, una bombilla, una lavadora, etc. Así que  va a permitir, de una manera muy directa, que nuestro ordenador manipule el mundo exterior.

O sea, lo mismo que un microcontrolador como Arduino. Sólo que, claro, no tienes que gastarte 30 pavos en el dichoso Arduino y la potencia y la memoria del PortatilQueTeRegalóTuTíoPorqueEstáViejoYDeTodasFormasIbaATirarlo siguen siendo cientos de veces mayores que las de cualquier micro que puedas comprar con dinero. Cierto que un Arduino cabe en la palma de la mano, pero para “aplicaciones estáticas” (esto es, para chismes que no tengan que ir cosidos a la ropa o bajo el sillín de una bici) yo diría que usar directamente el puerto paralelo es bastante más práctico.

Pero empecemos por el principio. Para ir cogiéndole el tranquillo a esto te propongo empezar con unos sencillos juegos de luces como estos:


Controlando 8 leds con el puerto paralelo on Vimeo.

Aprenderemos para qué sirven los distintos pines del puerto paralelo y cómo sacar datos a traves de ellos (leer datos es ligeramente más complicado y lo dejaremos para futuras entregas) . Todo ello en un estupendo entorno linux, pero si tienes Windows puedes ver cómo hacer esto mismo aquí. Si tienes un Mac…  Bueno, no creo que los Mac sigan montando de éstos. No son lo bastante bonitos, supongo.


Leer el resto… »

Publicado en Hackeos e ideas, Nuestros hacks | 38 Comentarios »


Osciloscopio laser II (Figuras de Lissajous)

21 de septiembre de 2008 por cogollo

Ahora que tengo una fuente de alimentación apropiada para el puntero láser de mi osciloscopio y ya he cogido algo de confianza usando Processing no podía pasar mucho tiempo antes de ponerme a fardar.

Para empezar poco a poco he pensado que podríamos hacer unas buenas, viejas, figuras de Lissajous. Son fáciles de implementar, agradables a la vista y nunca pasan de moda.


Proyectando sobre la pared del salón

A continuación te pego el código fuente que mueve esto. Es bastante sencillo y lo he comentado a conciencia, así que espero que, aparte de masajear mi ego, tenga algún valor didáctico. Considérate libre de retorcerlo y mutilarlo como te venga en gana. Tendrás que bajarte la librería de sonido Ess r2 para que funcione, pero por lo demás solo tienes que pulsar play y sentarte a disfrutar.


Leer el resto… »

Publicado en Nuestros hacks | 4 Comentarios »


Processing

26 de agosto de 2008 por cogollo

Estaba pensando yo en qué lenguaje de programación recomendarte. Porque claro, hacer cacharros con basura está bien, pero hacer cacharros inteligentes con basura se sale por los cuatro cantos. Y el camino hasta el don de la inteligencia, me temo, pasa por alguna forma de programación. Además, que saber programar es bastante guay en sí mismo.

Total que me he acordado de game mod, un taller realizado por Steph Thirion el año pasado en Barcelona. Según palabras del propio Thirion:

Game Mod was a six hour long workshop with the objective of showing the participants that it is not required to understand code to experiment and play with it.

Although they had no experience in coding, the task of each participant was to make a mod (modified version) of a game built in Processing.

El juego en cuestión era una version del Breakout. Ese en el que hay que romper ladrillos con una pelotica. Aunque es posible que lo conozcas más como Arkanoid. Y el resultado del taller es tan bonito como esto:

Así que esto se hace con Processing. Y debe ser sencillo, porque se supone que esta gente no tenía experiencia previa. Pues sí. La verdad es que es un lenguaje bastante agradecido. Pero mejor te cuento desde el principio.

Processing es un proyecto creado por Casey Reas y Benjamin Fry, ambos miembros del MIT Media Lab, en un intento por proporcionar un lenguaje de programación apropiado para el diseño digital y la producción de proyectos multimedia en general.

Orientado hacia una comunidad de usuarios poco acostumbrados a picar código, el resultado de este proyecto es un lenguaje de programación, basado en Java, sencillo y fácil de manejar que a pesar de su sencillez permite la ejecución de proyectos de calidad profesional. Sobre todo en el apartado gráfico donde claramente se ha invertido gran cantidad de esfuerzo por parte del equipo de desarrollo. Esto es especialmente afortunado, porque podemos tener feedback visual de nuestros programas prácticamente desde la primera línea, lo que simplifica muchísimo el proceso de aprendizaje mediante ensayo y error.

Pero lo mejor está por llegar, porque Processing es open source, lo que no sólo quiere decir que no te va a costar un duro. Implica, además, que tiene detrás toda una comunidad de gente que dedica sus esfuerzos a mejorar el lenguaje día a día. Como consecuencia directa de esto se pueden encontrar en la web unos cuantos tutoriales y ejemplos así como cantidad de librerías de lo más elegante. Desde tratamiento de sonido hasta comunicación con un wiimote pasando por motores de sistemas de partículas.

Además, el carácter open source de este lenguaje también le ha valido ser elegido para la programación de microcontroladores como Wiring y Arduino (que seguro que te suena de otras películas) lo que nos va a ahorrar tener que aprender otro lenguaje más adelante.

El compilador está disponible para Windows, Mac y Linux ( lo que siempre es grato a los ojos de Dios) y la salida por defecto tras compilar nuestros programas (sketches, como los llama esta gente) está en forma de applet java. Que es otra forma de decir que lo que programes aquí correrá en cualquier ordenador que tenga un navegador web.

De hecho, incrustar uno de estos sketches en una pagina web no es más complicado que hacerlo con un video de Youtube. Esto, unido a la consabida afición por el exhibicionismo de los artistas multimedia en general, hace que sea fácil encontrar ejemplos y experimentos en la red. En blogs y paginas personales y sobre todo en OpenProcessing, un espacio de exhibición a modo de wiki en el que la gente expone sus programas junto con el código fuente y su descripción para el uso y disfrute del resto de la comunidad.

Por esto, y por otras cosas que seguro se me escapan, Processing se aproxima desde todos los frentes a lo que aquí entendemos como BUENO. Así que ya estas tardando en bajártelo y en ir practicando, porque a partir de ahora lo vamos a usar para hacer maldades.

Publicado en Hackeos e ideas, Links, Open Source | Comentarios desactivados en Processing