Projetos

Drone MDF Maker com Arduino – Configuração

Eletrogate 9 de abril de 2021

Há algum tempo ensinamos aqui como montar o hardware de um drone usando o Arduino Uno como controlador de vôo. Hoje vamos dar continuidade ao projeto e te mostrar como deve ser feita a programação do Arduino.


Requisitos

  • Frame e circuito eletrônico montados no post anterior
  • Rádio controle e receptor já bindados*
  • Bateria
  • Hélices

Vamos dividir o post em duas seções, a primeira trará toda a programação necessária para o Arduino e, em seguida, os processos pré-vôo e também algumas dicas para melhorar seu projeto e principalmente sua experiência de vôo. Recomendamos também que acesse nosso post sobre o funcionamento de um drone para se familiarizar com os movimentos que serão solicitados ao longo da calibração.

*IMPORTANTE: por se tratar de um processo que varia de rádio para rádio, não vamos mostrar como fazer o Bind do rádio com o receptor. Para isso, basta consultar o manual do fabricante.


Seção 1 - Programação

O software do nosso drone está dividido em 3 etapas de configuração, sendo elas:
– Acelerômetro, giroscópio e sinal de rádio;
– Motores e ESC’s;
– Controlador de Vôo

Você pode baixar o arquivo com o software clicando aqui.

Após o download, você encontrará 3 sketchs, sendo cada um deles está responsável por uma parte do processo de calibragem do quadricóptero. Por se tratarem de códigos extremamente complexos e grandes, não traremos muitos detalhes sobre eles, apenas o necessário para que você saiba o que estão fazendo e como fazer as devidas configurações.

O primeiro arquivo que vamos utilizar é o “YMFC-AL_setup.ino”. Ele é o responsável por calibrar a MPU6050 e mapear os mínimos e máximos do rádio controle. Seu processo de configuração tem o Monitor Serial como interface e é bem simples, porém requer um pouco de atenção, já que as configurações possuem um certo limite de tempo para serem executadas. Caso perca esse tempo, o processo é encerrado e você deverá reiniciar o mesmo do zero. Dito isso, vamos carregar o código no Arduino, abrir o Monitor Serial e aguardar as verificações antes que o processo de configuração seja iniciado.
Dica: para se ter um referencial correto, configure o drone com a traseira virada para você. Isso é importante para que os movimentos do drone em vôo sejam feitos da maneira correta, já que nossa referência em vôo é a visão em 3ª pessoa.


Créditos: Joop Brokking – Brokking.net

O primeiro comando de configuração recebido será “Please move all sticks and subtrims in the center position within 10 seconds”. Nesse momento você deverá centralizar todos os sticks e aguardar o início do processo de calibragem. Veja no GIF abaixo:

Créditos: Joop Brokking – Brokking.net

Feito isso, a próxima instrução será “Move the throttle stick to full throttle and back to center”. Ao recebê-la, mova o stick do acelerador para o ponto máximo e retorne ao centro em seguida, como mostrado no GIF abaixo:

Créditos: Joop Brokking – Brokking.net

A próxima instrução recebida será “Move the roll stick to simulate left wing up and back to center”. Ao recebê-la, você deve mover o stick direito até a extremidade direita para simular o movimento de rolagem do drone e retornar ao centro em seguida, conforme o GIF:

Créditos: Joop Brokking – Brokking.net

Outra instrução será recebida, dessa vez o comando será “Move the pitch stick to simulate nose up and back to center”. Ao recebê-la, mova o stick direito até a extremidade inferior mínima e retorne ao centro em seguida, conforme o GIF:

Créditos: Joop Brokking – Brokking.net

A instrução seguinte será “Move the yaw stick to simulate nose right and back to center”. Ao recebê-la, você deverá mover o stick esquerdo até a extremidade direita e retornar ao centro, conforme o GIF:

Créditos: Joop Brokking – Brokking.net

Feito isso, a mensagem “Gently move all sticks simultaneously to their extends. When ready put the sticks back in their center positions” será exibida e devemos mover simultaneamente e de forma suave todos os sticks aos seus pontos mínimos e máximos, para que o Arduino defina os limites de aceleração do seu drone. Faça como no GIF abaixo:

Créditos: Joop Brokking – Brokking.net

Recomendo aqui que leve os sticks aos extremos ao menos 2x para garantir que haja a correta leitura dos sinais!

Terminado isso, o Monitor Serial retornará os valores mínimos, médios e máximos lidos em cada canal do seu rádio seguido da mensagem “Move stick “nose up” and back to center to continue”. Ela será exibida em cada nível de calibração e tem a função de confirmar o movimento feito, para que os valores obtidos sejam gravados na memória do Arduino. Para confirmar, basta mover o stick direito até o ponto mínimo inferior e retornar ao centro, conforme o GIF:

Créditos: Joop Brokking – Brokking.net

Após a confirmação solicitada no passo anterior, a calibração do sistema de Gyro será iniciada. Ele é composto pela MPU6050 e tem a função de estabilizar o drone em vôo. O processo é iniciado com a exibição dos dados da sua MPU6050 e logo o tópico “Gyro Calibration” é iniciado. Para esse processo, é imprescindível que o drone esteja numa superfície estável e nivelada, do contrário nossa máquina poderá ter alguma tendência em vôo e não é isso o que queremos.
O processo se inicia com a mensagem “Don’t move the quadcopter! Calibration start in 3 seconds.”, na qual nos é informado que o processo de calibração da MPU6050 foi iniciado e que não devemos mover o drone por aproximadamente 8 segundos.
Ao término, é iniciada a calibração dos eixos do sistema Gyro, sendo exibida a mensagem “Lift the left side of the quadcopter to a 45 degrees angle within 10 seconds”, nos solicitando que o lado esquerdo do drone seja inclinado em 45º dentro do prazo de 10 segundos à contar da exibição dessa mensagem. Ao identificar o movimento, um OK é retornado, seguido de alguns dados e da mensagem “Put the quadcopter back in its original position”, seguida da mensagem de confirmação “Move stick “nose up” and back to center to continue” já exibida anteriormente. Aqui você deve retornar o drone à sua posição original e novamente confirmar os valores lidos movendo o stick direito até o limite inferior. Veja no GIF:

Créditos: Joop Brokking – Brokking.net

A próxima instrução exibida será “Lift the nose of the quadcopter to a 45 degrees angle within 10 seconds”. Aqui você deve levantar o nariz do seu drone em 45º e retornar para a posição original, seguindo os mesmos passos do comando anterior. Novamente a mensagem de confirmação “Move stick “nose up” and back to center to continue” será exibida e você deverá executar o mesmo comando para continuar a configuração.

Créditos: Joop Brokking – Brokking.net

Feito isso, a próxima instrução será “Rotate the nose of the quadcopter 45 degree to the right  within 10 seconds”. Aqui você deverá rotacionar a frente do drone em 45º e retornar à posição original, além de confirmar os valores com o mesmo comando (stick direito para baixo), da mesma maneira dos passos anteriores. Veja o GIF:

Créditos: Joop Brokking – Brokking.net

Após a confirmação, o processo de calibragem da MPU6050 será concluído e os demais processos se iniciarão. O próximo será o sistema de sinalização, que no nosso caso é composto pelas fitas de LED. O processo dessa vez é bem simples: ao receber a mensagem “The LED should now be lit” as fitas de LED deverão se acender e, ao receber a mensagem “Move stick “nose up” and back to center to continue” e consequentemente sua confirmação, os LEDs deverão se apagar.

Créditos: Joop Brokking – Brokking.net

Por fim, os dados serão gravados na EEPROM do Arduino e o processo será finalizado. Ao receber a mensagem “You can now calibrate the esc’s and upload the YMFC-AL code” conforme mostrado abaixo, você poderá fechar o Monitor Serial e partir para a calibração dos ESC’s.


Para calibrar os ESC’s vamos abrir e carregar o arquivo “YMFC-AL_esc_calibrate.ino” em nosso Arduino e novamente abrir o Monitor Serial. Esse sketch irá nos permitir testar os motores e nos fornecer informações referentes ao sinal do rádio, ângulos de inclinação e índice de vibração. Use a tabela abaixo para acessar cada uma dessas funções:

r = Exibir os valores de sinal provenientes de cada canal do rádio.
a = Exibir os valores de ângulo em caso de movimentação do drone.
1 = Acionamento do motor 1 (direito frontal, sentido anti-horário).
2 = Acionamento do motor 2 (direito traseiro, sentido horário).
3 = Acionamento do motor 3 (esquerdo traseiro, sentido anti-horário).
4 = Acionamento do motor 4 (esquerdo frontal, sentido horário).
5 = Acionamento de todos os motores juntos.

Vamos começar verificando os níveis de sinal recebidos. Para isso, envie a letra ‘r’ (sem aspas) no monitor serial e aguarde a leitura. Você pode verificar a variação do sinal movimentando os sticks e conferindo o sentido do comando através das informações exibidas.

Créditos: Joop Brokking – Brokking.net

Feito isso, envie a letra ‘a’ (sem aspas) e vamos verificar os valores de ângulo. Note aqui que a mensagem “Gyro calibration starts in 2 seconds (don’t move the quadcopter)” será exibida. Nesse momento a MPU6050 está mapeando os dados de inclinação do drone para a superfície em que ele se encontra e esse processo será executado sempre que o drone for energizado. Você saberá que o processo está em andamento pelo piscar dos leds e ao longo dele, o drone deverá se manter imóvel. Ao término, os LEDs irão parar de piscar e será exibido os valores lidos. Aqui você pode movimentar o drone para verificar os valores lidos e confirmar se tudo está funcionando.

Créditos: Joop Brokking – Brokking.net

Finalmente vamos testar os motores. Mas antes, precisamos informar aos ESC’s quais os limites mínimo e máximo do nosso rádio. Para isso, siga o passo a passo abaixo e observe o GIF:

  1. Mova o stick do acelerador totalmente para cima;
  2. Conecte a bateria;
  3. Aguarde o sinal sonoro emitido pelos ESC’s e motores;
  4. Mova o stick até a posição mínima e aguarde novamente o término do sinal sonoro;
  5. Acelere um pouco para ver se todos estão funcionando;
  6. Desconecte e a bateria e conecte novamente, para iniciar os testes via Monitor Serial.

Créditos: Joop Brokking – Brokking.net

Vamos verificar agora o sentido de giro de cada motor e o nível de vibração dos mesmos. Lembre-se de NUNCA executar esse processo com as hélices acopladas aos motores, pois elas podem causar sérios ferimentos em caso de acidente.

Dito isso, envie o número do motor desejado conforme a tabela apresentada, acelere o motor e observe o índice de vibração. Os valores exibidos são apenas um referencial, porém quanto mais alto o valor, mais vibração seu drone está recebendo. Para corrigir isso, verifique o aperto dos parafusos, estrutura e refaça esse teste até encontrar um valor estável e satisfatório.

Créditos: Joop Brokking – Brokking.net

Caso seu motor esteja girando no sentido contrário, basta inverter 2 dos 3 fios que fazem a conexão com o ESC, conforme a imagem:

Após testar todos os motores individualmente e em conjunto, feche o Monitor Serial e carregue no Arduino o arquivo “YMFC-AL_Flight_controller.ino”. Esse sketch não precisa de configuração e será o responsável por fazer a manipulação dos dados coletados e armazenados na memória do Arduino, sendo assim o código que irá operar nosso drone.

Terminado esse processo, encerramos o tópico de configuração e partiremos para a parte prática, o chamado pré-vôo.


Seção 2 - Pré-Vôo

Iniciamos essa seção com uma das configurações mais importantes para um drone: o balanceamento das hélices. É um processo extremamente simples, mas que não deve ser ignorado, pois através dele eliminamos a maior parte das vibrações, que podem resultar até mesmo em uma queda dependendo da intensidade. Você deve executar esse processo para todas as hélices que comprar!

Para isso, siga os passos abaixo:

  1. Pegue uma hélice e uma chave Phillips ou qualquer outra coisa que passe pelo furo do eixo;
  2. Coloque a hélice na chave na posição horizontal e apoie a chave em uma superfície plana e nivelada;
  3. Observe o movimento da hélice. Se ela pender para um dos lados, significa que ela está desbalanceada. Para corrigir, basta colocar um pedacinho de fita adesiva no lado oposto e refazer o teste. A hélice estará balanceada quando não pender para nenhum dos lados.

Veja todo o processo nos GIFs abaixo:

Hélice desbalanceada

Resolução do problema

Hélice balanceada

Feito isso, seu drone estará pronto para voar. Lembre-se sempre de carregar as baterias, travar bem a hélice no spinner do motor e observar os sinais luminosos, que são:

  1. Luzes piscando após conectar a bateria: calibração do Gyro. Não mexa o drone até o término do processo!
  2. Luzes piscando com o drone em vôo: bateria fraca. Você deve pousar imediatamente o drone e trocar a bateria para continuar voando, pois as baterias de LiPo não podem passar da tensão que está programada no código (cerca de 10V), do contrário podem se danificar permanentemente.

IMPORTANTE: Por segurança, você não consegue simplesmente conectar a bateria e ligar os motores após a calibração do Gyro. É necessário armar os motores movendo o stick esquerdo para o canto inferior esquerdo, após isso os motores entrarão em um estado de baixa rotação e a partir daí você consegue acelerar. Para desarmar, basta mover o stick para o canto inferior direito. Veja abaixo como armar seu drone:


Conclusão

Finalmente chegamos ao fim da montagem e configuração do nosso drone maker com Arduino. Se você ficou com alguma dúvida referente a algum dos processos de configuração, deixe nos comentários. Fique com um pequeno vídeo de um dos vôos de teste que fizemos:

Notas:

  • Pode ser que seu drone apresente algumas oscilações em vôo. Para corrigir, é necessário mudar os valores de PID no sketch “YMFC-AL_Flight_controller.ino”, na seção exibida abaixo, e carregar novamente no Arduino.

Recomendamos que assista esse vídeo do canal Mol Tech, onde nos é apresentado a função de cada valor e também o vídeo sobre PIDs do Joop Brokkin, desenvolvedor do projeto do drone. Por se tratar de uma configuração única para cada aeronave, não temos como dar o valor correto para o seu drone, por isso é necessário que estude sobre o assunto e encontre a configuração ideal.

  • Caso alguma configuração apresentar erros, sugerimos que verifique as ligações do circuito e, se ainda sim o erro persistir, consulte as informações do desenvolvedor clicando aqui.

Gostou do projeto? Já montou e colocou sua máquina pra voar? Grave um vídeo bem bacana e nos marque no Instagram @Eletrogate. Estamos curiosos para ver os resultados obtidos pelos nossos leitores e clientes!

Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.


Sobre o Autor


Samuel Martins
@samuel.martins192

Cursando Eletroeletrônica no SENAI CETEL. Fanático por eletrônica, automação, impressão 3D e afins, dedico meu tempo livre a pesquisas e projetos ligados às principais áreas de interesse, pratico aeromodelismo e sou curioso por astrofotografia.


Eletrogate

9 de abril de 2021

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!