Cuna para bebés 2.0

1. INTRODUCCIÓN Y FUNCIONAMIENTO

Nuestra idea inicial era hacer una cuna para bebes con diferentes modos de movimiento.

Esta idea se ha mantenido durante toda la fase de diseño, implementación y construcción de las mismas, pero hemos añadido algunas funcionalidades al diseño inicial.
La cuna que hemos construido consta de:

– Cuatro botones para seleccionar los tres modos diferentes  de movimiento (Modo 1 es un movimiento de 15 grados sobre la base; Modo 2 es un movimiento de 15 grados hacia atrás;  Modo 3 mezcla los dos modos anteriores) y un botón de parada.
Cada uno de estos movimientos se puede llevar a cabo gracias a los dos servomotores que hemos colocado en el interior de la caja.

– Un micrófono que detecta el llanto del bebé y hace sonar una melodía.

– Un display el cual nos indica en todo momento el modo seleccionado y el estado de la cuna.

2. MONTAJE

En este apartado vamos a explicar brevemente como se ha montado cada una de las partes de la CunaBebe.
Soporte y cuna:

Para ello se ha utilizado:
            – Un palo de plástico (Bastón de Juguete).
            – Trozos de madera fina.
            – Cesta de pan.
            – Tela Azul.
            – Muñeca de juguete.

Base cuna:

Para la base de la cuna se ha utilizado una caja rectangular de madera. En la parte exterior  o tapa, podemos observar los cuatro botones, el display y un agujero central para el soporte de la cuna. En la parte superior de la tapa se encuentra el altavoz y el micrófono.

En el reverso de la tapa se encuentra la circuitería junto con la placa Arduino.


En la parte interior de la caja se encuentran los dos servomotores.

3. TRABAJO DE CADA INTEGRANTE

 El trabajo se ha dividido en:
-Diseño estructural de la cuna ( boceto ,funcionalidad, )
-Diseño del circuito.
-Implementación del código.
-Montaje de los componentes.
-Montaje de la estructura.
-Pruebas.

4. HARDWARE

4.1. LISTA DE COMPONENTES

Nombre
del Componente
Precio
Palo de Plástico
1.80€ / ud
Cesta de mimbre
1.80€ / ud
Maderas finas
0.80€
Tela Azul
1.20€ / metro
Servomotor (x2 uds)
12€ /ud = 24€
Protoboard
5€ /ud
Cable 1mm (5 metros)
2€
Micrófono
3€ /ud
Muñeca
5€ / ud
Botones (x4 uds)
Aportado por la URJC
Altavoz
Aportado por la URJC
Display
Aportado por la URJC
Resistencias
Aportado por la URJC
Placa Arduino
Aportado por la URJC
Potenciómetro (x2 uds)
Aportado por la URJC

4.2.    CIRCUITO Y ESQUEMA


5. PROBLEMAS ENCONTRADOS

Uno de nuestros problemas principales y por el que nos vimos obligados a modificar nuestro diseño, fue la Celda de Carga. Tras investigar en la web,  manuales acerca del código y sus conexiones y no encontrar nada, decidimos no utilizarlo.

También tuvimos problemas con el uso del display. Después de tener soldados cada uno de los cables de conexión, no mostraba nada, simplemente se encendía. Comprobando cada una de las conexiones nos dimos cuenta de que el problema estaba en el potenciómetro al que va conectado.

También nos surgió un problema una vez que teníamos montado cada una de las partes de la cuna, nos dimos cuenta de que los servomotores no tenían la suficiente fuerza para mover el soporte y la cuna. En ese momento la primera idea que nos surgió fue cortar el palo del soporte porque era demasiado largo, pero esta solución no dio resultado ya que los servomotores seguían sin poder moverlo. Entonces decidimos modificar el punto de unión de la cuna y el palo de plástico, para que el peso de la cuna estuviese más repartido e hicimos la unión en el medio de la cesta como se puede observar en las fotografías de la parte superior, pero esta solución seguía sin dar el resultado esperado. Después de todas estas ideas se nos ocurrió poner una goma en la base de la cuna que ayudase a los servomotores a realizar el movimiento, esta última idea si dio resultado.

Por último nos gustaría mencionar los problemas que tuvimos con el micrófono. Dicho componente tiene un potenciómetro para medir la sensibilidad del ruido siendo este muy difícil de ajustar. Tras varias modificaciones en el código y unos pequeños ajustes en el dispositivo logramos  el resultado que esperábamos.


6. CONCLUSIONES

La realización de la práctica nos ha resultado entretenida y hemos aprendido a utilizar Arduino y los diferentes componentes que hemos usado. Pero nos gustaría destacar que a lo largo del desarrollo del proyecto nos han surgido numerosos problemas que hemos ido solucionando, gracias a los manuales que hemos encontrado en la Web.

A lo largo del desarrollo del proyecto hemos tenido que ir adecuando los materiales a las características de cada uno de los componentes de Arduino.

Desde el primer momento intentamos buscar una idea original y que llamase la atención a los usuarios, creemos que los hemos conseguido y por todo esto estamos satisfechos con nuestro trabajo.

7. APÉNDICE

7.1. CÓDIGO ARDUINO

#include <Servo.h> // Librería para servos
#include <LiquidCrystal.h> // Incluye la Libreria LiquidCrystal
Servo servo1; // Creamos un objeto de tipo servo
Servo servo2;
#define button1 2 // definimos un primer botón
#define button2 4 // definimos un segundo botón             
#define button3 8  // Si da problemas el código, poner las var de los botones en MAYUS
#define button4 12
LiquidCrystal lcd(1, 7, 9, 10, 11, 13); // Crea un Objeto LC. Parametros: (rs, enable, d4, d5, d6, d7)
int zumbador = 6; // Pin 6 para el cable rojo del zumbador
int SensorsonidoPin = 3; //pin 3 para el sensor con microfono
int con1 = 0;
int con2 = 0;
int con3 = 0;
int con4 = 0;
int conSensor = 0;
int aux = 0;
int aux1 = 0;
int aux2 = 0;
int grado = 90;
int grado2 = 115;
int sube = 0;
int sube2 = 0;
int dejarComp = 0;
int unaVez = 0;
int buttonstate1 = 0;
int buttonstate2 = 0;
int buttonstate3 = 0;
int buttonstate4 = 0;
int sensorState;
void setup() {
  servo1.attach(0); // pin del servomotor en Arduino
  servo2.attach(5);
  pinMode(button1, INPUT); // se declara el botón como componente de entrada
  pinMode(button2, INPUT);
  pinMode(button3, INPUT); // se declara el botón como componente de entrada
  pinMode(button4, INPUT);
  pinMode(zumbador, OUTPUT); // El zumbador está en un pin digital de salida
  pinMode(SensorsonidoPin, INPUT);
  lcd.begin(16, 2); // Inicializa la interface para el LCD screen, and determina sus dimensiones (ancho y alto) del display
  lcd.print(“CUNA BEBE 2.0”); // Imprime “BIENVENIDO A LA CUNA” sobre el LCD
  delay(3000);   // 3 segundos de espera
  lcd.setCursor(0, 1); // Seteamos la ubicacion texto 0 linea 1 que sera escrita sobre el LCD
}
void loop () {
  buttonstate1 = digitalRead(button1);  // Creamos dos estados para los dos botones
  buttonstate2 = digitalRead(button2);
  buttonstate3 = digitalRead(button3);  // Creamos dos estados para los dos botones
  buttonstate4 = digitalRead(button4);
  sensorState = digitalRead(SensorsonidoPin);
  servo1.write(90);
  servo2.write(115);
  if (sensorState == LOW) {
    lcd.clear(); // Limpia la pantalla
    delay(500);
    lcd.print(“BEBE LLORANDO”);
    delay(500);
    delay(600);
    tone(zumbador, 329.63, 300);
    delay(350);
    //play d4#
    tone(zumbador, 311.13, 300);
      delay(350);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(350);
      // play d4#
      tone(zumbador,311.13, 300);
      delay(350);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(350);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.66,300);
      delay(400);
      // play c4
      tone(zumbador, 261.63,300);
      delay(400);
      // play a3
      tone(zumbador, 220, 900);
      delay(1000);
      // play d3
      tone(zumbador,146.83, 300);
      delay(350);
      //play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      //play a3
      tone(zumbador, 220, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 900);
      delay(1000);
      // play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      // play a3#
      tone(zumbador, 233.08, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 900);
      delay(1000);
      delay(300);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play d4#
      tone(zumbador, 311.13, 300);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play d4#
      tone(zumbador, 311.13, 300);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.66, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 300);
      delay(400);
      // play a3
      tone(zumbador, 220, 900);
      delay(1000);
      // play d3
      tone(zumbador, 146.83, 300);
      delay(400);
      // play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      // play a3
      tone(zumbador, 220, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 900);
      delay(1000);
      // play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play a3
      tone(zumbador, 220, 900);
      delay(1000);
      // play b3
      tone(zumbador,246.94, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.66, 300);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 900);
      delay(1000);
      // play g3
      tone(zumbador, 196, 300);
      delay(400);
      // play f4
      tone(zumbador, 349.23, 300);
      delay(400);
      //play e4
      tone(zumbador, 329.23, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.63, 900);
      delay(1000);
      // play e3
      tone(zumbador,164.81, 300);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.63, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 900);
      delay(1000);
      // play d3
      tone(zumbador, 146.83, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.63, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 900);
      delay(1000);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play d4#
      tone(zumbador, 311.13, 300);
      delay(350);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(350);
      // play d4#
      tone(zumbador,311.13, 300);
      delay(350);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(350);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.66,300);
      delay(400);
      // play c4
      tone(zumbador, 261.63,300);
      delay(400);
      // play a3
      tone(zumbador, 220, 900);
      delay(1000);
      // play d3
      tone(zumbador,146.83, 300);
      delay(350);
      //play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      //play a3
      tone(zumbador, 220, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 900);
      delay(1000);
      // play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      // play a3
      tone(zumbador, 233.08, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 900);
      delay(1000);
      delay(300);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play d4#
      tone(zumbador, 311.13, 300);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play d4#
      tone(zumbador, 311.13, 300);
      delay(400);
      // play e4
      tone(zumbador, 329.63, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play d4
      tone(zumbador, 293.66, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 300);
      delay(400);
      // play a3
      tone(zumbador, 220, 900);
      delay(1000);
      // play d3
      tone(zumbador, 146.83, 300);
      delay(400);
      // play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      // play a3
      tone(zumbador, 220, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 900);
      delay(1000);
      // play f3
      tone(zumbador, 174.61, 300);
      delay(400);
      // play c4
      tone(zumbador, 261.63, 300);
      delay(400);
      // play b3
      tone(zumbador, 246.94, 300);
      delay(400);
      // play a3
      tone(zumbador, 220, 900);
      delay(1000);
    lcd.clear(); // Limpia la pantalla
    delay(500);
  }
  if (buttonstate1 == HIGH) {
    con1 = 1 – con1;
    con2 = 0;
    con3 = 0;
    dejarComp = 0;
    unaVez = 0;
    sube = 0;
    sube2 = 0;
    lcd.clear(); // Limpia la pantalla
    delay(500);
    lcd.print(“MECEDORA MODO 1”);
    delay(500);
  }
  if (buttonstate2 == HIGH) {
    con2 = 1 – con2;
    con1 = 0;
    con3 = 0;
    dejarComp = 0;
    unaVez = 0;
    sube = 0;
    sube2 = 0;
    lcd.clear(); // Limpia la pantalla
    delay(500);
    lcd.print(“MECEDORA MODO 2”);
    delay(500);
  }
  if (buttonstate3 == HIGH) {
    con2 = 0;
    con1 = 0;
    con3 = 1 – con3;
    dejarComp = 0;
    unaVez = 0;
    sube = 0;
    sube2 = 0;
    lcd.clear(); // Limpia la pantalla
    delay(500);
    lcd.print(“MECEDORA MODO 3”);
    delay(500);
  }
  if (buttonstate4 == HIGH) {
    con2 = 0;
    con1 = 0;
    con3 = 0;
    dejarComp = 0;
    unaVez = 0;
    sube = 0;
    sube2 = 0;
    lcd.clear(); // Limpia la pantalla
    delay(500);
    lcd.print(“MECEDORA REPOSO”);
    delay(500);
  }
  if (con1 == 1) {
    if (grado2 < 115) {
      grado2 = grado2 + 1;
      servo2.write(grado2);
      delay(50);
    } else {
      if (grado2 > 115) {
        grado2 = grado2 – 1;
        servo2.write(grado2);
        delay(50);
      }
    }
    if (grado2 == 115) {
      aux = 1;
      aux1 = 0;
      aux2 = 0;
      unaVez = 0;
    }
    if (aux == 1) {
      if (grado <= 115 && sube == 0 && con2 == 0) {
        ++grado;
        servo1.write(grado);
        delay(50);
        if (grado == 115) {
          sube = 1;
        }
      } else {
        if (grado >= 65 && sube == 1 && con2 == 0) {
          –grado;
          servo1.write(grado);
          delay(50);
          if (grado == 65) {
            sube = 0;
          }
        }
      }
    }
  }
  if (con2 == 1) {
    if (grado < 90) {
      grado = grado + 1;
      servo1.write(grado);
      delay(50);
    } else {
      if (grado > 90) {
        grado = grado – 1;
        servo1.write(grado);
        delay(50);
      }
    }
    if (grado == 90) {
      aux1 = 1;
      aux = 0;
      aux2 = 0;
      unaVez = 0;
    }
    if (aux1 == 1) {
      if (grado2 <= 130 && sube2 == 0 && con1 == 0) {
        grado2 = grado2 + 1;
        servo2.write(grado2);
        delay(50);
        if (grado2 == 130) {
          sube2 = 1;
        }
      } else {
        if (grado2 >= 100 && sube2 == 1 && con1 == 0) {
          grado2 = grado2 – 1;
          servo2.write(grado2);
          delay(50);
          if (grado2 == 100) {
            sube2 = 0;
          }
        }
      }
    }
  }
  if (con3 == 1) {
    if (unaVez == 0) {
      if (grado2 < 115) {
        grado2 = grado2 + 1;
        servo2.write(grado2);
        delay(50);
      } else {
        if (grado2 > 115) {
          grado2 = grado2 – 1;
          servo2.write(grado2);
          delay(50);
        }
      }//fin del else
      if (grado < 90) {
        grado = grado + 1;
        servo1.write(grado);
        delay(50);
      } else {
        if (grado > 90) {
          grado = grado – 1;
          servo1.write(grado);
          delay(50);
        }
      }
      if (grado2 == 115 && grado == 90) {
        aux = 0;
        aux1 = 0;
        aux2 = 1;
        unaVez = 1;
        sube = 0;
        sube2 = 0;
      }
    }//fin de if(unaVez==0)
    if (aux2 == 1) {
      if (grado <= 115 && sube == 0 && con2 == 0) {
        ++grado;
        servo1.write(grado);
        delay(5);
        if (grado == 115) {
          sube = 1;
        }
      } else {
        if (grado >= 65 && sube == 1 && con2 == 0) {
          –grado;
          servo1.write(grado);
          delay(5);
          if (grado == 65) {
            sube = 0;
          }
        }
      }
      if (grado2 <= 130 && sube2 == 0 && con1 == 0) {
        grado2 = grado2 + 1;
        servo2.write(grado2);
        delay(60);
        if (grado2 == 130) {
          sube2 = 1;
        }
      } else {
        if (grado2 >= 100 && sube2 == 1 && con1 == 0) {
          grado2 = grado2 – 1;
          servo2.write(grado2);
          delay(60);
          if (grado2 == 100) {
            sube2 = 0;
          }
        }
      }
    }//fin del if(aux2==1)
  }//fin de if(con3==1)
  if (con4 == 1) {
    if (grado2 < 115) {
      grado2 = grado2 + 1;
      servo2.write(grado2);
      delay(35);
    } else {
      if (grado2 > 115) {
        grado2 = grado2 – 1;
        servo2.write(grado2);
        delay(35);
      }
    }//fin del else
    if (grado < 90) {
      grado = grado + 1;
      servo1.write(grado);
      delay(35);
    } else {
      if (grado > 90) {
        grado = grado – 1;
        servo1.write(grado);
        delay(35);

      }

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *