Zepelín- Grupo 2

Integrantes

José Pertierra das Neves
Sergio Santamaría Carrasco
Guillermo Nieto Barba

1.-Introducción

La idea del proyecto viene para dar una alternativa a los drones, sobretodo en recintos cerrados donde las condiciones meteorológicas no afecten al vuelo. En el sector del entretenimiento podría utilizarse para grabar eventos, ser un elemento de seguridad mostrando las salidas cercanas…

2.-Proceso de diseño

La primera decisión que tuvimos que tomar fue el método por el que mantendríamos en el aire los componentes, dependía del peso que queríamos que levantara y este a su vez dependía de la funcionalidad que queríamos dar al zepelín. Nos decantamos por un globo de latex con 70 cm de diámetro lleno de helio dad la dificultad de transporte de globos mayores.

IMG-20160426-WA0008.jpg

Por la limitación antes mencionada decidimos usar un arduino nano, un módulo bluetooth, un motor y dos servos para conducir el zepelín. Tras las primeras pruebas descubrimos que el método de propulsión era insuficiente y que la primera versión del soporte para los componentes demasiado pesado.
!motor.jpg

Tras este intento trabajamos en en desarrollar la aplicación distribuida en android para, gracias al módulo bluetooth, controlar los servos y motores.
IMG-20160419-WA0005.jpg

primera interfaz.jpg

El anterior diseño desembocó en uno más ligero donde cambiamos la estructura por una formada por varillas y en la que añadimos un nuevo motor.

IMG-20160425-WA0000.jpg

A pesar de que aumenta nuestro control en en el movimiento del zepelín nos surge el problema de sostener el Arduino junto con la alimentación. La solución final a nuestro problema fue utilizar tres varillas dispuestas en forma de triángulo.

IMG-20160425-WA0009.jpg

Una vez resuelto debíamos elegir la funcionalidad añadida aparte de la conducción con una aplicación distribuida para Android.

Por motivos de peso, una vez más, descartamos el uso de un medidor de ultrasonidos para mantener el zepelín a una altura mínima o detectar choques con otros objetos.

3.-Circuito

Como podemos observar el circuito está alimentado por una pila de 9V alimentando el arduino y una batería de 1100 mAh alimentando los motores.

Captura.PNG

4.-Gastos

Hemos realizado un presupuesto cero, esto es calculando el coste de de todas las herramientas necesarias.


Componentes
Cantidad
Coste/und
Coste
Multirotor Carbon Fiber
2
3,04 €
6,08 €
Nano ArduinoCH34OG/ATmga168
1
3,00 €
3,00 €
DigitalServo
4
2,93 €
11,72 €
Globo 70cm + Helio
2
14,00 €
28,00 €
Módulo Bluetooth
1
4,00 €
4,00 €
Transistores BC557
4
0,20 €
0,80 €
ProtoboardMini
1
1,00 €
1,00 €
Motor DC
4
2,50 €
10,00 €
Batería 1100 mAh
1
20,00 €
20,00 €
Batería 110 mAh
1
8,00 €
8,00 €
Batería 680 mAh
1
15,00 €
15,00 €
Cables (bolsa)
1
2,00 €
2,00 €
Arduino UNO
1
20,00 €
20,00 €
Accesorios
1
5,00 €
5,00 €
Soldador Estaño
1
15,00 €
15,00 €
Polímetro
1
10,00 €
10,00 €
Móvil Android
1
50,00 €
50,00 €
Total
209,60 €
Mano de obra
Horas
Coste/hora
Coste
Mano de obra (horas)
70
15,00 €
1.050,00 €
Total
1.259,60 €

5.-Mejoras

  • Reducir el peso.
    • Cambiando el globo por uno de 90 cm de diámetro.
    • Utilizar un arduino nano.
    • Añadir sensores de distancia.
    • Añadir pantallas LCD.

6.-Anexo

6.1-Video


dhfbd

6.2-Memoria

Memoria Grupo 2 

6.3-Código



#include <SoftwareSerial.h>
#include <Servo.h>
Servo myservo;
Servo myservo2;
boolean motor1 = false;
boolean motor2 = false;
char c;
boolean modoEstatico = false;
SoftwareSerial BTserial(10,11); // RX | TX
long distancia;
long tiempo;
void setup() {
// put your setup code here, to run once:
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
myservo.attach(7);
myservo2.attach(8);
//Medidor de distancia
pinMode(5, OUTPUT); /*activación del pin 5 como salida: para el pulso ultrasónico TRIGGER*/
pinMode(6, INPUT); /*activación del pin 6 como entrada: tiempo del rebote del ultrasonido ECHO*/
Serial.begin(9600);
BTserial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
if (BTserial.available())
{
c = BTserial.read();
Serial.println(c);
if (modoEstatico){
if (c!=’d’){
modoEstatico = false;
}
estatico();
}else{
realizarAccion(c);
}
}
}
void estatico(){
digitalWrite(5,LOW); /* Por cuestión de estabilización del sensor*/
delayMicroseconds(5);
digitalWrite(5, HIGH); /* envío del pulso ultrasónico*/
delayMicroseconds(10);
tiempo=pulseIn(6, HIGH); /* Función para medir la longitud del pulso entrante. Mide el tiempo que transcurrido entre el envío
del pulso ultrasónico y cuando el sensor recibe el rebote, es decir: desde que el pin 12 empieza a recibir el rebote, HIGH, hasta que
deja de hacerlo, LOW, la longitud del pulso entrante*/
distancia= int(0.017*tiempo); /*fórmula para calcular la distancia obteniendo un valor entero*/
/*Monitorización en centímetros por el monitor serial*/
Serial.println(“Distancia “);
Serial.println(distancia);
Serial.println(” cm”);
delay(1000);
}
void reiniciarTodo(){
motor1 = false;
motor2 = false;
digitalWrite(2,LOW);
digitalWrite(3,LOW);
}
void realizarAccion(char valor){
if (valor == ‘0’){
reiniciarTodo();
}
else if (valor == ‘1’){
if (motor1){
digitalWrite(2,LOW);
Serial.println(“Apagando motor1”);
}else{
Serial.println(“Encendiendo motor1”);
digitalWrite(2,HIGH);
}
motor1 = !motor1;
}
else if (valor == ‘2’){
if (motor2){
Serial.println(“Apagando motor1”);
digitalWrite(3,LOW);
}else{
Serial.println(“Encendiendo motor1”);
digitalWrite(3,HIGH);
}
motor2 = !motor2;
}
else if (valor == ‘3’){
myservo.write(120);
}
else if (valor == ‘4’){
myservo2.write(120);
}
else if (valor == ‘5’){
myservo.write(150);
}
else if (valor == ‘6’){
myservo2.write(150);
}
else if (valor == ‘7’){
myservo.write(60);
}
else if (valor == ‘8’){
myservo2.write(60);
}
else if (valor==’d’){
modoEstatico = true;
myservo.write(60);
myservo2.write(60);
digitalWrite(2,HIGH);
digitalWrite(3,HIGH);



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 *