Construye un Aerodeslizador RC con Arduino: Diseño 3D Impreso y Guía de Programación
En este tutorial aprenderemos a construir un aerodeslizador (hovercraft) RC basado en Arduino. Te mostraré todo el proceso de construcción, desde el diseño e impresión 3D de las piezas del aerodeslizador, incluyendo las hélices, hasta la conexión de los componentes electrónicos y la programación del Arduino. Puedes ver el siguiente video o leer el tutorial escrito a continuación. Para controlar el aerodeslizador, usé mi transmisor RC basado en Arduino DIY que hice en uno de mis videos anteriores. Configuré el joystick derecho para controlar el servomotor que posiciona los timones en la parte trasera del motor de empuje, configuré uno de los potenciómetros para controlar la hélice de sustentación (lift) que en realidad está acoplada a un motor brushless DC, y configuré el joystick izquierdo para controlar la propulsión. Así que, veamos qué se necesita para construir este aerodeslizador RC. Para comenzar, diseñé el aerodeslizador usando un software de modelado 3D. Puedes encontrar y descargar este modelo 3D, así como explorarlo en tu navegador en Thangs. Descarga el modelo 3D de ensamblaje en Thangs. Archivos STL para Impresión 3D: El principio básico de funcionamiento de un aerodeslizador es que la nave es levantada por un cojín de aire. La hélice central sopla aire debajo de la nave, lo que infla una falda (skirt) hecha de material suave. Cuando la presión de aire en la falda es lo suficientemente alta, la nave se eleva. El aire suministrado constantemente escapa desde el centro de la nave, entre la falda y el suelo, lo que crea sustentación adicional y también reduce la fricción entre el aerodeslizador y el suelo. Una vez elevado, usando la segunda hélice se genera un empuje que mueve el aerodeslizador hacia adelante. En la parte trasera de la hélice de empuje hay un simple juego de timones que se utilizan para dirigir el aerodeslizador. Sin embargo, una vez terminé el diseño, empecé con la impresión 3D de las piezas. El casco del aerodeslizador es la pieza más grande para imprimir y la diseñé específicamente para que quepa en mi impresora 3D Creality CR-10, que tiene una cama de impresión de 30x30cm. Aquí tienes un enlace a esta impresora 3D por si quieres echarle un vistazo. Después de que la impresión termina, es hora de hacer un poco de limpieza. El cuerpo principal del aerodeslizador o la cabina fue la impresión más larga que tardó alrededor de 18 horas en imprimirse. Debido al diseño curvo, y porque quería que fuera una sola impresión, se usó mucho material de soporte para esta impresión. Sin embargo, fue realmente fácil removerlo y la pieza final salió perfecta. El casco del aerodeslizador se imprimió boca abajo y tuvo solo una cantidad menor de material de soporte para remover. En realidad, tuve que hacer algunos ajustes a esta impresión y cortar algo de material de la carcasa central del soplador para que el soporte de la falda pueda encajar correctamente. Ya actualicé el modelo 3D así que no tendrás este problema. Algunas de las áreas redondeadas de las piezas estaban un poco rugosas, así que usé papel de lija simple para alisarlas. Las hélices no necesitaron limpieza y funcionaron bastante bien saliendo directamente de la impresora 3D. Ok, el siguiente paso es pintar las piezas impresas en 3D. No usé ninguna imprimación antes, sino que apliqué directamente una pintura acrílica en forma de spray. Usé un color marrón chocolate para la primera capa. Para algunas de las piezas más pequeñas, que en realidad son solo piezas decorativas, usé un color marrón más claro. Para hacer que el aerodeslizador se vea un poco más genial, una vez que la primera capa se secó, continué agregando dos colores más a las piezas. Para ese propósito, hice algunos patrones aleatorios en una hoja de papel simple, y los usé para hacer rayas y manchas en diferentes colores. Usé marrón claro y color negro para ese propósito. Realmente me gusta cómo quedaron las piezas, así que una vez secaron, continué ensamblando. Empecé instalando el servomotor que controla los timones sobre la carcasa del soplador de empuje. Aseguré el servo usando dos tornillos M2 y tuercas. Luego está el motor brushless. El modelo particular que tengo es el D2830 que tiene un diámetro de 28mm y 30mm de longitud, y por supuesto, la carcasa está diseñada específicamente para ajustarse a este motor. Aquí al insertar el motor, primero tuve que pasar los cables a través de las aberturas. Es un poco ajustado, pero aún manejable para pasarlos. Luego en la parte trasera, usando tornillos M3 aseguré el motor a la carcasa. Luego, puedo unir la carcasa de empuje con el cuerpo principal del aerodeslizador. Esta pieza tiene una abertura para que los cables del servo y el motor BLDC puedan pasar. Usando cuatro tornillos M3, los aseguré firmemente juntos. Una vez terminé eso, continué instalando el segundo motor brushless al casco del aerodeslizador. Aquí de nuevo usé el mismo método. Primero, pasé los cables a través de las aberturas y luego en la parte trasera aseguré el motor usando cuatro tornillos M3. Luego viene la electrónica. Los componentes electrónicos se colocarán entre el casco y el cuerpo principal del aerodeslizador. Pero antes de hacer eso, echemos un vistazo al diagrama de circuito y veamos cómo todo necesita conectarse. Así que, el cerebro de este aerodeslizador es una placa Arduino. Con el Arduino podemos controlar fácilmente el servo así como los dos motores brushless usando los dos controladores de velocidad electrónicos o ESCs. Para alimentar los motores BLDC, usaré una batería Li-Po 3S que proporciona alrededor de 11V, y para alimentar el Arduino, podemos usar los 5V regulados que los ESCs proporcionan a través de su función BEC (Battery Eliminator Circuit). Para la comunicación inalámbrica usaré el módulo transceptor NRF24L01, que si se usa con una antena amplificada puede tener un alcance estable de hasta 700 metros en espacio abierto. El transmisor RC que usaré para controlar el aerodeslizador, es el que construí a medida en uno de mis tutoriales anteriores, así que puedes consultarlo en caso de que necesites más detalles sobre él. También hay tutoriales detallados sobre el módulo NRF24L01, y cómo usar motores brushless con Arduino. Sin embargo, el principio básico de funcionamiento es que el transmisor envía los datos de los joysticks o potenciómetros al receptor que controla la velocidad de los motores brushless y la posición del servo. Hay un detalle pequeño más en este diagrama de circuito, y ese es el monitor de batería. Agregué un divisor de voltaje simple hecho de dos resistencias, que está conectado directamente a la batería, y su salida va a la entrada analógica del Arduino. El divisor de voltaje reduce los 11 voltios a alrededor de 4 voltios que son aceptables para los pines de 5V del Arduino. Con esto podemos monitorear el voltaje de la batería, y encender un LED cuando, por ejemplo, el voltaje de la batería caiga por debajo de 11 voltios. Así que empecé a conectar los componentes como se explicó. Para conectar los dos ESCs a una sola batería usé un divisor paralelo de conector de batería, tipo XT60. Para agregar un interruptor de encendido al proyecto, usé otro conector XT60, en el cual corté un cable y soldé un interruptor toggle allí. Así, un lado va al cable divisor Y y el otro lado a la batería. Luego, coloqué los ESCs dentro del cuerpo principal y los atrapé entre él y el casco del aerodeslizador. Luego, usando cuatro tornillos M3 apreté las dos partes juntas. Desde la abertura superior del cuerpo, luego inserté la batería en el área de la cabina. Luego, necesitamos conectar los componentes al Arduino y para ese propósito agregué dos headers de pines al Arduino que servirán como pines GND y 5V. Así que, una vez conecté todo al Arduino, pasé la antena del NRF24L01, el LED indicador y el interruptor de encendido, a través de la tapa superior de la cabina. Luego solo necesité meter todo dentro de la cabina. Estaba un poco ajustado aquí porque usé Arduino UNO, y probablemente debería haber usado un Arduino Nano en su lugar. Sin embargo, logré meter todo, también sujeté una pequeña pieza decorativa a la tapa y luego solo la encajé al cuerpo de la cabina. Continué instalando el sistema de dirección. Primero, conecté un pequeño eslabón al cuerno del servo usando un tornillo M2 y una tuerca. Luego inserté el primer timón en su lugar y lo aseguré a la carcasa de empuje usando un alambre metálico de 2mm que pasa a través de su cuerpo y así el timón puede rotar alrededor de él. De la misma manera sujeté el segundo timón. Este timón tiene una ranura adicional para poder conectarlo al eslabón insertado previamente al servo. De nuevo, usé tornillo M2 y tuerca para asegurarlos. Y finalmente, conecté los dos timones entre sí usando otro eslabón y con eso el sistema de dirección está completado. Luego, sujetaré esta pequeña pieza decorativa en el lateral del aerodeslizador. Usando un taladro, hice un agujero y luego aseguré la pieza al casco usando un solo tornillo. Coloqué estas piezas en ambos lados y creo que encajan bastante bien en la apariencia general del aerodeslizador. Ok, luego continué haciendo la falda (skirt) para este aerodeslizador. Puedes notar aquí que el soporte de la falda tiene agujeros alrededor y eso es para sujetarlo al casco. También hay ranuras para colocar tuercas y de esa manera, podremos asegurar fácilmente el soporte de la falda al casco usando tornillos M3. Una vez aseguré todas las tuercas en su lugar, continué haciendo la falda para la cual usé una simple bolsa de plástico de basura. Así que primero apliqué pegamento AC al área central del soporte, y lo pegué a la bolsa de plástico. Luego compensé el perímetro del soporte a unos 6cm. Lo marqué en varios puntos y luego los conecté. Usando un cúter, corté la bolsa de plástico al tamaño adecuado. Luego di la vuelta a la falda, y agregué algo de soporte adicional a la bolsa donde la pegamos previamente con el pegamento AC. Luego, el exterior de la bolsa necesita pegarse a la parte superior del soporte. De nuevo, usé pegamento AC para ese propósito y aseguré cuidadosamente la bolsa de plástico a él. Una vez hecho eso, aquí está cómo debería verse la falda. Luego, hice agujeros a través de la bolsa de plástico donde los tornillos deben pasar. El soporte de la falda es solo 1mm más pequeño que el casco del aerodeslizador, así que en combinación con la bolsa de plástico encaja en el casco perfectamente. Para asegurar la falda al casco, simplemente apreté los tornillos M3 alrededor de todo el perímetro. Hay una cosa más por hacer en la falda y es recortar el área central de la bolsa de plástico. Así, con esto la mitad del aire inflará directamente la falda y luego saldrá a través de esta abertura, creando una burbuja de aire adicional en el medio. Finalmente, lo que queda por hacer es sujetar las hélices a los motores brushless. Para ese propósito, estoy usando el casquillo (collet) que viene con el motor brushless. Es una forma realmente simple y efectiva de sujetar la hélice al eje del motor. Sin embargo, perdí el casquillo para mi otro motor, así que tuve que imprimir una versión diferente de la hélice para que encaje directamente en el eje del motor, que es de 3.15mm. La impresión salió bastante bien, encajó y se aseguró perfectamente al motor sin ni siquiera usar pegamento. ¡Y eso es todo, nuestro aerodeslizador controlado por radio está finalmente listo! Sin embargo, lo que queda en este video es echar un vistazo al código Arduino y cómo funciona el programa. Aquí está el código para este proyecto DIY de Aerodeslizador RC basado en Arduino: Descripción: Así que primero necesitamos incluir la librería RF24 para la comunicación por radio, así como la librería servo para controlar tanto el servo como los motores brushless. Luego necesitamos definir el radio y los objetos servo, algunas variables necesarias para el programa a continuación, así como la estructura de variables que se usan para almacenar los datos entrantes de mi Transmisor RC DIY. Para más detalles de cómo funciona esta comunicación, sugeriría consultar mi tutorial particular para ello. En la sección setup necesitamos inicializar la comunicación por radio, así como definir los pines a los que están conectados el servo y los ESCs. En la sección loop leemos los datos entrantes del transmisor y usamos esos valores para controlar el servo y los motores brushless. Así, los datos entrantes del joystick que varían de 0 a 255 se convierten en valores de 0 a 50 y usamos estos valores para controlar la posición del servo. Con el mismo método controlamos los motores brushless usando los ESCs. Los datos entrantes que van de 0 a 255 se convierten en valores de 1000 a 2000 y usando la función writeMicroseconds() enviamos estos datos al ESC como señal de control. Para monitorear el voltaje de la batería, leemos la entrada analógica que viene del divisor de voltaje y con matemáticas simples convertimos los valores de entrada en el valor real del voltaje de la batería. Si el voltaje de la batería cae por debajo de 11V simplemente encendemos el LED indicador. Y eso es todo. En caso de que necesites más detalles, puedes consultar los otros tutoriales sugeridos y así podrás entender completamente cómo funciona todo. Espero que hayas disfrutado este tutorial y hayas aprendido algo nuevo. Siéntete libre de hacer cualquier pregunta en la sección de comentarios a continuación y revisa mi Colección de Proyectos Arduino.Resumen

Modelo 3D del Aerodeslizador


Principio de Funcionamiento del Aerodeslizador


Impresión 3D






Pintando el Aerodeslizador


Ensamblaje del Aerodeslizador RC Arduino






Diagrama de Circuito

Componentes Electrónicos Necesarios



















Código Aerodeslizador RC Arduino
/* Arduino based RC Hovercraft == Receiver Code - ESC and Servo Control = by Dejan, www.HowToMechatronics.com Library: TMRh20/RF24, https://github.com/tmrh20/RF24/ */
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <Servo.h>
#define led 10
RF24 radio(8, 9); // nRF24L01 (CE, CSN)
const byte address[6] = "00001";
unsigned long lastReceiveTime = 0;
unsigned long currentTime = 0;
Servo esc1; // crear objeto servo para controlar el ESC
Servo esc2;
Servo servo1;
int esc1Value, esc2Value, servo1Value;
// Tamaño máximo de esta estructura es 32 bytes - límite buffer NRF24L01
struct Data_Package {
byte j1PotX;
byte j1PotY;
byte j1Button;
byte j2PotX;
byte j2PotY;
byte j2Button;
byte pot1;
byte pot2;
byte tSwitch1;
byte tSwitch2;
byte button1;
byte button2;
byte button3;
byte button4;
};
Data_Package data; // Crear una variable con la estructura anterior
void setup() {
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(0, address);
radio.setAutoAck(false);
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_LOW);
radio.startListening(); // Configurar el módulo como receptor
resetData();
esc1.attach(7);
esc2.attach(6);
servo1.attach(5);
pinMode(led, OUTPUT);
}
void loop() {
// Verificar si seguimos recibiendo datos, o si tenemos conexión entre los dos módulos
currentTime = millis();
if ( currentTime - lastReceiveTime > 1000 ) {
// Si el tiempo actual es más de 1 segundo desde que recibimos el último dato, significa que perdimos conexión
resetData(); // Si se pierde la conexión, reiniciar los datos. Evita comportamiento no deseado, por ejemplo si un dron tiene acelerador arriba, si perdemos conexión puede seguir volando si no reiniciamos la función
}
// Verificar si hay datos para recibir
if (radio.available()) {
radio.read(&data, sizeof(Data_Package)); // Leer todos los datos y almacenarlos en la estructura 'data'
lastReceiveTime = millis(); // En este momento hemos recibido los datos
}
// Controlar servos
servo1Value = map(data.j2PotX, 0, 255, 0, 50);
servo1.write(servo1Value);
// Controlar motor brushless con ESC
// Hélice de sustentación (lift)
esc1Value = map(data.pot1, 0, 255, 1000, 2000); // Mapear valor recibido de 0-255 a 1000-2000, valores para controlar ESCs
esc1.writeMicroseconds(esc1Value); // Enviar señal PWM de control al ESC
// Hélice de empuje (thrust)
esc2Value = constrain(data.j1PotY, 130, 255); // Joystick se queda en medio. Solo necesitamos valores superiores de 130 a 255
esc2Value = map(esc2Value, 130, 255, 1000, 2000);
esc2.writeMicroseconds(esc2Value);
// Monitorizar voltaje de batería
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.00 / 1023.00) * 3; // Convertir lectura de 5V a 12V aprox
Serial.println(voltage);
// Si voltaje es inferior a 11V encender LED
if (voltage < 11) {
digitalWrite(led, HIGH);
} else {
digitalWrite(led, LOW);
}
}
void resetData() {
// Reiniciar valores cuando no hay conexión de radio - Establecer valores iniciales por defecto
data.j1PotX = 127;
data.j1PotY = 127;
data.j2PotX = 127;
data.j2PotY = 127;
data.j1Button = 1;
data.j2Button = 1;
data.pot1 = 1;
data.pot2 = 1;
data.tSwitch1 = 1;
data.tSwitch2 = 1;
data.button1 = 1;
data.button2 = 1;
data.button3 = 1;
data.button4 = 1;
}Code language: Arduino (arduino)
Proceso de manufactura
- Construya su propio LUMAZOID: Visualizador de música DIY con Arduino
- Construye un Voltímetro Inteligente con Arduino y Smartphone – Proyecto DIY Fácil
- Pixie: Reloj de pulsera NeoPixel basado en Arduino – Elegante reloj LED DIY
- Construye un Skateboard VR Casero con Arduino, Google Cardboard y Bluetooth
- Autómatas Celulares en Tiempo Real con Arduino y Pantalla OLED 128x64
- Construye un dispositivo de tratamiento radiónico EMR con Arduino DIY
- Sistema de control de asistencia RFID en tiempo real con Arduino y Google Sheets
- Simulador de Carreras 2D DIY con Arduino Nano y Servos SG90
- Construye un Monitor de Energía Inteligente Fiable con Arduino UNO – Guía Paso a Paso
- Sistema de seguridad Arduino: Detección de movimiento inteligente y alerta
- Construye un Cerco RFID Portátil con Arduino – Guía Paso a Paso