Barcuino

BARCUINO

1.  Introducción

1.1.       Grupo
e integrantes

Este proyecto ha sido realizado por el
grupo 8 del campus de Móstoles, integrado por:

-Irene Aunión
Quirós

-Roberto
Chorro Pérez

-Pablo San
Juan Santana



1.2.       Presentación
del proyecto

Nuestro
proyecto consiste en un barco teledirigido, al cual hemos añadido dos leds, un zumbador,
una resistencia fotovoltaica y un pulsador. La resistencia nos va a permitir
detectar cuándo el nivel de luz es bajo para encender los leds, mientras que el
pulsador permite el paso de la corriente al accionarlo, de manera que emite un
sonido tres veces y se encienden los leds para notificar que el barco está
activo.

1.3.       Materiales
y presupuesto

Materiales
Precio
2 Módulos Wireless NRF24L01 de
2.4GHz
7’09€
2 Micro Servo SG90 Servo 9g
7’99€
1 Módulo de Arduino con mando
joystick de PS2 adaptado
5’99€
1 Neuftech
L298N Dual H Puente DC de conductor del motor de pasos del controlador para Arduino
6’99€
1 Motor driver L293D
3
1 Pack 40x
Cables Dupont
3€
1 Estructura
de barco
3€
2 Leds
Reciclado
1 Motor
Reciclado
6 Pilas
Reciclado
1 Hélice
Reciclado
1 Varilla
Reciclado
2 Timones
Reciclado
1
Interruptor
Reciclado
1 Placa de
Arduino
Proporcionado
por el profesor
1 Protoboard
Proporcionado
por el profesor
1 Resistencia
fotovoltaica
Proporcionado
por el profesor
1 Resistencia
de 150 ohmnios
Proporcionado
por el profesor
1 Zumbador
Proporcionado
por el profesor
Total
37’06€

2.  Desarrollo
del proyecto

2.1.       Construcción

Primero
hemos soldado dos cables al motor y le hemos integrado una varilla extensible,
en cuyo extremo va enganchada la hélice. Dicha hélice está hecha con una lámina
de aluminio y con una perforación en el centro para unirla a la varilla y
sellarla con un tornillo.
Luego hemos
hecho un agujero a la parte de atrás del barco para introducir la varilla, y
hemos puesto un tope para que el motor con la varilla quede inclinado hacia
abajo. Hemos recubierto la pared interior del agujero con corcho y lo hemos
tapado. Además, hemos hecho una abertura en la parte de arriba del barco para
que el motor quepa cuando lo cerremos.
Esta
abertura en la parte de arriba también la utilizamos para introducir los cables
de los servos, pegados a ambos lados de la parte trasera de la cubierta del
barco, y los cables del joystick. En la parte delantera de la cubierta también
hemos hecho seis agujeros, esta vez más pequeños, para poner los dos leds y la
resistencia fotovoltaica. En la parte central hemos hecho el agujero en el que
está situado el interruptor.
En la parte
de atrás del barco también hemos puesto dos timones hechos con plástico y
amarrados a los servos con alambre. Los alambres pasan a través de dos tubos
pegados al barco para que se muevan bien.
Por último,
en el interior del barco introducimos el Arduino, la protoboard, el driver y el zumbador,
con las conexiones correspondientes incluyendo a los dos leds, la resistencia
fotovoltaica, el interruptor, los servos y el motor.

2.2.       Código

#include
<Servo.h>          // Incluir la
librería Servo
#define
IN3 4               // Entrada 1 del
motor
#define
IN4 5               // Entrada 2 del
motor
Servo
servo1;               // Crea el objeto
que corresponde con el primer servo
Servo
servo2;               // Crea el objeto
que corresponde con el segundo servo
int
angulo = 0 ;            // Variable que
representará el movimiento de los servos
int
Eje_X = A0 ;            // Variable que
representará el valor del eje x del joystick
int
Eje_Y = A1 ;            // Variable que
representará el valor del eje y del joystick
int
led1 = 12;              // Variable que
representará el primer led
int
led2 = 13;              // Variable que
representará el segundo led
bool
on= true;              // Variable que se
utilizará para el inicio
int
rFoto=0;                // Variable que
representará el valor de la resistencia fotovoltaica
const
int buzzer = 11;    //Variable que
representará al zumbador
void
setup()
    {
        Serial.begin(9600);
        pinMode(led1,OUTPUT);
        pinMode(led2,OUTPUT);
        servo1.attach(8);  // Conectar servo1 al pin 8
        servo2.attach(9);  // Conectar servo1 al pin 9
        pinMode (IN3, OUTPUT);    // Conectar la entrada 1 del motor al pin 3
        pinMode (IN4, OUTPUT);    // Conectar la entrada 2 del motor al pin 4
        pinMode(buzzer, OUTPUT);
    }
void
loop()
    {
      if (on){
        int i;
        int sonido = 200;
        for (i = 0;i<=3;i++){
            tone(buzzer, sonido); // El zumbador
suena
            digitalWrite(led1,HIGH); //
Enciende el primer led
            digitalWrite(led2,LOW); // Apaga el
segundo led
            delay(300);
            digitalWrite(led1,LOW); // Apaga el
primer led
            digitalWrite(led2,HIGH); //
Enciende el segundo led
            delay(300);
            noTone(buzzer); // El zumbador no
suena
            sonido += 200;
        }
        noTone(buzzer);
        digitalWrite(led1,LOW); // Apaga el
primer led
        digitalWrite(led2,LOW); // Apaga el
segundo led
        on = false; // Sale del bucle de inicio
      }
        rFoto=analogRead(A5);
        Serial.println(rFoto);
        if(rFoto < 10){
          digitalWrite(led1,HIGH); // Enciende
el primer led
          digitalWrite(led2,HIGH); // Enciende
el segundo led
        } else {
          digitalWrite(led1,LOW); // Apaga el
primer led
          digitalWrite(led2,LOW); // Apaga el
segundo led
        }
        int ejeX = analogRead(Eje_X);
        int ejeY = analogRead(Eje_Y);
        angulo 
= map( ejeX, 0, 1024, 0, 180); //Calcula el ángulo que girarán los
servos
        servo1.write(angulo); // Gira el primer
servo
        servo2.write(angulo); //Gira el segundo
servo
      if(ejeY > 700){ //El joystick se mueve
hacia arriba
        analogWrite(IN3, (ejeY – 701)); //La
turbina gira en sentido horario
        digitalWrite(IN4, 0); // La turbina no
gira en sentido inverso
      } else if(ejeY < 400){
        digitalWrite(IN3, 0); //La turbina no
gira en sentido horario
        analogWrite(IN4, (400 – ejeY)); // La
turbina gira en sentido inverso
      }
      else{
        digitalWrite(IN3, 0); // La turbina no
gira en sentido horario
        digitalWrite(IN4, 0); // La turbina no
gira en sentido inverso
      }
    }

2.3.       Esquemas

Aquí podemos ver la estructura del
circuito:


























2.4.       Fotos

Hélice y timones

Motor
Cubierta


















Circuito

2.5.       Problemas
encontrados

El principal
problema ha sido que no hemos logrado que el barco sea teledirigido debido a
que los módulos Wireless que hemos comprado nos han fallado y no hemos
conseguido que funcionen de ninguna manera.
Además, al
hacer el agujero en la cubierta del barco rompimos dos cables de uno de los
servos y ha habido que cortarlos y soldarles otro. También se nos rompió el
motor driver inicial 
(L293D) y uno de los leds, teniendo que usar otros.
A la hora
de probarlo en el agua, el barco no flotaba debido al peso mal distribuido, así
que tuvimos que ponerlo sobre corcho, y los timones tampoco giraban bien.

Por último, sólo es posible mover el joystick en dirección norte, sur, este y oeste, si se prueba cualquier otra se reinicia el código, es decir, el barco vuelve a emitir el sonido tres veces y a encender los leds.

2.6.       Propuestas
de mejoras

Podría
lograrse una estructura mejor hecha, más reforzada y visualmente menos
artesanal. También con unos timones hechos de un material más duro. Además, se
podría hacer teledirigido con módulos que funcionen bien. También podría
meterse el joystick en una estructura que lo contenga para que hiciera las
veces de mando y mejorar el sonido con un altavoz.
Así mismo,
sería posible añadir más funciones al barco, ponerle más leds, poner diferentes
velocidades al barco o ponerle un sensor de proximidad y hacer que suene cada
vez que se va a chocar con algo.

2.7.       Vídeo

También te podría gustar...

Deja un comentario

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