Blogia
mundosimaginados

Foros o proyectos.

Audio Specturm Analyzer. Arduino + LCD + MSGEQ7

Ya les conté en la entrada anterior que esta época estoy haciendo cosas con Arduino. Sigo con proyectos técnicos que me ayuden a profundizar y mejorar mis conocimientos.

Los analizadores de espectro de audio (así como los ecualizadores) han sido siempre una debilidad para mí. Tanto es así que no tengo consciencia de cuando me quedé embobado la primera vez viendo uno. De allí a entender al transformada de Fourier ha habido un camino largo, largo. En este ejemplo no utilizo ninguna rutina para el cálculo de la transformada (y eso que hay sitios en los que está resuelto para el arduino) y en su defecto he empleado el integrado MSGEQ7 con unos resultados muy satisfactorios. El circuito y la inspiración del código la he obtenido de este y este sitio.

En el caso del integrado proprociona los niveles en 7 bandas. Yo he interpolado para llegar a las 16 que son el número de caracteres de la pantalla LCD. Comentar que esta pantalla no permite gráficos y las barras las he generado creando los dibujos como caracteres nuevos al más puro estilo de cuando dibujabamos sprites con los primeros micro-ordenadores...

Para la prueba de concepto he recuperado un tema mío (Zimbolución) del año 2004 que terminé en el 2005 y que se adapta muy bien a la demostración por su rítmo y dinámica. A bailar!

¿Y esta publicidad? Puedes eliminarla si quieres

1 + 1 = 10

Hace ya algunos meses que en el tablón de corcho de la oficina en la que trabajo colgé en grande la expresión que da título a este post...

 

1 + 1 = 10


Hace no tantos que le añadí la coletilla "... ni más ni menos"

 

1 + 1 = 10

...ni más ni menos.


Y la verdad es que a pocos les llama la atención. Y a los que sí que lo hace lo intentan tomar como excusa para evangelizar con sus elucubraciones de coaching y/o conocimientos de cábala.

Todo surgió cuando alguien intentó explicarme que en un sistema de almacenamiento al añadir más dispositivos físicos el resultado final del espacio disponible era menor que antes de realizarlo. Y todo porque debido a la compresión, la estimación, y la yo que me sé que ... resultaba que antes de la ampliación el sistema era más optimista en la capacidad total del almacenamiento que estimaba sería capaz de alcanzar.

Pero se puede retomar en cualquier situación en la que alguien nos quiera liar. No insistiré en que las técnicas de resolución de problemas nos apuntan a que hay que trocear los problemas en partes que sean digeribles, o que divide y vencerás y que el todo es mayor que la suma de las partes. Pero yo recorde aquellos tiempos en los que estudiamos y decidí que el lenguaje de las matemáticas era universal y que eso debía de ser mi guía en la gestión profesional.

No diré que la intuición, la pasión, la motivación son catalizadores realmente poderosos. Pero si no partimos de axiomas solidamente asentados, el resto no deja de pertenecer a la farandula.

Eso sí siempre que tengamos la suficiente ciencia para entender lo que estamos manejando.

Juntándolo todo...

 

Ya les he ido contando estos días los avances con las plataformas H/S Libre (Arduino , Processing , PureData) con las que he estado trabajando estos días. Para cuestiones relacionadas con la configuración encontrarán información en las entradas anteriores. Mas bien siguiendo los enlaces de las mismas.

Mi primera propuesta (se necesita Java instalado para que funcione) ha sido un diseño que he realizado en Processing. Es algo simple. 4 cubos de distintos colores que giran sobre el origen de coordenadas. Al girar generan diseños complejos al entrelazarse las caras y las aristas. Como cuestión interesante (para técnicos) está programado utilizando los recursos de programación orientada a objetos. Se define una clase que es con la que se define cada cubo. Luego el manejo es mucho más limpio como se puede ver en el código fuente . El fondo responde (de forma sutil) en tiempo real al volumen de la música. Para esto he utilizado las librerías minim para facilitar la interfase con la capa de audio de Java.

He implementado en una placa de prototipos los ejemplos de la web de Arduino. Pueden ver las fotos del montaje de la placa. Y el Arduino ensamblado en la misma.

También los videos, que ven al principio, de los resultados con los ejemplos de los led y el de Processing y PD.

En el segundo vídeo se puede ver al final el ejemplo de los cubos en que el tamaño de la figura se controla con un potenciometro conectado al Arduino que hace de interfase con el Processing. Para el código me he basado en este ejemplo. En este caso sólo se lee una entrada analógica.

En el ejemplo de PureData he utilizado el desarrollo de Hans-Christoph Steiner. Me he basado en el ejemplo del circuito del controlador del Joystick para extenderlo a las seis entradas analógicas que tiene Arduino. En este caso de PD vemos funcionar tres de ellas.

En fin como se dice en estos casos todo esta puesto sin garantía y a disfrute y riesgo del visitante.

FUNCIONA !!!

 

Les cuento detalles poco a poco. Pero ya he conseguido hacer la conexión entre Arduino y PD, y entre Arduino y Procesing.

En breve publico ejemplos, fotos y vídeos.

 

 

Arduino y PureData 0.40 Linux Ubuntu PD

Lo siguiente ha sido bastante entretenido. Documentémoslo para cuando haga falta.

Ubuntu trae en paquetes PureData y las librerías principales.

Para instalarlas seguimos los consejos de aquí. Con esto que indico valdrá:

sudo apt-get install pd gem pd-pdp pd-zexy

Para que las arranque el PD hay que incluirlas en la línea de comando o en la opción startup del menú File. Recordad que el ejecutable de la librería Gem es con mayúscula. En la siguiente línea se pone maxlib y ya está. No olvidar aplicar y salvar.

En la página de Arduino nos cuentan más cosas . Descargamos el firmware y el pach para poner en marcha la comunicación. Desde el entorno de Arduino enviamos el programa de control a la placa y hasta aquí lo fácil...

Al arrancar el path daba errores indicando que faltaban las librerías maxlib y comport. Son librerías que hay que instalar. Y que se pueden obtener los enlaces. La primera basta con pegarla en /usr/lib/pd/extra y la otra primero hay que compilarla, leyendo el README hacemos:

make pd_linux (me da un error compruebo que al makefile se le había colado una extensión al bajarlo, se la quito vuelvo a la carga y todo OK)

Lo mismo lo pego en /usr/lib/pd/extra

Por último aparecen unos mensajes de error haciendo referencia a que no se encuentra list-xxxx (en mi caso list-abs.pd y list-len.pd). Las he bajado de aquí y pegado en el directorio que tengo el path de test del Arduino en PD.

Al cargar el path me seguía dando un error con el objeto speedlim que pertenece a la librería maxlib. Para solucionarlo he seleccionado "Find last error" en el menú Find. El cual ha abierto la ventana que producía el error en la que estaban enlazada la función precedida del nombre de la librería. Algo así como "maxlib/speedlim" he cambiado todos los objetos que así aparecían y los he dejado sin el prefijo de librería.

El puerto COM en mi caso es el 5.

Al volver a lanzar el paht ¡funciona!

Mañana a probar con sensores.

¿Y esta publicidad? Puedes eliminarla si quieres

Por partes II. (Arduino)

Por partes II. (Arduino)

 

La primera vez que oí algo relacionado con Hardware Libre fue este año. Creo que a principios, allá por febrero, tuve ocasión de revisar una referencia en algún blog. La verdad es que no presté mucha atención. Ya saben la vida no da para todo lo que a uno le gustaría y la electrónica aplicada es una asignatura pendiente...

En el taller que asistí el pasado mes de junio (Gohan hackcamp june2007) hubieron unas sesiones dedicadas al proyecto Arduino (versión en castellano). En resumen se trata de un desarrollo de una placa con entradas y salidas tanto analógicas como digitales gobernadas por un microprocesador. Posee su entorno de desarrollo y lenguaje de programación y la ventaja de que la programación del microprocesador se implementa en el propio circuito no necesitando hardware adicional. En el taller hicimos pequeños ejemplos y el potencial es tremendo. Una vez programado el microprocesador ejecuta su programa de control independiente de ningun ordenador simplificando y abaratando cualquier instalación (artística o no) que dependa de un controlador que gestione su ejecución.

En el taller había representantes de la empresa Libellium cuyos desarrollos se basan en software y hardware libre. Utilizan Arduino en sus productos además de ser los distribuidores de las versiones montadas del circuito.

En la foto un detalle del circuito que adquirí para hacer mis pruebas cuando me decida a dedicar un ratito a esto.

Visiten los enlaces con información mucho más detallada del proyecto.

Por partes I. (Pure Data)

Por partes I. (Pure Data)

 

Mi motivación principal para asistir a los talleres (en el enlace un wiki a modo de acta) fue el software Pure Data. La Wikipedia cuenta algunas cosas y tiene enlaces... (en castellano también )

Como ya he contado en otras ocasiones me gusta generar resultados y propuestas con un planteamiento de proyecto. No quiero controlar el detalle del resultado sino poder plantear algo que produzca el resultado y por supuesto que este sea digno, mas bien, excelente.

En este caso, el software, es un lenguaje de programación visual orientado a música y con extensiones para vídeo. Estoy depurando algun ejemplo y si no es antes seguro que después de las vacaciones (¡¡¡qué ganas!!!) les muestro algo.

Sigan los enlaces y seguro que aprenden muchas cosas interesantes.

(En la imágen una primera versión de mi nueva obra "Andante para Trío Sinusoide I" que publicaré en breve)

Gohan hackcamp june 2007

 

Se celebra en Zaragoza de 26/6 al 1/7 la convocatoria Gohan hackcamp june 2007 en la que voy a participar. Se presenta como un encuentro para trabajar con herramientas de software y hardware libre. Según indican en es un "development workshop" en el que espero conocer gente interesante. El lugar es el Centro de Historia .

Se centra en Pure Data (que es la parte que más me interesa) Arduino y Procesing .

No he asistido nunca a un evento como este y no tengo muy claro como se desarrollará hay un wiki para apuntase y una agenda para los diferentes eventos que se han previsto. Acudiré a partir de las 18:00h.

En fin si se animan apúntense y nos vemos. Iremos contando...

 

¿Y esta publicidad? Puedes eliminarla si quieres