Construa um Aerobarco RC com Arduino: Design 3D Impresso e Guia de Programação
Neste tutorial, vamos aprender a construir um aerobarco RC baseado em Arduino. Mostrarei todo o processo de construção, começando pelo design e impressão 3D das peças do aerobarco, incluindo as hélices, até a conexão dos componentes eletrônicos e programação do Arduino.
Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.
Visão Geral
Para controlar o aerobarco, usei meu transmissor RC baseado em Arduino DIY que fiz em um dos meus vídeos anteriores. Defini o joystick direito para controlar o motor servo para posicionar os lemes na parte traseira do motor de tração, defini um dos potenciômetros para controlar a hélice de sustentação que na verdade está acoplada a um motor brushless DC, e defini o joystick esquerdo para controlar a propulsão. Então, vamos dar uma olhada no que é preciso para construir este aerobarco RC.

Modelo 3D do Aerobarco
Para começar, projetei o aerobarco usando um software de modelagem 3D.

Você pode encontrar e baixar este modelo 3D, bem como explorá-lo no seu navegador no Thangs.

Baixe o modelo 3D de montagem no Thangs.
Arquivos STL para impressão 3D:
Princípio de Funcionamento do Aerobarco
O princípio básico de funcionamento de um aerobarco é que a embarcação é levantada por uma almofada de ar. A hélice central sopra ar para debaixo da embarcação, o que infla uma saia feita de material macio.

Quando a pressão do ar na saia é alta o suficiente, a embarcação é levantada. O ar constantemente fornecido escapa do meio da embarcação, entre a saia e o solo, o que cria sustentação adicional e também reduz o atrito entre o aerobarco e o solo.
Uma vez levantado, usando a segunda hélice, um empuxo é gerado que move o aerobarco para frente.

Na parte traseira da hélice de tração, há um simples conjunto de lemes que são utilizados para dirigir o aerobarco.
Impressão 3D
No entanto, uma vez finalizado o design, comecei com a impressão 3D das peças.

O casco do aerobarco é a maior peça para imprimir e a projetei especificamente para caber na minha impressora 3D Creality CR-10, que tem uma mesa de impressão de 30x30cm.

Aqui está um link para esta impressora 3D caso você queira conferir.
Após a impressão terminar, é hora de fazer uma limpeza. O corpo principal do aerobarco ou a cabine foi a impressão mais longa, que levou cerca de 18 horas para imprimir. Por causa do design curvo, e porque eu queria que fosse uma única impressão, houve muito material de suporte usado para esta impressão.

No entanto, foi muito fácil removê-lo e a peça final saiu perfeita. O casco do aerobarco foi impresso de cabeça para baixo e teve apenas uma pequena quantidade de material de suporte para ser removido. Na verdade, tive que fazer alguns ajustes nesta impressão e cortar algum material da carcaça central do soprador para que o suporte da saia pudesse encaixar corretamente.

Já atualizei o modelo 3D para que você não tenha este problema.
Algumas das áreas arredondadas das peças estavam um pouco ásperas, então usei uma lixa simples para suavizá-las.

As hélices não precisaram de limpeza e funcionaram muito bem saindo direto da impressora 3D.

Pintura do Aerobarco
Ok, o próximo passo é pintar as peças impressas em 3D. Não usei nenhum primer antes, mas apliquei diretamente uma tinta acrílica em forma de spray.

Usei uma cor marrom chocolate para a primeira demão. Para algumas das peças menores, que são na verdade apenas peças decorativas, usei uma cor marrom mais clara.
Para fazer o aerobarco parecer um pouco mais legal, uma vez que a primeira demão secou, continuei adicionando mais duas cores às peças. Para esse propósito, fiz alguns padrões aleatórios em uma folha de papel simples, e os usei para fazer listras e manchas em cores diferentes. Usei marrom claro e preto para esse propósito.

Montagem do Aerobarco RC Arduino
Gostei muito de como as peças ficaram, então, uma vez que secaram, continuei montando-as.

Comecei instalando o motor servo que controla os lemes na carcaça do soprador de tração. Fixei o servo usando dois parafusos e porcas M2.

Em seguida, está o motor brushless. O modelo particular que tenho é o D2830, que tem diâmetro de 28mm e 30mm de comprimento, e, claro, a carcaça é especificamente projetada para se encaixar neste motor.

Aqui, ao inserir o motor, primeiro tive que passar os fios pelas aberturas. É um pouco apertado, mas ainda assim dá para passar. Então, no lado de trás, usando parafusos M3, fixei o motor à carcaça.

Em seguida, posso unir a carcaça de tração com o corpo principal do aerobarco. Esta peça tem uma abertura para que os fios do servo e do motor BLDC possam passar.

Usando quatro parafusos M3, os fixei firmemente juntos.

Uma vez terminado isso, continuei com a instalação do segundo motor brushless no casco do aerobarco. Aqui, novamente usei o mesmo método. Primeiro, passei os fios pelas aberturas e então, no lado de trás, fixei o motor usando quatro parafusos M3.
Diagrama de Circuito
Vem agora a eletrônica. Os componentes eletrônicos serão colocados entre o casco e o corpo principal do aerobarco. Mas antes de fazermos isso, vamos dar uma olhada no diagrama de circuito e ver como tudo precisa ser conectado.
Então, o cérebro deste aerobarco é uma placa Arduino. Com o Arduino, podemos facilmente controlar o servo, bem como os dois motores brushless usando os dois controladores eletrônicos de velocidade ou ESCs. Para alimentar os motores BLDC, usarei bateria Li-Po 3S que fornece cerca de 11V, e para alimentar o Arduino, podemos usar os 5V regulados que os ESCs fornecem através de seu recurso de Circuito Eliminador de Bateria (BEC).

Para a comunicação sem fio, usarei o módulo transceptor NRF24L01, que se usado com uma antena amplificada pode ter um alcance estável de até 700 metros em espaço aberto. O transmissor RC que usarei para controlar o aerobarco é o que construí customizadamente em um dos meus tutoriais anteriores, então você pode conferir se precisar de mais detalhes sobre ele. Também há tutoriais detalhados sobre o módulo NRF24L01 e como usar motores brushless com Arduino. No entanto, o princípio básico de funcionamento é que o transmissor envia os dados dos joysticks ou potenciômetros para o receptor que controla a velocidade dos motores brushless e a posição do servo.
Há um pequeno detalhe a mais neste diagrama de circuito, e esse é o monitor de bateria. Adicionei um divisor de tensão simples feito de dois resistores, que é conectado diretamente à bateria, e sua saída vai para a entrada analógica do Arduino. O divisor de tensão reduz os 11 volts para cerca de 4 volts, que são então aceitáveis pelos pinos de 5V do Arduino. Com isso, podemos monitorar a tensão da bateria e acender um LED quando, por exemplo, a tensão da bateria cair abaixo de 11 volts.
Você pode obter os componentes necessários para este Tutorial Arduino nos links abaixo:
- Módulo Transceptor NRF24L01….
- NRF24L01 + PA + LNA ………….….
- Motor Brushless ………………….……
- ESC 30A ……………………………….…..
- Bateria Li-Po ………………………………..
- XT60 2 Fêmea para 1 Macho ………….
- Conector XT60 …………………………
- Motor Servo ………………………………..
- Placa Arduino …………………………
Então, comecei conectando os componentes como explicado. Para conectar os dois ESCs a uma única bateria, usei um divisor de bateria paralelo, tipo XT60.

Para adicionar um interruptor de alimentação ao projeto, usei outro conector XT60, no qual cortei um fio e soldei uma chave seletora lá. Então, um lado vai para o cabo divisor Y e o outro lado para a bateria.
Em seguida, coloquei os ESCs dentro do corpo principal e os prendi entre ele e o casco do aerobarco. Então, usando quatro parafusos M3, apertei as duas partes juntas. Pela abertura superior do corpo, então inseri a bateria na área da cabine.

Em seguida, precisamos conectar os componentes ao Arduino e para esse propósito adicionei dois headers de pinos ao Arduino que servirão como pinos GND e 5V.

Então, uma vez que conectei tudo ao Arduino, passei a antena do NRF24L01, o LED indicador e o interruptor de alimentação, através da tampa superior da cabine.

Então, só precisei apertar tudo dentro da cabine. Foi um pouco apertado aqui porque usei Arduino UNO, e provavelmente deveria ter usado um Arduino Nano em vez disso.

No entanto, consegui encaixar tudo, também fixei uma pequena peça decorativa na tampa e então apenas a prendi ao corpo da cabine.
Continuei com a instalação do sistema de direção. Primeiro, conectei um pequeno link à chaveta do servo usando um parafuso e porca M2. Então, inseri o primeiro leme no lugar e o fixei à carcaça de tração usando um fio de metal de 2mm que passa através do seu corpo e assim o leme pode girar em torno dele. Da mesma forma, fixei o segundo leme.

Este leme tem um slot adicional para que possamos conectá-lo ao link inserido anteriormente no servo. Novamente, usei parafuso e porca M2 para fixá-los. E finalmente, conectei os dois lemes um ao outro usando outro link e com isso o sistema de direção está completo.

Em seguida, fixarei esta pequena peça decorativa no lado do aerobarco. Usando uma furadeira, fiz um furo e então fixei a peça ao casco usando um único parafuso. Coloquei estas peças em ambos os lados e acho que elas se encaixam muito bem na aparência geral do aerobarco.

Ok, em seguida, continuei com a fabricação da saia para este aerobarco. Você pode notar aqui que o suporte da saia tem furos ao redor e isso é para fixá-lo ao casco.

Também há slots para porcas serem colocadas e, dessa forma, poderemos fixar facilmente o suporte da saia ao casco usando parafusos M3. Uma vez que fixei todas as porcas no lugar, continuei com a fabricação da saia, para a qual usei um simples saco plástico de lixo.

Então, primeiro apliquei cola cianoacrilato na área central do suporte e colei no saco plástico. Então, desloquei o perímetro do suporte em cerca de 6cm. Marquei em vários pontos e então os conectei.

Usando um estilete, cortei o saco plástico no tamanho adequado. Então, virei a saia, e adicionei algum suporte adicional ao saco onde colamos anteriormente usando a cola cianoacrilato.

Em seguida, a parte externa do saco precisa ser colada no topo do suporte. Novamente, usei cola cianoacrilato para esse propósito e fixei cuidadosamente o saco plástico a ele.

Uma vez terminado isso, aqui está como a saia deve ficar.

Em seguida, fiz furos através do saco plástico onde os parafusos devem passar. O suporte da saia é apenas 1mm menor que o casco do aerobarco, então em combinação com o saco plástico ele encaixa no casco perfeitamente. Para fixar a saia ao casco, simplesmente apertei os parafusos M3 ao redor de todo o perímetro.

Há mais uma coisa a ser feita na saia e é cortar a área central do saco plástico.

Então, com isso, metade do ar inflará diretamente a saia e então sangrará através desta abertura, criando uma bolha de ar adicional no meio.
Finalmente, o que resta a ser feito é fixar as hélices aos motores brushless. Para esse propósito, estou usando o collet que vem com o motor brushless. É uma maneira realmente simples e eficaz de fixar a hélice ao eixo do motor.

No entanto, perdi o collet para meu outro motor, então tive que imprimir uma versão diferente da hélice para encaixar diretamente no eixo do motor, que é de 3.15mm. A impressão saiu muito boa, encaixou e fixou perfeitamente no motor sem nem usar cola.

E pronto, nosso aerobarco controlado por rádio está finalmente terminado.

No entanto, o que resta neste vídeo é dar uma olhada no código Arduino e como o programa funciona.
Código do Aerobarco RC Arduino
Aqui está o código para este projeto DIY Aerobarco RC baseado em Arduino:
/* Aerobarco RC baseado em Arduino == Código do Receptor - Controle de ESC e Servo = por Dejan, www.HowToMechatronics.com Biblioteca: 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; // cria objeto servo para controlar o ESC Servo esc2; Servo servo1; int esc1Value, esc2Value, servo1Value; // Tamanho máximo desta struct é 32 bytes - limite do 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; // Cria uma variável com a estrutura acima 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(); // Define o módulo como receptor resetData(); esc1.attach(7); esc2.attach(6); servo1.attach(5); pinMode(led, OUTPUT); } void loop() { // Verifica se continuamos recebendo dados, ou se temos conexão entre os dois módulos currentTime = millis(); if ( currentTime - lastReceiveTime > 1000 ) { // Se o tempo atual for mais de 1 segundo desde que recebemos os últimos dados, significa que perdemos a conexão resetData(); // Se a conexão for perdida, reinicia os dados. Evita comportamento indesejado, por exemplo, se um drone tem throttle up, se perdermos a conexão, ele pode continuar voando se não reiniciarmos a função } // Verifica se há dados para serem recebidos if (radio.available()) { radio.read(&data, sizeof(Data_Package)); // Lê todos os dados e armazena na estrutura 'data' lastReceiveTime = millis(); // Neste momento recebemos os dados } // Controlando servos servo1Value = map(data.j2PotX, 0, 255, 0, 50); servo1.write(servo1Value); // Controlando motor brushless com ESC // Hélice de sustentação esc1Value = map(data.pot1, 0, 255, 1000, 2000); // Mapeia o valor recebido de 0 a 255 para 1000 a 2000, valores usados para controle de ESCs esc1.writeMicroseconds(esc1Value); // Envia o sinal de controle PWM para o ESC // Hélice de tração esc2Value = constrain(data.j1PotY, 130, 255); // Joystick fica no meio. Então só precisamos dos valores superiores de 130 a 255 esc2Value = map(esc2Value, 130, 255, 1000, 2000); esc2.writeMicroseconds(esc2Value); // Monitora tensão da bateria int sensorValue = analogRead(A0); float voltage = sensorValue * (5.00 / 1023.00) * 3; // Converte valores de leitura de 5v para 12V adequados Serial.println(voltage); // Se tensão abaixo de 11V liga o LED if (voltage < 11) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } } void resetData() { // Reinicia os valores quando não há conexão de rádio - Define valores padrão iniciais 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; }
Descrição: Então, primeiro precisamos incluir a biblioteca RF24 para a comunicação de rádio, bem como a biblioteca servo para controlar tanto o servo quanto os motores brushless. Então, precisamos definir o radio e os objetos servo, algumas variáveis necessárias para o programa abaixo, bem como a estrutura de variáveis que são usadas para armazenar os dados recebidos do meu transmissor RC DIY. Para mais detalhes sobre como esta comunicação funciona, sugiro conferir meu tutorial particular para ele.
Na seção setup, precisamos inicializar a comunicação de rádio, bem como definir os pinos aos quais o servo e os ESCs estão conectados.
Na seção loop, lemos os dados recebidos do transmissor e usamos esses valores para controlar o servo e os motores brushless. Então, os dados do joystick que variam de 0 a 255 são convertidos em valores de 0 a 50 e usamos esses valores para controlar a posição do servo.
Com o mesmo método, controlamos os motores brushless usando os ESCs. Os dados recebidos que vão de 0 a 255 são convertidos em valores de 1000 a 2000 e, usando a função writeMicroseconds(), enviamos esses dados para o ESC como sinal de controle.
Para monitorar a tensão da bateria, lemos a entrada analógica vinda do divisor de tensão e com alguma matemática simples convertemos os valores de entrada em valor real da tensão da bateria. Se a tensão da bateria cair abaixo de 11V, simplesmente acendemos o LED indicador.
E pronto. Caso precise de mais alguns detalhes, você pode conferir os outros tutoriais sugeridos e assim poderá entender completamente como tudo funciona.
Espero que tenha gostado deste tutorial e aprendido algo novo. Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e confira minha Coleção de Projetos Arduino.
Processo de manufatura
- Construa Seu Próprio LUMAZOID: Visualizador de Música DIY com Arduino
- Construa um Voltímetro Inteligente com Arduino e Smartphone – Projeto DIY Fácil
- Pixie: Relógio de Pulso NeoPixel Baseado em Arduino – Elegante Timepiece DIY LED
- Construa um Skate VR DIY com Arduino, Google Cardboard e Bluetooth
- Autômatos Celulares em Tempo Real no Arduino com Display OLED 128x64
- Dispositivo de Tratamento Radiônico EMR DIY com Arduino Nano
- Sistema de Presença em Tempo Real com RFID, Arduino e Google Sheets
- Simulador de Corrida 2D DIY com Arduino Nano e Servos SG90
- Monitor Inteligente de Energia Confiável com Arduino UNO – Guia Completo
- Sistema de Segurança Arduino: Detecção de Movimento Inteligente e Alerta