Páginas

viernes, 27 de febrero de 2015

150227 - Sumando potencia lumínica!!!


Dado que Pelotedra contiene un dodecaedro en su interior, opté por colocar en 3 de esas caras una serie de 5 LEDs (rojo, verde, azul) ubicados en sus vertices. Buscando en Internet encontré este esquema de conexiones al que le hice las modificaciones para mi diseño. Lo probé en la protoboard y ahora toca soldar todo para incluir el arduino, el sensor, la alimentación a pilas AAA (6 = 9V) 1100mA/h = 2,4hs de rendimiento aprox., y los leds dentro del prototipo para poder hacer pruebas más cercanas al proyecto final.

miércoles, 25 de febrero de 2015

150225 - Eran los cables... también la programación!

Seguí los pasos de conexión tal como indica esta página:

Y, siguiendo los consejos de Martín Matus, fui probando los diferentes códigos de ejemplo que vienen con la librería AcceleroMMA7361 para arduino, haciendo pequeñas modificaciones y luego, cuando todo comenzó a funcionar agregué los renglones de código faltantes para que encendiera las tres luces.

Aquí va entonces el video de muestra:

Conecté el acelerómetro con cables comprados macho-hembra de 20cm, empalmándolos de a 2, para tener una mayor extención respecto del resto del circuito en arduino y poder manipular con más comodidad el sensor; que, para quien esté buscando hacer algo similar, parece que es mejor el que es giroscopio y acelerómetro 2 en 1, cuesta un poco más pero mide los ángulos en que se produce el movimiento y no sólo el shock de movimiento o aceleración del mismo.

Código que va:

#include <AcceleroMMA7361.h>

AcceleroMMA7361 accelero;
int x;
int y;
int z;

//asignacion de pines pwm para los Leds:
int rojo = 3;
int verde = 5;
int azul = 6;

void setup(){
  //adjudica el modo de los pines LED
  pinMode(rojo, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(azul, OUTPUT);
  //establece la velocidad del puerto serial
  Serial.begin(9600);
  //declara los pines del acelerometro
  accelero.begin(13, 12, 11, 10, A0, A1, A2);
  //establece el voltaje AREF en 3.3V
  accelero.setARefVoltage(3.3);    
  //establece la sensibilidad en +/-1.5G          
  accelero.setSensitivity(HIGH);   
  //calibra el acelerometro            
  accelero.calibrate();
}

void loop(){
  //Inicializa el acelerómetro:
  x = accelero.getXAccel();
  y = accelero.getYAccel();
  z = accelero.getZAccel();

 //escribe los valores de x, y, z pero mapeados para los leds
 Serial.print("\nx: ");
  x = map(x, 0, 511, 0, 255);
  Serial.print(x);
  analogWrite(rojo, x);
  Serial.print(" \ty: ");
  y = map(y, 0, 511, 0, 255);
  analogWrite(verde, y);
  Serial.print(y);
  Serial.print(" \tz: ");
  z = map(z, 0, 511, 0, 255);
  analogWrite(azul, z);
  Serial.print(z);
  Serial.print("\tG*10^-2");
  //retardo de lectura para leer los valores de monitor y mejorar la respuesta
  lumínica 
  delay(150);       
}

Ahora viene la parte interesante!!!
Comenzaré a montar los leds en el prototipo: PELOTEDRA!


Fotógrafa: Eugenia Romero

domingo, 22 de febrero de 2015

150223 - Acelerómetro funcionando!!!

Aun hay errores, entre ellos, los cables que soldé hoy para conectar el acelerómetro:

Ante esta situación me veo obligado, para descartar errores y fallas a comprar unos cables para protoboard hembra-macho!!

De todos modos, gracias a unos mails y links que me mandó Andrés Rodriguez (mi director de tesis) modifiqué algunas cosas en la conexión del acelerómetro y en la programación de arduino:
Aunque sin el cable que conecta 3.3V out con ARef porque hasta el momento no afecta en nada perceptible a la vista.


Codigo:
/*Tesis 02_ Acelerometro y leds, lectura analogica y escritura pwm
*/


//Asignacion de pines analogicos del acelerometro

float analogPinX = 0;
float analogPinY = 1;
float analogPinZ = 2;
float valX = 0; 
float valY = 0;
float valZ = 0;

//Asignacion de pines digitales del acelerometro
boolean sleep = 7;
boolean selfTest = 2;
//pwm:
float ogDetect = 9;
float gSelect = 10;


//Asignacion de pines pwm para los leds

int Rojo = 3;
int Verde = 5;
int Azul = 6;

void setup(){
  //Leds rojos
  pinMode(Rojo, OUTPUT);
  //Leds verdes
  pinMode(Verde, OUTPUT);
  //Leds azules
  pinMode(Azul, OUTPUT);
  //Pines digitales Acelerometro:
  pinMode(sleep, INPUT);
  pinMode(selfTest, INPUT);
  pinMode(ogDetect, INPUT);
  pinMode(gSelect, INPUT);
  Serial.begin(9600);
}

void loop(){
  //Deteccion de actividad en el Acelerometro:
  if(sleep == LOW){
    digitalWrite(Rojo, LOW);
    digitalWrite(Verde, LOW);
    digitalWrite(Azul, LOW);
  }else{
  //Traduccion a luces de las lecturas axiales del Acelerometro
  valX = analogRead(analogPinX);
  analogWrite(Rojo, valX / 4);
  valY = analogRead(analogPinY);
  analogWrite(Verde, valY / 4);
  valZ = analogRead(analogPinZ);
  analogWrite(Azul, valZ / 4);
  delay(100);
}
//
}

150222 - analogRead con potenciómetros

Para descartar errores del mal funcionamiento del Acelerómetro MMA7361, hice la prueba de reemplazarlo por potenciómetros (resistencias variables) y el código funciona perfectamente.
Busqué más información sobre la conexión correcta del acelerómetro y encontré este esquema que coincide con lo que hice ayer:
No obstante en la página "ABC de los acelerómetros" aconsejan conectarlos según la hoja de datos del fabricante. Probaré entonces conectar todos los pines al arduino para seguir descartando errores.

sábado, 21 de febrero de 2015

150221 - arduino y acelerómetro, primer prueba con fallas

Hoy estuve haciendo pruebas con arduino y el acelerómetro... dadas las fallas incomprensibles para mí, mañana haré pruebas con potenciómetros para saber si es el código lo que está mal o si hay alguna falla en el acelerómetro, si falta conectar algún cable extra o qué.

Esta es la conexión que utilicé:
con un acelerómetro MMA7361:
Y el código de arduino:
/*Tesis 01_ Acelerometro y leds, lectura analogica y escritura pwm
*/


//Asignacione de pines analogicos del acelerometro
int analogPinX = 0;
int analogPinY = 1;
int analogPinZ = 2;
int valX = 0;
int valY = 0;
int valZ = 0;

//Asignacion de pines pwm para los leds
int Rojo = 3;
int Verde = 5;
int Azul = 6;

void setup(){
  //Leds rojos
  pinMode(Rojo, OUTPUT);
  //Leds verdes
  pinMode(Verde, OUTPUT);
  //Leds azules
  pinMode(Azul, OUTPUT);
  Serial.begin(9600);
}

void loop(){
  /*Lecturas del acelerometro y su traduccion en luces,
  * curva lineal inicial de prueba.
  */

  valX = analogRead(analogPinX);
  analogWrite(Rojo, valX / 4);
  valY = analogRead(analogPinY);
  analogWrite(Verde, valY / 4);
  valZ = analogRead(analogPinZ);
  analogWrite(Azul, valZ / 4);
}

Compila y carga perfectamente pero luego, muevo el sensor y no pasa nada, los leds prenden siempre al 100%, pareciera no estar funcionado el sensor o como si faltara conectar algo.

Para esta primer prueba quiero hacer una lectura lineal de los valores analógicos del sensor, simplemente para corroborar que todo funcione bien y luego complejizar el código para que la lectura siga una curva logarítmica de intensidad lumínica.

lunes, 16 de febrero de 2015

150218_sensor

La primer prueba de sensor la haré con un acelerómetro:

Este sensor arroja los valores analógicos de desplazamiento en ejes x, y, z los cuales serán traducidos mediante una programación de arduino en luces rojo, verde y azul cuya intensidad variará según la intensidad del movimiento siguiendo una curva antilogarítmica:


De esta forma los pequeños movimientos generarán una suba de intensidad alta y esta irá mermando aunque en aumento cuanto mayor sea el movimiento, así, contrario a lo que suele utilizarse en ilumianción (variación lineal), no habrá que hacer grandes esfuerzos físicos para obtener interesantes resultados cromáticos de la mezcla aditiva (RGB), obtieniendo una interesante gama de sombras coloreadas en colores primarios y secundarios (cian, magenta y amarillo).

lunes, 9 de febrero de 2015

150208 - Pelotedra!, render lumínico

Ayer estuve haciendo algunas pruebas lumínicas con la maqueta virtual de la obra de tesis, siguen existiendo dos vías de posibilidad: plan A y plan B, estética y tecnológicamente son muy similares ambos, lo que cambia fundamentalmente es la escala de la obra y el presupuesto económico para concretarlas.

En el Plan A, la escultura-lúdica e interactiva tendría un diámetro estimado en 1,8metros de modo tal que los/as niños/as puedan meterse dentro y rodar junto con la escultura. En este caso emplearía una serie de sensores de movimiento y quizá algo sonoro para producir cambios lumínicos desde el interior de la pelota bañando de luces y sombras de colores todo el entorno expositivo.

En el Plan B, la escultura-lúdica e interactiva tendría un diámetro estimado de 80cm y estaría diseñada para que los/as niños/as la puedan empujar, tirarse sobre ella, meter sus manos dentro. Para esta versión también utilizaría sensores de movimiento para generar cambios lumínicos y posiblemente algún proceso generativo de sonido, siempre y cuando no resulte en ruidos muy básicos y molestos.


 Aquí figura todo el esplendor lumínico posible que generaría pero la idea es programarlo de modo tal que sea menos "cocoliche", resultante de la mezcla RGBA.


domingo, 8 de febrero de 2015

150208 - Pelotedra!

Aquí está el primer render de la obra de tesis como viene siendo por ahora:

La idea actual es explorar los usos tradicionales de la pelota y el juego infantil en torno a ella, las cosas que estimula, su forma de construcción, los modelos que hay disponibles en el mercado, a fin de buscarle un uso diferente, algo que no hagan las pelotas tradicionales.

Por lo pronto "pelotedra!" es una pelota que se puede arrojar, hacer rodar, tirar... conjuga el interior y el exterior al mismo tiempo, no está inflada por lo que no se puede pinchar.

Una segunda idea más ambiciosa que se relaciona con el planteo que hice en el Avance de Tesis del año pasado es esta:
Aquí la esfera cambia su proporción de escala frente al/a la niño/a, de modo tal que más que una pelota para empujar o tirarse mutuamente entre dos o más niños/as es una pelota estructural ligera, liviana y altamente resistente dentro de la cual poder meterse a jugar, y lo suficientemente elástica como para que trepar por su interior sea todo un reto!

La interactividad aquí estaría dada por el movimiento y posiblemente el sonido para activar secuencias lumínicas en el interior de pelotedra!, eventualmente también activar secuencias lumínicas en el entorno perimetral mediante señales de radiofrecuencia.

Referente:
Growing Up (Creciendo)
Peter Gabriel
Growing Up Tour, 2003

lunes, 2 de febrero de 2015

150202. Estructura terminada!

Ayer terminé de cerrar la estructura de "pelotedro", el primer prototipo de la obra de tesis.
Ahora toca comenzar las pruebas electrónicas para ver si "sirve"... la idea es colocar en su núcleo un dispositivo electrónico compuesto por un motor, un sensor de movimiento, otros sensores a definir, leds y un microprocesador para procesar las respuestas del sensor, activar el motor y producir el desplazamiento físico de la esfera por el espacio de forma totalmente randómica e impredescible.
Los otros sensores serían empleados para producir una respuesta interactiva de las luces y generar un gran despliegue de sombras en el espacio circundante.

De momento realicé algunas pruebas de resistencia jugando con la esfera y resiste caídas de más de 4mts. de altura, amortigua su caída y puede compactarse a un volumen bastante reducido volviendo simpre a su forma original al descomprimirse.

Hoy buscando información teórica para la Tesina dí con el sitio web de Coby Unger, un diseñador industrial que desarrolló un brazo ortopédico para niños en el marco de la residencia AIR-Autodesk: http://www.instructables.com/id/Playful-Prosthetic-Arm/