Você está na página 1de 9

Uma automação para transmissão de comandos para um

drone de baixo custo sobre a plataforma MultiWii


André Almeida Santos¹, Eber Chagas Santos², Luis Paulo da Silva Carvalho³,
Vitor Campos Cardoso4
1,4
Graduando do Curso de Engenharia Elétrica – Instituto Federal de Educação Ciência
e Tecnologia (IFBA) – Av. Amazonas, nº 3.150, Bairro Zabelê, 45.075.265 – Vitória da
Conquista, BA – Brasil
2
Graduando do Curso Bacharelado em Sistemas de Informação – Instituto Federal de
Educação Ciência e Tecnologia (IFBA) – Av. Amazonas, nº 3.150, Bairro Zabelê,
45.075.265 – Vitória da Conquista, BA – Brasil
3
Professor do Instituto Federal de Educação Ciência e Tecnologia (IFBA) – Av.
Amazonas, nº 3.150, Bairro Zabelê, 45.075.265 – Vitória da Conquista, BA – Brasil.
Andre.zx10r@gmail.com, eber.santos10@gmail.com,
luispscarvalho@gmail.com, vittor.cmps@hotmail.com
Abstract. The use of drones has garnered attention, provided that such
technology has shown to be useful in a plethora of applications and fields of
expertise. Based on flight automation systems, drones has been used as tool fit
to enrich the realization of several human activities (e.g. acquisition of aerial
imagery of plantations). In this sense, this paper covers the development of a
low-cost flight control system to associated with the MultiWii avionics
platform. The automation comprises radio-frequency devices, USB-based
joypad and arduino.
Resumo. O uso de drones tem ganhado importância e essa tecnologia tem se
mostrado útil em várias aplicações e áreas. Baseado em sistemas de
automação de voo, estes aparelhos tem ganhado espaço por enriquecer a
realização de determinadas atividades (e.g. fotografia aérea de plantações).
Neste cenário, o seguinte trabalho traz o desenvolvimento de um sistema de
controle para drones usando dispositivos de baixo custo associado à
plataforma de controle Multiwii. O sistema pode ser composto por
dispositivos de rádio frequência, um joystick usb e plataforma eletrônica
Arduíno.

1. Introdução
É notável o aumento do interesse pelos Veículos Aéreos Não Tripulados
(VANT’s) nos últimos anos. Devido ao desenvolvimento de tecnologias que
proporcionaram a construção desses veículos e dos vários campos em que eles podem
ser utilizados, os drones, como são popularmente conhecidos, se tornaram objetos de
pesquisa e desenvolvimento. Utilizados inicialmente para fins militares os drones
ganharam notoriedade e já começam a fazer parte do uso civil de forma bastante
relevante. Esta tecnologia conta com a integração de sistemas eletrônicos embarcados
com o objetivo de realizar a estabilização de voos e têm sido cada vez mais empregada
em vários ramos de atividade humana, como, por exemplo, a agricultura, a segurança
pública, a obtenção de filmagens entre outras atividades.
Desenvolvido com base em modelos aéreos tripulados e sendo aperfeiçoados
durante o tempo, há vários modelos de drones que possuem características específicas
para certas atividades. Um modelo bastante utilizado é o drone VTOL (Vertical Take-
Off and Landing) que significa decolagem e aterrissagem vertical. Segundo
GUIMARÃES (2012), os drones “possuem uma alta manobrabilidade quando
comparados às aeronaves de asas fixas, além de possuírem a capacidade de pairar”.
Neste modelo os mais difundidos são os quadricópteros ou quadrirrotores, drones com
quatro motores de propulsão.
Como são controlados remotamente, os drones precisam de um sistema eficaz de
comunicação que possa transmitir informações de forma segura. O objetivo deste
trabalho é desenvolver um drone de baixo custo (Figura 1). Com o sistema de
comunicação o objetivo é o mesmo, e a solução encontrada foi utilizar módulos de
rádio-frequência para a transmissão compactada dos dados. Através de uma plataforma
de prototipagem eletrônica, é possível fazer o gerenciamento dos módulos transmissores
e receptores de rádio-frequência de modo a implementar uma configuração de controles
de deslocamento no ar sobre uma plataforma de automação de voo (mais detalhes na
Seção 2.1).

Figura 1: Drone de baixo custo


Este artigo está organizado da seguinte forma: a Seção 2 descreve as tecnologias
utilizadas para a criação do emissor de comandos e o protocolo de comunicação. Os
exemplos de aplicação do controle são descritos na Seção 3. Conclusões e trabalhos
futuros estão contidos na Seção 4.

2. Tecnologias e protocolo para controle remoto de um drone


Esta seção traz mais informações sobre as tecnologias que foram usadas para o
controle do drone, assim como o processo de desenvolvimento do protocolo de
comunicação.
2.1. MultiWii
O MultiWii1 é um software escrito para estabilizar e controlar diversas
aeronaves, a maioria do tipo ‘multirrotor’. Trata-se de um projeto de código aberto
compatível com a IDE do Arduino e possui também uma GUI (Graphical User
Interface) que é um aplicativo baseado em Java. Funciona em qualquer sistema
operacional permitindo ao usuário o ajuste de configurações no multirrotor enquanto o
Arduino está conectado com o computador via USB. Mais informações sobre a
utilização e a GUI do Multiwii são encontradas na seção 3 deste artigo.

2.2. Arduino
Arduino2 é uma ferramenta open source que vem sendo utilizada em diferentes
projetos do meio acadêmico, caracterizada por ser uma placa microcontroladora baseada
no ATMega 328 da família AVR.
As placas Arduino utilizadas fazem a leitura de comandos a serem transmitidos
através do emissor de rádio frequência e a leitura dos dados captados pelo receptor para
serem transmitidos ao MultiWii. Com o emissor foi utilizado o Arduino Uno para
gerenciar a transmissão de informações, já o receptor é gerenciado por um Arduino
Mega. As escolhas dessas placas se devem ao fato do custo benefício, pois são placas
capazes de realizar as operações esperadas para o controle do drone e são encontradas
no mercado por um preço acessível.

2.3. Módulos de radiofrequência


O motivo para a utilização desses módulos está em desenvolver um controle em
terra que envie sinais através da comunicação sem fio até um microcontrolador
embarcado no drone, a fim de que esse sistema interprete as informações recebidas e
realize as configurações de voo.
Para a transmissão de dados foi utilizado o módulo TX modelo TXA1-433-F11
(Figura 2). No mercado existem modelos com as frequências de 315 e 433,92 MHz, a
frequência escolhida para o projeto foi de 433,92 MHz, pois quanto maior a frequência
menor é a antena.

Figura 2: Transmissor (Fonte Própria)


A recepção de dados é feita por uma antena com a mesma dimensão da que se
encontra no transmissor. Trata-se de um módulo Rx modelo RXA27L-433MHz que
pode ser observado na Figura 3. Os links dos datasheets dos módulos citados
encontram-se na seção Referências.

1
Site do Multiwii: http://www.multiwii.com/
2
Site do arduino: http://arduino.cc/
Figura 3: Receptor (Fonte Própria)

2.4. Joystick USB


Para a captação dos comandos e movimentos do drone optou-se por um joystick
USB de computador que, utilizado de forma adequada, pode substituir o controle de
rádio já consolidado em aeromodelismo. Para o uso deste controle foi desenvolvido um
código em C++ que interage com o joystick e capta os botões ou analógicos
pressionados. A Figura 4 exemplifica o esquema da disposição física do controle e suas
funcionalidades.

Figura 4: Esquema físico de controle para o drone


Conforme aponta PAULA (2012), por possuir apenas quatro hélices, um drone
tem a capacidade de executar quatro movimentos básicos, sendo referentes à atitude
(arfagem, guinada e rolagem) e altitude. Nesse sentido, tal qual representado na Figura
4, as setas amarelas dizem respeito aos movimentos de Pitch (arfagem), as setas azuis
aos movimentos de Roll (rolagem), as setas verdes aos movimentos de Yaw (guinada) e
as setas vermelhas aos movimentos de Throttle (altitude); este último movimento foi
escolhido para ser acionado juntamente com o botão L1. Utilizamos uma biblioteca
C++, joystick.h3, que faz a leitura do joystick USB e adaptamos funções de acordo às
necessidades dos movimentos citados acima. O código capta o que está sendo
pressionado e envia um determinado valor, que corresponde ao movimento ou
comando, para a porta serial do computador. O Quadro 1 exemplifica uma parte deste
código, mostrando como é feita a captação de um dos botões do joystick. A variável ‘e’
representa um dos botões do controle, nesse caso o botão chamado L1. A função
‘event.value’ é usada para reconhecer o pressionamento de um botão.

if((e ==4)&&(event.value)){
L1 =true;
}elseif((e ==4)&&(!event.value)){

3
Biblioteca joystick.h disponível em: https://github.com/drewnoakes/joystick/blob/master/joystick.hh
L1 =false;

}
Quadro 1: Parte de código que capta o pressionamento de um botão

2.5. Protocolo de Comunicação


O objetivo inicial da comunicação do drone, utilizando rádio frequência, foi ter
um sistema capaz de enviar os comandos necessários de forma segura e em poucos
intervalos de tempo, pois o drone é um objeto controlado em tempo real no qual
qualquer atraso na chegada de informação pode ter sérias consequências como perda de
controle, podendo ocasionar colisões. Com o sistema de rádio frequência, se cada
comando de movimento for enviado separadamente o atraso pode acarretar neste tipo de
consequência. Para resolver este problema foi inserido o conceito de deslocamento de
bits, uma técnica de manipulação que, segundo DEITEL (2006), trabalha no nível dos
‘bits e bytes’ sendo possível a economia de memória utilizando campos de bits. Com o
deslocamento, os bits de um operando podem ser deslocados, tanto para a esquerda
quanto para a direita, por um valor especificado de posições. DEITEL (2006) deixa
claro que em um deslocamento para a esquerda: “Os bits tornados vagos à direita são
substituídos por 0s; bits deslocados para fora à esquerda são perdidos.”, o mesmo ocorre
para um deslocamento à direita, porém ao contrário. No protocolo de comunicação uma
variável foi utilizada para representar todo o conjunto de movimentos do drone e cada
bit desta variável faz referência a um deslocamento específico. Assim, é possível o
agrupamento de várias informações de voo para um único envio. A Figura 5 apresenta
um esquema deste protocolo:

Figura 5: Esquema de protocolo de envio de dados do drone


Este processo reduz o tempo de envio de dados e possibilita o envio de vários
comandos de movimento através do envio de um único pulso de rádio frequência.
Outras informações como instruções para ligar e desligar o drone podem ser embutidas
em um mesmo pulso. O Quadro 2 traz um exemplo da utilização do conceito de
deslocamento de bit. A variável ‘e’ e a função ‘event.value’ são usados para a captação
de comandos associados às hastes analógicas do controle. A variável cmd_UP
representa os comandos de movimento, que será alterada se o analógico estiver
pressionado ou não. O deslocamento de bits ocorre na segunda linha de código, onde o
valor 1 será deslocado para uma posição definida do movimento, neste caso o PITCH.

if((e==0)&&(event.value)){
cmd_UP = cmd_UP |(1<< PITCH);
cout<<cmd_UP<<endl;
}elseif((e==0)&&(!event.value)){
cmd_UP = cmd_UP & NO_PITCH;
cout<<cmd_UP<<endl;
}
Quadro 2: Exemplo de utilização de deslocamento de bit
O receptor de rádio-frequência, instalado no drone, é responsável pelo
recebimento de dados para realização de movimentos. O dado recebido e lido pelo
Arduino é uma variável codificada. A decodificação deste dado pode ser feita usando
um mascaramento de bits que compara as posições da variável e testa que comando será
realizado. Um esquema para este processo pode ser visualizado na Figura 6:

Figura 6: Esquema de protocolo de recebimento de dados do drone

3. Exemplo de utilização de controle para a plataforma MultiWii


Na Figura 7 é possível ver a GUI do Multiwii com algumas de suas principais
características destacadas: (1) Barras de movimentos referentes aos principais
movimentos de um drone (THROTTLE, ROLL, PITCH, YAW); (2) Barras referentes
ao nível de potência de cada motor; (3) Gráficos com dados da leitura dos sensores
utilizados no multirrotor (acelerômetro, barômetro, giroscópio); (4) Visualização de
informações da bússola e angulação do drone; (5) Painel de controle para calibração de
parâmetros e configurações.

Figura 7: Visualização completa da GUI do Multiwii.


Uma vez que são acionados os comandos no controle, os mesmos sofrem
alterações nas barras referentes aos parâmetros de movimentos na plataforma MultiWii
(Figura 7). Os limites definidos pela ferramenta variam entre 1000 e 2000, servindo
como base de equilíbrio do drone. Por questões de segurança, relacionados à potência
dos motores, os limites foram alterados, variando então de 1000 até 1900. Devido a esse
limite, utilizamos duas variáveis para representar os movimentos, cmd_UP para os
valores acima de 1500 e cmd_DOWN para os valores abaixo de 1500. Estas variáveis
são unidas no processo de codificação e enviadas para a porta serial do computador. As
variáveis cmd_UP e cmd_DOWN são do tipo inteiro, e na hora da codificação são
agrupadas em uma variável do tipo long ocupando, respectivamente, a parte mais alta e
a parte mais baixa desta variável. Isso torna possível o uso de posições não utilizadas
desta variável para especificar outros comandos, como foi exemplificado na seção
anterior. Quando a informação chega ao Arduino Mega, que está gerenciando o
Multiwii, é necessário outro deslocamento de bits, que separa os comandos cmd_UP e
cmd_DOWN, executando o processo de decodificação. O Quadro 3 apresenta uma
pequena parte do código que trata a informação recebida pelo drone e a decodifica em
duas variáveis representativas para os movimentos UP e DOWN.

//descompactaçao de pulso em dois comandos: UP e DOWN


parametro1 = (pulso >> (sizeof(long)/2 * 8));
parametro2 = ((pulso << (sizeof(long)/2 * 8)) >> (sizeof(long)/2 * 8));
//passagem dos parametros para a funçao que comanda o drone
controleDrone(parametro1, parametro2);
Quadro 3: Decodificação da informação recebida.
As variáveis criadas para padronizar os comandos suportados pelo Multiwii
passam por testes lógicos com o dado captado pelo módulo receptor de radiofrequência.
Por exemplo, quando se aciona o THROTTLE e o PITCH, há uma comparação com as
máscaras de bits B00001000 e B00000010, respectivamente, para identificar se há
alguma alteração nos valores de movimento para cada posição. Estes testes possibilitam
o reconhecimento de comandos que fazem o controle efetivo do drone. O Quadro 4
mostra como esse processo é executado no código do Multiwii. As linhas 3 e 8 mostram
a parte do código que executam o controle da potência dos motores do drone.

if(parametro1 & BIT_THROTTLE){


if(rcData[THROTTLE]<1600){
rcData[THROTTLE] = rcData[THROTTLE] + 20;
}
}
if(parametro2 & BIT_PITCH){
if(rcData[PITCH] > 1000){
rcData[PITCH] = rcData[PITCH] - 20;
}
}
Quadro 4: Passagem de valores para execução de movimentos no Multiwii.
Como mostrado na Figura 7, o Multiwii trabalha com uma variação de valores.
A taxa de variação dos movimentos foi especificada em 20, tanto para incremento
quanto para decremento (Quadro 4). Essa variação permite ao drone locomover-se em
sentidos contrários para determinados movimentos, por exemplo, acionando-se o
THROTTLE para um movimento de subida ou descida do drone. A Figura 8 traz dois
exemplos de como é mostrado esta variação quando o drone está em atividade.

Figura 8: Visualizações da resposta do Multiwii aos comandos de movimento.

Na Figura 9 são apresentados todos os componentes utilizados para a montagem


deste processo de comunicação. Nela é possível observar o transmissor montado em
uma protoboard, conectado ao Arduino; o joystick usado para o controle; o drone com o
Arduino no centro de seu frame (armação), onde também se encontra o receptor e os
sensores usados para este projeto.

Figura 9: Dispositivos usados na construção do sistema de comunicação do drone.

4. Conclusões e trabalhos futuros


É pertinente pontuar o grande aprendizado na área dos VANT´s, sobretudo na
área da comunicação dos drones. A implementação desenvolvida é capaz de atender as
necessidades de transmissão e recepção de dados de forma satisfatória e também ser
reutilizada em outros projetos que precisam agrupar informações e enviá-las de uma só
vez.
A aplicabilidade e baixo custo das tecnologias empregadas foram suficientes
para atender toda a demanda surgida no desenvolvimento do drone, assim como seu
desempenho.
Vale ressaltar a necessidade de calibração das variáveis associadas ao equilibro
do drone, diretamente relacionadas aos motores, pelos parâmetros PID (Proporcional,
Integral e Derivativo). Esta pode ser feita por comparativos de voo de outros modelos
ou mesmo por testes empíricos. Uma vez que as mesmas estejam bem definidas,
consequentemente haverá melhor estabilidade do drone. Os testes de voo serão
realizados após esta etapa, ainda em desenvolvimento, por questões de segurança.

Como aprimoramento do projeto pretende-se ainda integrar ao frame do drone


uma câmera de baixo custo, provavelmente de celular usado, como também sistemas de
telemetria, para que possam ser realizadas medições e aferição de valores referentes ao
voo. Com esses valores poderemos controlar mais adequadamente a posição do drone
no ar, além de possibilitar ao mesmo a execução de ações de modo automático.

Agradecimentos
À FAPESB, pela bolsa de iniciação científica que possibilitou a realização desse
trabalho.

Referências
GUIMARÃES, J. P. F. Controle de Atitude e Altitude Para Um Veículo Aéreo do Tipo
Quadrirrotor. Dissertação de Mestrado. Universidade Federal do Rio Grande do
Norte. Dezembro 2012.
PAULA, J. C. DESENVOLVIMENTO DE UM VANT DO TIPO QUADRIRROTOR
PARA OBTENÇÃO DE IMAGENS AÉREAS EM ALTA DEFINIÇÃO.
Dissertação de Mestrado. Universidade Federal do Paraná. 2012.
DEITEL, H. M; DEITEL, P. J. C++ COMO PROGRAMAR. 5ª edição. São Paulo,
Pearson Prentice Hall, 2006. 1163p.
TX MODULE MODELNO: TXA1-434-F11. Disponível em: <
http://www.webtronico.com/documentos/transmissor_rf_link.pdf> Acesso em:
13/02/2015.
RX MODULE MODELNO: RXA27L-xxxMHz. Disponível em: <
http://www.webtronico.com/documentos/receptor_rf_link.pdf> Acesso em:
13/02/2015.
MultiWii. Disponível em:
<http://www.multiwii.com/> Acesso em Outubro de 2014.
Arduino. Disponível em:
<http://arduino.cc/> Acesso em Outubro de 2014.

Você também pode gostar