domingo, 30 de outubro de 2016

DRONE DIY - FRAME CASEIRO PARA QUADRICÓPTERO

Olá, no outro post, fizemos a placa controladora de vôo, onde aprendemos como funciona a uma placa multiwii e como gravar e programar nosso software para controlar nosso quadricóptero.
E agora que temos nossa placa controladora está na hora de montá-la em um frame para fazer os testes.
Neste post mostrarei como construir um frame leve e resistente para nosso projeto de quadricóptero.
O frame é o corpo do nosso quadricóptero, onde são montados os motores, placas, ESCs, bateria, câmera, etc.
Existem muitos frames hoje no mercado, além do preço ser um pouco alto, alguns são pesados demais dependendo de sua configuração e para que você pretende utilizar. Mas tem ótimos frames como os F450, que são ideais para começar a montar um drone.
 Agora se você gosta de DIY, e está afim de montar seu próprio frame, você estará economizando e ainda aprendendo e pode investir o dinheiro que iria gastar no frame em outros equipamentos para seu drone. Além disso, poderá fazer um frame a seu gosto. Então vamos continuar....


Materiais necessários para o frame:
  • 2x placas de PCB 10x10cm;
  • Percloreto para corroer as placas;
  • 1x tubo quadrado de aluminio 20x20mm x 1m comprimento e parede de 1mm ou tubo equivalente;
  • Arco de Serra ou tico-tico;
  • 4x parafusos M3x30mm (phillips);
  • 8x parafusos M3x25mm (phillips);
  • 4x espaçadores M3x10mm
  • 16 arruelas para M3;
  • 12 porcas M3;
  • Braçadeiras de nylon diversas;
  • Ferro de solda e estanho;
  • 4x espaçadores com rosca M3;
  • Furadeira e broca de 3mm.
Materiais necessários para o montagem do Quadricoptero:
Primeiro vamos começar com as placas de PCB, Fiz o design abaixo para que possamos dividir a alimentação que vem da bateria para a eletrônica do nosso quadricóptero. No centro é o polo negativo e o contorno é o polo negativo. A bateria utilizada neste caso deve ser 3s ~12V, 3000mah.
Os pólos da bateria vão ser ligados em paralelo aos fios de alimentação dos ESCs, estes devem possuir BEC interno, pois serão responsáveis por alimentar nossa placa multiwii quando conectarmos a ela.



Se você não sabe como fazer uma placa de PCB e corroer, leia esse post:
Vamos fazeer a impressao do circuito somente em uma das placas.
Após a corrosão, podemos fazer as furações na placa de diâmetro 3,2mm  para fixarmos futuramente os braços do quad. Também já podemos soldar os ESCs e conector para bateria da seguinte forma, todos os positivos soldados no centro e todos os negativos soldados no contorno de fora como na figura abaixo:


A outra placa (inferior) será apenas furada colocando-se a placa furada sobre ela. Essa não terá circuito para ser corroído, ou se preferir, pode-se fazer um circuito para outra finalidade nela. Eu fiz a corrosão para eliminar o peso do cobre e fiz um furo no centro para passar possíveis cabos. Também prendi nela um suporte para câmera Pan e Tilt.
Agora vamos fazer os braços do nosso quadricóptero. Com o tubo de alumínio de 1m e uma régua em mãos, vamos marcar com um lápis e dividir o tubo em quatro pedaços de 250mm. Em seguida vamos serrar utilizando uma serra manual ou uma tico-tico. Com uma lixa ou lima vamos remover as rebarbas. depois marcamos as furações utilizando nosso lápis e régua conforme o desenho abaixo. É importante que as marcações sejam iguais nas quatro peças :

                             

Utilizando uma furadeira e uma broca de diâmetro de 3mm vamos fazer as furações marcadas. Para que não haja desvio, é bom furar de um lado do tubo, virar e furar do outro lado.
Vamos unir as duas placas fazendo um sanduíche com os braços e prender utilizando parafusos M3x25 e porcas M3. Nos 4 furos centrais, vou prender um espaçador M3 com parafusos M3x30 para servir de base para fixarmos nossa placa controladora, é importante que os furos batam e sejam centralizados com a placa. Os ESCs Simonk de 30A são presos no tubo utilizando uma braçadeira de nylon com o dissipador encostado no tubo para ajudar a dissipar calor. A imagem abaixo ilustra a montagem:



Os motores A2212 1000kv são fixados na extremidade dos braços com parafusos M3x25mm e porcas M3 em apenas dois furos da base do motor. Devemos apertar bem os parafusos e porcas utilizados e por segurança, colocar um pouquinho de cola quente para que a porca não se solte com as vibrações. Outra opção é utilizar porcas auto-travantes para este fim.


Por fim montamos a nossa placa controladora sobre os espaçadores, bateria, receptor e opcionais e hélices 1045 para verificar se está tudo ok. Neste momento é importante conectar os motores na ordem correta nos pinos da nossa placa seguindo o esquema que coloquei no post da placa controladora. É importante distribuir o peso de maneira igual para que o quadricóptero fique equilibrado. Alguns preferem montar a bateria na parte de cima e outros embaixo do frame. Eu coloquei a bateria em baixo devido ao espaço que reservei em cima para o GPS, Bluetooth e para o sistema de FPV.



Após a montagem de todos os opcionais que eu pretendia: GPS, Bluetooth e FPV, o peso ficou com pouco mais de 1Kg, esse é um bom valor caso quisermos colocar um sistema de Gimbal. Lembrando que esses quadricópteros com essa configuração possuem um bom desempenho até 1,5kg, acima disso ele pode ficar instável e lento e com problemas de recuperar a altitude, podendo ficar quicando no chão.



Agora removemos as hélices para que possamos configurar o drone de maneira segura.
Para configurar os modos de voo no multiwii config, visite o post abaixo:

Como configurar modos de voo multiwii?

Para um vôo seguro, sigam as normas e cadastre seu modelo acima de 250g no site da ANAC.


Inscrevam no meu canal do youtube: https://www.youtube.com/channel/UCh_d8IZS0gB68gJGoZ8d6Qg

Obrigado
Abraços

domingo, 12 de junho de 2016

DRONE DIY - PLACA CONTROLADORA DE VOO COM ARDUINO E MULTIWII - QUADRICÓPTERO

Neste post vou explicar sobre o design, montagem e programação de uma placa controladora de voo para drones DIY com barômetro, bússola, acelerômetro, giroscópio, utilizando o microcontrolador ARDUINO NANO V3.0 328P, que pode ser programada via USB ou Bluetooth pelo software Multiwii:




É uma placa semelhante a Naza, CC3D e Multiwii CRIUS SE, porém, é personalizável de acordo com suas necessidades e recursos. Ela aceita GPS, OSD e outros sensores como ultrassônico, depende de como você irá configurar o programa que será gravado.

Módulos Necessários:

- 1x Arduino nano V3 com atmega 328p;
- 1x Módulo MPU6050 (Acelerômetro e Giroscópio);
- 1x Módulo BMP180 ou 085 (Barômetro);
- 1x Módulo HMC5883L (Magnetômetro);
- *Se preferir existe um Módulo com os 3 sensores acima - Módulo GY87;
- 1x Módulo Bluetooth HC05.

Materiais e ferramentas necessárias para criar a placa:

- 1x Placa de PCB 5x5cm;
- Percloreto de ferro;
- Caneta para retroprojetor;
- Furador de placa;
- 2x Pin headers 1x40;
- 2x Socket Header 1x40;
- Ferro de solda;
- Estanho;
- 2x Resistores de 330 ohms;
- 2x LEDs verde/vermelho;
- 2x Resistores de 4k7 ohms;
- Fios diversos, macho-macho, macho-fêmea e fêmea-fêmea;
- Potes plásticos onde será corroída a placa.

Rádio e Receptor utilizados neste Drone:
FSCT6B

Vamos nos basear no circuito abaixo e utilizar as mesmas conexões para a nossa placa:



Pinos de entrada onde serão conectados ao receptor, neste exemplo é um receptor 6ch.

CH3 - Acelerador = D2
CH1 - Roll (aileron) = D4
CH2 - Pitch (profundor) = D5
CH4 - Yaw (leme) = D6
CH5 - AUX1 = D7
CH6 - AUX2 = D12

Pinos D3, D10, D9 e D11 são ligados para cada saída PWM para os motores conforme imagem abaixo e na nossa placa, devemos posicionar o MPU6050 de modo que o eixo Y aponte para o sentido de voo:

Todos os sensores serão ligados em paralelo, utilizando a comunicação I2C do Arduíno nos pinos A4(SDA) e A5 (SCL). Vamos utilizar dois resistores de 4k7 como resistores de pull up nesses pinos, para manter os pinos SDA e SCL em nivel alto quando não houver comunicação I2C e garantir uma boa comunicação.
O sensor da bússola vai ser responsável por manter nosso travado no sentido de rotação "Z". e deverá ser posicionado com a direção "Y" igual do MPU6050.

Com essas informações, vamos desenhar nossa placa. Utilizei o software Ares (Proteus) para desenhar um layout que fosse mais apropriado para esse projeto e que permitisse um futuro upgrade na nossa placa. Deixei alguns pinos reservados para uso futuro. Vocês podem modificar o layout como preferirem. Alimentei os sensores utilizando os pinos 5V e GND do Arduíno. Abaixo está meu layout, uma visualização 3D e uma figura para impressão que utilizaremos para corroer a placa.


Para transferir a impressão para a placa existem vários métodos, não vou entrar em detalhes pois não é o foco. Utilizei o método mais básico, que é desenhar as trilhas na parte de cobre da placa utilizando uma caneta de retroprojetor.
Após desenhar, preparei a solução de percloreto de ferro e coloquei a placa  para corroer. Depois de corroída, a placa deve ser limpa e verificar se não há falhas nas trilhas, caso ocorra, utilizar o ferro de solda e estanho para repara-las.
Começamos a soldar os resistores, depois os pin sockets e pin headers e por ultimo os LEDs.
Vamos encaixar o Arduíno e sensores na placa conforme a imagem abaixo:


Reparem que deixei o magnetômetro fora da placa conectado com fios, isso porque devemos posicioná-lo em um nível acima da placa e dos motores para evitar interferências eletromagnéticas na bússola. Além disso, a bússola requer um posicionamento de rotação especial em alguns casos para correção da declinação magnética. No nosso caso podemos alterar esse valor no código multiwii.
Também é importante colocar um pedaço de esponja cobrindo o barômetro, isso funciona como um filtro físico contra variações na pressão, por ser muito sensível, o simples vento gerado pelas hélices podem influenciar no sensor.

Pronto, agora podemos começar a programar nossa placa. Você deverá ter a IDE do Arduíno instada em seu computador. O software a ser gravado no Arduíno é o Multiwii. Vem com o código fonte e o Software MultiWiiConf, onde fazemos nossos testes e configurações. Utilizei a versão 2.3 nesse projeto, mas por ser um programa de código aberto, sempre fique atendo a novas versões.

Após baixar o código fonte, abra o arquivo MultiWii.h na IDE do Arduíno e procure pela guia config.h:


Esse código pode ser configurado de maneira simples, apenas comentando (//) ou removendo comentário (//) através dos #define.
Obs: Guarde uma cópia do programa antes de começar a fazer as alterações, caso faça alguma alteração incorreta e o programa não funcione mais.

Vou mostrar as configurações básicas para um quadricóptero tipo X, que utiliza ESCs Simonk, motores A2212 1000kv, bateria lipo 3000mah 3S, receptor 6ch :

  1. Remover (//) da linha  #define QUADX;
  2. Remover (//) da linha #define MINTHROTTLE 1064 ( no meu caso para ESC Simonk), para outros ESCs o padrão é 1150, verificar a linha correspondente e remover //;
  3. Remover (//) da linha #define MAXTHROTTLE 1850 (pode ir até 2000);
  4. Remover (//) da linha #define MINCOMMAND  1000;
  5. Remover (//) da linha #define I2C_SPEED 400000L;
  6. Remover (//) da linha #define GY_521 (pode variar conforme o tipo de sensor ou shield de sensores que você está utilizando);
  7. Remover (//) da linha  #define BMP085;
  8. Remover (//) da linha #define HMC5883;
Isso é o necessário para que possamos gravar o código no microcontrolador e começar a testar.
Na IDE, vá em Ferramentas e escolha o tipo de Placa como "Arduíno Nano" e processador "Atmega 328". Agora é só compilar, ver se não há erros, conectar nosso arduino na USB e gravar o código nele.
Vamos abrir o Software MultiWiiConf (recomendo abrir o da pasta: MultiWiiConf\application.windows32\MultiWiiConf.exe).
Selecione a porta de comunicação, clique em "start" e comece a explorar as diversas configurações que esse software permite. Podemos ver se os sensores estão funcionando corretamente, fazer calibrações, configurar modos de voo etc. O vídeo a seguir mostra um teste feito através deste software verificando se os sensores estão na orientação correta.


Visite esse post abaixo onde detalho melhor como configurar os modos de voo utilizando essa placa e sensores:
Como configurar modos de voo multiwii?

******************
VÍDEO DE TESTE*
******************

A placa controladora pode ser configurada também via bluetooth, através dos pinos TX e RX. Lembre-se de configurar o módulo bluetooth para baud rate de 115200 via comandos AT. Para configurar o módulo bluetooth devemos conectar o mesmo no arduino como no diagrama abaixo:



Vamos abrir a IDE do arduino e copiar o código abaixo:

#include <SoftwareSerial.h> 

SoftwareSerial bluetooth(10, 11); // RX, TX

void setup() {
  delay(500); 
  Serial.begin(9600); 
  Serial.println("Digite os comandos AT :"); 
  bluetooth.begin(9600); 

void loop() {
     if (bluetooth.available()) 
     Serial.write(bluetooth.read()); 
     if (Serial.available())
     bluetooth.write(Serial.read());

Compile e grave o código no arduino. Feito isso, abra o monitor serial da IDE para começar a configuração. 
Antes de ligar a alimentação do módulo bluetooth é importante segurar um botão que fica no módulo por uns 2 segundos enquanto liga a alimentação do mesmo. Isso fará com que ele entre em modo de configuração AT. Você pode verificar se ele entrou em modo AT observando o LED  do mesmo que antes piscava rápido agora pisca mais lentamente. Deixe setado por enquanto o baud rate para 9600, both NL & CR e vamos enviar os seguintes comandos via monitor serial: 
  • AT ( Ao digitar AT testamos o modo AT e a resposta deverá ser OK);
  • AT+NAME? (Retorna o nome do dispositivo);
  • AT+PSWD?( Retorna a Senha do dispositivo).
Se quiser trocar a senha e nome do dispositivo:
  • AT+PSWD=4321(seta a senha para 4321;
  • AT+NAME=multiwiidiy (Seta o nome do dispositivo para multiwiidiy).
Se não houver resposta, pode ser que o baud rate esteja diferente, podemos modificar para mais ou para menos em valores tabelados até que tenhamos resposta do módulo. 
Após ter certeza que o modulo está respondendo, enviamos o seguinte comando para modificar o baud rate do módulo para 115200 e assim poder comunicar com o Android:
  • AT+UART=115200,0,0 ( Seta o baud rate para 115200).
Desligamos a alimentação do arduino para que as alterações tenham efeito. Após isso não utilizaremos mais a ligação no pino D4 do arduino.

 Fiz uma placa à parte com resistores e um encaixe para o módulo bluetooth HC05 como na imagem abaixo, postei uma atualização no post com essa placa já embutida na placa controladora.


 Isso nos permite configurar nossa placa em campo, utilizando um Smartphone. Existem diversos softwares para Android como o EZGUI que permite essas configurações, como PID, auxiliares, modos de voo e muito mais.
Lembrando que não podemos gravar na placa via USB se o bluetooth estiver conectado, pois ocorre um conflito de comunicação. Sempre desconecte o bluetooth quando for programar via USB e vice-versa.
Agora sua placa já está pronta para ser montada no seu Quadricóptero. Lembre-se de posicionar a placa no sentido correto de voo e a bússola em um ponto longe dos fios dos motores.
Segue um vídeo de teste dessa placa montada no Quadricóptero, repare que adicionei um GPS na mesma, conectando através dos pinos I2C e utilizando uma navboard como interface:





Ao adicionar o GPS, temos que configurar no programa config.h todos os parâmetros necessários para que o mesmo funcione corretamente. Sugiro começar apenas com os sensores descritos acima e instalar um GPS somente quando tudo estiver calibrado e tivermos mais confiança e experiencia com o programa e seu Quad.

************ ATUALIZAÇÃO PARA INTERFACE BLUETOOTH*************

Segue atualização do Layout da placa controladora para melhor montagem do módulo bluetooth sem precisar de montar resistores, já embuti eles na placa.
O Jumper é opcional para evitar de remover o módulo bluetooth quando utilizar a porta USB. Esse jumper vai interligar os dois resistores da parte de baixo da imagem e não está no arquivo de schematic do Ares.
Também adicionei um pino de monitoramento de bateria.

Link Dropbox para arquivo Ares (Proteus): DIY Board







Assista o Vídeo e se inscreva no meu canal no youtube!
https://youtu.be/4so6ZdPtz4w

Se ainda não tem um Quadricóptero e gostaria de montar um frame passo-a-passo, utilizando materiais DIY, visite esse post, onde mostrarei como montar essa placa no frame e conectar os motores, ESCs e o receptor. Caso queira montar em um Frame comprado, tem esse aqui que comprei e recomendo.

Para um vôo seguro, siga as normas e cadastre seu modelo acima de 250g no site da ANAC.




 Abraço!.











quarta-feira, 24 de fevereiro de 2016

Carro de controle remoto utilizando controle de TV

Vamos criar um programa simples que irá controlar um pequeno veículo através de um controle de TV ou qualquer outro controle IR compatível com o auxilio da biblioteca IR e com a IDE do arduino .

Materiais:

  • Arduino Uno;
  • Ponte H dupla(  L9110, L298n ou de transistores)
  • Controle emissor IR( controle de TV, Rádio , DVD, Etc)
  • Receptor IR;
  • Resistor de 100 ohm para o receptor IR.
  • 2 Motores, motorredutores ou servos de parabólica adaptado;
  • 1 base para montar o conjunto.

O Receptor IR é responsável por receber os pulsos infra vermelhos codificados enviados pelo controle e convertê-los em sinal que possa ser lido e decodificado por um microcontrolador. Antes de fazer as ligações, atentar-se a pinagem do receptor IR. Existem alguns modelos e pinagens diferentes como na imagem abaixo:


Neste exemplo irei utilizar o modelo de pinagem do IS1U60, PIC12043S e SFH505A.
Também existem shields dedicados como este feito por mim mesmo na imagem abaixo:


Ponte H:

A ponte H é um esquema de transistores para controlar o sentido de giro de motores e fazer sua reversão. Para cada motor é necessário uma ponte. Abaixo o esquema de uma ponte H e exemplos de ponte H dupla feita com componentes discretos e um shield de Ponte H:

Controlador Ponte H L9110 - Dois Motores - Arduino Robotica

Vamos utilizar como exemplo o shield L9110 de ponte H dupla. Neste shield temos os pinos: A-1A, A-1B, B-1A E B-1B responsáveis por fazer a reversão e controle dos motores, serão ligados nas saídas digitais do Arduino 6,7,8 e 9 e nos motores conforme o esquema abaixo:


Caso o carro estiver com os movimentos invertidos, basta trocar os fios + com -.
Devemos ter uma certa atenção ao ligar os pinos 6,7,8 e 9 para que funcione semelhante a lógica abaixo:

0000= PARA
1111=NÃO VAMOS UTILIZAR

Ligaremos também o pino de saída do receptor IR no pino 13 do arduino e o resistor de 100ohm no pino de VCC do receptor IR.

Com relação a base ou chassis , existem algumas prontas na internet, no meu caso, utilizei uma placa de fenolite e colei os servos de parabólica adaptados na parte de trás. Neste caso removi o fim de curso do servo para que gire 3690 graus. Na frente coloquei um pequeno rodizio só para apoio.


Para o programa a seguir, precisaremos da biblioteca IRremote .


// Programa : Carro de Controle Controle Remoto IR  
// Autor : Fernando Moreira  
  
#include <IRremote.h>  
int RECV_PIN = 13;  
float armazenavalor;  
int IN1 = 6;  
int IN2 = 7; 
int IN3 = 8;  //PINOS DO ARDUINO UTILIZADOS PARA A PONTE H
int IN4 = 9; 

  IRrecv irrecv(RECV_PIN);  

decode_results results;  
  
void setup()  
{  
  pinMode(IN1, OUTPUT);   
  pinMode(IN2, OUTPUT);  
  pinMode(IN3, OUTPUT);   // //PINOS DEFINIDOS COMO SAÍDAS QUE SERÃO LIGADOS A PONTE H
  pinMode(IN4, OUTPUT);  
  
  Serial.begin(9600);  
  irrecv.enableIRIn(); // Inicializa o receptor IR  
}  
   
void loop()  
{  
  if (irrecv.decode(&results))  
  {  
    Serial.print("Valor lido : ");  
    Serial.println(results.value, HEX);  
    armazenavalor = (results.value);  
    if (armazenavalor == 0x20DF02FD) //Verifica se a tecla AVANÇAR foi acionada 
    {  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN2, LOW); 
      digitalWrite(IN4, LOW);      //AVANÇAR
    }  
    if (armazenavalor == 0x20DF827D) //Verifica se a tecla RÉ foi acionada  
    {  
       digitalWrite(IN1, LOW); 
      digitalWrite(IN3, LOW);      //RÉ
      digitalWrite(IN2, HIGH);
      digitalWrite(IN4, HIGH);
    }  
    if (armazenavalor == 0x20DFE01F) //Verifica se a tecla ESQUERDA foi acionada  
    {  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN3, LOW);
      digitalWrite(IN2, LOW); 
      digitalWrite(IN4, HIGH);      //ESQUERDA
    }  
    if (armazenavalor == 0x20DF609F) //Verifica se a tecla DIREITA foi acionada  
    {  
      digitalWrite(IN1, LOW); 
      digitalWrite(IN3, HIGH);      //DIREITA
      digitalWrite(IN2, HIGH);
      digitalWrite(IN4, LOW);
    }  
    if (armazenavalor == 0x20DF22DD) //Verifica se a tecla PARAR foi acionada  
    {  
       digitalWrite(IN1, LOW); 
      digitalWrite(IN3, LOW);      //PARAR
      digitalWrite(IN2, LOW);
      digitalWrite(IN4, LOW); 
    }  
   irrecv.resume(); //Le o próximo valor  
  }  

}  


Após compilar e gravar o programa no Arduíno, deixaremos conectado via usb para customizar as teclas de acionamento.
Vamos abrir o monitor serial da IDE do arduino para verificar o que está sendo enviado por cada tecla do controle.
Os valores são impressos via serial e exibidos em hexadecimal :



Com esses valores, podemos escolher qualquer tecla que for conveniente, anotar seu valor e substituir na função if no programa ex:

  if (armazenavalor == 0x20DF02FD) //Verifica se a tecla AVANÇAR foi acionada 
    {  
      digitalWrite(IN1, HIGH);
      digitalWrite(IN3, HIGH);
      digitalWrite(IN2, LOW); 
      digitalWrite(IN4, LOW);      //AVANÇAR


Neste caso, a tecla com o valor 0x20DF02FD é responsável por fazer o carro avançar.
 Fiz a seguinte configuração:





Os valores podem ser diferentes de controle para controle. O ideal é ler os valores e substituir no programa conforme necessário.
Esse programa pode ser utilizado para controlar relés, LEDs e qualquer outro dispositivo ligado as portas digitais. Podemos acrescentar mais botões e modificar a lógica conforme a nossa imaginação permitir.