Braço Articulado Controlado Remotamente Via...
Transcript of Braço Articulado Controlado Remotamente Via...
UNIVERSIDADE DO VALE DO PARAÍBA
FACULDADE DE ENGENHARIA, ARQUITERURA E URBANISMO
Engenharia Elétrica/Eletrônica
Braço Articulado Controlado
Remotamente Via Bluetooth
Guilherme José Lopes
Valter de Lima Oliveira
Relatório do Trabalho de Conclusão de Curso apresentado
à Banca Avaliadora da Faculdade de Engenharia,
Arquitetura e Urbanismo da Universidade do Vale do
Paraíba, como parte dos requisitos para obtenção do Título
de Engenheiro Elétrico / Eletrônico
São José dos Campos – SP
06 / 2013
2
Braço Articulado Controlado
Remotamente via Bluetooth
Guilherme José Lopes
Valter de Lima Oliveira
Banca Avaliadora
Presidente: José Ricardo Abalde Guede
Orientador: Marcio Tadeu de Assis Honorato Muella
Convidado: Alessandro Correa Mendes
___________________________________
Marcio Tadeu de Assis Honorato Muella
Orientador Acadêmico
___________________________________
José Ricardo Abalde Guede
Coordenador da Disciplina de TCC
Data: 04/07/2013
3
Agradecimentos
Seria impossível a conclusão deste
trabalho e, por consequência do curso de
Engenharia sem o apoio de várias pessoas ao
longo destes anos.
Agradecemos o apoio de nossas esposas,
filhos, pais e todos de nossa família que nos
auxiliaram neste caminho.
A todos os professores que tivemos o
prazer do convívio, especialmente ao Prof.
Marcio Tadeu de Assis Honorato Muella pela
orientação, nosso sincero muito obrigado.
4
Dedicatória
Dedicamos este trabalho à nossa família
pelo apoio e compreensão em todos os
momentos, especialmente nas situações mais
difíceis vividas ao longo dos últimos cinco
anos.
5
RESUMO
O projeto desenvolvido e descrito a seguir como Trabalho de Conclusão do Curso teve
como objetivos principais o desenvolvimento de habilidades nas áreas de sistemas robóticos,
programação e transmissão de dados, a criação de uma base de conhecimento para o
desenvolvimento futuro de aplicações para organizações que necessitem de sistemas robóticos
controlados remotamente e o conhecimento e a familiarização com a plataforma de
desenvolvimento Arduino.
O sistema desenvolvido foi um braço mecânico articulado, com os movimentos
executados por servomotores e controlado remotamente através de comandos seriais enviados
por interface Bluetooth. Este projeto de TCC poderá futuramente servir de base para o
desenvolvimento de um novo negócio a partir dos conhecimentos agregados.
Os resultados esperados foram alcançados com a concepção de um protótipo
completamente funcional cobrindo todos os objetivos inicialmente propostos.
Adicionalmente, foram agregados novos conhecimentos em Linguagem C, protocolos de
comunicação serial via Bluetooth, sistemas robóticos, desenvolvimento de protótipos e outras
áreas de interesse complementares ao curso de Engenharia Elétrica.
Como oportunidades de desenvolvimento e melhorias futuras no trabalho desenvolvido,
está sendo analisada a substituição dos servomotores utilizados nos movimentos do braço
mecânico por motores de passo e o desenvolvimento de um novo programa que venha a
explorar as possibilidades abertas pelo uso destes motores, criando um sistema com
movimentos mais precisos e com maiores possibilidades de controle. Adicionalmente, o
trabalho gerou uma ideia, que está sendo desenvolvida, de formatação de um novo negócio
visando o fornecimento de kits de ensino de robótica baseados nos conhecimentos adquiridos
durante o desenvolvimento.
Palavras-Chave: Braço Mecânico, Robótica, Servomotor, Arduino, Bluetooth.
6
ÍNDICE GERAL
1 - Introdução 10
2 - Materiais Utilizados 11
2.1 - A Plataforma Arduino 11
2.2 - Servomotores 12
2.3 - Bluetooth 15
2.3.1 - Histórico 16
2.3.2 - Tecnologia Bluetooth: Frequência e Comunicação 16
3 - Metodologia Empregada 18
3.1 - Detalhamento do Hardware: Arduino Uno 19
3.1.1 - Alimentação 21
3.1.2 - Memória e I/O 21
3.1.3 - Comunicação 22
3.1.4 - Programação 23
3.1.5 - Proteção Contra Sobrecorrente na Porta USB 23
3.2 - Módulo Bluetooth 23
3.3 - Servomotores 25
3.3.1 - Servo MG 995 25
3.3.2 - Servo TG9e 26
3.4 - Fonte de Alimentação 27
4 - Montagem Final 28
4.1 - Diagrama em Blocos 28
4.2 - Mecânica e Materiais 29
4.2.1 - Fabricação 41
4.2.2 - Evolução do Projeto 41
4.3 - Software 49
4.4 - Custo do Projeto 50
5 - Resultados e Discussões 50
6 - Conclusões 52
7 - Referências Bibliográficas 54
8 - Anexos do Manuscrito: Fluxograma e Software Comentado 55
9 - Anexos do Projeto: Desenhos de Montagem 61
7
INDICE DE FIGURAS
Figura 1 - Vista em corte de um servomotor genérico 13
Figura 2 - Detalhe de um servomotor genérico 13
Figura 3 - Partes internas de um servomotor desmontado 13
Figura 4 - Pulsos de controle de um servomotor 14
Figura 5 - Padrões de conectorização de servomotores 15
Figura 6 - Diagrama básico do sistema proposto 18
Figura 7 - Placa Arduino Uno e seus componentes principais 19
Figura 8 - Dimensões da placa Arduino Uno 20
Figura 9 - Diagrama esquemático da placa Arduino Uno 20
Figura 10 - Módulo Bluetooth EGBT-046S 23
Figura 11 - Esquema de conexão do módulo Bluetooth a um microcontrolador 24
Figura 12 - Imagem de catálogo do servomotor MG 995 25
Figura 13 - Detalhe das engrenagens do servomotor MG 995 26
Figura 14 - Imagem de catálogo do servomotor TG9e 26
Figura 15 - Fonte externa utilizada no projeto 27
Figura 16 - Detalhe do plugue de saída DC da fonte 28
Figura 17 - Diagrama em blocos do sistema desenvolvido 28
Figura 18 - Desenho da montagem final do braço articulado: vista lateral direita 29
Figura 19 - Desenho da montagem final do braço articulado: vista lateral esquerda 30
Figura 20 - Robô modelo ABB 1400 30
Figura 21 - Base do braço articulado 31
Figura 22 - Giro da mesa do braço articulado 32
Figura 23 - Suportes laterais do braço articulado 32
Figura 24 - Tensor 1: interligação do servomotor com o tensor 2 33
Figura 25 - Tensor 2: interligação tensor 2 com o corpo do braço 33
Figura 26 - Interligação dos suportes laterais e do Tensor 02 com a base de giro 34
Figura 27 - Base de adaptação do giro da garra 34
Figura 28 - Interligação do servomotor de giro da garra com o corpo da “munheca” 35
Figura 29 - Corpo da “munheca” 35
Figura 30 - Fixação lateral do corpo da “munheca” ao corpo da garra. 36
Figura 31 - Corpo da garra. 36
Figura 32 - Articulação da garra. 37
8
Figura 33 - Extremidade da garra. 37
Figura 34 - Vista lateral direita do braço articulado 38
Figura 35 - Vista lateral esquerda do braço articulado 38
Figura 36 - Vista superior do braço articulado 39
Figura 37 - Vista traseira do braço articulado 39
Figura 38 - Vista frontal do braço articulado 40
Figura 39 - Visão geral da montagem final do braço articulado 40
Figura 40 - Início da montagem do da base do braço articulado 41
Figura 41 - Giro da base e acoplamento dos servomotores de acionamento do braço 42
Figura 42 - Montagem da base com os cabos de acionamento dos servomotores 42
Figura 43 - Primeiro modelo de garra utilizado no protótipo e abandonado devido à
dificuldade de fixação dos servomotores. 43
Figura 44 - Dimensões relativas da garra em relação à base do braço articulado. 43
Figura 45 - Testes de desenvolvimento do Arduino e dos servomotores. 44
Figura 46 - Testes de desenvolvimento do Arduino e dos servomotores. 44
Figura 47 - Testes de montagem final do protótipo, da nova versão do braço superior e das
garras com posicionamento de fixação dos servomotores de giro do braço, acionamento da
munheca e das garras. 45
Figura 48 - Versão final do protótipo com a finalização da fixação dos servomotores e do
chicote com o cabeamento de acionamento e controle. 45
Figura 49 - Vista lateral do braço articulado com detalhe do servomotor de giro do braço
superior. 46
Figura 50 - Vista superior do braço articulado com detalhe das garras. 46
Figura 51 - Vista inferior da base do braço articulado. 47
Figura 52 - Detalhe inferior da base do braço articulado com a posição do servomotor
de giro da mesa com a acomodação do Arduino e do cabeamento. 47
Figura 53 - Vista frontal do braço articulado. 48
Figura 54 - Versão final da montagem mecânica do braço articulado com todos os
componentes. 48
Figura 55 - Fluxograma do aplicativo de controle do braço articulado. 49
9
INDICE DE TABELAS
Tabela 6 - Características Elétricas da Placa Arduino Uno 19
Tabela 7 - Características Elétricas do módulo EBGT-046S 24
Tabela 8 - Custos do Projeto 50
10
1. INTRODUÇÃO
Automação de processos é certamente uma das áreas mais promissoras e de maior
potencial para novas oportunidades nos próximos anos. Os grandes projetos de infraestrutura
em execução no país nas áreas de energia, transporte, indústria e construção civil vão
demandar conhecimentos em projetos de sistemas robóticos, desenvolvimento de software e
aquisição/transmissão de dados de forma automatizada e remota.
Com esse projeto, objetiva-se desenvolver habilidades nas áreas de sistemas robóticos,
programação e transmissão de dados, desenvolver conhecimentos da plataforma Arduino e
criar sistema que sirva de base para o desenvolvimento futuro de aplicações para empresas
que necessitem de sistemas robóticos controlados remotamente.
Outro aspecto importante no desenvolvimento deste projeto foi a utilização da
plataforma de “hardware/software de código aberto” Arduino. Esta plataforma possibilita o
desenvolvimento de aplicações de baixo custo em diversas áreas, podendo, por exemplo, ser
utilizada para a implementação de kits que possibilitem a iniciação no ensino de robótica e
programação.
Dentro deste contexto, o projeto foi desenvolvido com um sistema composto de um
braço mecânico articulado utilizando servomotores, conectado a uma placa Arduino UNO
controlada remotamente via Bluetooth. O projeto se justifica por propor uma solução de baixo
custo, flexível e prática para o desenvolvimento de sistemas robóticos. O uso da plataforma
Arduino tem como maior vantagem a facilidade de sua utilização. Uma característica
interessante e favorável ao uso do Arduino é similaridade de sua linguagem de programação
com a Linguagem C, o que facilita a criação de códigos e serve oportunidade de
desenvolvimento de técnicas de programação.
No relatório mostrado a seguir serão abordados os materiais utilizados no
desenvolvimento do projeto com uma introdução teórica sobre a plataforma Arduino,
servomotores e seu funcionamento básico e protocolo Bluetooth. Na sequência, será detalhada
a metodologia empregada no desenvolvimento com detalhamentos da placa Arduino Uno
utilizada, do módulo bluetooth, dos servomotores e da fonte de alimentação. A montagem
final do protótipo será detalhada mostrando o diagrama em blocos do sistema, a concepção
mecânica e os materiais utilizados e o software de controle desenvolvido. Finalizando o
trabalho, serão apresentados e comentados os resultados obtidos destacando pontos positivos
observados ao longo do desenvolvimento bem como pontos negativos e oportunidades de
melhorias identificadas.
11
2. MATERIAIS UTILIZADOS
A ideia inicial do projeto era desenvolver um sistema baseado na plataforma Arduino
permitindo o controle remoto de um braço articulado com movimentos providos por
servomotores. Nos itens a seguir, serão apresentadas as informações básicas iniciais sobre
cada um destes três componentes a saber: plataforma Arduino, servomotores e protocolo
Bluetooth.
2.1 A PLATAFORMA ARDUINO
O projeto foi desenvolvido utilizando a plataforma Arduino. O Arduino faz parte do
conceito de hardware e software livre e está aberto para uso e contribuição de toda sociedade.
O conceito Arduino surgiu na Itália em 2005 com o objetivo de criar um dispositivo para
controlar projetos e protótipos construídos de uma forma menos dispendiosa do que outros
sistemas disponíveis no mercado. [1]
O Arduino é uma plataforma de computação física (são sistemas digitais ligados a
sensores e atuadores, que permitem construir sistemas que percebam a realidade e respondem
com ações físicas), baseada em uma simples placa de Entrada/Saída microcontrolada e
desenvolvida sobre uma biblioteca que simplifica a escrita da programação em C/C++. O
Arduino pode ser usado para desenvolver artefatos interativos autônomos ou conectados a um
computador ou a outro sistema em que possa interagir. [1]
Um microcontrolador (também denominado MCU) é um computador em um chip, que
contém processador, memória e periféricos de entrada/saída. É um microprocessador que
pode ser programado para funções específicas, em contraste com outros microprocessadores
de propósito gerais (como os utilizados nos PCs). Eles são embarcados no interior de algum
outro dispositivo, no caso desse projeto o Arduino, para que possam controlar suas funções ou
ações através da interação com o ambiente externo. [1]
O Arduino é um kit de desenvolvimento capaz de interpretar variáveis no ambiente e
transformá-las em sinal elétrico correspondente, através de sensores ligados aos seus
terminais de entrada, e atuar no controle ou acionamento de algum outro elemento
eletroeletrônico conectado ao terminal de saída. Ou seja, é uma ferramenta de controle de
entrada e saída de dados, que pode ser acionada por um sensor (por exemplo, um resistor
dependente da luz - LDR) e que, logo após passar por uma etapa de processamento, o
microcontrolador, poderá acionar um atuador (um motor, por exemplo). [1]
12
O Arduino é baseado em um microcontrolador (Atmega), e dessa forma é logicamente
programável, ou seja, é possível a criação de programas, utilizando uma linguagem própria
baseada em C/C++, que, quando implementadas fazem com que o hardware execute certas
ações. Dessa forma, estamos configurando a etapa de processamento. [1]
O grande diferencial desta ferramenta é que ela é desenvolvida e aperfeiçoada por uma
comunidade que divulga os seus projetos e seus códigos de aplicação, pois sua concepção é
open-source, ou seja, qualquer pessoa com conhecimento de programação pode modificá-lo e
ampliá-lo de acordo com a necessidade, visando sempre a melhoria dos produtos que possam
ser criados aplicando o Arduino. [1]
Ele foi projetado com a finalidade de ser de fácil entendimento, programação e
aplicação, além de ser multiplataforma, ou seja, podemos configurá-lo em ambiente
Windows, GNU/Linux e Mac OS. Assim sendo, pode ser perfeitamente utilizado como
ferramenta educacional sem se preocupar que o usuário tenha um conhecimento específico de
eletrônica. Pelo fato de ter o seu esquema e software de programação “open-source”, acabou
chamando a atenção dos técnicos e engenheiros de eletrônica, que começaram a aperfeiçoá-la
e a criar aplicações mais complexas. [1]
O projeto foi desenvolvido utilizando uma placa Arduino UNO. Especificações e
maiores detalhes serão fornecidos nos próximos tópicos.
2.2 SERVOMOTORES
O servomotor é um dispositivo eletromecânico que, a partir de um sinal elétrico em sua
entrada, pode ter seu eixo posicionado em uma determinada posição angular. Por serem
pequenos e compactos, além de permitir um posicionamento relativamente preciso de seu
eixo, os servomotores são amplamente utilizados em robótica e modelismo. [2]
Um servomotor possui um sistema eletrônico de controle e um potenciômetro interno
que está conectado ao eixo de saída. Este potenciômetro possibilita ao circuito de controle
monitorar o ângulo do eixo do servomotor. Se o eixo estiver no ângulo correto o motor para
de girar. Se o circuito detecta que o ângulo está incorreto, o motor é ativado até que o ângulo
desejado seja obtido. Nas engrenagens de um servomotor existe um limitador que atua no
ângulo de giro do eixo, fazendo com que este varie de 0 a 180º. Este limitador pode ser
removido e o servomotor pode ser utilizado como um motor com caixa de redução com eixo
girante de 360º. Nas figuras 1 e 2 são mostrados detalhes internos de um servomotor genérico.
[2]
13
Figura 1 - Vista em corte de um servomotor genérico [2]
Figura 2 - Detalhe de um servomotor genérico [2]
Na figura 3 é mostrado um servomotor desmontado com suas partes internas explicadas
em detalhes na sequência.
Figura 3 - Partes internas de um servomotor desmontado [2]
14
a) Circuito de Controle: Responsável por receber os sinais de energia do sistema de
controle, monitorar a posição do potenciômetro e posicionar o motor conforme o sinal
recebido do sistema de controle e o potenciômetro. [2]
b) Potenciômetro: Ligado ao eixo de saída do servo, tem a função de monitorar a
posição do mesmo. [14]
c) Motor: Movimenta as engrenagens e o eixo principal do servo. [2]
d) Engrenagens: Reduzem a rotação do motor, transferem mais força ao eixo principal
e movimentam o potenciômetro juntamente com o eixo. [2]
O ângulo do eixo é determinado a partir da duração da largura de um pulso PWM
enviado à entrada de sinal de controle do servomotor. Este sinal pode ser 0 ou 5 volts. O
circuito de controle do servomotor monitora este sinal em intervalos de 20 ms. Caso seja
percebida alguma variação dentro deste intervalo, durante um período entre 1 ms e 2 ms o
servo altera a posição do seu eixo para coincidir com o sinal recebido. Na figura 4 é detalhada
a correlação entre os pulsos de controle e a posição relativa do eixo do servomotor. [2]
Figura 4 - Pulsos de controle de um servomotor [2]
Uma vez que o servomotor receba um sinal de, por exemplo, 1,5 ms, é verificado se o
potenciômetro encontra-se na posição correspondente e caso positivo nenhuma alteração de
posição é feita. Caso o potenciômetro não estiver na posição correspondente ao sinal recebido,
o circuito de controle aciona o motor até o potenciômetro atingir a posição correta. A direção
15
de rotação do motor do servo vai depender também da posição relativa do potenciômetro e o
motor irá girar na direção que mais rápido levar o potenciômetro até a posição correta. [2]
O padrão de conectorização dos servomotores é mostrado na figura 5:
Figura 5 - Padrões de conectorização de servomotores [2]
2.3 BLUETOOTH
O Bluetooth é uma tecnologia que permite uma comunicação simples, rápida, segura e
barata entre computadores, “smartphones”, telefones celulares, mouses, teclados, fones de
ouvido, impressoras e outros dispositivos, utilizando ondas de rádio no lugar de cabos. Assim,
é possível fazer com que dois ou mais dispositivos comecem a trocar informações com uma
simples aproximação entre eles. [4]
16
2.3.1 HISTÓRICO
A história do Bluetooth começa em meados de 1994. Na época, a empresa Ericsson
começou a estudar a viabilidade de desenvolver uma tecnologia que permitisse a comunicação
entre telefones celulares e acessórios utilizando sinais de rádio de baixo custo, ao invés dos
tradicionais cabos. Em 1997, o projeto começou a despertar o interesse de outras empresas
que, logo, passaram a fornecer apoio. Por conta disso, em 1998 foi criado o consórcio
Bluetooth SIG (Special Interest Group), formado pelas empresas Ericsson, Intel, IBM,
Toshiba e Nokia. Note que esse grupo é composto por dois "gigantes" das telecomunicações
(Ericsson e Nokia), dois nomes de peso na fabricação de PCs (IBM e Toshiba) e a líder no
desenvolvimento de chips e processadores (Intel). [4]
A denominação Bluetooth é uma homenagem a um rei dinamarquês chamado Harald
Blåtand, mais conhecido como Harald Bluetooth (Haroldo Dente-Azul). Um de seus grandes
feitos foi a unificação da Dinamarca, e é em alusão a esse fato que o nome Bluetooth foi
escolhido, como que para dizer que a tecnologia proporciona a unificação de variados
dispositivos. [4]
2.3.2 A TECNOLOGIA BLUETOOTH: FREQÜÊNCIA E COMUNICAÇÃO
O Bluetooth é um padrão global de comunicação sem fio e de baixo consumo de energia
que permite a transmissão de dados entre dispositivos compatíveis com a tecnologia. Para
isso, uma combinação de hardware e software é utilizada para permitir que essa comunicação
ocorra entre os mais diferentes tipos de aparelhos. A transmissão de dados é feita através de
radiofrequência, permitindo que um dispositivo detecte o outro independente de suas
posições, desde que estejam dentro do limite de proximidade. [4]
Para que seja possível atender aos mais variados tipos de dispositivos, o alcance
máximo do Bluetooth foi dividido em três classes:
Classe 1: potência máxima de 100 mW, alcance de até 100 metros;
Classe 2: potência máxima de 2,5 mW, alcance de até 10 metros;
Classe 3: potência máxima de 1 mW, alcance de até 1 metro.
Isso significa que um aparelho com Bluetooth classe 3 só conseguirá se comunicar com
outro se a distância entre ambos for inferior a 1 metro, por exemplo. Neste caso, a distância
pode parecer inutilizável, mas é suficiente para conectar um fone de ouvido a um telefone
celular pendurado na cintura de uma pessoa. É importante frisar, no entanto, que dispositivos
17
de classes diferentes podem se comunicar sem qualquer problema, bastando respeitar o limite
daquele que possui um alcance menor. [4]
A velocidade de transmissão de dados no Bluetooth é baixa; até a versão 1.2, a taxa
pode alcançar no máximo 1 Mb/s. Na versão 2.0 esse valor passou para até 3 Mb/s. Embora
essas taxas sejam curtas, são suficientes para uma conexão satisfatória entre a maioria dos
dispositivos. Todavia, a busca por velocidades maiores é constante, como prova a chegada da
versão 3.0, capaz de atingir taxas de até 24 Mb/s. [4]
O Bluetooth é uma tecnologia criada para funcionar no mundo todo, razão pela qual se
fez necessária à adoção de uma frequência de rádio aberta, que seja padrão em qualquer lugar
do planeta. A faixa ISM (Industrial, Scientific, Medical), que opera à frequência de 2,45 GHz,
é a que me mais se aproxima dessa necessidade e é utilizada em vários países, com variações
que vão de 2,4 GHz a 2,5 GHz. [4]
Como a faixa ISM é aberta, isto é, pode ser utilizada por qualquer sistema de
comunicação, é necessário garantir que o sinal do Bluetooth não sofra e não gere
interferências. O esquema de comunicação FH-CDMA (Frequency Hopping - Code-Division
Multiple Access), utilizado pelo Bluetooth, permite tal proteção, já que faz com que a
frequência seja dividida em vários canais. O dispositivo que estabelece a conexão vai
mudando de um canal para outro de maneira muito rápida. Esse esquema é chamado "salto de
frequência" (frequency hopping). Isso faz com que a largura de banda da frequência seja
muito pequena, diminuindo sensivelmente as chances de uma interferência. No Bluetooth,
pode-se utilizar até 79 frequências (ou 23, dependendo do país) dentro da faixa ISM, cada
uma espaçada da outra por 1 MHz. [4]
Como um dispositivo se comunicando por Bluetooth pode tanto receber quanto
transmitir dados (modo full-duplex), a transmissão é alternada entre slots para transmitir e
slots para receber, um esquema denominado FH/TDD (Frequency Hopping/Time-Division
Duplex). Esses slots são canais divididos em períodos de 625 µs (microssegundos). Cada salto
de frequência deve ser ocupado por um slot, logo, em 1 segundo tem-se 1600 saltos. [4]
No que se refere ao enlace, isto é, à ligação entre o emissor e receptor, o Bluetooth faz
uso, basicamente, de dois padrões: SCO (Synchronous Connection-Oriented) e ACL
(Asynchronous Connection-Less). O primeiro estabelece um link sincronizado entre o
dispositivo master e o dispositivo escravo, onde é feita uma reserva de slots para cada um.
Assim, o SCO acaba sendo utilizado principalmente em aplicações de envio contínuo de
dados, como voz. Por funcionar dessa forma, o SCO não permite a retransmissão de pacotes
de dados perdidos. Quando ocorre perda em uma transmissão de áudio, por exemplo, o
18
dispositivo receptor acaba reproduzindo som com ruído. A taxa de transmissão de dados no
modo SCO é de 432 Kb/s, sendo de 64 Kb/s para voz. [4]
O padrão ACL, por sua vez, estabelece um link entre um dispositivo master e os
dispositivos slave existentes em sua rede. Esse link é assíncrono, já que utiliza os slots
previamente livres. Ao contrário do SCO, o ACL permite o reenvio de pacotes de dados
perdidos, garantindo a integridade das informações trocadas entre os dispositivos. Assim,
acaba sendo útil para aplicações que envolvam transferência de arquivos, por exemplo. A
velocidade de transmissão de dados no modo ACL é de até 721 Kb/s. [4]
3. METODOLOGIA EMPREGADA
Neste tópico serão detalhados os componentes empregados no desenvolvimento do
projeto, com o fornecimento das especificações técnicas dos módulos utilizados: placa
Arduino Uno, módulo Bluetooth, servomotores e fonte de alimentação.
A ideia básica do projeto é a concepção de um braço mecânico articulado controlado
remotamente. As articulações do braço mecânico são feitas com a utilização de servomotores,
o controlador é a placa Arduino UNO equipada com um módulo Bluetooth adicional acessado
remotamente, através de um smartphone ou um notebook, através de comandos seriais.
O diagrama básico do projeto é mostrado na figura 6:
Figura 6 - Diagrama básico do sistema proposto
19
3.1 DETALHAMENTO DO HARDWARE: ARDUINO UNO
A figura 7 mostra uma placa Arduino UNO similar à utilizada no projeto. Nela podemos
identificar os elementos principais da placa, detalhados na sequência:
Figura 7 - Placa Arduino Uno e seus componentes principais [2]
Um resumo das características elétricas principais é mostrado na tabela 1.
Tabela 1 - Características elétricas da placa Arduino Uno [2]
Microcontrolador ATmega328
Tensão de operação 5V
Tensão de entrada (recomendada) 7-12V
Tensão de entrada (limites de operação) 6-20V
Pinos I/O digitais 14 (6 com saída PWM)
Entradas analógicas 6
Corrente típica ns pinos I/O 40 mA
Corrente típica nos pinos 3.3V 50 mA
Flash Memory 32 KB (ATmega328) 0.5 KB usedos pelo bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock 16 MHz
20
O Arduino UNO é uma placa microcontroladora baseada no chip ATmega328. A placa
dispõe de 14 pinos de I/O digitais (6 com saída PWM), 6 entradas analógicas, cristal oscilador
de 16MHz, conector para alimentação externa, leitor de ICSP e um botão de reset manual. A
placa comporta tudo o que é necessário para suportar o microcontrolador, conectá-lo a um PC
utilizando um cabo USB de forma bastante simples, carregar o software necessário, alimentá-
lo com uma fonte DC externa e rodar a aplicação. [2]
As dimensões básicas da placa são mostradas na figura 8. O conector USB e o plug de
alimentação excedem lateralmente a dimensão do comprimento da placa em alguns
milímetros. Há quatro furos na placa para fixação. [2]
Figura 8 - Dimensões da placa Arduino Uno
O diagrama esquemático da placa é mostrado na figura 9:
Figura 9 - Diagrama esquemático da placa Arduino Uno [2]
21
3.1.1 ALIMENTAÇÃO
O Arduino UNO pode ser alimentado através do conector USB ou com uma fonte
externa. A fonte a ser utilizada é selecionada automaticamente. [2]
A alimentação externa (exceto USB) pode ser fornecida por uma bateria ou um
adaptador AC/DC. O conector de entrada de alimentação DC existente na placa é de 2.1mm
com terminal positivo no pino central. [2]
A placa pode operar com uma tensão entre 6 ~ 20V. Entretanto tensões abaixo de 7V
podem levar o pino de exteriorização de 5V a fornecer tensões abaixo do nominal e a placa
pode passar a ter operação instável. Tensões acima de 12V podem gerar sobreaquecimento no
regulador de tensão existente na placa. Desta forma, o range de operação recomendado é entre
7 e12V. [2]
Os pinos existentes no conector de exteriorização são os seguintes:
Vin: Tensão de entrada da placa quando estiver sendo utilizada uma fonte externa.
Este pino pode ser usado como entrada, ou, caso seja aplicada tensão pelo conector
de 2.1mm, esta tensão pode ser acessada neste pino;
5V: Saída de 5V disponibilizada pelo regulador existente na placa;
3V3: Saída de 3.3V disponibilizada pelo regulador existente na placa. A corrente
máxima desta saída é 50mA;
GND: Terra. [2]
3.1.2 MEMÓRIA E I/O
O microcontrolador ATmega328 dispõe de 32KB (0.5KB utilizado pelo bootloader).
Ele ainda tem 2KB de SRAM e 1KB de EEPROM (pode ser lida/escrita com o uso da
biblioteca EEPROM do software Arduino). [2]
Cada um dos 14 pinos digitais pode ser utilizado como entrada ou saída através da
aplicação das funções pinMode(), digitalwrite() e digitalRead(). Estes pinos operam em 5V
podendo fornecer/receber correntes de até 40mA e tem ainda um resistor pull-up
(desconectado default) de 20-50K. Alguns pinos têm funções especiais, descritas a seguir:
Serial: 0(RX) e 1(TX). Pinos utilizados para transmitir e receber dados seriais;
Interrupções externas: 2 e 3. Estes pinos podem ser configurados para acionar uma
interrupção em nível lógico 0, edge de subida ou descida ou alteração de valor;
PWM: 3,5,6,9,10,11. Saída PWM 8bits com o uso da função analogWrite();
22
SPI: 10(SS), 11(MOSI), 12(MISO), 13(SCK). Estes pinos oferecem suporte a
comunicação SPI utilizando a biblioteca SPI do software Arduino;
LED: 13. A placa tem um LED conectado ao pino digital 13. [2]
O Arduino UNO dispõe de 6 entradas analógicas, identificadas como A0 ~ A5, cada
uma delas com um conversor AD de 10bits de resolução. Por padrão estas entradas medem de
0 a 5V, entretanto é possível alterar o limite superior deste range usando o pino AREF em
conjunto com a função analogReference(). Adicionalmente, alguns pinos têm funções
especiais, descritas a seguir:
TWI: A4 ou pino DAS e A5 ou pino SCL. Estes pinos oferecem suporte a
comunicação TWI utilizando a biblioteca Wire do software Arduino;
AREF: Tensão de referência para as entradas analógicas utilizada em conjunto
com a função analogReference();
Reset: Nível lógico 0 aplicado a este pino provoca reset do microcontrolador. [2]
3.1.3 COMUNICAÇÃO
O Arduino UNO dispõe de diversas facilidades na comunicação com um PC, outro
Arduino, ou outros microcontroladores. O ATmega328 disponibiliza comunicação serial
padrão UART TTL (5V) através dos pinos digitais 0 (RX) e 1 (TX). Um conversor USB-
Serial(ATmega16U2) existente na placa canaliza a comunicação serial na interface USB
aparecendo como uma porta COM virtual no gerenciador de dispositivos. O firmware do
conversor USB-Serial utiliza drivers USB COM padrão, não sendo necessário nenhum driver
externo. Entretanto, no ambiente Windows, um arquivo .inf é necessário. [2]
O software Arduino inclui um monitor serial que possibilita o recebimento/envio de
dados seriais simples da placa Arduino. Os leds RX e TX na placa irão piscar durante a
transmissão de dados Arduino PC. (OBS: estes leds não piscam para comunicação serial
pelos pinos 0 e 1). [2]
O uso da biblioteca SoftwareSerial possibilita a habilitação de comunicação serial em
qualquer um dos pinos digitais do Arduino UNO. O ATmega328 suporta ainda comunicação
I2C (TWI) e SPI. O software Arduino inclui bibliotecas que simplificam o uso de
barramentos I2C (biblioteca Wire) e de comunicação SPI (biblioteca SPI). [2]
23
3.1.4 PROGRAMAÇÃO
O Arduino UNO pode ser programado utilizando o software (IDE) Arduino. O
ATmega328 vem pré-gravado com um carregador de inicialização que possibilita a carga de
novos códigos sem o uso de um programador externo. [2]
3.1.5 PROTEÇÃO CONTRA SOBRECORRENTE NA PORTA USB
O Arduino UNO dispõe de um fusível passível de reinicialização que protege as portas
USB do PC conectadas à placa contra curtos-circuitos e sobrecorrente. Independente da
proteção nativa existente na maioria dos PC’s, o Arduino UNO adiciona uma camada extra de
proteção. Caso correntes acima de 500mA sejam aplicadas na porta USB, o fusível irá
interromper a conexão até que a ocorrência tenha sido normalizada. [2]
3.2 MÓDULO BLUETOOTH
O módulo Bluetooth utilizado no projeto foi o EGBT-046S montado em uma placa de
extensão dos pinos, mostrado na figura 10.
Figura 10 - Módulo Bluetooth EGBT-046S
As características principais deste módulo estão listadas na tabela 2.
24
Tabela 2 - Características elétricas do módulo EBGT-046S
Protocolo Bluetooth Bluetooth Specification v2.0+EDR
Protocolo USB USB v1.1/2.0
Frequência 2.4 GHz ISM band
Modulação GFSK (Gaussian Frequency Shift Keying)
Potência de Transmissão ≤ 4 dBm, Class 2
Sensibilidade ≤-84 dBm at 0.1% BER
Taxas Asynchronous: 2.1 Mbps(Max) / 160 kbps Synchronous: 1
Mbps/1 Mbps
Opções de Segurança Autenticação e encriptação
Modos Suportados Bluetooth serial port slave device
Tensão 3,6 - 6 VDC (50 mA)
Temperatura de trabalho –5 ~ +45 °C
A placa EGBT-046S é um módulo Bluetooth genérico com firmware SPP UART para
aplicações wireless. É um módulo simples com uma configuração permanente para operação
no modo “escravo” sem a necessidade de inserção de códigos de instalação no firmware do
microcontrolador associado.
O esquema básico de conexão do módulo Bluetooth ao microcontrolador é mostrado na
figura 11:
Figura 11 - Esquema de conexão do módulo Bluetooth a um microcontrolador
25
3.3 SERVOMOTORES
Na concepção do braço mecânico decidiu-se pela implementação de seis movimentos
diferentes assim identificados:
1) Giro da base
2) Primeira elevação do braço
3) Segunda elevação do braço
4) Giro da mão do braço
5) Movimento tipo “munheca” da mão
6) Movimento tipo “pinça”
Para a obtenção destes movimentos foram utilizados sete servomotores, empregados na
configuração padrão, descrita no item 2.2, com amplitude de movimentos de 180º, não tendo
sido executada nenhuma adaptação no que diz respeito ao padrão básico de giro.
Dentro da ideia inicial, os movimentos 1 a 5 estariam sujeitos a um esforço mais
elevado, visto que deveriam suportar o movimento de parte da estrutura do próprio braço
mecânico além de prover o seu próprio movimento previamente definido. O movimento de
pinça por outro lado, estaria sujeito a um esforço menor pois não teria que suportar a carga da
estrutura mecânica do sistema.
Assim, dentro destas premissas, foram escolhidos dois tipos diferentes de servomotores
para aplicação no projeto. Estes servomotores são descritos a seguir.
3.3.1 SERVO MG 995
No projeto foram utilizados cinco servomotores modelo MG995 conforme figuras 12 e
13.
Figura 12 - Imagem de catálogo do servomotor MG 995
26
Figura 13 - Detalhe das engrenagens do servomotor MG 995
Estes servomotores foram utilizados para a execução dos movimentos 1 a 5 citados no
item 3.3 e suas principais características são descritas a seguir:
• Alimentação: através de adaptador externo.
• Estável e à prova de choque.
• Comprimento do fio: 300 mm
• Dimensões: 40 mm x 19 mm x 43 mm
• Peso: 55g
• Velocidade de operação: 0.17sec / 60 graus (4.8V sem carga)
• Velocidade de operação: 0.13sec / 60 graus (6.0V sem carga)
• Torque: 13 kg-cm (180,5 oz-in) em 4.8V
• Torque: 15 kg-cm (208,3 oz-in) em 6V
• Tensão da operação: 4.8 - 7.2Volts
• Tipo de engrenagem: metálica
• Conector do fio: Heavy Duty, 11,81 "(300 mm)
3.3.2 SERVO TG9e
No projeto foram utilizados dois servomotores modelo TG9e conforme figura 14 .
Figura 14 - Imagem de catálogo do servomotor TG9e
27
Estes servomotores foram utilizados para a execução do movimento 6 citado no item
3.3 e suas principais características estão listadas a seguir:
• Dimensões: 23 x 12.2 x 29 mm
• Torque: 1.5kg/cm (4.8V)
• Velocidade de operação: 0.10sec/60 graus
• Voltagem: 4.8V
• Temperatura de operação: 0-55C
• Comprimento do fio: 16 cm
3.4 FONTE DE ALIMENTAÇÃO
Foi utilizada no projeto uma fonte de alimentação de 6 V – 5 A conforme figura 15.
Figura 15 - Fonte externa utilizada no projeto
As suas principais características estão listadas a seguir:
• Tensão de Entrada: 90 Vac ~ 250 Vac (Automática)
• Tensão de Saída: 6 Vdc (Estabilizada)
• Corrente de Saída: 5 A
• Proteção Contra Curto-circuito
• Proteção Contra Sobre-tensão
• Proteção Contra Sobre-temperatura
• Altura: 42 mm
• Largura: 53 mm
• Comprimento: 100 mm
• Cabo de Saída: 1,50 m
• Cabo de Entrada: 1,50 m
28
O plugue de saída P4 (Positivo Interno) pode ser visto na figura 16.
Figura 16 - Detalhe do plugue de saída DC da fonte
4. MONTAGEM FINAL
4.1 DIAGRAMA EM BLOCOS
O diagrama em blocos do sistema final contemplando as premissas iniciais propostas
para o projeto está mostrado na figura 17.
Figura 17 - Diagrama em blocos do sistema desenvolvido
Arduino UNO Modulo Bluetooth TX
TX RX
R 5v 5v
GND GND
FONTE DE ALIMENTAÇÃO
GND
GND VCC
VCC
M7 M6 M5 M4 M3 M2 M1
05 06 07 08 09 10 11
PINOS BARRAMENTO
VCC
GND FONTE DE
ALIMENTAÇÃO
29
As funções de cada motor são descritas abaixo:
M1: giro da mesa
M2: pantógrafo (ajusta a primeira elevação do braço)
M3: avanço (ajusta a segunda elevação do braço, aumentando o alcance do
movimento)
M4: giro da mão (executa movimento de rotação da mão do braço mecânico)
M5: munheca (executa movimento tipo “munheca” na mão do braço mecânico)
M6 e M7: garra (executam abre/fecha da garra).
4.2 MECÂNICA E MATERIAIS
A montagem final do protótipo ficou conforme as figuras 18 e 19. O protótipo foi
inspirado no robô ABB 1400, que pode ser visto na figura 20.
Figura 18 - Desenho da montagem final do braço articulado: vista lateral direita
30
Figura 19 - Desenho da montagem final do braço articulado: vista lateral esquerda
Figura 20 - Robô modelo ABB 1400
31
O material utilizado no projeto foi o policloreto de polivinila (também conhecido
como cloreto de vinila ou policloreto de vinil - nome IUPAC policloroeteno) mais
conhecido pelo acrónimo PVC (da sua designação em inglês Polyvinyl chloride) é um
plástico não 100% originário do petróleo.
O PVC contém, em peso, 57% de cloro (derivado do cloreto de sódio - sal de
cozinha) e 43% de eteno (derivado do petróleo). Como todo plástico, o vinil é feito a
partir de repetidos processos de polimerização que convertem hidrocarbonetos,
contidos em materiais como o petróleo, em um único composto chamado polímero. O
vinil é formado basicamente por etileno e cloro.
Este dá ao vinil duas vantagens, a de não ser tão susceptível às mudanças de
preço no mercado de petróleo e de não ser um bom combustível como os derivados de
petróleo.
Por uma reação química, o etileno e o cloro combinam-se formando o dicloreto
de etileno, que por sua vez é transformado em um gás chamado "VCM" (Vinyl
chloride monomer, em português cloreto de vinila). O passo final é a polimerização,
que converte o monómero num polímero de vinil, que é o PVC, ou simplesmente,
vinil.
A partir da ideia inicial mostrada nos desenhos das figuras 18, 19 e 20 com base
na utilização de placas e tubos de PVC para a estrutura mecânica do braço articulado e
levando em contas dimensões das peças a serem agregadas ao projeto para a montagem
final chegou-se aos desenhos das partes mecânicas mostradas a seguir nas figuras 21 a
39. Os desenhos de montagem com as respectivas cotas estão no item 9 - Anexos do
Projeto.
Figura 21 - Base do braço articulado
32
Figura 22 - Giro da mesa do braço articulado
Figura 23 - Suportes laterais do braço articulado
33
Figura 24 - Tensor 1: interligação do servomotor com o tensor 2
Figura 25 - Tensor 2: interligação tensor 2 com o corpo do braço
34
Figura 26 - Interligação dos suportes laterais e do Tensor 02 com a base de giro
Figura 27 - Base de adaptação do giro da garra
35
Figura 28 - Interligação do servomotor de giro da garra com o corpo da “munheca”
Figura 29 - Corpo da “munheca”
36
Figura 30 - Fixação lateral do corpo da “munheca” ao corpo da garra.
Figura 31 - Corpo da garra.
37
Figura 32 - Articulação da garra.
Figura 33 - Extremidade da garra.
38
Figura 34 - Vista lateral direita do braço articulado
Figura 35 - Vista lateral esquerda do braço articulado
39
Figura 36 - Vista superior do braço articulado
Figura 37 - Vista traseira do braço articulado
40
Figura 38 - Vista frontal do braço articulado
Figura 39 - Visão geral da montagem final do braço articulado
41
4.2.1 FABRICAÇÃO
Foram adquiridos placas de PVC de 6,7mm e foram utilizados métodos de
modelismo amador para fabricação do modelo, ou seja, foi desenhado sobre a placa de
PVC e logo após cortado com utilização de uma serra do tipo “tico -tico” e feito o
esquadrejamento utilizando um esmeril de baixa velocidade e um paquímetro para
controlar o desbaste e esquadro. Para o acabamento, foram utilizadas laminas de
estilete pra remoção de rebarbas e quebrar os cantos. Para fixação das partes de PVC
foi utilizado o Cianoacrilato, que é um tipo de adesivo criado acidentalmente em 1942
por Harry Coover durante experiências visando a criação de um polímero transparente,
comercializados como colas instantâneas de ampla utilidade, sendo o Super Bonder da
Henkel um dos pioneiros no Brasil e, portanto um sinônimo popular para este tipo de
produto.
4.2.2 EVOLUÇÃO DO PROJETO
No relatório fotográfico a seguir, são mostradas algumas etapas da evolução do
projeto, apresentando atividades realizadas no teste dos módulos individuais,
fabricação das peças de PVC do braço articulado e na montagem final do protótipo.
Figura 40 - Início da montagem do da base do braço articulado
42
Figura 41 - Giro da base e acoplamento dos servomotores de acionamento do braço
Figura 42 - Montagem da base com os cabos de acionamento dos servomotores
43
Figura 43 - Primeiro modelo de garra utilizado no protótipo e abandonado devido à dificuldade de fixação
dos servomotores.
Figura 44 - Dimensões relativas da garra em relação à base do braço articulado.
44
Figura 45 - Testes de desenvolvimento do Arduino e dos servomotores.
Figura 46 - Testes de desenvolvimento do Arduino e dos servomotores.
45
Figura 47 - Testes de montagem final do protótipo, da nova versão do braço superior e das garras com
posicionamento de fixação dos servomotores de giro do braço, acionamento da munheca e das garras.
Figura 48 - Versão final do protótipo com a finalização da fixação dos servomotores e do chicote com o
cabeamento de acionamento e controle.
46
Figura 49 - Vista lateral do braço articulado com detalhe do servomotor de giro do braço superior.
Figura 50 - Vista superior do braço articulado com detalhe das garras.
47
Figura 51 - Vista inferior da base do braço articulado.
Figura 52 - Detalhe inferior da base do braço articulado com a posição do servomotor de giro da mesa
com a acomodação do Arduino e do cabeamento.
48
Figura 53 - Vista frontal do braço articulado.
Figura 54 - Versão final da montagem mecânica do braço articulado com todos os componentes.
49
4.3 SOFTWARE
Foi desenvolvido um código na IDE do Arduino cuja concepção básica era
controlar remotamente os 7 servomotores agregados ao braço mecânico, conferindo os
movimentos de giro da mesa, elevação 1(pantógrafo), elevação 2(avanço/recuo), giro
da mão(rotação interna/externa do punho), munheca e abertura/fechamento das
garras(efeito de pinça). O fluxograma básico é mostrado a seguir e o código
comentado está nos anexos do manuscrito no item 8 juntamente com o fluxograma
detalhado.
Figura 55 - Fluxograma do aplicativo de controle do braço articulado
50
4.4 CUSTO DO PROJETO
Foi feita uma estimativa do custo para desenvolvimento do projeto baseado nos valores
dos materiais utilizados, não estando considerados nesta estimativa os custos homem/hora e
de investimento e utilização de ferramentas. Os valores estão na tabela 3.
Tabela 3 - Custos do projeto
DESCRIÇÃO DO ITEM QUANTIDADE UNITÁRIO TOTAL
KIT ARDUINO 1 R$ 150,00 R$ 150,00
SERVOMOTOR TG9e 2 R$ 10,00 R$ 20,00
SERVOMOTOR MG 995 5 R$ 40,00 R$ 200,00
FONTE DE ALIMENTAÇÃO 1 R$ 60,00 R$ 60,00
MÓDULO BLUETOOTH 1 R$ 50,00 R$ 50,00
CHAPA PVC 6 mm 1 R$ 50,00 R$ 50,00
CHAPA PVC 10 mm 0,5 R$ 100,00 R$ 50,00
CONEXÕES PVC 2 R$ 5,00 R$ 10,00
TUBOS DE COLA 4 R$ 5,00 R$ 20,00
MISCELÂNEOS (FIOS, CONECTORES, REBITES, FITAS) 1 R$ 50,00 R$ 50,00
VALOR TOTAL DO PROJETO R$ 660,00
5. RESULTADOS E DISCUSSÕES
Foram executados diversos testes do braço mecânico sob operação local e por controle
remoto.
A operação local foi feita através da porta USB do Arduino UNO, utilizando o monitor
serial existente no software do Arduino para o envio de comandos seriais.
A operação remota foi feita de duas formas distintas: 1) através de um smartphone
Android LG Optimus P970 Black, utilizando o aplicativo S2 Bluetooth Terminal – versão
3.1.0 para o envio de caracteres pela interface serial; 2) através da interface Bluetooth de um
notebook HP G42-371BR acessada por um aplicativo Hyperterminal.
Todos os testes apresentaram desempenho bastante satisfatório, tendo sido possível
controlar os 7 servomotores, local e remotamente, simulando os movimentos de giro da mesa,
elevação 1(pantógrafo), elevação 2(avanço/recuo), giro da mão(rotação interna e externa),
giro da mão(movimento tipo “munheca”) e abertura/fechamento da garra(movimento tipo
“pinça”).
51
Foram enviadas sequências de comandos simulando uma operação real, recolhendo um
objeto em uma determinada posição e colocando-o em outra posição definida.
Como os testes foram feitos no laboratório, não foi determinado o alcance máximo da
cobertura da interface Bluetooth utilizada. Entretanto, dentro das dependências do laboratório
o hardware foi montado em diversas posições tendo sido possível remoto em todas as
condições simuladas.
Durante o desenvolvimento do projeto foram feitas observações, tendo sido verificados
alguns aspectos positivos e negativos, conforme listados a seguir:
Pontos Positivos
A plataforma Arduino realmente cumpre o que promete nos quesitos facilidade de
operação e disponibilidade de informação. O hardware é realmente bem simples e de
operação bastante intuitiva, sendo que o mesmo pode ser dito do software que
também é de desenvolvimento muito simples. Outro ponto a destacar é a grande
disponibilidade de informação disponível. Como é uma plataforma aberta, há um
volume realmente gigantesco de material disponível para informação e referência.
Outro aspecto positivo que merece destaque diz respeito ao custo. Com um pequeno
investimento foi realmente possível desenvolver uma aplicação bem interessante.
Ponto mais uma vez para a plataforma aberta que praticamente zera os custos de
licenças e outras tecnologias proprietárias tornando bastante acessível o
desenvolvimento de protótipos baseados em sistemas microcontrolados.
Pontos negativos
Não foi possível definir com precisão onde era realmente o problema, mas a
operação do Arduino mostrou-se instável em algumas situações, como por exemplo
travando ao iniciar, não sendo reconhecido na primeira inicialização, não sendo
possível fazer o “upload” em outro PC com o software de mesma versão. Pode ser
um problema da interação do Arduino Uno com o ambiente Windows 7, mas como
não havia máquinas disponíveis com outros sistemas operacionais não foi possível
uma confirmação.
A abundância de informação, que a principio é uma virtude, pode se tornar um
problema. Como há muita informação disponível, é muito fácil encontrar coisas boas
mas também há inevitavelmente muito conteúdo de baixa qualidade. Saber filtrar a
52
informação, selecionando o conteúdo realmente adequado e que seja de relevância na
aplicação em desenvolvimento é fundamental para não perder o foco e desperdiçar
recursos importantes.
Características do projeto que foram observadas e que não podem ser definidas como
negativas ou positivas, mas sim como inerentes aos sistemas em questão incluem:
Capacidade do Arduino Uno: A capacidade do Arduino Uno é interessante para
aplicações simples, mas caso seja necessário controlar mais motores ou executar um
código mais complexo, uma solução mais robusta deve ser considerada.
Os servomotores foram uma solução simples e de custo reduzido para o
desenvolvimento do projeto, mas certamente apresentam inconvenientes como a
limitação do range de atuação em 180º, certa imprecisão no posicionamento do eixo,
ruído e aquecimento consideráveis. Para aplicações onde um alcance e uma precisão
maiores sejam necessários, outras alternativas como motores de passo ou servos de
rotação contínua sejam uma opção mais interessante.
Outra dificuldade observada durante o projeto foi em relação à fonte de alimentação
empregada. O projeto foi iniciado utilizando uma fonte que se imaginava ser
suficiente para a aplicação em questão. Após alguns problemas verificados onde
chegou-se a suspeitar da consistência do código e do hardware utilizado,
descobrimos que a instabilidade era devida à fonte de alimentação que estava
subdimensionada. Desta forma, atenção especial deve ser dada a este aspecto
importante do projeto.
6. CONCLUSÕES
Analisando os objetivos propostos, com o desenvolvimento do trabalho e a partir dos
resultados obtidos podemos afirmar que o projeto foi bem sucedido, tendo sido alcançados
todos os objetivos determinados, listados abaixo:
Foi agregado conhecimento de sistemas robóticos, programação e transmissão de
dados através da concepção de um braço articulado controlado remotamente.
53
A plataforma Arduino foi conhecida e utilizada com sucesso em uma aplicação,
estando alinhado com as novas diretrizes das disciplinas de microcontroladores e
Robótica da Univap.
Foram desenvolvidos conhecimentos de programação a partir da criação do software
de controle do braço articulado através da IDE do Arduino. Como a linguagem
utilizada no Arduino é bastante similar à linguagem C, indiretamente os
conhecimentos neste ambiente de programação foram revistos e refinados.
Habilidades em transmissão de dados também foram adquiridas com o
desenvolvimento de um sistema básico remotamente controlado por comandos via
interface serial através de terminais baseados na tecnologia Bluetooth.
Conforme proposto, foi obtido um sistema robótico de baixo custo baseado na
plataforma Arduino.
O sistema desenvolvido gerou uma aplicação que poderá ser utilizada no
desenvolvimento e na fomentação de novos negócios.
Uma reflexão final fica por conta da relevância de um programa de TCC bem
estruturado e orientado do qual tivemos o privilégio de participar. Esta atividade permite aos
alunos dos cursos de Engenharia um primeiro contato com uma das atividades mais
corriqueiras e comuns aos Engenheiros: a execução e gestão de pequenos projetos, definindo
e especificando materiais, desenvolvendo protótipos e sistemas de testes, controlando prazos,
medindo os resultados e redirecionando o andamento das atividades pertinentes ao projeto.
Fica como sugestão o direcionamento das ementas das disciplinas “Projeto em Engenharia
Elétrica/Eletrônica” de modo a criar um ambiente de estímulo e evolução que culmine com a
conclusão do TCC.
54
7. REFERENCIAS BIBLIOGRÁFICAS
[1] Guimarães, Pereira da Fonseca Erika / Beppu, Mathyan Motta – Apostila Arduino –
Universidade Federal Fluminense, 2010.
[2] Arduino Home Page - http://www.arduino.cc/ - acessado em maio de 2013
[3] Servomotores http://www.pictronics.com.br/downloads/apostilas/servomotores.pdf -
acessado em maio de 2013 – autor: André Santos – Porto Alegre, 2007.
[4] Tecnologia Bluetooth - http://www.infowester.com/bluetooth.php - acessado em maio de
2013 - autor: Emerson Alecrim - São Paulo, 2008.
[5] Haykin, Simon / Moher, Michael - Sistemas Modernos de Comunicação Wireless, 1ª
Edição. Porto Alegre: Bookman, 2008.
Mc Roberts, Michael – Arduino Básico,1ª Edicão. São Paulo: Novatec, 2011.
http://www.sr.ifes.edu.br/~eduardomax/arquivos/Tut_Arduino.pdf - acessado em maio de
2013
55
8. ANEXOS DO MANUSCRITO: FLUXOGRAMA E SOFTWARE COMENTADO
56
57
58
#include <Servo.h> // inclue a biblioteca de controle de servomotores Servo Agirodamesa; // cria um objeto tipo Servo associado ao giro da mesa Servo Bpantografo; // cria um objeto tipo Servo associado ao pantógrafo Servo Cavanco; // cria um objeto tipo Servo associado ao avanço do braço Servo Dgirodamao; // cria um objeto tipo Servo associado a rotação da mão Servo Emonheca; // cria um objeto tipo Servo associado ao movimento de munheca Servo Fmaodireita; // cria um objeto tipo Servo associado ao fechamento da garra direita Servo Gmaoesquerda; // cria um objeto tipo Servo associado ao fechamento da garra esquerda int V=3; // define variável V do tipo inteiro int A; // define variável A do tipo inteiro int B; // define variável B do tipo inteiro int C; // define variável C do tipo inteiro int D; // define variável D do tipo inteiro int E; // define variável E do tipo inteiro int F; // define variável F do tipo inteiro int G; // define variável G do tipo inteiro // inicio do setup void setup () { Agirodamesa.attach(5); // associa o servo giro de mesa ao pino 5 Agirodamesa.write(105); // define posição inicial do servo giro de mesa delay(10); Bpantografo.attach(6); // associa o servo pantografo ao pino 6 Bpantografo.write(100); // define posição inicial do servo pantografo delay(10); Cavanco.attach(7); // associa o servo avanço ao pino 7 Cavanco.write(90); // define posição inicial do servo avanço delay(10); Dgirodamao.attach(8); // associa o servo giro da mão ao pino 8 Dgirodamao.write(90); // define posição inicial do servo giro da mão delay(10); Emonheca.attach(9); // associa o servo munheca ao pino 9 Emonheca.write(78); // define posição inicial do servo munheca
59
delay(10); Fmaodireita.attach(10); // associa o servo mão direita ao pino 10 Fmaodireita.write(105); // define posição inicial do servo mão direita delay(10); Gmaoesquerda.attach(11); // associa o servo mão esquerda ao pino 11 Gmaoesquerda.write(110); // define posição inicial do servo mão esquerda delay(10); Serial.begin(9600); // inicializa comunicação serial } // inicio do loop void loop() { char z = Serial.read(); // define uma variável tipo char associada ao valor lido pela serial if(z == '1') A=30; // testa o valor de z e escreve em A conforme retorno do condicional if(z == '2') A=105; // testa o valor de z e escreve em A conforme retorno do condicional if(z == '3') A=180; // testa o valor de z e escreve em A conforme retorno do condicional int a= Agirodamesa.read(); // define uma variável a tipo int associada ao valor lido da serial a=constrain(a,30,180); // limita o valor de a entre 30 e 180º if(a>A )a--; // decrementa a em função do resultado do teste condicional if(a<A )a++; // incrementa a em função do resultado do teste condicional Agirodamesa.write(a); // posiciona o servo giro de mesa com valor de a delay(V); if(z == '4') B=80; // testa o valor de z e escreve em B conforme retorno do condicional if(z == '5') B=100; // testa o valor de z e escreve em B conforme retorno do condicional if(z == '6') B=150; // testa o valor de z e escreve em B conforme retorno do condicional int b= Bpantografo.read(); // define uma variável b tipo int associada ao valor lido da serial b=constrain(b,70,150); // limita o valor de b entre 70 e 150º if(b>B )b--; // decrementa b em função do resultado do teste condicional if(b<B )b++; // incrementa a em função do resultado do teste condicional Bpantografo.write(b); // posiciona o servo pantografo com valor de b delay(V); if(z == '7') C=60; // testa o valor de z e escreve em C conforme retorno do condicional if(z == '8') C=90; // testa o valor de z e escreve em C conforme retorno do condicional if(z == '9') C=110; // testa o valor de z e escreve em C conforme retorno do condicional int c= Cavanco.read();// define uma variável c tipo int associada ao valor lido da serial c=constrain(c,50,130); // limita o valor de c entre 50 e 130º if(c>C )c--; // decrementa c em função do resultado do teste condicional if(c<C )c++; // incrementa c em função do resultado do teste condicional Cavanco.write(c); // posiciona o servo avanço com valor de c delay(V); if(z == 'y') D=0; // testa o valor de z e escreve em D conforme retorno do condicional if(z == 't') D=95; // testa o valor de z e escreve em D conforme retorno do condicional if(z == 'u') D=180; // testa o valor de z e escreve em D conforme retorno do condicional int d= Dgirodamao.read(); //define uma variável d tipo int associada ao valor lido da serial d=constrain(d,0,180); // limita o valor de d entre 0 e 180º if(d>D )d--; // decrementa d em função do resultado do teste condicional if(d<D )d++; // incrementa d em função do resultado do teste condicional Dgirodamao.write(d); // posiciona o servo giro da mão com valor de d delay(V); if(z == 'j') E=0; // testa o valor de z e escreve em E conforme retorno do condicional if(z == 'k') E=80; // testa o valor de z e escreve em E conforme retorno do condicional if(z == 'l') E=130; // testa o valor de z e escreve em E conforme retorno do condicional int e= Emonheca.read(); //define uma variável e tipo int associada ao valor lido da serial e=constrain(e,0,150); // limita o valor de e entre 0 e 150º if(e>E )e--; // decrementa e em função do resultado do teste condicional if(e<E )e++; // incrementa e em função do resultado do teste condicional Emonheca.write(e); // posiciona o servo giro da mão com valor de e delay(V); if(z == 's') F=70; // testa o valor de z e escreve em F conforme retorno do condicional if(z == 'f') F=124; // testa o valor de z e escreve em F conforme retorno do condicional int f= Fmaodireita.read(); //define uma variável f tipo int associada ao valor lido da serial f=constrain(f,80,129); // limita o valor de e entre 80 e 129º if(f>F )f--; // decrementa f em função do resultado do teste condicional if(f<F )f++; // incrementa f em função do resultado do teste condicional
60
Fmaodireita.write(f); // posiciona o servo fecha mão direita com valor de f delay(0); if(z == 's') G=130; // testa o valor de z e escreve em G conforme retorno do condicional if(z == 'f') G=75; // testa o valor de z e escreve em G conforme retorno do condicional int g= Gmaoesquerda.read(); //define uma variável g tipo int associada ao valor lido da serial g=constrain(g,71,130); // limita o valor de g entre 71 e 130º if(g>G )g--; // decrementa g em função do resultado do teste condicional if(g<G )g++; // incrementa g em função do resultado do teste condicional Gmaoesquerda.write(g); // posiciona o servo fecha mão esquerda com valor de g delay(0); }
61
9. ANEXOS DO PROJETO: DESENHOS DE MONTAGEM
62
63
64
65
66
67
68
69
70
71
72