Ciclo 2 - Taller Arduino - Sporman, Leiva, Jimenez, Acuña, Moscoso
Título | Ciclo 2 - Taller Arduino - Sporman, Leiva, Jimenez, Acuña, Moscoso |
---|---|
Asignatura | Taller de Fabricación |
Del Curso | Taller de Fabricación 2023 |
Carreras | Diseño |
Nº | 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
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
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
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
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
Proceso constructivo
Planimetrías
Modelado
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