Proyecto I&P2023-2: (Robot ) / Grupo 2
Título | Elba la robot interactiva |
---|---|
Tipo de Proyecto | Proyecto de Taller |
Palabras Clave | proyectoarduino |
Período | 2023- |
Asignatura | Interacción y Performatividad |
Del Curso | Interacción y Performatividad 2023-2 |
Carreras | Diseño |
Alumno(s) | Antonella Pascualetti, Antonella Sierralta, Sofía González, Fernanda Murillo, Pia Espinoza Schmith, Gabriela Cigarruista |
Profesor | Franco Gnecco |
Elba la robot interactiva
El proyecto consistió en la creación de un robot utilizando la plataforma Arduino. Este robot fue diseñado para moverse en cuatro direcciones y presentar expresiones emocionales a través de luces LED, tomando inspiración del carismático personaje Eva de la película Wall-E. Además, se implementó una interfaz intuitiva que permite su control mediante cualquier dispositivo móvil, utilizando una conexión Bluetooth para facilitar la interacción.
Desarrollo robot
En la fase inicial del proyecto, nos enfocamos en tomar decisiones formales relacionadas con la adquisición de materiales, la construcción del cuerpo y la programación. Este proceso implicó una investigación exhaustiva sobre los componentes necesarios y sus costos. Posteriormente, con la orientación del profesor y la utilización de recursos como videos instructivos en YouTube, abordamos la codificación para la implementación de las funciones de luces, movimiento y conectividad Bluetooth.
Simultáneamente, abordamos el diseño del cuerpo en dos etapas. La dimensión y ubicación de las ruedas dependían del espacio ocupado por los componentes internos, lo que llevó a dividir esta tarea en dos partes. Esta decisión se tomó estratégicamente, ya que era crucial contar con las medidas específicas derivadas del trabajo previo en los códigos y la disposición de los componentes antes de finalizar el diseño del cuerpo del robot.
Componentes
Códigos
#include <SoftwareSerial.h> SoftwareSerial miBT(0, 1); //DEFINICIÓN AVANZAR Y RETROCEDER const int Motor1A = 13; //avanzar const int Motor1B = 12; //retroceder const int Motor2C = 2;//avanzar const int Motor2D = 6;//retroceder //DDEFINICIÓN LUCES const int red1Pin = 9; const int green1Pin = 8; const int blue1Pin = 7; const int red2Pin = 3; const int green2Pin = 4; const int blue2Pin = 5; String cmd = ""; void setup() { Serial.begin(9600); // comunicacion de monitor serial a 9600 bps miBT.begin(38400); // comunicacion serie entre Arduino y el modulo a 38400 bps pinMode(Motor1A, OUTPUT); pinMode(Motor1B, OUTPUT); pinMode(Motor2C, OUTPUT); pinMode(Motor2D, OUTPUT); pinMode(red1Pin, OUTPUT); //Led RED pinMode(green1Pin, OUTPUT); //Led GREEN pinMode(blue1Pin, OUTPUT); //Led BLUE pinMode(red2Pin, OUTPUT); //Led RED pinMode(green2Pin, OUTPUT); //Led GREEN pinMode(blue2Pin, OUTPUT); //Led BLUE } void loop() { //Hacer color blanco, estado normal digitalWrite(red1Pin, HIGH); digitalWrite(green1Pin, HIGH); digitalWrite(blue1Pin, HIGH); digitalWrite(red2Pin, HIGH); digitalWrite(green2Pin, HIGH); digitalWrite(blue2Pin, HIGH); while (miBT.available() > 0) { cmd = char(miBT.read()); //break; } if (cmd != "") { cmd = cmd[0]; if (cmd == "S") { //Estado normal stopCar(); Serial.println("s"); } else if (cmd == "F") { //Robot avanza moveForwardCar(); Serial.println("f"); } else if (cmd == "B") { //Robot retrocede moveBackwardsCar(); Serial.println("b"); } else if (cmd == "L") { //Robot dobla a la izquierda turnLeftCar(); Serial.println("l"); } else if (cmd == "R") { //Robot dobla a la derecha turnRightCar(); Serial.println("r"); } else if (cmd == "W") { //Robot prende luz magenta emocionEnamorado(); Serial.println("W"); }else if (cmd == "U") { //Robot prende luz verde emocionFelicidad(); Serial.println("U"); }else if (cmd == "V") { //Robot prende luz roja emocionEnojo(); Serial.println("V"); } cmd = ""; } delay(1000); } void emocionEnamorado() { // Ojos magenta digitalWrite(red1Pin, HIGH); digitalWrite(green1Pin,LOW); digitalWrite(blue1Pin, HIGH); digitalWrite(red2Pin, HIGH); digitalWrite(green2Pin,LOW); digitalWrite(blue2Pin, HIGH); } void emocionFelicidad() { //Ojos verdes digitalWrite(red1Pin, LOW); digitalWrite(green1Pin, HIGH); digitalWrite(blue1Pin, LOW); digitalWrite(red2Pin, LOW); digitalWrite(green2Pin, HIGH); digitalWrite(blue2Pin, LOW); } void emocionEnojo() { //Ojos rojos digitalWrite(red1Pin, HIGH); digitalWrite(green1Pin, LOW); digitalWrite(blue1Pin, LOW); digitalWrite(red2Pin, HIGH); digitalWrite(green2Pin, LOW); digitalWrite(blue2Pin, LOW);; } void stopCar() { digitalWrite(Motor1A, LOW); digitalWrite(Motor1B, LOW); digitalWrite(Motor2C, LOW); digitalWrite(Motor2D, LOW); delay(20); } void turnRightCar() { digitalWrite(Motor1A, HIGH); digitalWrite(Motor1B, LOW); digitalWrite(Motor2C, LOW); digitalWrite(Motor2D, LOW); delay(20); } void turnLeftCar() { digitalWrite(Motor1A, LOW); digitalWrite(Motor1B, LOW); digitalWrite(Motor2C, LOW); digitalWrite(Motor2D , HIGH); delay(20); } void moveForwardCar() { digitalWrite(Motor1A, HIGH); digitalWrite(Motor1B, LOW); digitalWrite(Motor2C, LOW); digitalWrite(Motor2D, HIGH); delay(20); } void moveBackwardsCar() { digitalWrite(Motor1A, LOW); digitalWrite(Motor1B, HIGH); digitalWrite(Motor2C, HIGH); digitalWrite(Motor2D, LOW); delay(20); } void moveForwardLeft() { digitalWrite(Motor1A, HIGH); digitalWrite(Motor1B, LOW); digitalWrite(Motor2C, LOW); digitalWrite(Motor2D, HIGH); delay(20); } void moveForwardRight() { digitalWrite(Motor1A, HIGH); digitalWrite(Motor1B, LOW); digitalWrite(Motor2C, LOW); digitalWrite(Motor2D, HIGH); delay(20); } void moveBackwardsLeft() { digitalWrite(Motor1A, LOW); digitalWrite(Motor1B, HIGH); digitalWrite(Motor2C, HIGH); digitalWrite(Motor2D, LOW); delay(20); } void moveBackwardsRight() { digitalWrite(Motor1A, LOW); digitalWrite(Motor1B, HIGH); digitalWrite(Motor2C, HIGH); digitalWrite(Motor2D, LOW); delay(20); }
Modelado
Las partes del robot se modelaron en el software Fusion 360 y los parámetros de impresión 3D se definieron en Creality Slicer.
Impresión 3D
Pruebas y armado
Se llevaron a cabo pruebas exhaustivas de los códigos que controlan el movimiento de las ruedas, la iluminación y la aplicación a través de Bluetooth desde el celular. Inicialmente, nos enfrentamos a desafíos con los códigos, experimentando errores básicos que requerían solución. Sin embargo, gracias a la orientación proporcionada a través de videos instructivos y la asistencia del profesor, logramos superar estos obstáculos y llevar a cabo la implementación exitosa de la visión inicial del proyecto.
La fase de ensamblaje también presentó desafíos, ya que fue necesario realizar ajustes en algunas partes del cuerpo para garantizar que todos los elementos se integraran sin inconvenientes. Optamos por ubicar las ruedas en el exterior del cuerpo debido a que su disposición interna generaba conflictos con otros componentes, impidiendo su movilidad. Este proceso de ajuste y reconfiguración demostró ser crucial para la funcionalidad general del robot, asegurando un rendimiento óptimo en su conjunto.
Video
Análisis grupal
Se llevaron a cabo pruebas exhaustivas de los códigos que controlan el movimiento de las ruedas, la iluminación y la aplicación a través de Bluetooth desde el celular. Inicialmente, nos enfrentamos a desafíos con los códigos, experimentando errores básicos que requerían solución. Sin embargo, gracias a la orientación proporcionada a través de videos instructivos y la asistencia del profesor, logramos superar estos obstáculos y llevar a cabo la implementación exitosa de la visión inicial del proyecto.
La fase de ensamblaje también presentó desafíos, ya que fue necesario realizar ajustes en algunas partes del cuerpo para garantizar que todos los elementos se integraran sin inconvenientes. Optamos por ubicar las ruedas en el exterior del cuerpo debido a que su disposición interna generaba conflictos con otros componentes, impidiendo su movilidad. Este proceso de ajuste y reconfiguración demostró ser crucial para la funcionalidad general del robot, asegurando un rendimiento óptimo en su conjunto.