Índice:

Drone Arduino com GPS: 16 etapas
Drone Arduino com GPS: 16 etapas

Vídeo: Drone Arduino com GPS: 16 etapas

Vídeo: Drone Arduino com GPS: 16 etapas
Vídeo: 8 steps to GPS Position Hold for an FPV drone 2024, Julho
Anonim
Drone Arduino com GPS
Drone Arduino com GPS

Decidimos construir um drone quadricóptero de visão em primeira pessoa (FPV) controlado por Arduino e estabilizado, com funções de retorno para casa, ir para coordenar e GPS em espera. Ingenuamente presumimos que combinar os programas Arduino existentes e a fiação de um quadricóptero sem GPS com os de um sistema de transmissão GPS seria relativamente simples e que poderíamos passar rapidamente para tarefas de programação mais complexas. No entanto, uma quantidade surpreendente teve que mudar a fim de combinar esses dois projetos, e assim acabamos fazendo um quadricóptero FPV habilitado para GPS, sem nenhuma das funcionalidades adicionais.

Incluímos instruções sobre como replicar nosso produto se você estiver satisfeito com o quadricóptero mais limitado.

Também incluímos todas as etapas que demos no caminho para um quadricóptero mais autônomo. Se você se sente confortável mergulhando fundo no Arduino ou já tem muita experiência com o Arduino e gostaria de usar nosso ponto de parada como um ponto de partida para sua própria exploração, este Instructable também é para você.

Este é um ótimo projeto para aprender algo sobre como construir e programar para o Arduino, não importa quanta experiência você tenha. Além disso, você provavelmente irá embora com um drone.

A configuração é a seguinte:

Na lista de materiais, as peças sem asterisco são necessárias para ambos os objetivos.

As peças com um asterisco são necessárias apenas para o projeto inacabado de um quadricóptero mais autônomo.

As peças com dois asteriscos são necessárias apenas para o quadricóptero mais limitado.

As etapas comuns a ambos os projetos não têm marcador após o título

As etapas exigidas apenas para o quadricóptero não autônomo mais limitado têm "(Uno)" após o título.

As etapas necessárias apenas para o quadricóptero autônomo em andamento têm "(Mega)" após o título.

Para construir o quad baseado em Uno, siga as etapas em ordem, pulando todas as etapas com "(Mega)" após o título.

Para trabalhar no quad baseado em Mega, siga as etapas em ordem, pulando todas as etapas com "(Uno)" após o título.

Etapa 1: Reúna os materiais

Componentes:

1) Um quadro de quadricóptero (o quadro exato provavelmente não importa) (US $ 15)

2) Quatro motores sem escova de 2830, 900kV (ou similar) e quatro pacotes de acessórios de montagem (4x $ 6 + 4x $ 4 = $ 40 no total)

3) Quatro ESCs UBEC 20A (4x $ 10 = $ 40 no total)

4) Uma placa de distribuição de energia (com conexão XT-60) ($ 20)

5) Uma bateria LiPo 3s, 3000-5000mAh com conexão XT-60 (3000mAh corresponde a aproximadamente 20 minutos de tempo de voo) ($ 25)

6) Muitas hélices (estas quebram muito) ($ 10)

7) Um Arduino Mega 2560 * ($ 40)

8) Um Arduino Uno R3 ($ 20)

9) Um segundo Arduino Uno R3 ** ($ 20)

10) Um escudo Arduino Ultimate GPS (você não precisa do escudo, mas usar um GPS diferente exigirá fiação diferente) ($ 45)

11) Dois transceptores sem fio HC-12 (2x $ 5 = $ 10)

12) Um MPU- 6050, 6DOF (grau de liberdade) giroscópio / acelerômetro ($ 5)

13) Um Turnigy 9x 2,4 GHz, par transmissor / receptor de 9 canais ($ 70)

14) Cabeçalhos fêmeas do Arduino (empilháveis) (US $ 20)

15) Carregador de equilíbrio de bateria LiPo (e adaptador 12V DC, não, incluído) ($ 20)

17) Cabo adaptador USB A para B macho para macho ($ 5)

17) Fita adesiva

18) Tubulação retrátil

Equipamento:

1) Um ferro de solda

2) Solda

3) Epóxi Plástico

4) Mais leve

5) Decapador de fio

6) Um conjunto de chaves Allen

Componentes opcionais para transmissão de vídeo FPV (visualização em primeira pessoa) em tempo real:

1) Uma pequena câmera FPV (esta liga para a bem barata e de má qualidade que usamos, você pode substituir por uma melhor) ($ 20)

2) Par transmissor / receptor de vídeo de 5,6 GHz (832 modelos usados) ($ 30)

3) Bateria LiPo 500mAh, 3s (11,1V) (US $ 7) (usamos com um plugue banana, mas recomendamos, em retrospecto, que você use a bateria vinculada, pois ela tem um conector compatível com o transmissor TS832 e, portanto, não requer solda).

4) 2 baterias LiPo 1000mAh 2s (7,4 V) ou similar ($ 5). O número de mAh não é crítico, desde que seja superior a 1000mAh ou mais. A mesma declaração acima se aplica ao tipo de plugue para uma das duas baterias. O outro será usado para alimentar o monitor, então você terá que soldar aconteça o que acontecer. Provavelmente é melhor conseguir um com um plugue XT-60 para isso (foi o que fizemos). Um link para esse tipo está aqui: 1000mAh 2s (7,4V) LiPo com plugue XT-60

5) Monitor LCD (opcional) ($ 15). Você também pode usar um adaptador AV-USB e um software de cópia de DVD para visualizar diretamente em um laptop. Isso também dá a opção de gravar vídeo e fotos, em vez de apenas visualizá-los em tempo real.

6) Se você comprou baterias com plugues diferentes dos vinculados, pode ser necessário os adaptadores apropriados. Independentemente disso, obtenha um adaptador correspondente ao plugue da bateria que alimenta o monitor. Aqui é onde obter adaptadores XT-60

* = apenas para projetos mais avançados

** = apenas para projeto mais básico

Custos:

Se começar do zero (mas com um ferro de solda, etc …), nenhum sistema FPV: ~ $ 370

Se você já tem um transmissor / receptor RC, carregador de bateria LiPo e bateria LiPo: ~ $ 260

Custo do sistema FPV: $ 80

Etapa 2: montar a estrutura

Monte a estrutura
Monte a estrutura
Monte a estrutura
Monte a estrutura
Monte a estrutura
Monte a estrutura

Esta etapa é bastante direta, especialmente se estiver usando a mesma moldura pré-fabricada que usamos. Basta usar os parafusos incluídos e montar a estrutura conforme mostrado, usando uma chave allen ou chave de fenda apropriada para sua estrutura. Certifique-se de que os braços da mesma cor estejam adjacentes um ao outro (como nesta imagem), para que o drone tenha uma frente e uma parte traseira claras. Além disso, certifique-se de que a parte longa da placa inferior sobressai entre os braços de cores opostas. Isso se torna importante mais tarde.

Etapa 3: montar motores e conectar Escs

Montar motores e conectar Escs
Montar motores e conectar Escs
Montar motores e conectar Escs
Montar motores e conectar Escs
Montar motores e conectar Escs
Montar motores e conectar Escs
Montar motores e conectar Escs
Montar motores e conectar Escs

Agora que a estrutura está montada, retire os quatro motores e os quatro acessórios de montagem. Você pode usar os parafusos incluídos nos conjuntos de montagem ou parafusos que sobraram da estrutura do quadricóptero para aparafusar os motores e as montagens no lugar. Se você comprar os suportes aos quais vinculamos, você receberá dois componentes extras, na foto acima. Tivemos um bom desempenho do motor sem essas peças, então as deixamos de lado para reduzir o peso.

Assim que os motores forem aparafusados, coloque o painel de distribuição de energia (PDB) em epóxi na parte superior da placa superior da estrutura do quadricóptero. Certifique-se de orientá-lo de forma que o conector da bateria aponte entre os braços de cores diferentes (paralelo a uma das partes longas da placa inferior), como na imagem acima.

Você também deve ter quatro cones de hélice com fios femininos. Deixe isso de lado por enquanto.

Agora retire seus ESCs. Um lado terá dois fios saindo dele, um vermelho e um preto. Para cada um dos quatro ESCs, insira o fio vermelho no conector positivo no PDB e o preto no negativo. Observe que se você usar um PDB diferente, esta etapa pode exigir soldagem. Agora conecte cada um dos três fios que saem de cada motor. Neste ponto, não importa qual fio ESC você conecta com qual fio do motor (contanto que você esteja conectando todos os fios de um ESC com o mesmo motor!) Você corrigirá qualquer polaridade reversa mais tarde. Não é perigoso se os fios estiverem invertidos; isso apenas resulta no motor girando para trás.

Etapa 4: preparar o Arduino e o escudo

Prepare Arduino e Shield
Prepare Arduino e Shield
Prepare Arduino e Shield
Prepare Arduino e Shield

Uma nota antes de começar

Primeiro, você pode optar por soldar todos os fios diretamente. No entanto, achamos inestimável usar cabeçalhos de pinos porque eles fornecem muita flexibilidade para solucionar problemas e adaptar o projeto. O que se segue é uma descrição do que fizemos (e recomendamos que outros façam).

Prepare o Arduino e proteja

Retire seu Arduino Mega (ou um Uno se estiver usando o quad não autônomo), escudo GPS e cabeçalhos empilháveis. Solde a extremidade macho dos cabeçotes empilháveis no lugar no escudo GPS, nas fileiras de pinos paralelas aos pinos pré-soldados, como mostrado na imagem acima. Soldar também em conectores empilháveis na linha de pinos rotulada 3V, CD,… RX. Use um cortador de arame para cortar o excesso de comprimento dos pinos que estão saindo da parte inferior. Coloque cabeçalhos machos com pontas dobradas em todos esses cabeçalhos empilháveis. É nisso que você vai soldar os fios para o resto dos componentes.

Prenda o escudo GPS na parte superior, certificando-se de que os pinos coincidam com os do Arduino (Mega ou Uno). Observe que, se estiver usando o Mega, muito do Arduino ainda ficará exposto depois que você colocar o escudo no lugar.

Coloque fita isolante na parte inferior do Arduino, cobrindo todas as soldas de pino expostas, para evitar qualquer curto-circuito enquanto o Arduino repousa sobre o PDB.

Etapa 5: Conecte os componentes e coloque a bateria (Uno)

Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)
Conecte os componentes e coloque a bateria (Uno)

O esquema acima é quase idêntico ao feito por Joop Brooking, pois baseamos fortemente nosso projeto no dele.

* Observe que este esquema pressupõe um escudo de GPS devidamente montado e, portanto, o GPS não aparece neste esquema.

O esquema acima foi preparado usando o software Fritzing, que é altamente recomendado especialmente para esquemas envolvendo Arduino. Usamos principalmente peças genéricas que podem ser editadas de maneira flexível, já que nossas peças geralmente não estavam na biblioteca de peças incluída de Fritzing.

- Certifique-se de que o interruptor do escudo GPS esteja na posição "Gravação direta".

-Agora conecte todos os componentes de acordo com o esquema acima (exceto para a bateria!) (Nota importante sobre os fios de dados GPS abaixo).

-Observe que você já conectou os ESCs aos motores e PDB, portanto, esta parte do esquema está concluída.

-Além disso, observe que os dados GPS (fios amarelos) vêm dos pinos 0 e 1 no Arduino (não dos pinos Tx e Rx separados no GPS). Isso porque configurado para "Direct Write" (veja abaixo), o GPS sai diretamente para as portas seriais do hardware no uno (pinos 0 e 1). Isso é mostrado mais claramente na segunda foto acima da fiação completa.

-Ao conectar o receptor RC, consulte a imagem acima. Observe que os fios de dados vão para a linha superior, enquanto o Vin e o Gnd estão na segunda e terceira linhas, respectivamente (e na segunda coluna de pinos mais distante).

- Para fazer a fiação para o transceptor HC-12, receptor RC e 5Vout do PDB para Vin do Arduino, usamos conectores empilháveis, enquanto para o giroscópio soldamos os fios diretamente à placa e usando tubos termorretráteis ao redor do solda. Você pode escolher fazer qualquer um dos componentes, no entanto, soldar diretamente no giroscópio é recomendado, pois economiza espaço, o que torna a peça pequena mais fácil de montar. Usar cabeçalhos é um pouco mais trabalhoso no início, mas oferece mais flexibilidade. Soldar os fios diretamente é uma conexão mais segura a longo prazo, mas significa que usar esse componente em outro projeto é mais difícil. Observe que, se você tiver usado cabeçalhos no escudo GPS, ainda terá uma quantidade razoável de flexibilidade, independentemente do que fizer. Crucialmente, certifique-se de que os fios de dados do GPS nos pinos 0 e 1 do GPS sejam fáceis de remover e substituir.

No final do nosso projeto, não fomos capazes de conceber um bom método para fixar todos os nossos componentes à estrutura. Devido à pressão do tempo de nossa classe, nossas soluções geralmente giravam em torno de fita de espuma de dupla face, fita adesiva, fita isolante e laços de zíper. É altamente recomendável que você gaste mais tempo projetando estruturas de montagem estáveis se você planeja um projeto de longo prazo. Com tudo isso dito, se você deseja apenas fazer um protótipo rápido, fique à vontade para acompanhar nosso processo. No entanto, certifique-se de que o giroscópio esteja montado com segurança. Essa é a única maneira com que o Arduino sabe o que o quadricóptero está fazendo, portanto, se ele se mover durante o vôo, você terá problemas.

Com tudo conectado e no lugar, pegue sua bateria LiPo e deslize-a entre as placas superior e inferior da estrutura. Certifique-se de que seu conector esteja apontando na mesma direção que o conector do PDB e que eles possam se conectar de fato. Usamos fita adesiva para segurar a bateria no lugar (fita de velcro também funciona, mas é mais irritante do que fita adesiva). A fita adesiva funciona bem porque pode-se facilmente substituir a bateria ou removê-la para carregar. No entanto, certifique-se de prender a bateria com fita APERTADA, pois se a bateria se mover durante o vôo, isso pode perturbar seriamente o equilíbrio do drone. NÃO conecte a bateria ao PDB ainda.

Etapa 6: Conecte os componentes e coloque a bateria (Mega)

Conecte os componentes e coloque a bateria (Mega)
Conecte os componentes e coloque a bateria (Mega)
Conecte os componentes e coloque a bateria (Mega)
Conecte os componentes e coloque a bateria (Mega)
Conecte os componentes e coloque a bateria (Mega)
Conecte os componentes e coloque a bateria (Mega)

O esquema acima foi preparado usando o software Fritzing, que é altamente recomendado especialmente para esquemas envolvendo arduino. Usamos principalmente peças genéricas, já que nossas peças geralmente não estavam na biblioteca de peças incluída de Fritzing.

-Observe que este esquema pressupõe um escudo de GPS devidamente montado e, portanto, o GPS não aparece neste esquema.

-Vire a chave em seu Mega 2560 para "Soft Serial."

-Agora conecte todos os componentes de acordo com o esquema acima (exceto para a bateria!)

-Observe que você já conectou os ESCs aos motores e PDB, portanto, esta parte do esquema está concluída.

- Os cabos jumper do pino 8 ao Rx e do pino 7 ao Tx estão lá porque (ao contrário do Uno, para o qual esta blindagem foi feita), o mega carece de um receptor-transmissor assíncrono universal (UART) nos pinos 7 e 8, e assim temos que usar pinos seriais de hardware. Existem mais razões pelas quais precisamos de pinos seriais de hardware, discutidas posteriormente.

-Ao conectar o receptor RC, consulte a imagem acima. Observe que os fios de dados vão para a linha superior, enquanto o Vin e o Gnd estão na segunda e terceira linhas, respectivamente (e na segunda coluna de pinos mais distante).

-Para fazer a fiação para o transceptor HC-12, receptor RC e 5Vout do PDB para Vin do Arduino, usamos conectores empilháveis, enquanto para o giroscópio soldamos os fios diretamente e usando tubos termorretráteis ao redor da solda. Você pode optar por fazer qualquer um dos componentes. Usar cabeçalhos é um pouco mais trabalhoso no início, mas oferece mais flexibilidade. Soldar os fios diretamente é uma conexão mais segura a longo prazo, mas significa que usar esse componente em outro projeto é mais difícil. Observe que, se você tiver usado cabeçalhos no escudo GPS, ainda terá uma quantidade razoável de flexibilidade, independentemente do que fizer.

No final do nosso projeto, não fomos capazes de conceber um bom método para fixar todos os nossos componentes à estrutura. Devido à pressão do tempo de nossa classe, nossas soluções geralmente giravam em torno de fita de espuma de dupla face, fita adesiva, fita isolante e laços de zíper. É altamente recomendável que você gaste mais tempo projetando estruturas de montagem estáveis se você planeja um projeto de longo prazo. Com tudo isso dito, se você deseja apenas fazer um protótipo rápido, fique à vontade para acompanhar nosso processo. No entanto, certifique-se de que o giroscópio esteja montado com segurança. Essa é a única maneira com que o Arduino sabe o que o quadricóptero está fazendo, portanto, se ele se mover durante o vôo, você terá problemas.

Com tudo conectado e no lugar, pegue sua bateria LiPo e deslize-a entre as placas superior e inferior da estrutura. Certifique-se de que seu conector esteja apontando na mesma direção que o conector do PDB e que eles possam de fato se conectar. Usamos fita adesiva para segurar a bateria no lugar (fita de velcro também funciona, mas é mais irritante do que fita adesiva). A fita adesiva funciona bem porque pode-se facilmente substituir a bateria ou removê-la para carregar. No entanto, certifique-se de prender a bateria com fita APERTADA, pois se a bateria se mover durante o vôo, isso pode perturbar seriamente o equilíbrio do drone. NÃO conecte a bateria ao PDB ainda.

Etapa 7: Receptor de ligação

Receptor de ligação
Receptor de ligação
Receptor de ligação
Receptor de ligação

Pegue o receptor RC e conecte-o temporariamente a uma fonte de alimentação de 5 V (ligando o Arduino com USB ou 9 V, ou com uma fonte de alimentação separada. Não conecte o LiPo ao Arduino ainda). Pegue o pino de ligação que veio com o receptor RC e coloque-o nos pinos BIND do receptor. Como alternativa, faça um curto nos pinos superior e inferior na coluna BIND, conforme mostrado na foto acima. Uma luz vermelha deve piscar rapidamente no receptor. Agora pegue o controlador e pressione o botão na parte de trás enquanto ele está desligado, conforme mostrado acima. Com o botão pressionado, ligue o controlador. Agora a luz piscando no receptor deve ficar sólida. O receptor está vinculado. Remova o cabo de ligação. Se você estava usando uma fonte de alimentação diferente, reconecte o receptor à saída de 5 V do Arduino.

Etapa 8: (Opcional) Conecte e monte o sistema de câmera FPV

(Opcional) Conecte e monte o sistema de câmera FPV
(Opcional) Conecte e monte o sistema de câmera FPV
(Opcional) Conecte e monte o sistema de câmera FPV
(Opcional) Conecte e monte o sistema de câmera FPV

Primeiro, solde o adaptador XT-60 com os fios de alimentação e aterramento do monitor. Eles podem variar de monitor para monitor, mas a energia quase sempre será vermelha, o solo quase sempre preto. Agora insira o adaptador com fios soldados em seu LiPo 1000mAh com o plugue XT-60. O monitor deve ligar com um fundo (geralmente) azul. Essa é a etapa mais difícil!

Agora aparafuse as antenas em seu receptor e transmissor.

Conecte seu pequeno Lipo de 500mAh ao transmissor. O pino mais à direita (logo abaixo da antena) é o aterramento (V_) da bateria, o próximo pino à esquerda é V +. Vêm os três fios que vão para a câmera. Sua câmera deve vir com um plugue três em um que se encaixa no transmissor. Certifique-se de ter o fio de dados amarelo no meio. Se você usou as baterias às quais vinculamos com plugues destinados a isso, essa etapa não deve exigir solda.

Finalmente, conecte sua outra bateria de 1000mAh com o fio de saída DC que veio com o seu receptor e, por sua vez, conecte-o à porta de entrada DC do seu receptor. Por fim, conecte a extremidade preta do cabo AVin que acompanha o receptor à porta AVin do receptor e a outra extremidade (amarela, fêmea) à extremidade macho amarela do cabo AVin do monitor.

Neste ponto, você deve ser capaz de ver a visão da câmera no monitor. Se você não puder, certifique-se de que o receptor e o transmissor estão ligados (você deve ver os números em suas telas pequenas) e que eles estão no mesmo canal (usamos o canal 11 para ambos e tivemos um bom sucesso). Além disso, pode ser necessário alterar o canal no monitor.

Monte os componentes na estrutura.

Assim que a configuração estiver funcionando, desconecte as baterias até que esteja pronto para voar.

Etapa 9: Configurar a recepção de dados GPS

Configurar recepção de dados GPS
Configurar recepção de dados GPS
Configurar recepção de dados GPS
Configurar recepção de dados GPS

Conecte seu segundo Arduino com seu segundo transceptor HC-12, conforme mostrado no esquema acima, tendo em mente que a configuração só será alimentada como exibida se conectado a um computador. Baixe o código do transceptor fornecido, abra seu monitor serial para 9600 baud.

Se estiver usando a configuração mais básica, você deve começar a receber frases de GPS se o seu escudo de GPS estiver ligado e devidamente conectado ao outro transceptor HC-12 (e se a chave do escudo estiver em "Gravação direta").

Com o Mega, certifique-se de que a chave está em "Soft Serial".

Etapa 10: Execute o código de configuração (Uno)

Este código é idêntico ao usado por Joop Brokking em seu tutorial de quadcopter Arduino, e ele merece todo o crédito por sua escrita.

Com a bateria desconectada, use o cabo USB para conectar seu computador ao Arduino e carregue o código de configuração anexado. Ligue o seu transmissor RC. Abra seu monitor serial para 57600 baud e siga as instruções.

Erros comuns:

Se o upload do código falhar, certifique-se de que os pinos 0 e 1 estejam desconectados do escudo UNO / GPS. Esta é a mesma porta de hardware que o dispositivo usa para se comunicar com o computador, portanto, deve estar livre.

Se o código pular várias etapas de uma vez, verifique se a chave do GPS está em "Gravação direta".

Se nenhum receptor for detectado, certifique-se de que haja uma luz vermelha sólida (mas fraca) em seu receptor quando o transmissor estiver ligado. Em caso afirmativo, verifique a fiação.

Se nenhum giroscópio for detectado, pode ser porque o giroscópio está danificado ou se você tiver um tipo de giroscópio diferente daquele em que o código foi projetado para gravar.

Etapa 11: Execute o código de configuração (Mega)

Este código é idêntico ao usado por Joop Brokking em seu tutorial de quadcopter Arduino, e ele merece todo o crédito por sua escrita. Simplesmente adaptamos a fiação do Mega para que as entradas do receptor correspondessem aos pinos de interrupção de troca de pino corretos.

Com a bateria desconectada, use o cabo USB para conectar seu computador ao Arduino e carregue o código de configuração anexado. Abra seu monitor serial para 57600 baud e siga as instruções.

Etapa 12: Calibrar os ESCs (Uno)

Mais uma vez, este código é idêntico ao código de Joop Brokking. Todas as modificações foram feitas em um esforço para integrar o GPS e o Arduino e podem ser encontradas posteriormente, na descrição da construção do quadricóptero mais avançado.

Carregue o código de calibração ESC em anexo. No monitor serial, escreva a letra 'r' e pressione Enter. Você deve começar a ver os valores do controlador RC em tempo real listados. Verifique se eles variam de 1.000 a 2.000 nos extremos de aceleração, rotação, inclinação e guinada. Em seguida, escreva 'a' e pressione return. Deixe a calibração do giroscópio ir, e então verifique se o giroscópio registra o movimento do quadrante. Agora, desconecte o arduino do computador, empurre o acelerador totalmente para cima no controlador e conecte a bateria. Os ESCs devem repetir diferentes tons de bipe (mas isso pode ser diferente dependendo do ESC e de seu firmware). Empurre o acelerador totalmente para baixo. Os ESCs devem emitir bipes mais baixos e, em seguida, silenciar. Desconecte a bateria.

Opcionalmente, você pode, neste ponto, usar os cones que vieram com os pacotes de acessórios de montagem do motor para aparafusar firmemente as hélices. Em seguida, insira os números 1 - 4 no monitor serial para ligar os motores 1 - 4 respectivamente, na potência mais baixa. O programa registrará a quantidade de agitação devido ao desequilíbrio dos adereços. Você pode tentar remediar isso adicionando pequenas quantidades de fita adesiva em um lado ou outro dos adereços. Descobrimos que poderíamos obter um bom vôo sem este passo, mas talvez um pouco menos eficiente e mais ruidosamente do que se tivéssemos balanceado os props.

Etapa 13: calibrar ESCs (Mega)

Este código é muito parecido com o código de Brokking, porém o adaptamos (e a fiação correspondente) para funcionar com o Mega.

Carregue o código de calibração ESC em anexo. No monitor serial, escreva a letra 'r' e pressione Enter. Você deve começar a ver os valores do controlador RC em tempo real listados. Verifique se eles variam de 1.000 a 2.000 nos extremos de aceleração, rotação, inclinação e guinada.

Em seguida, escreva 'a' e pressione return. Deixe a calibração do giroscópio ir, e então verifique se o giroscópio registra o movimento do quadrante.

Agora, desconecte o arduino do computador, empurre o acelerador totalmente para cima no controlador e conecte a bateria. Os ESCs devem emitir três bipes baixos seguidos de um bipe alto (mas isso pode ser diferente dependendo do ESC e de seu firmware). Empurre o acelerador totalmente para baixo. Desconecte a bateria.

As alterações que fizemos neste código foram mudar de usar PORTD para os pinos ESC para usar PORTA e, em seguida, alterar os bytes gravados nessas portas para que ativemos os pinos apropriados, conforme mostrado no esquema de fiação. Essa mudança ocorre porque os pinos de registro PORTD não estão no mesmo local no Mega que estão no Uno. Não fomos capazes de testar totalmente este código, pois estávamos trabalhando com um antigo Mega fora de marca que a loja da nossa escola tinha. Isso significa que, por algum motivo, nem todos os pinos de registro PORTA foram capazes de ativar os ESCs corretamente. Também tivemos problemas ao usar o operador ou igual (| =) em alguns de nossos códigos de teste. Não temos certeza de por que isso estava causando problemas ao escrever os bytes para definir as tensões dos pinos ESC, então modificamos o código de Brooking o mínimo possível. Achamos que este código está muito próximo do funcional, mas sua milhagem pode variar.

Etapa 14: Get Airborne !! (Uno)

E, novamente, este terceiro código genial é obra de Joop Brokking. Alterações em todas essas três partes do código estão presentes apenas em nossa tentativa de integração dos dados do GPS no Arduino.

Com suas hélices firmemente montadas na estrutura e todos os componentes amarrados, com fita adesiva ou de outra forma montados, carregue o código do controlador de vôo em seu Arduino e, em seguida, desconecte o Arduino do computador.

Leve seu quadricóptero para fora, conecte a bateria e ligue o transmissor. Opcionalmente, leve um laptop conectado à configuração de recepção de GPS, bem como a configuração de recepção de vídeo e monitor. Carregue o código do transceptor em seu Arduino terrestre, abra seu monitor serial para 9600 baud e observe os dados do GPS entrando.

Agora você está pronto para voar. Empurre o acelerador para baixo e gire para a esquerda para armar o quadricóptero, a seguir levante o acelerador suavemente para pairar. Comece voando baixo para o solo e sobre superfícies macias como grama até se sentir confortável.

Veja o vídeo embutido de nós pilotando o drone com entusiasmo na primeira vez que conseguimos fazer o drone e o GPS funcionarem simultaneamente.

Etapa 15: Get Airborne !! (Mega)

Devido ao nosso desligamento do código de calibração ESC para o Mega, nunca fomos capazes de criar um código de controlador de vôo para esta placa. Se você chegou a este ponto, imagino que tenha pelo menos mexido no código de calibração ESC para fazê-lo funcionar no Mega. Portanto, você provavelmente terá que fazer modificações semelhantes no código do controlador de vôo, conforme fez na última etapa. Se nosso código de calibração ESC para o Mega funciona magicamente sem nenhuma outra modificação, então há apenas algumas coisas que você terá que fazer no código de estoque para que funcione nesta etapa. Primeiro, você precisará substituir todas as instâncias de PORTD por PORTA. Além disso, não se esqueça de alterar DDRD para DDRA. Em seguida, você precisará alterar todos os bytes que estão sendo gravados no registrador PORTA para que eles ativem os pinos apropriados. Para fazer isso, use o byte B11000011 para definir os pinos como altos e B00111100 para definir os pinos como baixos. Boa sorte, e diga-nos se você voar com sucesso usando um Mega!

Etapa 16: Como chegamos onde estamos atualmente com o Mega Design

Este projeto foi uma grande experiência de aprendizado para nós, como iniciantes em Arduino e como hobby em eletrônica. Portanto, pensamos que incluiríamos a saga de tudo o que encontramos ao tentar habilitar o GPS para o código de Joop Brokking. Como o código do Brokking é tão completo e muito mais complicado do que qualquer coisa que estávamos escrevendo, decidimos modificá-lo o menos possível. Tentamos fazer com que o escudo do GPS enviasse dados ao Arduino e, em seguida, o Arduino nos enviasse essas informações por meio do transceptor HC12 sem modificar o código de vôo ou a fiação de nenhuma forma. Depois de examinar o esquema e a fiação de nosso Arduino Uno para descobrir quais pinos estavam disponíveis, mudamos o código do transceptor GPS que estávamos usando para contornar o projeto existente. Em seguida, testamos para ter certeza de que tudo funcionou. Nesse ponto, as coisas pareciam promissoras.

A próxima etapa foi integrar o código que acabamos de modificar e testar com o controlador de vôo da Brokking. Não foi muito difícil, mas rapidamente encontramos um erro. O controlador de vôo da Brokking depende das bibliotecas Arduino Wire e EEPROM enquanto nosso código GPS estava usando a biblioteca Software Serial e a biblioteca Arduino GPS. Como a Wire Library faz referência à biblioteca Software Serial, encontramos um erro em que o código não compilava porque havia "várias definições para _vetor 3_", seja lá o que isso signifique. Depois de pesquisar no Google e vasculhar as bibliotecas, finalmente percebemos que esse conflito de bibliotecas tornava impossível usar esses pedaços de código juntos. Então, fomos em busca de alternativas.

O que descobrimos é que a única combinação de bibliotecas que não gerou erros foi trocar a biblioteca GPS padrão para neoGPS e usar AltSoftSerial em vez de Software Serial. Essa combinação funcionou, no entanto, AltSoftSerial só pode operar com pinos específicos, que não estavam disponíveis em nosso projeto. Isso é o que nos levou a usar o Mega. O Arduino Megas tem várias portas seriais de hardware, o que significa que poderíamos contornar esse conflito de biblioteca sem precisar abrir portas seriais de software.

Porém, quando começamos a usar o Mega, rapidamente percebemos que a configuração dos pinos era diferente. Os pinos no Uno que têm interrupções são diferentes no Mega. Da mesma forma, os pinos SDA e SCL estavam em locais diferentes. Depois de estudar os diagramas de pinos para cada tipo de Arduino e refazer os registros chamados no código, fomos capazes de executar o código de configuração de vôo com apenas um mínimo de religação e nenhuma alteração de software.

O código de calibração ESC é onde começamos a ter problemas. Nós tocamos nisso brevemente antes, mas basicamente o código usa registradores de pinos para regular os pinos usados para controlar os ESCs. Isso torna o código mais difícil de ler do que usar a função pinMode () padrão; no entanto, torna o código mais rápido e ativa os pinos simultaneamente. Isso é importante porque o código de voo é executado em um loop cuidadosamente cronometrado. Por causa das diferenças de pinos entre os Arduinos, decidimos usar o registro de porta A no Mega. No entanto, em nossos testes, nem todos os pinos nos deram a mesma tensão de saída quando informados para rodar alto. Alguns dos pinos tinham uma saída de cerca de 4,90V e outros nos deram mais perto de 4,95V. Aparentemente, os ESCs que temos são um tanto exigentes e, por isso, só funcionariam corretamente quando usássemos os pinos com voltagem mais alta. Isso nos forçou a alterar os bytes que escrevemos no registro A para que estivéssemos falando com os pinos corretos. Há mais informações sobre isso na seção de calibração do ESC.

Isso é o mais longe que chegamos nesta parte do projeto. Quando fomos testar este código de calibração ESC modificado, algo entrou em curto e perdemos a comunicação com nosso Arduino. Ficamos extremamente intrigados com isso, porque não havíamos mudado nenhuma fiação. Isso nos forçou a recuar e perceber que só tínhamos alguns dias para conseguir um drone voador, depois de semanas tentando encaixar nossas peças incompatíveis. É por isso que retrocedemos e criamos o projeto mais simples com o Uno. Porém, ainda achamos que nossa abordagem está próxima de trabalhar com o Mega com um pouco mais de tempo.

Nosso objetivo é que esta explicação dos obstáculos que encontramos seja útil para você se você estiver trabalhando na modificação do código de Brokking. Também nunca tivemos a chance de tentar codificar qualquer recurso de controle autônomo baseado no GPS. Isso é algo que você precisará descobrir depois de criar um drone funcional com um Mega. No entanto, a partir de algumas pesquisas preliminares do Google, parece que implementar um filtro de Kalman pode ser a maneira mais estável e precisa de determinar a posição em vôo. Sugerimos que você pesquise um pouco sobre como esse algoritmo otimiza as estimativas de estado. Fora isso, boa sorte e diga-nos se você for mais longe do que fomos capazes!

Recomendado: