segunda-feira, 30 de dezembro de 2013

GPS + I2C_GPS_NAV


Pessoal, comecei a planejar como adicionar um modulo GPS no quad. Já tem um certo tempo que comprei esse modelo NEO-6M GPS Module (agora quando olhei o valor, está mais barato que os $20,98 que paguei). Ele vem com um modulo de GPS da u-blox e parece ser bom... Tem uma precisão de aproximadamente 5 metros, o que faz o preço dele ser atraente comparado a outros módulos GPS com a mesma precisão.
No site da Hobbyking não diz mas ele funciona com tensão de 5V, vi algumas pessoas afirmando isso nos comentários, então fiz o teste e realmente funciona com 5V (de acordo com o site da u-blox o modulo necessita de 1.8~3.0V de tensão, porém acredito que a placa onde esse está, tenha um regulador de tensão e aceite de 3.3~5V, mas não encontrei nenhuma informação consistente)

Como o modulo completo aceita tensão de 5V, a instalação não é muito complicada, basta utilizar a saída serial do arduino em conjunto com o projeto Multiwii, no entanto eu já estou utilizando a saída serial com o modulo bluetooth, sendo assim precisei procurar uma alternativa... Logo encontrei um adaptador de GPS serial para I2C, I2C_GPS_NAV, que resolveria meu problema (para quem tiver interesse nesse adaptador aqui vai o link). Contudo não fiquei contente com o preço desse adaptador... Foi então que descobri que ele utiliza um Atmega328P e um código aberto que pode ser encontrado em: 


Agora o que eu precisava era somente de outro arduino, sorte que eu já havia comprado outro no Banggood por um ótimo preço, muito muito barato comparado ao primeiro que comprei no DX, porém o do DX parecia ter o layout original e tinha escrito Arduino Pro Mini nele, não que isso importe para mim... Segue o link:


Segue uma fotos do GPS... Ele vem com um mini conector, mas resolvi não usá-lo, coloquei um conector mais prático.


Uma outra vantagem de utilizar esse código é poder ligar um sensor ultrassônico no arduino controlador do GPS e assim melhorar a precisão de altitude. E também é possível utilizar as demais saídas do arduino para outras finalidade. Ex: Ligar os LEDs do quad.


As ligações devem ser feitas assim:

Ligar o GPS no Arduino:



Ligar o Arduino no Sonar


Para ativar o tipo de sonar do HC-SR04 é preciso modificar um valor no arquivo "config.h" do projeto I2C_GPS_NAV. Remover o comentário do valor PINGPONG e deixar comentado o valor MAXBOTIX_PWM:

#define PINGPONG

//#define MAXBOTIX_PWM

Feito as ligações, para estabelecer uma comunicação entre os dois arduinos, basta ligar o A4 no A4 e A5 no A5 de cada um. É recomendado colocar resistores pull-up de 2.2K Ohms entre o A4 e VCC(5V) e o A5 e VCC(5V).

Agora é necessário ativar o GPS I2C no Multiwii, para isso edite o arquivo "config.h" e procure pela seção "GPS". Agora é so remover o comentário do valor I2C_GPS:

#define I2C_GPS

Se estiver utilizando a versão 2.3 do Multiwii, é possível compartilhar o sonar habilitando o valor:

#define I2C_GPS_SONAR

Por enquanto é isso. Estou fazendo muitas mudanças na estrutura do quad, depois venho postar fotos do novo quad hehe.

Até

10 comentários:

  1. Marcos, bom dia. Meu nome é Fernando. Tenho um quadcoptero que fiz com o objetivo de fazer acrobacias, com um controlador CRIUS AIO v2 e MWC. Estou agora me interessando em fazer um módulo adaptável a ele para poder fazer filmagens e fotos, no entanto estou com algumas dúvidas quanto ao uso do GPS. Você poderia me dar uma orientação?
    -meu transmissor é um Orange de 6ch e sem telemetria. Preciso de telemetria para usar um GPS? Eu consigo obter dados de telemetria colocando um transmissor Bluetooth e receber os sinais pelo celular?
    Com o GPS eu consigo adicionar que tipo de funções a mais ao quad? Ele só me informa geoposicionamento ou contribue com o equilíbrio em voou ?
    Desde já obrigado pela orientação.

    ResponderExcluir
    Respostas
    1. Olá,

      Bem usando o GPS você vai ter duas funcionalidades que gosto muito: Uma é o GPS GO HOME onde seu quad deverá voltar para o ponto de onde decolou caso ative esse modo ou quando seu sistema entrar em failsafe (perder o sinal do rádio); Outra coisa legal é o GPS HOLD onde o quad tenta manter a posição no espaço do momento que esse modo for ativado, ou seja ele tende a ficar parado e voltar para o mesmo lugar caso empurrado pelo vento; Outra que nunca usei é o modo de voo com waypoints, você marca pontos em um software e manda o quad navegar por eles.

      Quanto a sua pergunta sobre telemetria. Não é preciso para utilizar o GPS... E a outra pergunta, você poderia receber a telemetria via bluetooth porém não teria muito alcance.

      Outra coisa, essas suas controladoras tem suporte ao uso de GPS, só basta procurar como ligá-lo...


      abraço.

      Excluir
  2. Marcos, bom dia!

    Sou um iniciante na arte de construção de um quadricoptero e decidi já começar com uma placa multiwii. Vendo seu projeto, gostaria de entender o que seria de fato esse "ATMEGA328 328p 5V 16MHz Arduino" e qual a diferença entre ele e um FTDI básico, tudo bem?
    Desde já agradeço.
    Alessandro.

    ResponderExcluir
    Respostas
    1. Microcontrolador(chip): ATMEGA328p
      Tensão de entrada: 5V
      Ciclos de Clock: 16MHz
      Arduino é o conjunto com essas configurações e mais.

      No caso o FTDI é um conversor de saída serial(TX/RX) para USB. Sendo assim, como o Arduino Pro Mini não possui USB nativo então é preciso utilizar um FTDI para poder gravar o firmware (multiwii) nele... Já o Arduino UNO ou algumas Flight Controllers vem com um USB integrado, o que facilita para gravar o sistema.

      Espero ter esclarecido sua duvida.

      abraço

      Excluir
  3. Bom dia Marcos,
    estou conhecendo o mundo dos drones e fiquei interessado nesse sensor de altitude (sonar). Você chegou a testar o nível de precisão dele? Até que altitude é possivel confiar nos dados dele. Sabe se é possível fazer com que o quad mantenha uma altitude determinada por este sensor. Desde já agradeço a atenção e parabenizo pelas excelentes publicações.

    ResponderExcluir
    Respostas
    1. Olá, acredito que o Sonar não funciona bem com altitudes maiores que 2 metros. Quanto a precisão nos meus testes eu acredito que seja coisa de 1 centimetro.

      abraço.

      Excluir
  4. Olá, tens um bom blog, parabéns.:)

    Uma perguntinha, se no arduino(principal) que estas a usar com o multiwii tens as portas A4 e A5 a ser usadas/ocupadas pelo arduino secundário(com o I2C_GPS_NAV) onde ligas a tua placa GY-80?

    Muito obrigado.:)

    ResponderExcluir
    Respostas
    1. Olá, amigo. As portas A4 e A5 são utilizadas para o barramento I2C. Nesse barramento é possível ligar vários dispositivos ao mesmo tempo. Cada um é identificado por um número serial, então as leituras e escritas são direcionadas para um dispositivo especifico.

      abraço

      Excluir
  5. Você pode me dizer se posso colocar o GPS direto no tx rx do Arduino uno? Ou colocando ele no promini seria só eu conectar o a4 e a5 no Arduino uno ele reconheceria no software multwii?

    ResponderExcluir
    Respostas
    1. Olá Bruno,

      Desculpe a demora, provavelmente você já descobriu o que estava perguntando, mas vou responder para que outros possam ver.

      Sim, é possível. Basta modificar o config.h e habilitar o GPS serail "#define GPS_SERIAL".

      Também existem outras configurações para o seu gps que você poderá/devera modificar.

      Abraço.

      Excluir