Mostrando postagens com marcador GY-80. Mostrar todas as postagens
Mostrando postagens com marcador GY-80. Mostrar todas as postagens

sábado, 16 de novembro de 2013

Instalando Bluetooth HC-05 no Quad

Comecei a modificar e testar diferentes valores do PID para o quad. Logo percebi que fica muito chato ficar abrindo a proteção do quad e ligando o PC/Cabo USB/FTDI até a controladora de voo para atualizar esses valores. Então, lembrei que há um tempo eu encontrei um artigo explicando como ligar o arduino em um modulo bluetooth e comprei essa plaquinha para usar em meu Arduino Uno.

Para quem se interessar, o link do artigo é:

Continuando, comprei essa plaquinha HC-05 separada da outra plaquinha breakout. Eu mesmo soldei tudo e coloquei a termo retrátil, saiu pouco mais de dois dólares mais barato que comprar tudo junto.
O breakout serve para regular a tensão para a HC-05 que passa a aceitar de 3.3V a 6V, também adiciona um LED de status e um botão de clear. O HC-05 diferente do HC-06, pode ser tanto mestre como escravo... Bem eu aconselho comprar tudo junto e acredito que o HC-06 também deve servir para essa finalidade, pois ele sempre vai ser usado como escravo. Você pode encontrar esse modulo no Dealextreme, Banggood, etc. Se quiser ter ainda mais facilidade para usar um modulo bluetooth na sua controladora de voo utilizando Multiwii, esse modulo já vem configurado e não vão precisar fazer nenhuma das configurações que vou explicar.

Primeiro vou falar de como configurar o modulo bluetooth para ser reconhecido pelo Multiwii, para isso vai ser necessário modificar a baud rate do modulo para 115200 que é utilizada para conexão. 

Antes é preciso conectar o modulo a um FTDI da seguinte forma:

FTDI            Modulo Bluetooth
--------------------------------
RX     <---> TX
TX     <---> RX
VCC  <---> VCC
GND  <---> GND

Em seguida conecte o FTDI na USB do computador (após esse ponto, no meu modulo bluetooth, precisei clicar uma vez no botão de clear).



Agora vai ser necessário o uso de um software que conecte na porta COM utilizada pelo FTDI (o procedimento para encontrar a porta COM já foi explicado nesse post), pode ser o serial monitor da IDE do arduino. Após abrir o serial monitor é importante configurar o modo de final de linha para "both NL & CR", dessa forma vão ser enviados new line e carrige return ao final de cada comando. A velocidade de transmissão padrão do modulo bluetooth é de 9600 baud, então para a conexão funcionar coloque esse valor.

Feito o procedimento acima, vamos para a configuração.

Envie o comando "AT" basta digitar isso e clicar em "Send". O modulo deve responder "OK", caso não responda, algo pode estar errado...

Agora para modificar o baud rate digite "AT+UART=115200,0,0" e clique em "Send".
O modulo deverá responder "OK".

Pronto!

Para verificar o atual baud rate digite "AT+UART?" e pressionar em "Send".
O modulo deverá responder "+UART:115200,0,0" e depois "OK".

Também é possível modificar o nome do modulo bluetooth que vai aparecer para os outros equipamentos e a senha de acesso, entre outras coisas... No entanto, agora o baud rate é 115200 então é preciso alterar no serial monitor de 9600 para esse novo valor, caso contrario os novos comandos não serão aceitos.

Para modificar o nome, basta digitar "AT+NAME=<nome>"  e pressionar "Send".

Exemplo: "AT+NAME=QuadBluetooth"
O modulo devera responder "OK".

Para modificar a senha, basta digitar "AT+PSWD=<nova senha>"  e pressionar "Send".
O modulo deverá responder "OK".

Para saber mais sobre os comandos do modulo bluetooth HC-05, segue o link para download do manual:

Terminada as configurações é só ligar o modulo bluetooth na serial do arduino. A ligação é semelhante ao FTDT...

Arduino        Modulo Bluetooth
--------------------------------
VCC  <---> VCC
GND  <---> GND
RX     <---> TX
TX     <---> RX

Se tudo correr bem, ao ligar a controladora de voo vai ser possível encontrar o dispositivo bluetooth com qualquer aparelho que possa procurar dispositivos. Se você tiver bluetooth no seu computador, basta parear os dispositivos com a senha definida ou com a senha padrão (1234 caso não tenha alterado), abrir a GUI do Multiwii, então escolher a porta COM referente ao adaptador bluetooth do seu computador e começar a ver os dados do seu multi-motor em tempo real. Lembrando, essa porta COM não vai ser a mesma utilizada para o FTDI. Clicando no ícone de dispositivos bluetooth e verificando em propriedades como na imagem abaixo, será possível descobrir a porta COM correta.



Para quem tem tablet ou celular com android, o programa MultiWii EZ-GUI no link abaixo é muito legal e prático para ser usado em campo.

Segue as fotos do meu modulo bluetooth e o cabo que fiz utilizando um pedaço de cabo flat de PC (gostei muito de usar esse cabo para fazer pequenos conectores). Também coloquei um LED na minha flight controller, basta ligá-lo no pino 13 do arduino e na GND com uma resistência de no minimo 220 Ohms. Vou por esse LED fora da caixa onde fica a controladora, para poder ver o status dela quando o quad não estiver aberto.



Por enquanto é só.

Até

quarta-feira, 30 de outubro de 2013

Flight Controller +


Pessoal, nesse post vou mostrar como configurar o Multiwii para um quadricoptero em X utilizando a plaquinha IMU GY-80 de acordo com o meu projeto.

Para começar vamos precisar do compilador para o arduino, o mais prático é o oferecido pelo site oficial do arduino em: 
O código fonte do projeto Multiwii pode ser encontrado em:
http://code.google.com/p/multiwii/downloads/list (esse teste foi realizado com a versão 2.2).

Depois de fazer os downloads, instalar o IDE e descompactar o código do projeto, basta abrir o arquivo "MultiWii.ino" pela IDE do arduino e todos os arquivos do projeto vão abrir em várias abas. 

O primeiro passo é fazer a configuração do projeto. Para isso será necessário ir até a aba do arquivo "config.h" e habilitar algumas definições.


Em "SECTION 1 - BASIC SETUP" escolha o tipo do multi-rotor, basta remover o comentário // do define e deixar como abaixo

#define QUADX

Ainda na mesma seção procure por "Combined IMU Boards" e remova o comentário da GY-80 para habilitar os sensores.

#define GY_80 // Chinese 10 DOF with L3G4200D ADXL345 HMC5883L BMP085, LLC

Agora em "SECTION  4 - ALTERNATE CPUs & BOARDS" procure por "Aux 2 Pin" e remova o comentário para ativar o AUX2 no pino 12 do arduino (essa configuração é necessária para utilizar o AUX2 no layout que desenvolvi).

#define RCAUXPIN12

Pronto, as configurações necessárias para testar os código já estão feitas. Agora vou mostrar umas configurações opcionais.

Em "SECTION  2 - COPTER TYPE SPECIFIC OPTIONS" procure por "ARM/DISARM". Nessa configuração é possível ligar os motores com um comando no stick do Yaw ou no do Pitch.

Definindo:

#define ALLOW_ARM_DISARM_VIA_TX_YAW

O multi-rotor vai ligar os motores quando o stick do throttle/yaw for colocado todo para baixo e para direita e desligar quando for colocado para baixo e para esquerda.

Definindo:

#define ALLOW_ARM_DISARM_VIA_TX_ROLL

O multi-rotor vai ligar os motores quando o stick do pitch/roll for colocado todo para baixo e para direita e desligar quando for colocado para baixo e para esquerda.

Na mesma seção em "Cam Stabilisation" é possível ligar o controle para os servos do gimbal.

Definindo:

#define SERVO_MIX_TILT

O gimbal vai funcionar como no sistema SUPER SIMPLE GIMBAL (SSG) que achei genial e pretendo montar esse para o meu quad. Mais sobre esse sistema basta ler esse tópico:
http://www.rcgroups.com/forums/showthread.php?t=1793759 (No tópico fala que é para placa KK2 mas essa versão do Multiwii já tem suporte, eu testei esse modo :D).

Definindo:

#define SERVO_TILT

Os servos vão funcionar do modo tradicional para o gimbal.
Caso não for usar o gimbal, basta deixar as duas definições comentadas.


Abaixo segue uma imagem com as especificações para ligar os ESCs e os receptor.


Também tive que fazer um cabo para ligar os pinos A4 e A5 do arduino no circuito. Usei um pedaço de cabo flat de pc.


Lembrando que foi necessário remover o jumper para isolar a alimentação do arduino e do receptor, no caso eu utilizei outra fonte de energia para o receptor. Quer uma explicação? leia isso:


Com o jumper removido, agora segue o vídeo com o teste feito na minha placa controladora de voo.



Até

quarta-feira, 23 de outubro de 2013

Flight Controller

Finalmente a controladora de voo ficou pronta, abaixo segue as imagens.


Chequei todas as conexões da placa para ter certeza que as ligações iriam ficar corretas como no layout. Em seguida, passei esmalte preto para dar um melhor visual (não sei se ficou melhor hehe) e então soldei os componentes. Como dá para ver, o Arduino Pro Mini e a GY-80 encaixaram perfeitamente nos sockets =]
Depois de ter tudo conectado, liguei o FTDI no arduino e fiz upload dos códigos para testar os sensores, felizmente tudo correu bem. O próximo passo foi fazer o upload do código do projeto Multiwii e realizar alguns testes. No segundo post sobre a minha controladora vou detalhar mais como fiz as configurações do código, as ligações e os testes.

Por enquanto é isso.

Até

terça-feira, 15 de outubro de 2013

Layout Flight Controller

Pessoal, comecei a bolar o layout da minha controladora de voo. Baixei um programa free chamado PCBartist, ele é bem legal pois você pode ter certeza das medidas de distância entre conectores e componentes. Comecei a fazer as conexões da minha plaquinha IMU de acordo com o que aprendi e as conexões para ESCs e Receptor seguindo os diagramas do projeto Multiwii.

Eis o meu layout:


Abaixo segue a imagem da placa de fenolite com o layout feito a mão. (Esse layout está um pouco diferente, pois acabei fazendo umas melhorias depois que a placa já estava corroída e esse foi o segundo modelo que fiz então estava sem saco para fazer mais uma :P)


Deu um pouco de trabalho, mas como a impressão pelo PCBartist tem o tamanho real, então basta colocar o papel impresso sobre a placa de fenolite e marcar os pontos onde vão ser perfurados, assim dá para ter uma noção das distâncias. Para quem quer facilidade, existe um papel vendido no mercado livre (aqui e aqui) que ao utilizar o ferro de passar sobre o papel térmico e esse sobre a placa, assim o layout é transferido.

Abaixo segue a placa já corroída no percloreto de ferro. Ficou até legal!


Logo vou colocar os conectores ai venho postar o resultado final.

Até

segunda-feira, 14 de outubro de 2013

Testando Arduino e Sensores

Pessoal, desde que recebi as placas do Arduino Pro Mini, FTDI e sensores (GY-80) comecei a fazer alguns testes antes de colocar o código do projeto Multiwii. Agora vou mostrar como são feitas as conexões entre esses circuitos.

Para fazer os testes vão ser necessários o driver para o FTDI que pode ser encontrado em http://www.ftdichip.com/Drivers/VCP.htm e a IDE para programar o arduino que pode ser encontrado em http://arduino.cc/en/Main/Software#toc1. Para quem não sabe IDE é sigla para Integrated Development Environment que é um ambiente onde é possível desenvolver códigos, compilá-los e no caso dessa IDE é possível fazer o upload do arquivo binário direto na memória do CI (Circuito Integrado) do arduino que é o Atmega328-P.

Abaixo segue a imagem das minhas placas Arduino Pro Mini e FTDI com as ligações destacadas:
Como pode ser visto a ligação vai ficar assim:

Arduino           FTDI
----------------------
DRT   <--->   DRT
TX      <--->   RX
RX      <--->   TX
VBUS <--->   5V
CTS    (não ligar em nada)
GND   <--->   GND

DRT serve para colocar o Arduino Pro Mini no estado de update de firmware.
TX e RX são para comunicação.
VBUS e GND são para alimentação, quando o FTDI for ligado no USB ele vai energizar o arduino por meio do pino VBUS. Nunca ligue o arduino em outra fonte de energia quando ele estiver ligado ao FTDI.

Abaixo segue um código simples para testar o seu arduino e FTDI:

int inByte = 0;
int led = 13; //Utilizando pino 13 que tem um LED integrado

void setup()
{
  Serial.begin(9600);
  while (!Serial) {
    ;
  }

  pinMode(led, OUTPUT); //Colocando o pino 13 em modo de saída
}

void loop()
{
  if (Serial.available() > 0)
  {
    inByte = Serial.read();
    if (inByte == 49) //Número 1 no teclado
    {
      digitalWrite(led, HIGH); //Pino 13 em high (energizado)
      Serial.println("Ligado"); //Manda o texto pelo FTDI 
    } 
    else if (inByte == 50) //Número 2 no teclado
    {
      digitalWrite(led, LOW); //Pino 13 em low (sem energia) 
      Serial.println("Desligado"); //Manda o texto pelo FTDI
    }
    delay(30); 
  }  
}

Depois de fazer o download da IDE, é necessário fazer algumas configurações iniciais:
  1. Abra a mesma, vá ao menu Tools > Board e selecione "Arduino Pro Mini (5V, 16 MHz) /w Atmega328" caso esse seja seu arduino;
  2. Agora vá ao menu Tools > Serial Port e selecione a porta COM criada pelo driver do FTDI. Se não sabe qual escolher, você pode testar todas (acredito que não tenha muitas) ou procurar no gerenciamento do computador. Basta ir ao "Menu Iniciar" usar o botão direito do mouse na opção "Computador", escolher "Gerenciar", clicar no menu em "Gerenciador de dispositivos", depois procurar em "Portas (COM e LPT)". Você deve encontrar "USB Serial Port (X)" onde X é a porta COM procurada.
Feito as configurações, agora cole o código na tela da IDE e depois clique no botão "Upload" (Botão com uma seta para direita). Se não ocorrer nenhum erro, agora basta ir ao menu Tools > Serial Monitor ou pressionar Ctrl+Shift+M para abrir o serial monitor onde será possível enviar os comandos e ver o retorno.
Agora aperte os números 1 ou 2 na caixa de texto e pressione enter. O LED integrado do arduino deve acender ou apagar de acordo com o seu comando =D

Agora vamos para a ligação e teste dos sensores. O arduino e o sensores se comunicam através de barramento I2C (Inter-Integrated Circuit), onde o arduino age como mestre e o GY-80 como escravo. Esse barramento de comunicação é interessante por permitir que vários dispositivos sejam ligados no mesmo, cada qual tem um número de identificação para comunicação direta. Abaixo segue a imagem da minha placa GY-80 e as ligações em destaque. Só lembrando que a placa GY-80 já tem suporte no código do Multiwii...

Como pode ser visto as ligações ficaram assim:

Arduino           GY-80
------------------------
A4     <----->   SDA
A5     <----->   SCL
5V     <----->   VCC_IN
GND <----->   GND

Apenas com essas ligações vai ser possível ler os dados dos sensores na GY-80, no entanto eventualmente podem ocorrer alguns erros nas leituras devido a oscilações ocorridas quando nenhum dado esta passando pelo barramento. Para corrigir o problema é necessário fazer um pull-up com resistores de 2,2k Ohms ligados entre o A4/A5 e o 5V do arduino (para entender mais sobre isso leia pull-up de resistores). Dessa forma, quando a placa GY-80 não estiver comunicando com o arduino, os valores das saídas SCL/SDA vão estar em high, ou seja, vão estar energizados e não mais oscilando.

Agora que as ligações estão corretas, mantenha o FTDI também conectado ao arduino. É só testar os códigos do link abaixo. Esses são fornecidos junto com o pacote de instruções da placa, mas tive que fazer alterações, pois uma biblioteca antiga de comunicação I2C estava sendo usada. Quando fizer o upload do código, abra o "Serial Monitor" para ver os resultados. 

Link dos códigos de teste:

Link dos datasheets:


Por enquanto é isso.

Até