Páginas

lunes, 11 de diciembre de 2017

2017_12_11 - pequeños logros con la programación

Desde el viernes 8, estoy con la programación del software de arduino que controlará a la obra de Tesis: "xxz - mellizas nacidas a destiempo" que propone una performance infantil con dos esferas robóticas que dependen del otro para moverse y desplazarse libremente por el espacio.


De momento trabajando en el código de arduino, utilizarán 2 sensores cada una, 1 sensor de movimiento PIR y 1 acelerómetro para con ellos, reaccionar a los impulsos de sus compañer@s de juego.

Aun tiene varias fallas pero por el momento así es:
Todas las partes en gris son comentarios o bien partes del código que no quiero ejecutar de momento, algunas porque son para calibrar el software y otras porque aun no las planifiqué demasiado pero que me sirve que estén presentes en el código.

/* Pelotedra I:
2017_12_08
+ 12 Leds, 4 de cada color primario con resistencias de 220ohms
+ 3 transistores NPN c/u para cada color Luz
+ 1 sensor PIR
+ 1 sensor Acelerometro

Pelotedra II:
+ 30 Leds RGB con sus resistencias de 220ohms
+ 3 transistores PNP de 1000mA, uno para cada color Luz
+ 1 sensor PIR
+ 1 sensor Acelerometro

Meta a programar:
//Nada se mueve:
  IF lectura PIR = LOW;
    blink R (delay 10.000);

//Algo fuera de pelotedra se mueve:
  IF lectura PIR = HIGH && Accelero = LOW;
    blink G (delay 1.000);

//La pelotedra se mueve:   
  IF lectura PIR = HIGH && Accelero = HIGH;
    Leds responden a los valores de x,y,z del Accelero;
   
//No existe la variable PIR = LOW && Accelero = HIGH porque ambos
sensores estan dentro de la Pelotedra y, si esta se mueve,
la lectura PIR siempre sera HIGH.
*/

//Variables del Acelerometro:

#include <AcceleroMMA7361.h>

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

//sensor PIR

int pinSensor = 2;   // entrada al arduino del sensor pin 2
int pirState = LOW;  // no detecta movimiento
int valSensor = 0;   // variable para leer el estado del pin

//Leds:
int rojo = 3;
int verde = 5;
int azul = 6;
//Temporizadores de milisegundos del delay en los leds
int green = 180;
int red = 450;
int todos = 150;

//Temporizador
unsigned long actual;
unsigned long previo;
int eventoTiempo;

void setup(){
//Declara los pines de los Leds como emisores:
  pinMode(rojo, OUTPUT);
  pinMode(verde, OUTPUT);
  pinMode(azul, OUTPUT);
//Inicializa el puerto serial:
  Serial.begin(9600);
//Inicializar el Acelerometro:
  accelero.begin(13, 12, 11, 10, A0, A1, A2);
  accelero.setARefVoltage(3.3);                   //sets the AREF voltage to 3.3V
  accelero.setSensitivity(HIGH);                   //sets the sensitivity to +/-1.5G
  accelero.calibrate();
//Declara al sensor PIR como receptor:
  pinMode(pinSensor, INPUT);
//Temporizador
  previo = 0;
  eventoTiempo = 0;

}

void loop(){
  actual = millis();
 
  if (actual - previo > 10000){
    previo = actual;
    eventoTiempo = 1;
     digitalWrite(rojo, LOW);
  }

  //Nada se mueve:
//sensor PIR:      
            
  valSensor = digitalRead(pinSensor);   // Lee el valor de entrada del sensor
  if (valSensor == LOW){                // Verifica si la entrada es BAJA (no hay movimiento)
  Serial.println("No Hay Movimiento");  // Imprime en pantalla cuando no hay un cambio de estado
  digitalWrite(rojo, HIGH);
  digitalWrite(verde, LOW);                 //Esto garantiza que los Leds verdes esten apagados
  digitalWrite(azul, LOW);                 //Esto garantiza que los Leds azules esten apagados
  delay(red);
  digitalWrite(rojo, LOW);
  delay(red);
  digitalWrite(rojo, HIGH);
 
  delay(red);
  digitalWrite(rojo, LOW);
  digitalWrite(verde, LOW);
  digitalWrite(azul, LOW);
  //delay(red*3);
  } if(eventoTiempo == 1){
        digitalWrite(rojo,LOW);
        digitalWrite(verde,LOW);
        //digitalWrite(azul, HIGH);
        //delay(red);

        digitalWrite(azul,LOW);
        eventoTiempo = 0;
   }


//Algo fuera de pelotedra se mueve:
//sensor PIR:        
          
  valSensor = digitalRead(pinSensor);   // Lee el valor de entrada del sensor
  if (valSensor == HIGH){               // Verifica si la entrada es ALTA (hay movimiento)
  Serial.println("Hay Movimiento");     // Imprime en pantalla cuando hay un cambio de estado
  digitalWrite(verde, HIGH);
  digitalWrite(rojo, LOW);                 //Esto garantiza que los Leds rojos esten apagados
  digitalWrite(azul, LOW);                 //Esto garantiza que los Leds azules esten apagados
  delay(green);
  digitalWrite(verde, LOW);
  delay(green);
  digitalWrite(verde, HIGH);
 
  delay(green);
  digitalWrite(verde, LOW);
  digitalWrite(rojo, LOW);
  digitalWrite(azul, LOW);
  //delay(green*3);
  }
  if(eventoTiempo == 1){
        digitalWrite(rojo,LOW);
        digitalWrite(verde,LOW);
        digitalWrite(azul, LOW);
        eventoTiempo = 0;
     }



//La pelotedra se mueve:   
/*IF lectura PIR = HIGH && Accelero = HIGH;
    Leds responden a los valores de x,y,z del Accelero;
*/
/*
  x = accelero.getXAccel();
  y = accelero.getYAccel();
  z = accelero.getZAccel();
  Serial.print("\nx: ");
  Serial.print(x);
  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");
  delay(todos);   //make it readable
  if(eventoTiempo == 1){
        digitalWrite(rojo,LOW);
        digitalWrite(verde,LOW);
        digitalWrite(azul, LOW);
        eventoTiempo = 0;
     }
*/

}

miércoles, 6 de diciembre de 2017

2017_12_06 listo para empezar la nueva programación

La tesis escrita está prácticamente terminada, tengo que hacerle correcciones y agregar unas cuantas citas bibliográficas que guarden relación con la bibliografía mencionada al final... algo que no suelo hacer porque muchas veces son textos que leo para nutrirme e informarme pero no por el hecho de citarlo sino por el de aprender más sobre un tema antes de redactar algo al respecto.

Mientras tanto avanzo con la obra:
(grabado ayer)
En pelotedra I, (la primer esfera que hice) me tocó volver a soldar los Leds porque en un 75% se habían soltado... en ese desarrollo quemé una varilla plástica con el soldador pero decidí dejarla así. A esta altura de la obra resulta un trabajo importante, tedioso y de mucha precisión cambiarle alguna varilla a la estructura de la obra y, se justifica sólo si está rota, en este caso solo se quemó un poco pero no se perforó.

Logré volver a entender dónde va cada cable que sale de la estructura (que luego irán dentro):
Los colores son los de mis cables, 5 en total. Y aquí me di cuenta que en pelotedra II debo emplear transistores PNP porque el pin común de los leds RGB es el positivo. Para pelotedra II, los mismos además deberán ser de 1A porque al ser 30 leds cada uno RGB son 30mA por cada uno, es decir, 900mA en cada color primario.

martes, 21 de noviembre de 2017

2017_11_21 - investigando sobre pilas y baterías varias

Estuve averiguando precios y tipos de pilas/baterías recargables. Estoy un poco indeciso porque hay de todo...



Hasta el momento lo que más me convence son las Baterías LiPo de 2000mAh y 7.2V con un cargador con puerto mini USB (fotos a la derecha). Siento que es la forma más accesible para cargarlas sin tener que desarmar nada.
Mientras tanto, estoy trabajando más en la redacción de la parte escrita. He corregido toda la redacción a fin de que resulte amena leerla, evitando oraciones demasiado largas.



miércoles, 8 de noviembre de 2017

2017_Mediados de Octubre: Vuelta a las pelotedras!!!

A mediados de Octubre me di cuenta de que las esferas geodésicas "pelotedra I y II", podían volver al planteo original y llevar solamente 1 a 2 sensores según cómo resulte mejor: PIR o Acelerómetro o bien, ambos.

Aquí está el video más reciente del making of:


En estos días he estado trabajando más en la redacción de la parte escrita de la Tesis, depurando el contenido, borrando o modificando partes que las sentía muy confusas.

sábado, 19 de agosto de 2017

170819 - dejando atrás las "pelotedras"... se viene la red electrónica!

Esta semana estuve trabajando en la nueva obra, decidí dejar de lado las pelotedras porque son prácticamente imposibles de hacer... de paso, como si fuera poco a la más grande se le aflojaron muchos elásticos y, para retomarla es preciso un arduo trabajo de restauración.
La nueva obra aun carece de título pero va saliendo, como me recomendaron durante la cursada de 2013, ante un problema tomarse un tiempo, apartarse de él y retomarlo luego viene siendo muy útil.
Ayer resolví cómo trabar un poco las varillas para que no se corran de lugar... aun tengo que resolver cómo y a qué fijar la batería para que una vez agotada sea relativamente fácil cambiarla; también cómo fijar por dentro el arduino stand alone (con Atmega 328) para que quede firme y resista los golpes de la red en movimiento.
Hace unos días hice una prueba para embutir los leds en la tapa cuadrada opuesta al sensor y quedan bien... aprovechando que es plástico y se puede derretir con el soldador (uno que tengo para estas cosas... y que no uso para soldar).

martes, 27 de junio de 2017

170627 - complicaciones con las pelotedras

Restauré la primer pelotedra (esfera geodésica) y llegué a la conclusión de que será muy difícil (sino imposible) alojar en su núcleo central la parte electrónica porque si bien está unida con hilos elásticos, el cubo en el que estarían los componentes más importantes para su funcionamiento es demasiado grande para los huecos que pueden generarse para introducirlo.
Esta situación me hace pensar que tendrá que ser una sola esfera porque aun no está cerrada y con este error puedo prever la introducción del arduino, sensor, pilas y demás antes de cerrar la forma.
En el peor de los casos tendré que replantear toda la obra y hacer algo electrónico diferente para interactuar, quizá en 2D como mis redes...
Dado que, en última instancia mi arte lo hago para motivar a los niños y niñas, no así para cumplir con algo académico aunque en la Tesis de Maestría se entrecruzan ambas cosas y, es por eso que sigo adelante pese a las complicaciones.

domingo, 23 de abril de 2017

170423_ Definiendo la Obra

La Obra de la presente Tesis está compuesta físicamente por dos esferas geodésicas dotadas de componentes electrónicos para emitir luces de colores y, de sus infaltables usuarios, niños y niñas de 2 a 5 años, que participarán, cuando llegue el momento de una o varias performances durante las cuales podrán interactuar con las "pelotedras" (I y II).

Electrónicamente la búsqueda radica en lo simple, en parte porque garantiza un mejor funcionamiento y por otra porque en este caso también menos es más.

Pelotedra I reconoce presencias mediante dos sensores PIR de movimiento, mientras que Pelotedra II le adjudica colores primarios luz a los ejes de movimiento espacial que determina un sensor acelerómetro; ambas ejecutadas por un módulo arduino stand alone dotados de microintegrados atmega328 idénticos a los del arduino UNO.

 Pelotedra I
 Pelotedra II