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:
grupo 8 del campus de Móstoles, integrado por:
-Irene Aunión
Quirós
Quirós
-Roberto
Chorro Pérez
Chorro Pérez
-Pablo San
Juan Santana
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.
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.
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.
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.
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.
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.
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
<Servo.h> // Incluir la
librería Servo
#define
IN3 4 // Entrada 1 del
motor
IN3 4 // Entrada 1 del
motor
#define
IN4 5 // Entrada 2 del
motor
IN4 5 // Entrada 2 del
motor
Servo
servo1; // Crea el objeto
que corresponde con el primer servo
servo1; // Crea el objeto
que corresponde con el primer servo
Servo
servo2; // Crea el objeto
que corresponde con el segundo servo
servo2; // Crea el objeto
que corresponde con el segundo servo
int
angulo = 0 ; // Variable que
representará el movimiento de los servos
angulo = 0 ; // Variable que
representará el movimiento de los servos
int
Eje_X = A0 ; // Variable que
representará el valor del eje x del joystick
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
Eje_Y = A1 ; // Variable que
representará el valor del eje y del joystick
int
led1 = 12; // Variable que
representará el primer led
led1 = 12; // Variable que
representará el primer led
int
led2 = 13; // Variable que
representará el segundo led
led2 = 13; // Variable que
representará el segundo led
bool
on= true; // Variable que se
utilizará para el inicio
on= true; // Variable que se
utilizará para el inicio
int
rFoto=0; // Variable que
representará el valor de la resistencia fotovoltaica
rFoto=0; // Variable que
representará el valor de la resistencia fotovoltaica
const
int buzzer = 11; //Variable que
representará al zumbador
int buzzer = 11; //Variable que
representará al zumbador
void
setup()
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()
loop()
{
if (on){
int i;
int sonido = 200;
for (i = 0;i<=3;i++){
tone(buzzer, sonido); // El zumbador
suena
suena
digitalWrite(led1,HIGH); //
Enciende el primer led
Enciende el primer led
digitalWrite(led2,LOW); // Apaga el
segundo led
segundo led
delay(300);
digitalWrite(led1,LOW); // Apaga el
primer led
primer led
digitalWrite(led2,HIGH); //
Enciende el segundo led
Enciende el segundo led
delay(300);
noTone(buzzer); // El zumbador no
suena
suena
sonido += 200;
}
noTone(buzzer);
digitalWrite(led1,LOW); // Apaga el
primer led
primer led
digitalWrite(led2,LOW); // Apaga el
segundo led
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
el primer led
digitalWrite(led2,HIGH); // Enciende
el segundo led
el segundo led
} else {
digitalWrite(led1,LOW); // Apaga el
primer led
primer led
digitalWrite(led2,LOW); // Apaga el
segundo led
segundo led
}
int ejeX = analogRead(Eje_X);
int ejeY = analogRead(Eje_Y);
int ejeY = analogRead(Eje_Y);
angulo
= map( ejeX, 0, 1024, 0, 180); //Calcula el ángulo que girarán los
servos
= map( ejeX, 0, 1024, 0, 180); //Calcula el ángulo que girarán los
servos
servo1.write(angulo); // Gira el primer
servo
servo
servo2.write(angulo); //Gira el segundo
servo
servo
if(ejeY > 700){ //El joystick se mueve
hacia arriba
hacia arriba
analogWrite(IN3, (ejeY – 701)); //La
turbina gira en sentido horario
turbina gira en sentido horario
digitalWrite(IN4, 0); // La turbina no
gira en sentido inverso
gira en sentido inverso
} else if(ejeY < 400){
digitalWrite(IN3, 0); //La turbina no
gira en sentido horario
gira en sentido horario
analogWrite(IN4, (400 – ejeY)); // La
turbina gira en sentido inverso
turbina gira en sentido inverso
}
else{
digitalWrite(IN3, 0); // La turbina no
gira en sentido horario
gira en sentido horario
digitalWrite(IN4, 0); // La turbina no
gira en sentido inverso
gira en sentido inverso
}
}
2.3. Esquemas
Aquí podemos ver la estructura del
circuito:
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.
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.
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.
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.
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.
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.