Ciclo 2 - Taller Arduino - Sporman, Leiva, Jimenez, Acuña, Moscoso

De Casiopea



TítuloCiclo 2 - Taller Arduino - Sporman, Leiva, Jimenez, Acuña, Moscoso
AsignaturaTaller de Fabricación
Del CursoTaller de Fabricación 2023
CarrerasDiseño
2
Alumno(s)Emilia Sporman, Javier Leiva, Claudio Acuña, Sofía Jiménez, Juan Pablo Moscoso

Aparecer Lumínico en Cercanía

La inclusión en los espacios de estudio de las personas con discapacidad intelectual supone un reto tanto para alumnos, profesores, padres, madres y familias. En el contexto que vivimos en nuestra realidad actual, existe una gran variedad de herramientas tecnológicas que resultan más accesibles para el común de las personas, en el presente proyecto ideamos un dispositivo luminoso que está destinado para ser utilizado por personas con limitaciones físicas o cognitivas, asistiendo a la persona con luz de una modo desapercibido en su funcionamiento, evitando procesos mecánicos que requieran la manipulación del artificio.

En el ambiente del hogar, los espacios de estudio son indefinidos en muchos casos, a menudo no se toma en cuenta la accesibilidad de estos espacios para personas con limitaciones cognitivas, incluyendo aquellos con problemas de visión, problemas de procesamiento de información o trastornos del espectro autista. La iluminación es un factor clave a considerar en estos casos, ya que una iluminación adecuada puede facilitar la lectura y el procesamiento de la información, así también como mejorar la concentración. Sin embargo, es común que los espacios de estudio no estén diseñados con una iluminación adecuada para personas con discapacidad cognitiva. Por ejemplo, es posible que las luces sean demasiado brillantes o que estén mal ubicadas en torno a la persona, lo que puede provocar deslumbramientos o sombras proyectadas que dificulten la lectura o generen distracciones, teniendo en cuenta la alta sensibilidad a los cambios bruscos de luz.

Prototipo 1

Prototipo Lampara axonometrica 2.png

El proyecto consiste en una lámpara de escritorio impresa en 3D en filamento PLA, con 3 secciones acopladas en si misma como un acordeón cuando está inactiva. Cuando se activa con el sensor ultrasónico ubicado en la base circular de la lámpara se acciona el mecanismo de la lámpara, el cuál consiste en un movimiento rotatorio de 3 ejes (servomotores) ubicados a un costado de cada articulación de estas 3 secciones o brazos, estos servomotores rotan hasta desplegar cada sección de la lámpara, el primer servomotor rota 180°, el segundo también rota 180° y el tercero rota 135°, el accionar del sensor activa al mismo tiempo la cinta de luz LED de 57 neopixeles distribuidos al interior de ranuras en estas secciones articuladas de la lámpara, difuminadas por un papel diamante. La detección del sensor se activa cuando detecta un objeto a una distancia de entre 10 a 45 centímetros, si el sensor detecta algún objeto a una distancia mayor a 45 centímetros o menor a 10 centímetros, se apagará la cinta LED y los servomotores volverán a su ángulo original (0°), ocasionando que las secciones de la lámpara se cierren y vuelvan a su posición original.

LÁMPARA CERRADA

LÁMPARA EXTENDIDA

Planimetría

Planos lampara cerrada page-0001.jpg Planos lampara extendida page-0001.jpg Planos base y soporte page-0001.jpg Planos brazos y soporte sensor page-0001.jpg

Proceso constructivo

Cuatro causas Aristotelicas

Materia

  • Arduino Uno R3
  • Sensor de distancia ultrasónico HC-SR04
  • Tira de 57 NeoPixels WS2812
  • Microservomotor Posicional SG90
  • Servomotor MG996R Rotación 180 Grados
  • Filamento PLA blanco y gris
  • Cables jumper
  • Papel diamante
  • Acrílico transparente de 4mm

Agencia

Los elementos y herramientas empleados para la fabricación de este prototipo fueron los siguientes:

  • 3 Impresoras 3D: CR-6 SE Creality, Ender 5 Plus Creality, Ender 5 Creality.
  • Software Arduino IDE
  • Software Inventor
  • Software Fusion 360
  • Software Tinkercad

Forma

La forma del dispositivo consiste en una estructura que se desenvuelve en si misma y que también se retrae para acoplarse en si misma. La base es circular y más masisa que el resto de las piezas para generar mayor equilibrio, también contiene la placa de arduino insertada en ella, esta base tiene 2 aberturas donde se inserta un doble pilar recto unido en su extremo superior, a traves de esta pieza pasan los cables a través de uno de estos pilares desde la placa de arduino. a continuación de esta pieza estan ensambladas 3 secciones rectangulares alargadas con ranuras donde se posicionan las luces LED. Estas 3 secciones alargadas se despliegan gracias al movimiento rotatorio de los servomotores para alcanzar una posición en la cuál la lámpara se extiende hacia arriba. la estructura completa tiene empalmes en sus aristas para ser manipulable de manera más fácil.

Fin

La lámpara tiene como objetivo generar recursos para asistir en la educación, un dispositivo con accesibilidad, que no requiere de mucha manipulación, ya que la lámpara se activa y desactiva solo con la proximidad de la persona u otros objetos que detecte. Integra la capacidad sensorial para aquellas personas que tienen discapacidad motriz, discapacidad cognitiva o con hipersensibilidad táctil. Debido al acople de las secciones y de su material de poco peso, lo hace fácil de portar y su mecanismo funciona desapercibidamente.


Circuito

primer momento

segundo momento Copy of Lámpara TF prueba 01 page-0001.jpg

Código

Este código está diseñado para controlar un sistema que utiliza un sensor ultrasónico para medir la distancia a un objeto/persona cercano y hacer que una tira de neopixeles y tres servomotores se activen si el objeto/persona está lo suficientemente cerca.

El código comienza importando dos librerías necesarias para su correcto funcionamiento: "Adafruit_NeoPixel" y "Servo". Estas librerías permiten controlar la tira de neopixeles y los servomotores respectivamente.

A continuación, se definen dos constantes, "TRIG" y "ECHO", que se utilizan para conectar el sensor ultrasónico a la placa de Arduino. También se define una constante "tiraCount" que representa el número de neopixeles en la tira de neopixeles.

Luego se crea un objeto "tira" de la clase "Adafruit_NeoPixel" con los parámetros especificados en la línea de código. La función "setup()" se encarga de inicializar la tira de neopixeles y los servomotores.

En el loop principal del programa, se mide continuamente la distancia entre el sensor y un objeto cercano utilizando el sensor ultrasónico. Si la distancia es entre 10 a 45 cm, la tira de neopixeles se ilumina de color blanco cálido y los servomotores se activan, haciendo que los motores se muevan. Si la distancia es mayor a 45 cm o menor a 10 cm, la tira de neopixeles se apaga y los servomotores vuelven a su posición inicial.


#include <Adafruit_NeoPixel.h>
#include <Servo.h>
#define TRIG 4
#define ECHO 5
const int tiraCount = 57;
Adafruit_NeoPixel tira = Adafruit_NeoPixel(57, 2, NEO_GRB + NEO_KHZ800); // La tira tiene 50 neopixeles
long duracion, distancia;
Servo servo01;
Servo servo02;
Servo servo03;
void setup() {
tira.begin();
 tira.show();
 pinMode(TRIG, OUTPUT);
 pinMode(ECHO, INPUT);
 Serial.begin(9600);
 servo01.attach(8); // El servo01 está conectado al pin 8
 servo02.attach(9); // El servo02 está conectado al pin 9
 servo03.attach(10); // El servo03 está conectado al pin 10
}
void loop() {
 digitalWrite(TRIG, LOW);
 delayMicroseconds(2); // Pequeño retardo antes del pulso de trigger
 digitalWrite(TRIG, HIGH);
 delayMicroseconds(10); // Duración mínima del pulso de trigger
 digitalWrite(TRIG, LOW);
 duracion = pulseIn(ECHO, HIGH);
 distancia = duracion /59;
 Serial.println(distancia);
 if (distancia >= 10 && distancia <= 45) { // Si la distancia está entre 10 y 45 cm
 for (int i = 0; i < tiraCount; i++) {
   tira.setPixelColor(i, tira.Color(255, 218, 185));
   tira.show();
   // Activa los servomotores
   servo01.write(180);
   servo02.write(180);
   servo03.write(135);
 }} 
 else {
   tira.clear(); // Si la distancia está fuera del rango, apaga la tira
   tira.show();
   // Los servomotores vuelven a su posición inicial
   servo01.write(0);
   servo02.write(0);
   servo03.write(0);
 }
}

GitHub del proyecto: https://github.com/JavierLeivaContreras/Lampara-Aparecer-Luminico-en-Cercania

Registro

WhatsApp Video 2023-05-09 at 17.50.26 (1).gif
WhatsApp Video 2023-05-04 at 00.24.57.gif

Luminosidad modular en proximidad

Correcciones

Abandonamos la forma propuesta inicialmente debido a una serie de factores que imposibilitaron el funcionamiento. Esto nos dio la oportunidad de iterar tanto en los componentes electrónicos utilizados, como también en la forma. No se tuvieron en consideración conceptos físicos en los cuales inicialmente estos tres brazos articulados generaban el movimiento, con un problema de equilibrio y en la distribución del peso de sus partes y la potencia necesaria en los servomotores para generar el movimiento.

Es por esto que decidimos mantener nuestro objetivo de crear un aparecer lumínico y modificamos su forma para establecer una armonía y equilibrio de funcionamiento y junto con esto se simplificó el mecanismo. En cuanto al hardware utilizado, se extrajeron los tres servomotores SG90 y se incorporó un solo servomotor MG996r el cual será encargado de mover la pieza que contiene la cinta LED. Sobre la forma de esta nueva y única pieza que genera la iluminación, es simétrica y con eje central por ende genera un equilibrio físico, disminuyendo el esfuerzo mecánico y eficiencia energética

En cuanto a su funcionalidad, se le incorpora la capacidad de iluminar de dos modos diferentes, los cuales se determinan con la detección de dos rangos de distancia.

Estos 2 modos de iluminación apuntan a diferentes contextos de uso de la luz, modulados por la proximidad del usuario al artificio. El primer modo de iluminación, denominado como luz ambiental, funciona en un rango de 51 a 120cm del sensor, la pieza que produce luz apunta directamente hacia el techo, estableciendo su ángulo en 0°, esta distribución de la luz genera una iluminación indirecta y amplia, logrando iluminar el cielo de la habitación donde se utilice y a la vez evitando la generación de sombras y deslumbramientos con la dirección de la luz, esta luz tiene una temperatura cálida para generar un ambiente ameno para los usuarios, pensando también en un contexto de más de una persona habitando el espacio con esta lámpara ubicada lejana a las personas para existir desapercibidamente.

El segundo modo de iluminación, denominado luz localizada de estudio, funciona en un rango de 10 a 50cm del sensor, logrando iluminar de forma directa el espacio de trabajo de una mesa, evitando la generación de sombras que desconcentren y también deslumbramientos con el usuario por la altura de la lámpara y la curvatura de la pieza que ilumina. La temperatura de este modo de iluminación es un blanco cálido que ayuda a la concentración de la persona, pensando en un contexto de estudio o trabajo individual.

Si la persona que interactua con la lámpara se encuentra a una distancia mayor a 120cm la lámpara se apagará y se mantendrá así hasta que el sensor vuelva a detectar algo/alguien que se encuentre a una distancia menor a 120cm.

Prototipo Final

Boceto nuevo prototipo aparecer luminoso.png

Proceso constructivo

Lampara en funcionamiento c2 aparecer luminico.jpg


Planimetrías

Planimetria lampara final grupal M.jpg
Planimetria lampara despiece grupal M page-0001.jpg

Modelado

Prototipo Lampara Automatic.jpgPrototipo Lampara Automatic 2.jpgPrototipo Lampara Automatic 3.jpgPrototipo Lampara Automatic 4.jpgPrototipo Lampara Automatic 5.jpgPrototipo Lampara Automatic 6.jpgPrototipo Lampara Automatic 7.jpgPrototipo Lampara Automatic 8.jpg

Código

#include <Adafruit_NeoPixel.h>
#include <Servo.h>
#define PIN_LED_STRIP 6
#define TRIGGER_PIN 5
#define ECHO_PIN 3
#define SERVO_PIN 9
#define RANGE_1_MIN 10
#define RANGE_1_MAX 50
#define RANGE_2_MIN 51
#define RANGE_2_MAX 120
#define DISTANCE_THRESHOLD 120
Adafruit_NeoPixel strip = Adafruit_NeoPixel(29, PIN_LED_STRIP, NEO_GRB + 
NEO_KHZ800);
Servo servo;
void setup() {
Serial.begin(9600); // Inicializa la comunicación con el Monitor Serie
pinMode(TRIGGER_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
strip.begin();
strip.show(); // Apaga todos los neopíxeles al inicio
servo.attach(SERVO_PIN);
servo.write(0); // Mueve el servomotor a la posición inicial de 0 grados
}
void loop() {
unsigned long currentMillis = millis();
// Realiza la medición de distancia cada vez que el bucle se ejecuta
digitalWrite(TRIGGER_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration * 0.034 / 2;
Serial.print("Distancia: ");
Serial.print(distance);
Serial.println(" cm");
if (distance >= RANGE_2_MIN && distance <= RANGE_2_MAX) {
// Rango 1: Enciende la cinta LED con color blanco cálido
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, 250, 200, 20);
}
strip.show();
// Mueve el servomotor a la posición de 0 grados de forma suave
for (int angle = servo.read(); angle >= 0; angle -= 1) {
servo.write(angle);
delay(15);
}
} else if (distance >= RANGE_1_MIN && distance <= RANGE_1_MAX) {
// Rango 2: Enciende la cinta LED con color amarillo cálido
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, 255, 230, 180);
}
strip.show();
// Mueve el servomotor a la posición de 180 grados de forma suave
for (int angle = servo.read(); angle <= 180; angle += 1) {
servo.write(angle);
delay(15);
}
} else {
// Fuera de rango: Apaga la cinta LED
for (int i = 0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, 0, 0, 0);
}
strip.show();
}
delay(300); // Pequeña pausa para evitar mediciones frecuentes
}

Registro

Luminosidad modular en proximidad en funcionamiento