TRABALHO ATIVIDADES COMPLEMENTARES (FETEF) INSETO ROBÔ por EDY CARLOS DOS SANTOS JACKSON F. SOUZA MARINO D. RAMOS PAULO A. DOS REIS Acadêmicos do 8º Semestre do Curso de Engenharia de Controle e Automação FACULDADE DE CIÊNCIAS SOCIAIS APLICADAS DE EXTREMA
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
TRABALHO ATIVIDADES COMPLEMENTARES (FETEF)
INSETO ROBÔ
por
EDY CARLOS DOS SANTOSJACKSON F. SOUZAMARINO D. RAMOSPAULO A. DOS REIS
Acadêmicos do 8º Semestre do Curso de Engenharia de Controle e Automação
Extrema - MG2014
FACULDADE DE CIÊNCIAS SOCIAIS APLICADAS DE EXTREMA
RESUMO
Este documento apresenta um projeto que aborda o estudo e o desenvolvimento de um dispositivo mini Robô, com o uso de um sensor infravermelho obtém a finalidade de desviar de obstáculos evitando a colisão, usando dois servos motores ele tem por finalidade movimentar-se, tem como controladora principal uma placa baseada em arduinos e uma outra placa expansão de hardware. O objetivo deste projeto constitui-se, principalmente na aplicação dos conceitos e dos conhecimentos já adquiridos em matérias já vistas e que ainda veremos ao longo do curso, a abordagem desses estudos nos possibilitou a construção de um artefato que possibilitasse a aprendizagem e aperfeiçoamento em programação, robótica, micro controladores, eletrônica digital e analógica, servos, etc.Palavras-chave: Inseto, Robô, Sensor Infravermelho.
ABSTRACT
This paper presents a project that deals with the study and development of mini robot device with the use of an infrared sensor in order to get around obstacles avoiding collision using two servo motors it is intended to move, is one main controller board based on Arduino and other hardware expansion card. The goal of this project is mainly in the application of the concepts and the knowledge acquired in subjects previously seen and the ones we will see throughout the course the approach of these studies allowed us to build a device that would enable learning and improvement in programming , robotics, micro controllers, digital and analog electronics, servos, etc.Keywords: Insect, Robot, Infrared Sensor.
LISTA DE FIGURASFig. 2.1 - Microcontroladores..........................................................................................3Fig. 2.2 - Uso de microcontroladores em automóveis.....................................................5Fig. 2.3 - Automação doméstica.....................................................................................5Fig. 2.4 - Ciclo de Máquina.............................................................................................7Fig. 3.1 - Detecção por Reflexão....................................................................................8Fig 3.2 - Detecção por interrupção..................................................................................9Fig 3.3 – Camera Escura.................................................................................................9Fig. 4.1 - O processo da compilação.............................................................................11Fig. 4.2 - Livros sobre diversas linguagens de programação.........................................14Fig. 5.1 - ATmega32U4..................................................................................................15Fig. 5.2 – Placa Controladora........................................................................................16Fig 5.3 – Sensor Infravermelho......................................................................................17Fig. 5.4 – Placa expansão..............................................................................................18Fig. 5.5 – Micro Servo....................................................................................................18Fig. 6.1 - Ambiente de programação..............................................................................19Fig. 6.2 - Entendendo o programa.................................................................................20Fig. 6.3 - Exemplo serial monitor...................................................................................21Fig. 6.4 - Saída no serial monitor...................................................................................22Fig 6.5 - Programação para Inseto Robô.......................................................................23Fig 7.1- Restantes das figuras são de montagem..........................................................24
SUMÁRIO
LISTA DE FIGURAS.................................................................................................. iii
1 INTRODUÇÃO..........................................................................................................11.1 OBJETO DO ESTUDO.......................................................................................11.2 OBJETIVOS DO TRABALHO.............................................................................11.3 VIABILIDADE E JUSTIFICATIVA.......................................................................21.4 DIFICULDADES ENCONTRADAS NO PROJETO.............................................2
2 MICROCONTROLADOR..........................................................................................32.1 MICROCONTROLADORES VERSUS MICROPROCESSADORES..................42.2 APLICABILIDADE...............................................................................................42.3 ESTRUTURA DO MICROCONTROLADOR.......................................................52.4 FUNCIONAMENTO............................................................................................7
3 SENSOR INFRAVERMELHO..................................................................................84 LINGUAGEM DE PROGRAMAÇÃO E COPILADORES.......................................10
4.1 INTERPRETAÇÃO E COMPILAÇÃO...............................................................114.2 CONCEITOS.....................................................................................................12
4.2.1 PROGRAMAÇÃO ESTRUTURADA...........................................................124.2.2 PROGRAMAÇÃO ORIENTADA A OBJETOS............................................134.2.3 PROGRAMAÇÃO LINEAR.........................................................................14
4.3 LISTA DE LINGUAGENS.................................................................................145 HARDWARE...........................................................................................................15
5.1 MICROCONTROLADOR ATMEL ATMEGA32U4............................................155.1.1 UM POUCO SOBRE A FAMÍLIA................................................................16
5.2 PLACA PRINCIPAL..........................................................................................165.2.1 PLACA CONTROLADORA........................................................................165.2.2 FUNÇÃO DOS COMPONENTES..............................................................17
5.3 SENSOR DE DISTÂNCIA SHARP GP2Y0A02YK............................................175.3.1 ESPECIFICAÇÕES....................................................................................17
5.4 PLACA EXPANSÃO DE HARDWARE..............................................................185.5 MICRO SERVO 9G SG90 TOWERPRO..........................................................18
5.5.1 ESPECIFICAÇÕES....................................................................................18- Voltagem de Operação: 3,0 - 7,2V - Ângulo de rotação: 180 graus - Velocidade: 0,12 seg/60Graus (4,8V) sem carga - Torque: 1,2 kg.cm (4,8V) e 1,6 kg.cm (6,0V) - Temperatura de Operação: -30C ~ +60C - Tipo de Engrenagem: Nylon - Tamanho cabo: 245mm - Dimensões: 32 x 30 x 12mm - Peso: 9g........................................18
6 SOFTWARE...........................................................................................................186.1 ESTRUTURA DO PROGRAMA........................................................................206.2 SERIAL MONITOR...........................................................................................216.3 OUTROS COMANDOS....................................................................................22
6.3.1 PROGRAMAÇÃO PARA INSETO ROBÔ..................................................236.3.2 ARDUBLOCK.............................................................................................23
7 MONTAGEM E RESULTADOS.............................................................................238 CONCLUSÕES.......................................................................................................309 REFERÊNCIAS......................................................................................................31
APÊNDICE A – Layout da placa...................................Erro! Indicador não definido.3APÊNDICE B – Codigo fonte do Firmware..........................................................324
1 INTRODUÇÃO
O mini Inseto Robô é um mini robô. Seu desenvolvimento foi pensando em
construir um robô que se movimentasse para frente e para os lados, com o objetivo
de desviar de obstáculos, deixando seu visual a de um inseto e sua estrutura (corpo)
o menor possível. Sua montagem emprega conhecimentos de robótica básica
eletrônica, todos os componentes trabalham em conjunto.
Tem um microcontrolador como cérebro, dois servos motores para os
movimentos, um sensor de IR (infravermelho) irá funcionar como olhos para detectar
obstáculos. Com uma programação baseada em controles de arduino, gera um
código onde o controla todos os seus hardwares.
1.1 OBJETO DO ESTUDO
O trabalho consiste preparação de um mini robô, para a detectar obstáculos,
auxiliando-o para não colidir. Buscando a implantação de componentes pequenos e
leves.
1.2 OBJETIVOS DO TRABALHO
Os objetivos do trabalho foram:
Aplicar os conhecimentos adquiridos nas diversas disciplinas do curso de
engenharia elétrica e eletrônica, explicitando as disciplinas dedicadas ao
estudo de eletrônica analógica e digital, microcontroladores, técnicas
computacionais e instrumentação, algoritmos, robótica, servos, etc;
Adquirir experiência no desenvolvimento de projetos, desde as etapas
iniciais de concepção até os testes e correções do protótipo final;
Adquirir conhecimentos sobre microcontroladores, transistores, resistores,
outras alternativas baseadas em IR. A conexão com microcontroladores é bastante
simples: a saída analógica pode ser conectada para um conversor de análogo para
digital (ADC) para tomadas de medidas de distância, ou a saída pode ser conectada
a um comparador para detecção de limites. A faixa de detecção deste sensor é de
20 a 150cm..
5.3.1 ESPECIFICAÇÕES
voltagem operacional: 4,5 a 5,5V consumo médio de corrente: 33mA (típico) faixa de distância operacional: 20 a 150 cm (8" a 60") tipo de saída: voltagem analógica tempo de resposta: 38 ± 10 ms tamanho da peça: 29.5x13.0x21.5 mm (1.16x0.5x0.85") peso: 4.8g
5.4 PLACA EXPANSÃO DE HARDWARE
A figura 5.4 mostra a placa de expansão que
é projetado para conectar um controlador, servos e
sensores. Funciona em 3V a 5V, tem seis pinos D9,
D10, D11 e A0, A1, A2, assim os dois pinos de
alimentação + e - além de entrada USB.
5.5 MICRO SERVO 9G SG90 TOWERPRO
A Figura 5.5 mostra-nos servos motores
Pode ser ligado diretamente ao microcontrolador,
ou por exemplo no Arduino. A comunicação é
unidirecional, ou seja, apenas o transmissor envia os
dados para o receptor.
5.5.1 ESPECIFICAÇÕES
.- Voltagem de Operação: 3,0 - 7,2V- Ângulo de rotação: 180 graus- Velocidade: 0,12 seg/60Graus (4,8V) sem carga- Torque: 1,2 kg.cm (4,8V) e 1,6 kg.cm (6,0V)- Temperatura de Operação: -30C ~ +60C
Fig. 5.14 – Micro Servo
Fig. 5.13 – Placa expansão
- Tipo de Engrenagem: Nylon- Tamanho cabo: 245mm- Dimensões: 32 x 30 x 12mm- Peso: 9g
6 SOFTWAREQuando tratamos de software na plataforma do Arduino, podemos referir-nos: ao
ambiente de desenvolvimento integrado do Arduino e ao software desenvolvido por
nós para enviar para a nossa placa. O ambiente de desenvolvimento do Arduino
figura 6.1 é um compilador gcc (C e C++) que usa uma interface gráfica construída
em Java. Basicamente se resume a um programa IDE muito simples de se utilizar e
de estender com bibliotecas que podem ser facilmente encontradas. As funções da
IDE do Arduino são basicamente duas: Permitir o desenvolvimento de um software e
enviá-lo à placa para que possa ser executado.
Obviamente, por ser open source, é gratuito. Depois de baixado não
necessita de nenhuma instalação, é só abrir o IDE e começar a utilizar. Para
começar a utilizar, devemos escolher qual placa estamos utilizando, assim vamos
em Tools > Board e à escolhemos. O IDE possui também uma quantidade imensa
Fig. 6.15 - Ambiente de programação
de exemplos. Para utilizá-los basta ir a File > Examples e escolher qual deles você
quer testar, de acordo com sua necessidade.
6.1 ESTRUTURA DO PROGRAMA
O programa para o Arduino é dividido em duas partes principais: Setup e
Loop, mostradas na figura 6.2.
A função setup serve para inicialização da placa e do programa. Esta sessão
é executada uma vez quando a placa é ligada ou resetada através do botão. Aqui,
informamos para o hardware da placa o que vamos utilizar dele. No exemplo, vamos
informar para a placa que o pino 13 será uma saída digital onde está conectado um
LED (no Arduino UNO o pino 13 possui um led integrado).
Fig. 6.16 - Entendendo o programa
A função loop é como se fosse a main () da placa. O programa escrito dentro
da função loop é executado indefinidamente, ou seja, ao terminar a execução da
última linha desta função, o programa inicia novamente a partir da primeira linha da
função loop e continua a executar até que a placa seja desligada ou o botão de
reset seja pressionado.
Analisando o resto do programa, o comando digitalWrite escreve na saída do
pino 13 o nível de tensão HIGH (5v), acendendo o Led. O comando delay é apenas
para o programa aguardar 1000 milésimos. Em seguida, o nível de tensão é alterado
para LOW (0v) e o Led apaga. E assim é repetido infinitamente, até ser desligado.
Com o programa feito, compilamos o mesmo para verificarmos se não existe
nem um erro. Caso não contenha erro, agora temos que enviá-lo para placa através
do botão de upload (os botões estão especificados na figura 4). Após o envio os
Led’s RX e TX deverão piscar, informando que o código está sendo carregado. Logo
após o arduíno começará a executar o programa que lhe foi enviado.
6.2 SERIAL MONITOR
A figura 6.3 mostra o
monitor que é usado para
que possamos comunicar
nossa placa com o
computador, mas também é
muito útil para a depuração
do programa. Basicamente
conectamos a placa no
computador e através desta
tela podemos ver as informações enviadas pela placa.
No exemplo, o comando Serial.begin(9600) inicializa a comunicação com
uma taxa de 9600 baunds (taxa de bits). O comando Serial.println (‘argumento’) envia a mensagem para o computador.
Fig. 6.17 - Exemplo serial monitor
Após compilar e enviar o programa para
placa, abrimos o serial monitor. As
informações enviadas pela nossa placa
Arduino aparecem no console figura 6.4.
6.3 OUTROS COMANDOS
Como já foi informado, e vocês já devem ter observado, a linguagem base
para a programar um Arduino é C. Logo, suas estruturas de controle (if, else, while,
for...), seus elementos de sintaxe ( #define, #include, {}...), operadores aritméticos (+,
-, *, ^ ...), operadores de comparação (==, !=, <, > ...), enfim, todos são utilizados
aqui no IDE. Portanto, saber C é primordial para programar o Arduino em alto nível.
Abaixo segue as principais funções para controlar o arduíno (algumas já
foram especificados acima):
pinMode (pin, mode): Configura o pino especificado para que se
comporte como entrada ou saída, sendo Pin = número do pino e mode =
INPUT ou OUTPUT
digitalWrite (pin,value): escreve um valor HIGH ou LOW em um pino
digital. Se o pino foi configurado como saída sua voltagem será
determinada ao valor correspondente: 5V para HIGH e 0V para LOW. Se
o pino estiver configurado como entrada escrever um HIGH levantará o
resistor interno de 20kΩ. Escrever um LOW rebaixará o resistor.
Obviamente pin = numero do pino e valor = HIGH ou LOW.
int digitalRead (pin): Lê o valor de um pino digital especificado, HIGH ou
LOW. Pin = numero do pino. Retorna HIGH ou LOW.
Int analogRead (pin): Lê o valor de um pino analógico especificado. Pode
mapear voltagens entre 0 a 5v, sendo 4,9mV por unidade.
analogWrite (pin, value): Escreve um valor analógico (onda PWM,
explicaremos mais abaixo). Pode ser utilizada para acender um LED
variando o brilho ou girar um motor a velocidade variável. Após realizar
essa função o pino vai gerar uma onda quadrada estável com ciclo de
Fig. 6.18 - Saída no serial monitor
rendimento especificado até que o próximo analogWrite() seja realizado
(ou que seja realizado um digitalRead() ou digitalWrite() no mesmo pino).
6.3.1 PROGRAMAÇÃO PARA INSETO ROBÔ
É fornecido a plataforma
arduino três linguagens de
programação
como Ardublock, Mente
+ e IDE. Podendo ser
programada simplesmente
arrastando e soltando blocos pré-
concebidos vistos softwares de
programação visual Ardublock e
Mente +. Para programadores
avançados, também é possível
modificar Arduino IDE.
6.3.2 ARDUBLOCKO software Ardublock é um plug-in que é adicionado ao IDE do arduino e que
permite ao usuário programar em blocos de funções, um pouco como scracth4arduino, ou para AppInventor para androide. O bom ponto de ardublock é que gera as linhas de códigos. Além de blocos que são traduções literais das funções na biblioteca Arduino, ele também fornece alguns blocos pré-definidos para trabalhar com uma variedade de componentes eletrônicos apoiados por colher, Adafruit, DFrobot. TINKERKIT do Arduino e suporte parcial para o Grove.
7 MONTAGEM E RESULTADOS
A seguir como é construir o Inseto Robô com 2x 9g micro servo, 1x Cheapduino V2 witht eh Atmega 32U4 e entrada USB para fácil programação. O Cheapduino está soldado no servo / sensor escudo para swervos conexão fácil e de sensores de curso. O pequeno bicho corre com um pequeno 3.7 / 180mAh LiPo
Fig 6.19 - Programação para Inseto Robô
bateria que vem com um carregador USB e está à procura de obstáculos com um sensor IR da Sharp.Escritos suficientes, aí vem as figuras de montagem:
Fig 7.20- Restantes das figuras são de montagem
Basta usar fita dupla face de espuma e zip laços para manter o robô em conjunto.
Cole os dois servos com a fita juntos.
Em seguida, prenda-os com uma fita relemame (enforca gato).
Fixar a bateria sobre o bordo
Deve ficar assim a união dos dois componentes.
Dobrar o fio para moldar as pernas. Ambas as extremidades devem ser do mesmo comprimento. Passar o fio de aço 0,8 milímetros (Utilizamos um fio 304 de aço inoxidável, uma vez que ainda é forte o suficiente para manter a forma depois de flexão, mas macio o suficiente para cortar com um cortador de arame).
Prenda-o com o parafuso que vem com os servos.
Eu usei folha de ABS para cortar um suporte de sensor.
Use o parafuso que vem com o seu servo para prender o suporte do sensor.
O sensor será realizado por pequenos laços zip que se parece muito com antenas ou antenas de um inseto:-)
Vista frontal.
A cabeça ...
Um outro pedaço de fita adesiva do outro lado da bateria ...
... Realizará a bordo, inclusive, a blindagem na parte de trás do robô.
Conecte os servos e o sensor com os pinos certos e você está quase pronto.
Conecte a bateria e ligar o bicho pequeno diante. Ele deve andar para a frente até detectar um obstáculo e desviar em uma curva e depois de um tempo, voltar a andar novamente.
8 CONCLUSÕES
O objetivo de movimentar desviando de obstáculos foi atingido, a montagem
do protótipo ficou dentro das expectativas. Além dos conhecimentos de eletrônica
adquiridos, o projeto permitiu a integração entre várias disciplinas ministradas no
curso, desenvolvimento do dispositivo também foi bastante satisfatório, pois foi
possível trabalhar com a robótica, eletrônica digital e analógica, e com a linguagem