AVIÓN

DESCRIPCIÓN DEL PROYECTO

El objetivo de este proyecto es crear un avión que vuele por radio control utilizando 1 Arduino Uno.cap1

AUTORES

  • Daniel Lysenko.
  • Kilian Escudero.
  • Jorge Santamaría.
  • Javier Morales.

Material necesario

MATERIALES

  • Cinta de aluminio.
  • Varillas de vidrio.

PARTES COMPRADAS

  • Bateria 11,1Voltios y de 5 Voltios.

bateriaIMG_20230510_113837

sg90

  • Arduino Uno R3 (mando y avión).

ArduinoUNO

Various-modules-based-on-the-NRF24L01-chip-768x446

  • 2 Ruedas delanteras (3,2 cm)

processed-78e0323c-cb30-4e30-ae71-747d603da97f_kk0ZOpUR processed-bd7bd7ec-3214-4abc-b0a5-2a81485b2a66_WvEMVg54

  • 1 Rueda trasera (2,5 cm)

processed-869caf33-dd31-4233-ad4c-36bb668cdd06_zWmWbRxI processed-5c08da15-f1de-4e9e-b952-db7039311e86_DL0xaVfK

  • Mando shield joystick

shieldexplica


MATERIAL EN 3D

  • Morro del avión

morro

  • Cola avión

colaavión

  • Ala del avión

alaavión

  • Avión

avion1 avion2

  • Mando

Captura de pantalla 2023-04-17 a las 8.46.10


DIAGRAMA DEL PROYECTO

Código del mando (emisor):

#include <RF24.h>
#include <nRF24L01.h>
#include <RF24_config.h>
#include <printf.h>

//Declaremos los pines CE y el CSN
#define CE_PIN 9
#define CSN_PIN 8

//Variable con la dirección del canal por donde se va a transmitir
byte direccion[5] ={‘p’,’l’,’a’,’n’,’e’};
//creamos el objeto radio (NRF24L01)
RF24 Radio(CE_PIN, CSN_PIN);

//vector con los datos a enviar
float datos[4];

// Arduino pin joysticks izq
const int X_pinI = 2; // analog pin connected to X output
const int Y_pinI = 3; // analog pin connected to Y output
// Arduino pin joysticks der
const int X_pinD = 0; // analog pin connected to X output
const int Y_pinD = 1; // analog pin connected to Y output

void setup(){
//inicializamos el NRF24L01
Radio.begin();
//inicializamos el puerto serie
Serial.begin(9600);

//Abrimos un canal de escritura
Radio.openWritingPipe(direccion);
}

void loop(){
//cargamos los datos en la variable datos[]
// leeremos lso joysticks

datos[0]=analogRead(X_pinI);
datos[1]=analogRead(Y_pinI);
datos[2]=analogRead(X_pinD);
datos[3]=analogRead(Y_pinD);

datos[0] = map(datos[0], 508, 1023, 0, 180);
datos[1] = map(datos[1], 0, 1020, 0, 180);
datos[2] = map(datos[2], 0, 1023, 0, 185);
datos[3] = map(datos[3], 0, 1023, 0, 185);

//enviamos los datos
bool ok = Radio.write(datos, sizeof(datos));
//reportamos por el puerto serial los datos enviados
// luego lo comentaremos no será necesario
if(ok){

   Serial.print(» Y Left»);
   Serial.println(datos[0]);

   Serial.print(» X Left»);
   Serial.println(datos[1]);

   Serial.print(» Y Right»);
   Serial.println(datos[2]);

   Serial.print(» X Right»);
   Serial.println(datos[3]);

   Serial.print(«\n\n»);

   delay(100);
   }

else{
   Serial.println(«no se ha podido enviar y recibir»);
}
delay(200);

}
 
 
Código del avión (receptor):
 

// Librerías
#include <RF24.h> // Driver de Radio – Módulos nRF24L01+
#include <Servo.h>

// definimos el servo para la velocidad
#define PIN_VELO 2

// definimos el servo para la dirección
// faltarán el resto de servos

// Pines RF24L01
#define PIN_CE 9
#define PIN_CSN 10

//Servos
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo motor;

int x_axis = A0;
int y_axis = A1;
int velo, dire;

const byte direccion[5] = {‘p’, ‘l’, ‘a’, ‘n’, ‘e’};
RF24 radio(PIN_CE, PIN_CSN);

int data[4];

Servo velocidad;

// Configuración
void setup() {
velocidad.attach(PIN_VELO, 1000, 2000);
velocidad.writeMicroseconds(900); // send “stop” signal to ESC.
delay(4000);

// Configuración Consola – Depuración
Serial.begin(9600);

// Inicializa Sistema RF sobre el bus SPI
if (!radio.begin()) {
Serial.println(F(«¡¡¡El Hardware de Radio no responde!!!»));
while (1) {
} // Bucle infinito
}

// Modo Lectura > Pipe 1 + Dirección
radio.openReadingPipe(1, direccion);
Serial.println(«escuchando»);
// Sistema RF en Recepción – RX Mode
radio.startListening();

servo1.attach(3); //s1
servo2.attach(4); //s2
servo3.attach(5); //s3
servo4.attach(6); //s4

motor.attach(2, 1000, 2000);
motor.writeMicroseconds(900); // send “stop” signal to ESC.
delay(4000);
}

void loop() {
int angulo1 = data[0] ; //Brushless
int angulo2 = data[1] ; //wings left-right
int angulo3 = data[2] ;
int angulo4 = data[3] ;

// Enlace TX / RX
boolean radioOK = radio.available();
// Datos Recibidos > Sistema RF
if (radioOK) {
// Leer Datos > Estructura
radio.read(data, sizeof(data));

servo1.write(angulo4);

motor.write(angulo1);
Serial.println(angulo1);

if (angulo3 != 90){
servo3.write(angulo3);
servo4.write(angulo3);
}
else {
servo3.write(angulo2);
servo4.write(180-angulo2);
}

servo2.write(angulo3);

}
}


PLANTEAMIENTO DEL PROYECTO

11        

Avión en proceso:

1681810523970

1681810523962

1681810523953

Avión acabado:

cap2

Esquema eléctrico del avión:

EsquemaAvion_bb