SlideShare une entreprise Scribd logo
1  sur  32
Télécharger pour lire hors ligne
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
Robô seguidor de linha

Sumário
INTRODUÇÃO ........................................................................................................................................ 2

OBEJETIVO GERAL .................................................................................................................................. 3

OBJETIVOS ESPECÍFICO .......................................................................................................................... 4

APRESENTAÇÃO DO MATERIAL .............................................................................................................. 5

 ARDUINO ............................................................................................................................................. 5

 SENSOR SHIELD .................................................................................................................................... 7

 SENSOR UTRASÔNICO .......................................................................................................................... 8

 SENSOR DE LUZ .................................................................................................................................. 10

 DRIVE MOTOR .................................................................................................................................... 11

 MOTOR SERVO ................................................................................................................................... 15

 ALIMENTAÇÃO ................................................................................................................................... 16

MONTAGEM DO ROBÔ ........................................................................................................................ 17
PROGRAMAÇÃO – ESTRUTURA LÓGICA .............................................................................................. 21
PROGRAMAÇÃO TEORIA ..................................................................................................................... 21
PROGRAMAÇÃO DO CARRO ................................................................................................................ 26

Conclusão.......................................................................................................................... 31
Bibliografia ........................................................................................................................ 32




                                                                                                                                                      1
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                           Introdução
Com a revolução industrial e com o surgimento de um mercado competitivo a vida das
pessoas começou a ser facilitado por diversos utensílios que são produzidos o tempo
todo, com passar do tempo a demanda foi aumentando esse fato começou a estimular
os detentores do capital a investir em tecnologia, agora as indústrias eram equipadas
com robô que poderiam ser controlados pelo homem, hoje em dia existe algo muito
mais avançado, a inteligência artificial, método utilizado para que um dispositivo tenha
ações com embasamento no seu ambiente, um robô interage com ambiente através
de atuadores que no caso seria uma garra, por exemplo, ele consegue detectar o
ambiente atrás de sensores, por exemplo, um LDR 1, esse trabalho vai demonstrar
teoricamente a montagem de um carro capaz de seguir uma linha e de detectar um
objeto de dimensões específicas para depois desviar, o carro será montado com
diversos sensores e apenas um tipo de atuador, o conhecimento para montagem desse
carro foi obtido de forma fragmentada ao longo de um ano e meio, muitas técnicas
foram desenvolvidas pelo autor desse trabalho bibliográfico, outras foram conseguidas
ao longo do ano no laboratório de robótica da escola ferreira Viana 2 junto ao
orientador Cesar Bastos e colegas de equipe.




1
  Light Dependent Resistor, Resistor que varia sua resistência na presença da luz, sua composição
química permite ter uma capacidade de diminuir sua resistência na presença da luz
2
  O laboratório de robótica da escola ferreira Viana tem suas atividades as quintas feiras das 18h30min
ate 20h30min terça no mesmo horário para desenvolvimento de projetos dos veteranos

                                                                                                          2
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Objetivo geral
O robô deve seguir um algoritmo que harmonize todos os sensores, o robô e
estruturado da seguinte forma em cima temos um micro controlador da atmel ao lado
de um motor servo que orienta um sensor ultra-sônico no meio temos um drive que
controla os motores em baixo temos um motor ao ladeado por dois sensores de luz, o
carro vai identificar a intensidade luminosa que esta em baixo dele a partir desses
dados é feito um calculo para determinar as propriedades da superfície que ele se
encontra, a cor, textura, ate mesmo a altura que ele se encontra, a partir destes
princípios o carro pode seguir uma linha preta no chão desde que o chão seja
totalmente branco, ou pode seguir uma linha branca desde que o chão seja totalmente
preto, o carro possui um sensor que é capaz de detectar objetos de ate 6 metros de
distancia.




                                                                                  3
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                               Objetivo específico
O robô deve de forma totalmente autônoma seguir uma linha preta em uma pista
especifica para esse tipo de projeto, nessa pista vai existir um obstáculo que deve ser
detectado e desviado depois disso o robô vai tentar localizar a linha para completar o
percurso, para execução dessas tarefas os sensores serão “orientados” pelo uso de um
micro controlador que fará os cálculos e fornecer pulsos para dar inicio aos atuadores,
o micro controlador é programável em linguagem C/C++, a técnica de programação
tem embasamento em inteligência artificial.




                                                                                      4
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                               Apresentação do material

                                             Arduíno
                                   3
   Apresentação do Arduíno: È uma placa micro-controladora baseada no micro-
controlador ATmega 328. Ela tem 14 Pinos Input/output digitais, 6 entradas analógicas,
um botão de reset. Ele contém tudo que é necessário para o suporte do Micro-
controlador, Ligando-a simplesmente a um computador através de um cabo USB, ou
alimentando-o com um Adaptador AC/AD (ou baterias 9V) para dar a partida.

    Especificações do hardware

Micro-controlador                                    ATmega328
Tensão de funcionamento                              5V
Tensão de entrada (recomendado)                      7-12V
Tensão de entrada (limites)                          6-20V
Pinos E/S Digitais                                   14 (dos quais 6 são saídas PWM)
Pinos de Entrada Analógicos                          6
Corrente DC por pino E/S                             40 mA
Corrente DC por pino 3.3V                            50 mA
Memória Flash                                        32KB
SRAM                                                 2Kb
EEPROM                                               1KB


   O Arduíno vem com um bootloader que permite enviar novos programas sem o uso
de um programador de hardware externo. Ele se comunica utilizando o protocolo
original STK500 (referência, C Header file). Também poder-se-á programar o
ATmega328 através do ICSP (in-Circuit Serial Programming) header;4

    Memória

   O ATmega tem 32KB de memória flash para armazenar o código ( dos quais 2KB são
utilizados pelo bootloader), além de 2 KB de SRAM e 1 KB de EEPROM (electrically-
erasable programmable Read-Only memory), quepode ser lida e escrita através da
biblioteca EEPROM.

    Comunicação

   Com o Arduíno, a comunicação com um computador, com outro Arduíno ou com
outros micro-controladores é muito simplificada. O ATmega328 permite comunicação
série no padrão UART TTL (5V), que está disponível nos pinos digitais 0 (RX) e 1 (TX).

3
  Texto extraído da revista ‘Saber eletrônica’; Ano 47; nº454-2011; Editora Saber LTDA páginas 12 a 15.
Autor Filipe pereira
4
  Embasamento retirado da apostila da PET auto net autor: Micael bronzatti

                                                                                                          5
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
Um chip FTDI FT232RL na placa encaminha esta comunicação série através do USB e os
drives FTDI (incluído no software do Arduíno) fornecem uma porta COM virtual para o
software no computador. O software Arduíno inclui um monitor série que permite que
dados simples de texto sejam enviados à placa Arduíno.

   Veja a aparência física do Arduíno.




   Programação

   A programação é em C/C++ e estruturada em condicionais (if,else,for,while,do
while,swith) o Arduíno já vem com uma biblioteca com funções como DigitalWrite
DigitalRead (escrever e ler sinais digitais), A programação será mais detalhada no
tópico “programação Estrutura lógica”




                                                                                     6
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Sensor Shield




Com a fama do Arduíno começou a produção de placas que mais tarde foram
chamadas de Shield, tais placas são encaixadas perfeitamente no Arduíno para
aumentar a capacidade e a funcionalidade o mesmo, o sensor facilita o acesso as
portas e fornece um pino de VCC (5v) e pino GND (terra) para as portas digitais, para
as portas analógicas temos uma entrada especifica para sensores (três pinos )
Sinal,vcc,gnd agora essa placa fornece terra e vcc para suprir grandes projetos como
esse que usa diversos sensores.




                                                                                        7
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Sensor Ultrassônico
   O ultra-som é um som, uma onda de pressão com uma freqüência maior do que o
limite superior audição humana, não Há muitos sons na faixa Ultra podemos
aproveitar uma propriedade da onde muito interessante. Quando emitimos uma onda
para um local caso haja um obstáculo ela pode sofrer uma reflexão e voltar, veja a
figura5




      Então para simular calcular a distancia em que uma parede esta de você, é preciso
    saber a “velocidade do som” tempo da emissão e o momento da captação a partir de
     um calculo pode-se determinar a distancia de um objeto, para simular esse evento
              com ultra-som usamos um emissor sônico junto com um receptor




Agora a parte que de fato interessa, ou você monta um circuito para amplificar os
sinais e toda “parafernália” que esse circuito vai precisar ou simplesmente compra




5
 Esse artigo foi retirado do site http://robotizando.com/blog/ultrasonic-sensor-sensor-de-distancia/
artigo que foi escrito pelo autor deste trabalho bibliográfico

                                                                                                       8
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
Um módulo (quem souber eletrônica a fundo tente
montar). Ultrassônico no Arduíno ou ultra sônico tanto faz, com o Arduíno o ultra som
e muito fácil de usar, O sensor ultra-sônico e muito usado na robótica

Veja o modulo do sensor ultrassônico




                                       Vcc: tensão 5V
                                    TRIG: comunicação
                                    ECHO: comunicação
                                       GND : Terra

  As especificações mais precisas do funcionamento serão explicadas em outro tópico
que fala sobre a programação.




                                                                                    9
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Sensor de linha




Esse sensor tem um emissor infravermelho e um receptor quando é emitido um feche
de luz (infravermelho) o receptor recebe a luz que volta por reflexão dependendo da
cor da superfície o receptor varia sua resistência, então para nosso entendimento
vamos teorizar vamos dividir a variação em 1024 valores diferentes, para preto vamos
supor que seja 0 e para branco 1024, esse sensor faz exatamente isso ele possui um
regulador um” potenciômetro” que regula a precisão do sensor e um CI que modulo
as variações de forma a transforma essa variação toda em um sinal digital 0 ou 1 logo
esse sensor só detecta preto ou branco, Isso e bem vantajoso pois ler um sinal digital e
mais rápido do que ler um sinal tão variável como o analógico, quanto mais rápido a
freqüência de leitura do sinal digital mais rápido será a resposta do controlador, o
Arduíno demora cerca de 10 Microssegundos para ler uma porta.




                                                                                      10
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                           Drive Motor
E bem difícil imaginar um robô que não tenha motor ou alguma forma de se
locomover, nesse projeto utilizamos 4 motores normais que funcionam um uma
tensão de 3V seu torque aumenta de acordo com a corrente ate certos limites
desconhecidos nesse projeto, nesse projeto e muito interessante o controle do motor
tanto para um sentido quanto para outro, esse problema pode ser controlado
utilizando um método de chaveamento de transistores, esse método e conhecido
como Ponte H 6




Esse simples circuito resolve nosso problema porem apenas para um motor, existem
outros fatores que complicam que incentiva a procura por uma nova saída de fato
existe duas alternativas uma e totalmente inviável seria a utilização de relés a outra
seria usar um CI para essa funcionalidade, hoje em dia existem muitos, vamos usar
nesse projeto L298N esse CI nos permite controlar dois motores, ou seja, cada Ci tem
duas pontes H internas, veja os pinos




6
    Ponte H pois sua forma esquemática lembra a letra H

                                                                                     11
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com




                        Vamos a uma breve explicação dos pinos
                   OUTPUT: são saídas que vão alimentar os motores
   INPUT: São entradas que recebem sinais lógicos (5V) que alternam o sentido da
                               corrente das saídas output
                   LOGIC SUPPLY VSS: 5V (sinal para alimentar o CI )
                    SUPPLY VSS: tensão para alimentar os motores




                                                                                   12
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
          Para um melhor funcionamento desse ci se deve fazer essa ligação




Pronto agora sim temos um drive que controle nossos motores, porem para o melhor
desempenho vamos usar um modulo que contem tudo Isso em SMD resistores de 1%
de precisão fusível e reguladores também contem um Dissipador de calor . Veja a
imagem




                                                                                  13
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com




                                    14
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Motor Servo
 Para mover o robô usamos um motor comum, porem para controlar o movimento do
      sensor ultrassônico precisamos de um motor que mapeie o movimento seu
movimento, infelizmente o moto servo não faz isso porem ele possibilita o movimento
 em graus em certos limites (180º) assim temos podemos mover o motor para ambos
os lados sem muito problema tanto para um sentido quanto para outro, o motor servo
  contem uma ponte H interna, também existe um jogo de engrenagem denominada
Caixa de redução que fornece uma vantagem mecânica ao movimento final do motor,
ou seja, temos um motor com mais torque (força) veja um motor servo internamente




Existe um protocolo de comunicação que desconheço para esse tipo de motor, porem
  existe uma biblioteca que facilita essa comunicação o motor servo utilizado é esse




                                                                                  15
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Alimentação
O Arduíno precisa de uma alimentação própria, o drive motor também assim como
todos os sensores e como qual quer componente eletrônico nesse projeto vamos ter 2
alimentações e talvez uma terceira em caso de necessidade de potencia

Suporte para bateria (alimentação do Arduíno)




                   Suporte para pilhas (alimentação do Motor drive)




                                                                                16
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                                  7



                                   Montagem do robô
Alimentação:

Pino Vin. alimentação do Arduíno                      9V (bateria)
Drive motor                                           9V (6 pilhas)
Sensor de Cor A                                       5V (pino sensor shield)
Sensor de Cor B                                       5V (pino sensor shield)
Ultrassônico                                          5V (pino sensor shield)
Ligações digitais

                 Ligação                                    Pino correspondente Arduíno
~~ sem ligação ~~                                     13
~~ sem ligação ~~                                     12
~~ sem ligação ~~                                     11
Controle do motor para frente “A”                     10
Controle do motor para trás “A”                       9
Controle do Motor Servo                               8
TRIG Pino do sonar                                    7
Controle do motor para frente “B”                     6
Controle do motor para trás “B”                       5
ECHO pino do sonar                                    4
Sensor óptico da Esquerda                             3
~~ sem ligação ~~                                     2
~~ sem ligação ~~                                     1
Terra do drive motor                                  GND (terra)
Suplemento de energia lógica (5v)                     5V (alimentação)
Bateria 9V                                            Vin (voltagem de entrada )
~~ sem ligação ~~                                     Todas as portas Analógicas
Motor 1 E 2                                           São ligados em paralelo
Motor 3 E 4                                           São ligados em paralelo


Observações:




7
  Essa imagem foi retirada do site dealextreme, um site de venda de equipamentos importados, foi
nesse site que fiz a compra de todos os equipamentos para esse projeto

                                                                                                   17
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
  Todas as ligações foram feitas utilizando cabos Jump, o cabo tem uma entrada que
 entra perfeitamente nos sensores no drive e no Arduíno, ou seja, esse cabo é padrão




Estrutura:

O robô tem dois andares são conectados por parafusos (espaçadores) cerca de 5 cm de
distancia entre um e outro no meio fica o drive do motor os mores são presos por um
suporte de alumínio que e preso por dois parafuso com porcas, são 4 motores.




                                                                                  18
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com




                                    19
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
Veja a imagem ilustrando os 4 motores o primeiro e o segundo andar com o drive
motor no meio, o robô precisa se mover então faz se necessário rodas.




Observação: as rodas são emborrachadas o material gera um atrito muito grande ate
em superfícies totalmente lisas, isso gera um problema na locomoção do carro então
para driblar esse problema a borracha da roda foi retirada, com o diminuição do atrito
o robô passou a fazer curvas mais perfeitas e a sua precisão aumentou muito.

Montagem do sonar com servo:

O sonar esta ligado ao servo por um suporte improvisado colado a um conjunto de
cabos com cola quente com objetivo de mover o sonar para melhor utilizá-lo.




                                                                                    20
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                             Programação estrutura lógica
                                                Teoria
Introdução:

 Cada movimento do robô será orientado por um algoritmo escrito em uma linguagem
de programação a usada nesse projeto foi C/C++, esse tópico vai detalhar como
funciona a linguagem, sua estrutura lógica e alguns exemplos aplicados ao projeto, não
vou poder prolongar muito o funcionamento, pois não e o foco principal.

Plataforma IDE:

O Arduíno possui um programa8 para desenvolvimento do programa que vai dar “vida”
ao robô, o programa tem um Debug9 a fim de detectar erros e possui uma ferramenta
para visualizar os dados da porta serial, veja a aparência do programa.




8
    Esse programa pode ser adquirido no site www.arduino.cc
9
    Debug e um Script que fica na IDE para detectar erros na programação

                                                                                   21
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
Funcionamento da IDE

Cada parte da ide tem uma função veja a ilustração abaixo




                               Estrutura da linguagem
Variável:

Antes de falar de variáveis é costume meu antes de explicar uma linguagem de
programação por trabalho escrito é dar um “HELLO WORD” bom como o Arduíno não
tem propriamente um lugar para Exibir essa mensagem temos que usar um artifício
então vamos ficar com ‘Serial.print(“HELLO WORD”);’

Variáveis são como gavetas que tem a função de guardar dados, as variáveis guardam
dados na memória do micro-processador, para declarar uma variável você precisa
dizer o tipo dela se e um numero ou caráter ou um dado booleano depois dar um
nome a ela desde que o primeiro caráter seja uma letra e não tenha espaços, depois




                                                                                 22
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
atribuir um valor da seguinte forma




Estruturas de controle

Estrutura de controle e responsável por “guiar” o código para com alguma orientação

IF () { }

If é uma condicional dentro dos () fica um teste lógico feito a partir de operadores é
um assunto que não vou poder detalhar nesse trabalho. Veja a imagem




                                                                                         23
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
o if faz uma pergunta a condição se ela for verdadeira executa o que esta dentro das
chaves caso não for essa estrutura e “pulada”

                                    If (condição) {
                                    corpo
                                    }




Para complementar essa condição existe ELSE que executa caso a condição não seja
verdadeira
                             If (condição) {
                             executa aqui se a condição
                             for verdadeira
                             } ELSE {
                             executa aqui caso a condição
                             for falsa
                             }


Estrutura de repetição:
o for e uma estrutura com que gera uma repetição controlada veja a sintaxe

                       For (iniciação;Condição;incremento)
                       {
                       comandos a serem repetidos
                       }




Incremento é a técnica de adicionar +1 a uma variável a sintaxe e (variavel++)

Funções Nativas

Não vai da para detalhar todas as estruturas de programação por isso só descrevi as
mais básicas. O Arduíno possui funções nativas, ou seja, funções que tem uma atuação
que esta difícil para descrever veja na lista a baixo algumas funções do que vem com o
Arduíno.




                                                                                       24
Autor: Isvaldo Fernandes de Souza
        Delay(tempo); // pausa o programa por um tempo X
Site: www.robotizando.com
Email: Miojex360@hotmail.com comando obrigatório para informa tipo de porta
        pinMode(pino,tipo); //
        digitalWrite(pino,estado); // envia um estado para uma porta
        digitalRead(pino); // faz a leitura de uma entrada
        analogWrite(pino,força); escreve de 0 a 5 V no pino sendo dividido em 0
        a 255 valores que representam 0-5v


Bibliotecas:

Biblioteca no mundo da programação representa uma Class, e class é uma estrutura
que agrupa funções nesse trabalho usamos a biblioteca para controlar o Sonar e o
moto servo, o Arduíno possui milhares de class preparadas para da suporte a todo tipo
de equipamento, alem de facilitar o uso de class também simplifica o código, hoje em
dia o uso de class e tão importante que recebeu ate um nome, Programação orientada
a objeto, esse nome é bem impactante no mercado, muita gente fica boba quando
ouve falar de POO.



Conexão:

É muito importante mencionar que o Arduíno pode fazer uma comunicação serial o
código para fazer essa tarefa e através de uma biblioteca chamada Serial com esse
recurso se torna possível analisar os dados que são obtidos pelo dispositivo pelo
computador, dessa forma facilitando a analise o projeto fica mais fácil de ser
construído e elaborado.

Interação ambiente X programação:

Essa interação se baseia na seguinte teoria, através de sensores no ambiente o robô
toma executa ações através de atuadores, esse é o principio da inteligência artificial
nosso robô usa a programação para comparar situações e tomar uma atitude, por
exemplo, “caso houver um obstáculo desvie se não tiver seguir reto” a partir de
diversas deduções lógicas o algoritmo chega a possuiu uma espécie de inteligência
artificial, inteligência artificial é algo muito mais complicado do que parece, eu já fiz
alguns projetos voltados à inteligência artificial porem não tive muito sucesso, esse
projeto, por exemplo, é seqüencial, pois segue uma regra e caso essa regra não exista
ele se desorienta e não procura resolver o problema, um exemplo, um robô seguidor
de linha segue uma linha preta e o chão e branco, se eu pudesse inverter isso o chão
preto e a linha branca, o robô se perderia na mesma hora entre tanto um robô com
inteligência artificial poderia bolar um meio através de seu próprio algoritmo para
tentar entender a situação e talvez compreender que pode inverta a ordem seguir a
linha branca ao invés da preta.




                                                                                        25
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                              Programação do carro


Para compor o algoritmo do robô desenvolvi funções para facilitar a visualização e
futuras modificações no programa, para entender a programação vou dividir ela em 6
partes.

1)Declaração de variáveis e objetos

Nessa parte declaro todo tipo de variável, referencia ou objeto, variável como já
explicado e um endereço de memória que pode ser escrita ou lida a qual quer
momento, Referencia é uma técnica para evitar usar um nome ou numero muitas
vezes ou mesmo para organizar usamos uma referencia que na hora de Copilar “passar
para placa” a referencia é alterada pelo valor, dessa forma facilitando, e evitando o
uso de espaço na memória.


         #include "Ultrasonic.h" // incluir o arquivo da lib
         #include "Servo.h" // incluir arquivo da lib
         #define TRIG_PIN 7
         #define ECHO_PIN 4
         #define SEE 3
         #define SED 0
         #define DMF 10
         #define DMT 9
         #define EMF 5
         #define EMT 6
         Servo motor; // Lib Servor
         Ultrasonic OurModule(TRIG_PIN, ECHO_PIN); // Lib Ultrasonic
         int vel=255; // velocidade curva
         int tempo1=350; // tempo de curva



A variável vel e responsável pelo controle da velocidade com que o carro faz uma curva
e tempo1 é o intervalo de tempo em mile segundos que ele vai fazer a curva na
velocidade “vel”, Servo motor e utrasonic são bibliotecas usadas no programa.




                                                                                   26
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
2)Função Move

o robô se locomove através de 4 motores que são ligados em em pares (em paralelo)
para que funcione bolei o seguinte função move(); essa função tem 4 argumentos que
simbolizam o chaveamento do drive por exemplo Move(255,0,255,0); moveria o meu
motor a velocidade máxima para frente, veja dessa maneira Move(velocidade A para
frente, Velocidade A para trás,Velocidade B para frente,velocidade B para trás); essa
função foi montada com a estrutura abaixo.


                    void move(int DmF, int DmT, int EmF, int EmT)
                    {
                    analogWrite(DMF, DmF);
                    analogWrite(DMT, DmT);
                    analogWrite(EMF, EmF);
                    analogWrite(EMT, EmT);
                    }




3) Função Seguir linha

Essa função é bem mais complexa do que a anterior, então vamos detalhar bem ela,
primeiro é importante explicar que essa função usa a função anterior para mover o
robô, primeiramente vamos jogar no “ar” o objetivo da função, Seguir linha para
conseguir essa façanha bolei uma técnica a partir de um método cientifico vou colocar
uma verdade absoluta e a partir dela fazer deduções, essa verdade será “o robô vai ser
ligado De baixo de uma linha” isso não precisa ser verdade porem a partir desse
postulado posso fazer com que ele não saia de baixo dela, colocando os sensores na
frente afastado por certa distancia para depois fazer uma leitura digital, retorna 1 para
perto e 0 , o algoritmo funcionara da seguinte forma caso o sensor da esquerda ver
preto (a linha é preta) o carro vira um pouco para direita caso o sensor da direita ver
preto o carro vai um pouco para esquerda,logo o carro vai fazer o movimento inverso
do sensor que responder com 1 (preto), para melhor analise na hora da construção do
robô usei a comunicação serial para ver no display o estado no qual o robô estava,
existe um pequeno tempo nomeado tempo1 que é o tempo de curva já explicada na
primeira divisão da programação.




                                                                                       27
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Script da função

           void linha () {
           if (digitalRead(SED)==1){ //esquerda
             move(vel,0,0,vel);
             delay(tempo1);
             Serial.print("esquerda");
              Serial.println("n");
             Serial.println(digitalRead(SED));
           }
           else if (digitalRead(SEE)==1){ //direita
              move(0,vel,vel,0);
              delay(tempo1);
              Serial.print("direita");
              Serial.println("n");
              Serial.println(digitalRead(SEE));
           }
           Serial.print("seguindo para frente");
              Serial.println("n");
           move(150,0,150,0);
           delay(10);
           }



4) Detector de Obstáculos

 Além de seguir linha nosso robô e será capaz de detectar um obstáculo e desviar para
isso ele usei um motor servo para mover o sonar que faz a leitura em centímetros dos
objetos ao redor, existe uma rotina chamada “loop” que vamos detalhar em outro
tópico que faz a verificação constante da possibilidade de existir um obstáculo, a
função que detecta obstáculo tem o nome de pedra, depois que o algoritmo já estiver
certo que há um obstáculo a função pedra vai virar o servo para esquerda e para
direita para verificar qual lado e disponível para passar depois disso ele escolhe o lado
que estiver livre, caso os dois estejam livre ele vai para direita por padrão, para o
funcionamento adequado do sensor existe um tempo de espera para executar o
movimento do motor, o motor servo gira em graus, 90 -> mirado para frente, 0,
esquerda ,180 Direita , veja o script na próxima pagina.




                                                                                       28
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                            Script para desviar de obstáculo

        void pedra () {
        int Sensor_teste = 0;
        motor.write(90);
        delay(500);
        motor.write(0); // realocar para esquerda
        delay(500);
        if (OurModule.Ranging(CM) > 10) {
        motor.write(90);
        delay(500);
        Sensor_teste = 1;
        }
        motor.write(180); // realocar para direita
        delay(500);
        if (OurModule.Ranging(CM) > 10) {
         motor.write(90);
         delay(500);
         Sensor_teste = 2;
        } // parte responsavel pelo movimento do carro apos detectar os objetos
        if (Sensor_teste==2) { // se encontrar uma pedra na direita virar para esquerda
        move(vel,0,0,vel);
        delay(tempo1);
         }if else (Sensor_teste==1) { // se encontra uma pedra na esquerda vira para
        direita
         move(0,vel,vel,0);
          delay(tempo1);
         else { // caso não houver nenhuma pedra virar para direita por padrão
         move(0,vel,vel,0);
          delay(tempo1);
         }
        }
        }
5)preparação

Antes de fato de executar o script é preciso fazer uma preparação, para por exemplo
posicionar o sonar declarar entradas e algumas portas



                         void setup () {
                          pinMode(SED,INPUT);
                          pinMode(SEE,INPUT);
                          Serial.begin(9600);
                          motor.attach(8);
                          motor.write(90);
                          delay(500);                                                     29
                         }
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
6)rotina de repetição

Finalmente a parte final, ate então só declarei e preparei o programa de fato, agora o
programa vai entra em uma rotina infinita, nessa parte o programa vai organizar a
cadeia de eventos


         void loop () {
          linha();
           if (OurModule.Ranging(CM) < 15) {
           delay(200);
            if (OurModule.Ranging(CM) < 15) {
           pedra();
           }
         }
         }




Nessa ultima parte há um teste para ver se existe obstáculo, para ter certeza que não
haja uma interferência momentânea (caso o sonar detectar um obstáculo sem de fato
existir) o algoritmo fará um segundo teste e só assim executara a função pedra.




                                                                                     30
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                     Conclusão
Esse trabalho possibilitou a analise de dados de diversas áreas que a robótica atua.

Eletrônica:

Houve diversos problemas com uso de baterias o Arduíno consome muito em poucos
minutos uma bateria normal de 9V não consegue mais da suporte ao robô, isso se
deve pelo fato de ter N sensores drives entre outras coisas alimentadas pelo Arduíno.

Física:

As rodas de borracha causam muito atrito com o chão, isso se torna um problema na
hora de fazer curvas, outra analise interessante é com os sensores, a distancia dos
sensores com o chão e determinante para a precisão do sensor.

Programação:

É preciso muita organização no código, pois o código e constantemente alterado por
isso e importante desenvolver funções em forma de diagrama, pois caso uma parte
não funcionar, assim podemos ir direto ao erro e conserta sem a necessidade de
analisar todo o código, estruturar com base em objetos e referencias aumentou
bastante a velocidade de processamento do programa.




                                                                                       31
Autor: Isvaldo Fernandes de Souza
Site: www.robotizando.com
Email: Miojex360@hotmail.com
                                    Bibliografia
Bronzatti,AutoNet,Aprendendo a programar em Arduíno,realização PET

Marshall Brain. "HowStuffWorks - Como funciona a programação em C". Publicado
em 01 de abril de 2000 (atualizado em 14 de maio de 2008)
http://informatica.hsw.uol.com.br/programacao-em-c.htm (26 de julho de 2012)

SOAREZ, R. Curso de robots m´oviles. Universidad Carlos III de Madrid, Nov. 1999.

WALLNER, F., AND DILLMANN, R. Real-time map refinement by use of sonar and
active stereo-vision. Robotics and Autonomous Systems, 16 (1995), 47–56.




                                                                                    32

Contenu connexe

Tendances

Introdução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoIntrodução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoRayner Pires
 
Arduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIYArduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIYVishnu
 
EV3#2: Exercícios introdutórios
EV3#2: Exercícios introdutóriosEV3#2: Exercícios introdutórios
EV3#2: Exercícios introdutóriosAna Carneirinho
 
Maze solving robot
Maze solving robotMaze solving robot
Maze solving robotKevin Mathew
 
5 Simple Arduino Projects for Beginners
5 Simple Arduino Projects for Beginners5 Simple Arduino Projects for Beginners
5 Simple Arduino Projects for BeginnersJayant Bhatnagar
 
Arduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic ArduinoArduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic ArduinoVishnu
 
MPU6050 IMU with Arduino
MPU6050 IMU with ArduinoMPU6050 IMU with Arduino
MPU6050 IMU with Arduinoyeokm1
 
EV3#3: Exercicios com o sensor de ultrassons
EV3#3: Exercicios com o sensor de ultrassonsEV3#3: Exercicios com o sensor de ultrassons
EV3#3: Exercicios com o sensor de ultrassonsAna Carneirinho
 
Evolução dos Computadores
Evolução dos ComputadoresEvolução dos Computadores
Evolução dos Computadoresstordehistoria
 
Electronic Notice Board Using Raspberry Pi and Android Phone
Electronic Notice Board Using Raspberry Pi and Android PhoneElectronic Notice Board Using Raspberry Pi and Android Phone
Electronic Notice Board Using Raspberry Pi and Android PhoneBrijender k
 
MANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdf
MANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdfMANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdf
MANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdfTurmaBioC11FTC
 
Energia: Conversão e Transformação INN/SE
Energia: Conversão e Transformação INN/SEEnergia: Conversão e Transformação INN/SE
Energia: Conversão e Transformação INN/SESMEdeItabaianinha
 
embedded systems and robotics on avr platform
embedded systems and robotics on avr platformembedded systems and robotics on avr platform
embedded systems and robotics on avr platformNeha Sharma
 
Sistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes ElétricosSistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes ElétricosSuzana Viana Mota
 
Pensamento Computacional @ Education 4.0
Pensamento Computacional @ Education 4.0Pensamento Computacional @ Education 4.0
Pensamento Computacional @ Education 4.0Artur Coelho
 
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresCarlos Eduardo Pantoja
 
Engenharia de Software para Jogos
Engenharia de  Software para JogosEngenharia de  Software para Jogos
Engenharia de Software para JogosRicardo Leite
 

Tendances (20)

Introdução à Programação com Robôs Lego
Introdução à Programação com Robôs LegoIntrodução à Programação com Robôs Lego
Introdução à Programação com Robôs Lego
 
Arduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIYArduino Workshop Day 2 - Advance Arduino & DIY
Arduino Workshop Day 2 - Advance Arduino & DIY
 
EV3#2: Exercícios introdutórios
EV3#2: Exercícios introdutóriosEV3#2: Exercícios introdutórios
EV3#2: Exercícios introdutórios
 
Maze solving robot
Maze solving robotMaze solving robot
Maze solving robot
 
Robótica apostila
Robótica  apostilaRobótica  apostila
Robótica apostila
 
5 Simple Arduino Projects for Beginners
5 Simple Arduino Projects for Beginners5 Simple Arduino Projects for Beginners
5 Simple Arduino Projects for Beginners
 
Arduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic ArduinoArduino Workshop Day 1 - Basic Arduino
Arduino Workshop Day 1 - Basic Arduino
 
MPU6050 IMU with Arduino
MPU6050 IMU with ArduinoMPU6050 IMU with Arduino
MPU6050 IMU with Arduino
 
EV3#3: Exercicios com o sensor de ultrassons
EV3#3: Exercicios com o sensor de ultrassonsEV3#3: Exercicios com o sensor de ultrassons
EV3#3: Exercicios com o sensor de ultrassons
 
Evolução dos Computadores
Evolução dos ComputadoresEvolução dos Computadores
Evolução dos Computadores
 
Electronic Notice Board Using Raspberry Pi and Android Phone
Electronic Notice Board Using Raspberry Pi and Android PhoneElectronic Notice Board Using Raspberry Pi and Android Phone
Electronic Notice Board Using Raspberry Pi and Android Phone
 
MANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdf
MANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdfMANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdf
MANUAL EDUCAÇÃO CONECTADA - PDDE INTERATIVO 2022.pdf
 
Energia: Conversão e Transformação INN/SE
Energia: Conversão e Transformação INN/SEEnergia: Conversão e Transformação INN/SE
Energia: Conversão e Transformação INN/SE
 
Sobre Robótica
Sobre RobóticaSobre Robótica
Sobre Robótica
 
embedded systems and robotics on avr platform
embedded systems and robotics on avr platformembedded systems and robotics on avr platform
embedded systems and robotics on avr platform
 
Sistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes ElétricosSistemas Digitais - Aula 02 - Componentes Elétricos
Sistemas Digitais - Aula 02 - Componentes Elétricos
 
Pensamento Computacional @ Education 4.0
Pensamento Computacional @ Education 4.0Pensamento Computacional @ Education 4.0
Pensamento Computacional @ Education 4.0
 
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de MicrocontroladoresIntrodução ao Arduino: Fundamentos e Aplicações de Microcontroladores
Introdução ao Arduino: Fundamentos e Aplicações de Microcontroladores
 
Engenharia de Software para Jogos
Engenharia de  Software para JogosEngenharia de  Software para Jogos
Engenharia de Software para Jogos
 
07 potencia elétrica
07  potencia elétrica07  potencia elétrica
07 potencia elétrica
 

En vedette

EV3#7: Exercicios seguidor de linha
EV3#7: Exercicios seguidor de linhaEV3#7: Exercicios seguidor de linha
EV3#7: Exercicios seguidor de linhaAna Carneirinho
 
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®Aparecida Bezerra
 
Programando robôs Lego com NXC
Programando robôs Lego com NXC Programando robôs Lego com NXC
Programando robôs Lego com NXC Isvaldo Souza
 
EV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor corEV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor corAna Carneirinho
 
Projeto arduino@22
Projeto arduino@22Projeto arduino@22
Projeto arduino@22bdfe
 
User guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all ptUser guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all ptAdriano Cardoso
 
Seguidor de linea
Seguidor de lineaSeguidor de linea
Seguidor de lineaMichael_CrL
 
The NFCA Story : Regional Collaboration for Shared Success
The NFCA Story : Regional Collaboration for Shared SuccessThe NFCA Story : Regional Collaboration for Shared Success
The NFCA Story : Regional Collaboration for Shared SuccessNFCACoops
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroRoberson Alves
 
Poster roboseguidordelinha
Poster roboseguidordelinhaPoster roboseguidordelinha
Poster roboseguidordelinhabdfe
 
Ementa Mecatrônica subsequente
Ementa Mecatrônica subsequenteEmenta Mecatrônica subsequente
Ementa Mecatrônica subsequenteCamilaClivati
 
Matriz Mecatrônica integrado
Matriz Mecatrônica integradoMatriz Mecatrônica integrado
Matriz Mecatrônica integradoCamilaClivati
 
PALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESB
PALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESBPALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESB
PALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESBWellington Azevedo
 

En vedette (20)

EV3#7: Exercicios seguidor de linha
EV3#7: Exercicios seguidor de linhaEV3#7: Exercicios seguidor de linha
EV3#7: Exercicios seguidor de linha
 
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
Programação de Lego Mindstorms NXT 2.0 Utilizando MATLAB®
 
Programando robôs Lego com NXC
Programando robôs Lego com NXC Programando robôs Lego com NXC
Programando robôs Lego com NXC
 
Seguidor de linha
Seguidor de linhaSeguidor de linha
Seguidor de linha
 
EV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor corEV3#5: Exercicios com o sensor cor
EV3#5: Exercicios com o sensor cor
 
Projeto arduino@22
Projeto arduino@22Projeto arduino@22
Projeto arduino@22
 
Apostila de maquinas cc
Apostila de maquinas ccApostila de maquinas cc
Apostila de maquinas cc
 
User guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all ptUser guide lego mindstorms ev3 10 all pt
User guide lego mindstorms ev3 10 all pt
 
Seguidor de linea
Seguidor de lineaSeguidor de linea
Seguidor de linea
 
Monografia Arduino
Monografia ArduinoMonografia Arduino
Monografia Arduino
 
The NFCA Story : Regional Collaboration for Shared Success
The NFCA Story : Regional Collaboration for Shared SuccessThe NFCA Story : Regional Collaboration for Shared Success
The NFCA Story : Regional Collaboration for Shared Success
 
40
4040
40
 
Aula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometroAula06 phonegap camera_acelerometro
Aula06 phonegap camera_acelerometro
 
Poster roboseguidordelinha
Poster roboseguidordelinhaPoster roboseguidordelinha
Poster roboseguidordelinha
 
Sensor de Cor
Sensor de CorSensor de Cor
Sensor de Cor
 
Robotica para-humanos
Robotica para-humanosRobotica para-humanos
Robotica para-humanos
 
Apresentação lego - Aula 1
Apresentação lego - Aula 1Apresentação lego - Aula 1
Apresentação lego - Aula 1
 
Ementa Mecatrônica subsequente
Ementa Mecatrônica subsequenteEmenta Mecatrônica subsequente
Ementa Mecatrônica subsequente
 
Matriz Mecatrônica integrado
Matriz Mecatrônica integradoMatriz Mecatrônica integrado
Matriz Mecatrônica integrado
 
PALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESB
PALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESBPALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESB
PALESTRA SOBRE COMPETIÇÕES DE ROBÓTICA NA SECOMP – UESB
 

Similaire à Robô seguidor de linha

Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16Gabriel Lima
 
Workshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoWorkshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoArticacc, Lda
 
Sindpd introducao arduinodomotica
Sindpd introducao arduinodomoticaSindpd introducao arduinodomotica
Sindpd introducao arduinodomoticaDesiree Santos
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaLinux User Goup Alagoas
 
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEMMICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEMzelmasantos2015
 
Workshop iniciação à robótica - Gyro
Workshop iniciação à robótica - GyroWorkshop iniciação à robótica - Gyro
Workshop iniciação à robótica - GyroArticacc, Lda
 
Introdução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoIntrodução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoFelipe Martins
 
Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoDomingosRodrigues16
 
Interfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveisInterfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveisTiago Barros
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceRicardo Rufino
 
Arduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreArduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreMarcelo Laranjeira Melo
 
Arduíno muito prazer
Arduíno muito prazerArduíno muito prazer
Arduíno muito prazerHeider Lopes
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptxfmtpereira
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduinoEdson Paz
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoSamir Siqueira
 
Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Eronides Da Silva Neto
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoMarcelo Laranjeira Melo
 

Similaire à Robô seguidor de linha (20)

Arduino
ArduinoArduino
Arduino
 
Gerenciador do atmega16
Gerenciador do atmega16Gerenciador do atmega16
Gerenciador do atmega16
 
Workshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - FarruscoWorkshop iniciação à robótica - Farrusco
Workshop iniciação à robótica - Farrusco
 
Sindpd introducao arduinodomotica
Sindpd introducao arduinodomoticaSindpd introducao arduinodomotica
Sindpd introducao arduinodomotica
 
Software Livre para Aplicações em Robótica
Software Livre para Aplicações em RobóticaSoftware Livre para Aplicações em Robótica
Software Livre para Aplicações em Robótica
 
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEMMICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
MICROCONTROLADORES E PLATAFORMAS DE PROTOTIPAGEM
 
Workshop iniciação à robótica - Gyro
Workshop iniciação à robótica - GyroWorkshop iniciação à robótica - Gyro
Workshop iniciação à robótica - Gyro
 
Introdução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-cursoIntrodução a Sistemas Embarcados com Arduino - mini-curso
Introdução a Sistemas Embarcados com Arduino - mini-curso
 
Robótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando ArduinoRobótica e Sistemas interativos utilizando Arduino
Robótica e Sistemas interativos utilizando Arduino
 
Interfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveisInterfaces fisicas para dispositivos moveis
Interfaces fisicas para dispositivos moveis
 
TDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDeviceTDC2014 - Internet das Coisas - Arduino & OpenDevice
TDC2014 - Internet das Coisas - Arduino & OpenDevice
 
Oficina Arduino
Oficina ArduinoOficina Arduino
Oficina Arduino
 
Arduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livreArduino - Desenvolvendo com hardware livre
Arduino - Desenvolvendo com hardware livre
 
Arduíno muito prazer
Arduíno muito prazerArduíno muito prazer
Arduíno muito prazer
 
Microcontroladores PIC.pptx
Microcontroladores PIC.pptxMicrocontroladores PIC.pptx
Microcontroladores PIC.pptx
 
Apostila arduino
Apostila arduinoApostila arduino
Apostila arduino
 
V2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduinoV2 - Microcontroladores: a revolucao do arduino
V2 - Microcontroladores: a revolucao do arduino
 
Erus minicurso arduino
Erus minicurso arduinoErus minicurso arduino
Erus minicurso arduino
 
Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)Plataformas open-source para Internet das Coisas (IoT)
Plataformas open-source para Internet das Coisas (IoT)
 
Arduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo modernoArduino: Soluções para o mundo moderno
Arduino: Soluções para o mundo moderno
 

Plus de Isvaldo Souza

Roteiro pedro pazelli slide apresentação
Roteiro pedro pazelli slide apresentaçãoRoteiro pedro pazelli slide apresentação
Roteiro pedro pazelli slide apresentaçãoIsvaldo Souza
 
Demostração da capacidade máxima de geração de senhas fortes
Demostração da capacidade máxima de geração de senhas fortesDemostração da capacidade máxima de geração de senhas fortes
Demostração da capacidade máxima de geração de senhas fortesIsvaldo Souza
 
Lógica clássica e suas aplicações em sistema de recomendação
Lógica clássica e suas aplicações em sistema de recomendaçãoLógica clássica e suas aplicações em sistema de recomendação
Lógica clássica e suas aplicações em sistema de recomendaçãoIsvaldo Souza
 
A ocorrencia de neve em planaltos subtropicais
A ocorrencia de neve em planaltos subtropicaisA ocorrencia de neve em planaltos subtropicais
A ocorrencia de neve em planaltos subtropicaisIsvaldo Souza
 
Caracterizaçâo dos invernos no sul do brasil
Caracterizaçâo dos invernos no sul do brasilCaracterizaçâo dos invernos no sul do brasil
Caracterizaçâo dos invernos no sul do brasilIsvaldo Souza
 
APOSTILA DE TRANSISTOR, POLARIZAÇÃO
APOSTILA DE  TRANSISTOR, POLARIZAÇÃOAPOSTILA DE  TRANSISTOR, POLARIZAÇÃO
APOSTILA DE TRANSISTOR, POLARIZAÇÃOIsvaldo Souza
 
Apostila de contadores
Apostila de contadoresApostila de contadores
Apostila de contadoresIsvaldo Souza
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar ArduinoIsvaldo Souza
 
Apostila de Robotica
Apostila de RoboticaApostila de Robotica
Apostila de RoboticaIsvaldo Souza
 
Tutorial circuit maker
Tutorial circuit makerTutorial circuit maker
Tutorial circuit makerIsvaldo Souza
 
Apostila de eletronica_basica_2000
Apostila de eletronica_basica_2000Apostila de eletronica_basica_2000
Apostila de eletronica_basica_2000Isvaldo Souza
 
Sistemas digitais tocci - 10ª ed.
Sistemas digitais   tocci - 10ª ed.Sistemas digitais   tocci - 10ª ed.
Sistemas digitais tocci - 10ª ed.Isvaldo Souza
 
Elementos de eletrônica digital capuano
Elementos de eletrônica digital   capuanoElementos de eletrônica digital   capuano
Elementos de eletrônica digital capuanoIsvaldo Souza
 

Plus de Isvaldo Souza (14)

Roteiro pedro pazelli slide apresentação
Roteiro pedro pazelli slide apresentaçãoRoteiro pedro pazelli slide apresentação
Roteiro pedro pazelli slide apresentação
 
Demostração da capacidade máxima de geração de senhas fortes
Demostração da capacidade máxima de geração de senhas fortesDemostração da capacidade máxima de geração de senhas fortes
Demostração da capacidade máxima de geração de senhas fortes
 
Lógica clássica e suas aplicações em sistema de recomendação
Lógica clássica e suas aplicações em sistema de recomendaçãoLógica clássica e suas aplicações em sistema de recomendação
Lógica clássica e suas aplicações em sistema de recomendação
 
A ocorrencia de neve em planaltos subtropicais
A ocorrencia de neve em planaltos subtropicaisA ocorrencia de neve em planaltos subtropicais
A ocorrencia de neve em planaltos subtropicais
 
Caracterizaçâo dos invernos no sul do brasil
Caracterizaçâo dos invernos no sul do brasilCaracterizaçâo dos invernos no sul do brasil
Caracterizaçâo dos invernos no sul do brasil
 
APOSTILA DE TRANSISTOR, POLARIZAÇÃO
APOSTILA DE  TRANSISTOR, POLARIZAÇÃOAPOSTILA DE  TRANSISTOR, POLARIZAÇÃO
APOSTILA DE TRANSISTOR, POLARIZAÇÃO
 
Apostila de contadores
Apostila de contadoresApostila de contadores
Apostila de contadores
 
Apostila para Programar Arduino
Apostila para Programar ArduinoApostila para Programar Arduino
Apostila para Programar Arduino
 
Apostila de Robotica
Apostila de RoboticaApostila de Robotica
Apostila de Robotica
 
Tutorial circuit maker
Tutorial circuit makerTutorial circuit maker
Tutorial circuit maker
 
Apostila de eletronica_basica_2000
Apostila de eletronica_basica_2000Apostila de eletronica_basica_2000
Apostila de eletronica_basica_2000
 
Sistemas digitais tocci - 10ª ed.
Sistemas digitais   tocci - 10ª ed.Sistemas digitais   tocci - 10ª ed.
Sistemas digitais tocci - 10ª ed.
 
Apostila cefet
Apostila cefetApostila cefet
Apostila cefet
 
Elementos de eletrônica digital capuano
Elementos de eletrônica digital   capuanoElementos de eletrônica digital   capuano
Elementos de eletrônica digital capuano
 

Robô seguidor de linha

  • 1. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Robô seguidor de linha Sumário INTRODUÇÃO ........................................................................................................................................ 2 OBEJETIVO GERAL .................................................................................................................................. 3 OBJETIVOS ESPECÍFICO .......................................................................................................................... 4 APRESENTAÇÃO DO MATERIAL .............................................................................................................. 5 ARDUINO ............................................................................................................................................. 5 SENSOR SHIELD .................................................................................................................................... 7 SENSOR UTRASÔNICO .......................................................................................................................... 8 SENSOR DE LUZ .................................................................................................................................. 10 DRIVE MOTOR .................................................................................................................................... 11 MOTOR SERVO ................................................................................................................................... 15 ALIMENTAÇÃO ................................................................................................................................... 16 MONTAGEM DO ROBÔ ........................................................................................................................ 17 PROGRAMAÇÃO – ESTRUTURA LÓGICA .............................................................................................. 21 PROGRAMAÇÃO TEORIA ..................................................................................................................... 21 PROGRAMAÇÃO DO CARRO ................................................................................................................ 26 Conclusão.......................................................................................................................... 31 Bibliografia ........................................................................................................................ 32 1
  • 2. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Introdução Com a revolução industrial e com o surgimento de um mercado competitivo a vida das pessoas começou a ser facilitado por diversos utensílios que são produzidos o tempo todo, com passar do tempo a demanda foi aumentando esse fato começou a estimular os detentores do capital a investir em tecnologia, agora as indústrias eram equipadas com robô que poderiam ser controlados pelo homem, hoje em dia existe algo muito mais avançado, a inteligência artificial, método utilizado para que um dispositivo tenha ações com embasamento no seu ambiente, um robô interage com ambiente através de atuadores que no caso seria uma garra, por exemplo, ele consegue detectar o ambiente atrás de sensores, por exemplo, um LDR 1, esse trabalho vai demonstrar teoricamente a montagem de um carro capaz de seguir uma linha e de detectar um objeto de dimensões específicas para depois desviar, o carro será montado com diversos sensores e apenas um tipo de atuador, o conhecimento para montagem desse carro foi obtido de forma fragmentada ao longo de um ano e meio, muitas técnicas foram desenvolvidas pelo autor desse trabalho bibliográfico, outras foram conseguidas ao longo do ano no laboratório de robótica da escola ferreira Viana 2 junto ao orientador Cesar Bastos e colegas de equipe. 1 Light Dependent Resistor, Resistor que varia sua resistência na presença da luz, sua composição química permite ter uma capacidade de diminuir sua resistência na presença da luz 2 O laboratório de robótica da escola ferreira Viana tem suas atividades as quintas feiras das 18h30min ate 20h30min terça no mesmo horário para desenvolvimento de projetos dos veteranos 2
  • 3. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Objetivo geral O robô deve seguir um algoritmo que harmonize todos os sensores, o robô e estruturado da seguinte forma em cima temos um micro controlador da atmel ao lado de um motor servo que orienta um sensor ultra-sônico no meio temos um drive que controla os motores em baixo temos um motor ao ladeado por dois sensores de luz, o carro vai identificar a intensidade luminosa que esta em baixo dele a partir desses dados é feito um calculo para determinar as propriedades da superfície que ele se encontra, a cor, textura, ate mesmo a altura que ele se encontra, a partir destes princípios o carro pode seguir uma linha preta no chão desde que o chão seja totalmente branco, ou pode seguir uma linha branca desde que o chão seja totalmente preto, o carro possui um sensor que é capaz de detectar objetos de ate 6 metros de distancia. 3
  • 4. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Objetivo específico O robô deve de forma totalmente autônoma seguir uma linha preta em uma pista especifica para esse tipo de projeto, nessa pista vai existir um obstáculo que deve ser detectado e desviado depois disso o robô vai tentar localizar a linha para completar o percurso, para execução dessas tarefas os sensores serão “orientados” pelo uso de um micro controlador que fará os cálculos e fornecer pulsos para dar inicio aos atuadores, o micro controlador é programável em linguagem C/C++, a técnica de programação tem embasamento em inteligência artificial. 4
  • 5. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Apresentação do material Arduíno 3 Apresentação do Arduíno: È uma placa micro-controladora baseada no micro- controlador ATmega 328. Ela tem 14 Pinos Input/output digitais, 6 entradas analógicas, um botão de reset. Ele contém tudo que é necessário para o suporte do Micro- controlador, Ligando-a simplesmente a um computador através de um cabo USB, ou alimentando-o com um Adaptador AC/AD (ou baterias 9V) para dar a partida. Especificações do hardware Micro-controlador ATmega328 Tensão de funcionamento 5V Tensão de entrada (recomendado) 7-12V Tensão de entrada (limites) 6-20V Pinos E/S Digitais 14 (dos quais 6 são saídas PWM) Pinos de Entrada Analógicos 6 Corrente DC por pino E/S 40 mA Corrente DC por pino 3.3V 50 mA Memória Flash 32KB SRAM 2Kb EEPROM 1KB O Arduíno vem com um bootloader que permite enviar novos programas sem o uso de um programador de hardware externo. Ele se comunica utilizando o protocolo original STK500 (referência, C Header file). Também poder-se-á programar o ATmega328 através do ICSP (in-Circuit Serial Programming) header;4 Memória O ATmega tem 32KB de memória flash para armazenar o código ( dos quais 2KB são utilizados pelo bootloader), além de 2 KB de SRAM e 1 KB de EEPROM (electrically- erasable programmable Read-Only memory), quepode ser lida e escrita através da biblioteca EEPROM. Comunicação Com o Arduíno, a comunicação com um computador, com outro Arduíno ou com outros micro-controladores é muito simplificada. O ATmega328 permite comunicação série no padrão UART TTL (5V), que está disponível nos pinos digitais 0 (RX) e 1 (TX). 3 Texto extraído da revista ‘Saber eletrônica’; Ano 47; nº454-2011; Editora Saber LTDA páginas 12 a 15. Autor Filipe pereira 4 Embasamento retirado da apostila da PET auto net autor: Micael bronzatti 5
  • 6. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Um chip FTDI FT232RL na placa encaminha esta comunicação série através do USB e os drives FTDI (incluído no software do Arduíno) fornecem uma porta COM virtual para o software no computador. O software Arduíno inclui um monitor série que permite que dados simples de texto sejam enviados à placa Arduíno. Veja a aparência física do Arduíno. Programação A programação é em C/C++ e estruturada em condicionais (if,else,for,while,do while,swith) o Arduíno já vem com uma biblioteca com funções como DigitalWrite DigitalRead (escrever e ler sinais digitais), A programação será mais detalhada no tópico “programação Estrutura lógica” 6
  • 7. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Sensor Shield Com a fama do Arduíno começou a produção de placas que mais tarde foram chamadas de Shield, tais placas são encaixadas perfeitamente no Arduíno para aumentar a capacidade e a funcionalidade o mesmo, o sensor facilita o acesso as portas e fornece um pino de VCC (5v) e pino GND (terra) para as portas digitais, para as portas analógicas temos uma entrada especifica para sensores (três pinos ) Sinal,vcc,gnd agora essa placa fornece terra e vcc para suprir grandes projetos como esse que usa diversos sensores. 7
  • 8. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Sensor Ultrassônico O ultra-som é um som, uma onda de pressão com uma freqüência maior do que o limite superior audição humana, não Há muitos sons na faixa Ultra podemos aproveitar uma propriedade da onde muito interessante. Quando emitimos uma onda para um local caso haja um obstáculo ela pode sofrer uma reflexão e voltar, veja a figura5 Então para simular calcular a distancia em que uma parede esta de você, é preciso saber a “velocidade do som” tempo da emissão e o momento da captação a partir de um calculo pode-se determinar a distancia de um objeto, para simular esse evento com ultra-som usamos um emissor sônico junto com um receptor Agora a parte que de fato interessa, ou você monta um circuito para amplificar os sinais e toda “parafernália” que esse circuito vai precisar ou simplesmente compra 5 Esse artigo foi retirado do site http://robotizando.com/blog/ultrasonic-sensor-sensor-de-distancia/ artigo que foi escrito pelo autor deste trabalho bibliográfico 8
  • 9. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Um módulo (quem souber eletrônica a fundo tente montar). Ultrassônico no Arduíno ou ultra sônico tanto faz, com o Arduíno o ultra som e muito fácil de usar, O sensor ultra-sônico e muito usado na robótica Veja o modulo do sensor ultrassônico Vcc: tensão 5V TRIG: comunicação ECHO: comunicação GND : Terra As especificações mais precisas do funcionamento serão explicadas em outro tópico que fala sobre a programação. 9
  • 10. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Sensor de linha Esse sensor tem um emissor infravermelho e um receptor quando é emitido um feche de luz (infravermelho) o receptor recebe a luz que volta por reflexão dependendo da cor da superfície o receptor varia sua resistência, então para nosso entendimento vamos teorizar vamos dividir a variação em 1024 valores diferentes, para preto vamos supor que seja 0 e para branco 1024, esse sensor faz exatamente isso ele possui um regulador um” potenciômetro” que regula a precisão do sensor e um CI que modulo as variações de forma a transforma essa variação toda em um sinal digital 0 ou 1 logo esse sensor só detecta preto ou branco, Isso e bem vantajoso pois ler um sinal digital e mais rápido do que ler um sinal tão variável como o analógico, quanto mais rápido a freqüência de leitura do sinal digital mais rápido será a resposta do controlador, o Arduíno demora cerca de 10 Microssegundos para ler uma porta. 10
  • 11. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Drive Motor E bem difícil imaginar um robô que não tenha motor ou alguma forma de se locomover, nesse projeto utilizamos 4 motores normais que funcionam um uma tensão de 3V seu torque aumenta de acordo com a corrente ate certos limites desconhecidos nesse projeto, nesse projeto e muito interessante o controle do motor tanto para um sentido quanto para outro, esse problema pode ser controlado utilizando um método de chaveamento de transistores, esse método e conhecido como Ponte H 6 Esse simples circuito resolve nosso problema porem apenas para um motor, existem outros fatores que complicam que incentiva a procura por uma nova saída de fato existe duas alternativas uma e totalmente inviável seria a utilização de relés a outra seria usar um CI para essa funcionalidade, hoje em dia existem muitos, vamos usar nesse projeto L298N esse CI nos permite controlar dois motores, ou seja, cada Ci tem duas pontes H internas, veja os pinos 6 Ponte H pois sua forma esquemática lembra a letra H 11
  • 12. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Vamos a uma breve explicação dos pinos OUTPUT: são saídas que vão alimentar os motores INPUT: São entradas que recebem sinais lógicos (5V) que alternam o sentido da corrente das saídas output LOGIC SUPPLY VSS: 5V (sinal para alimentar o CI ) SUPPLY VSS: tensão para alimentar os motores 12
  • 13. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Para um melhor funcionamento desse ci se deve fazer essa ligação Pronto agora sim temos um drive que controle nossos motores, porem para o melhor desempenho vamos usar um modulo que contem tudo Isso em SMD resistores de 1% de precisão fusível e reguladores também contem um Dissipador de calor . Veja a imagem 13
  • 14. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com 14
  • 15. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Motor Servo Para mover o robô usamos um motor comum, porem para controlar o movimento do sensor ultrassônico precisamos de um motor que mapeie o movimento seu movimento, infelizmente o moto servo não faz isso porem ele possibilita o movimento em graus em certos limites (180º) assim temos podemos mover o motor para ambos os lados sem muito problema tanto para um sentido quanto para outro, o motor servo contem uma ponte H interna, também existe um jogo de engrenagem denominada Caixa de redução que fornece uma vantagem mecânica ao movimento final do motor, ou seja, temos um motor com mais torque (força) veja um motor servo internamente Existe um protocolo de comunicação que desconheço para esse tipo de motor, porem existe uma biblioteca que facilita essa comunicação o motor servo utilizado é esse 15
  • 16. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Alimentação O Arduíno precisa de uma alimentação própria, o drive motor também assim como todos os sensores e como qual quer componente eletrônico nesse projeto vamos ter 2 alimentações e talvez uma terceira em caso de necessidade de potencia Suporte para bateria (alimentação do Arduíno) Suporte para pilhas (alimentação do Motor drive) 16
  • 17. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com 7 Montagem do robô Alimentação: Pino Vin. alimentação do Arduíno 9V (bateria) Drive motor 9V (6 pilhas) Sensor de Cor A 5V (pino sensor shield) Sensor de Cor B 5V (pino sensor shield) Ultrassônico 5V (pino sensor shield) Ligações digitais Ligação Pino correspondente Arduíno ~~ sem ligação ~~ 13 ~~ sem ligação ~~ 12 ~~ sem ligação ~~ 11 Controle do motor para frente “A” 10 Controle do motor para trás “A” 9 Controle do Motor Servo 8 TRIG Pino do sonar 7 Controle do motor para frente “B” 6 Controle do motor para trás “B” 5 ECHO pino do sonar 4 Sensor óptico da Esquerda 3 ~~ sem ligação ~~ 2 ~~ sem ligação ~~ 1 Terra do drive motor GND (terra) Suplemento de energia lógica (5v) 5V (alimentação) Bateria 9V Vin (voltagem de entrada ) ~~ sem ligação ~~ Todas as portas Analógicas Motor 1 E 2 São ligados em paralelo Motor 3 E 4 São ligados em paralelo Observações: 7 Essa imagem foi retirada do site dealextreme, um site de venda de equipamentos importados, foi nesse site que fiz a compra de todos os equipamentos para esse projeto 17
  • 18. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Todas as ligações foram feitas utilizando cabos Jump, o cabo tem uma entrada que entra perfeitamente nos sensores no drive e no Arduíno, ou seja, esse cabo é padrão Estrutura: O robô tem dois andares são conectados por parafusos (espaçadores) cerca de 5 cm de distancia entre um e outro no meio fica o drive do motor os mores são presos por um suporte de alumínio que e preso por dois parafuso com porcas, são 4 motores. 18
  • 19. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com 19
  • 20. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Veja a imagem ilustrando os 4 motores o primeiro e o segundo andar com o drive motor no meio, o robô precisa se mover então faz se necessário rodas. Observação: as rodas são emborrachadas o material gera um atrito muito grande ate em superfícies totalmente lisas, isso gera um problema na locomoção do carro então para driblar esse problema a borracha da roda foi retirada, com o diminuição do atrito o robô passou a fazer curvas mais perfeitas e a sua precisão aumentou muito. Montagem do sonar com servo: O sonar esta ligado ao servo por um suporte improvisado colado a um conjunto de cabos com cola quente com objetivo de mover o sonar para melhor utilizá-lo. 20
  • 21. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Programação estrutura lógica Teoria Introdução: Cada movimento do robô será orientado por um algoritmo escrito em uma linguagem de programação a usada nesse projeto foi C/C++, esse tópico vai detalhar como funciona a linguagem, sua estrutura lógica e alguns exemplos aplicados ao projeto, não vou poder prolongar muito o funcionamento, pois não e o foco principal. Plataforma IDE: O Arduíno possui um programa8 para desenvolvimento do programa que vai dar “vida” ao robô, o programa tem um Debug9 a fim de detectar erros e possui uma ferramenta para visualizar os dados da porta serial, veja a aparência do programa. 8 Esse programa pode ser adquirido no site www.arduino.cc 9 Debug e um Script que fica na IDE para detectar erros na programação 21
  • 22. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Funcionamento da IDE Cada parte da ide tem uma função veja a ilustração abaixo Estrutura da linguagem Variável: Antes de falar de variáveis é costume meu antes de explicar uma linguagem de programação por trabalho escrito é dar um “HELLO WORD” bom como o Arduíno não tem propriamente um lugar para Exibir essa mensagem temos que usar um artifício então vamos ficar com ‘Serial.print(“HELLO WORD”);’ Variáveis são como gavetas que tem a função de guardar dados, as variáveis guardam dados na memória do micro-processador, para declarar uma variável você precisa dizer o tipo dela se e um numero ou caráter ou um dado booleano depois dar um nome a ela desde que o primeiro caráter seja uma letra e não tenha espaços, depois 22
  • 23. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com atribuir um valor da seguinte forma Estruturas de controle Estrutura de controle e responsável por “guiar” o código para com alguma orientação IF () { } If é uma condicional dentro dos () fica um teste lógico feito a partir de operadores é um assunto que não vou poder detalhar nesse trabalho. Veja a imagem 23
  • 24. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com o if faz uma pergunta a condição se ela for verdadeira executa o que esta dentro das chaves caso não for essa estrutura e “pulada” If (condição) { corpo } Para complementar essa condição existe ELSE que executa caso a condição não seja verdadeira If (condição) { executa aqui se a condição for verdadeira } ELSE { executa aqui caso a condição for falsa } Estrutura de repetição: o for e uma estrutura com que gera uma repetição controlada veja a sintaxe For (iniciação;Condição;incremento) { comandos a serem repetidos } Incremento é a técnica de adicionar +1 a uma variável a sintaxe e (variavel++) Funções Nativas Não vai da para detalhar todas as estruturas de programação por isso só descrevi as mais básicas. O Arduíno possui funções nativas, ou seja, funções que tem uma atuação que esta difícil para descrever veja na lista a baixo algumas funções do que vem com o Arduíno. 24
  • 25. Autor: Isvaldo Fernandes de Souza Delay(tempo); // pausa o programa por um tempo X Site: www.robotizando.com Email: Miojex360@hotmail.com comando obrigatório para informa tipo de porta pinMode(pino,tipo); // digitalWrite(pino,estado); // envia um estado para uma porta digitalRead(pino); // faz a leitura de uma entrada analogWrite(pino,força); escreve de 0 a 5 V no pino sendo dividido em 0 a 255 valores que representam 0-5v Bibliotecas: Biblioteca no mundo da programação representa uma Class, e class é uma estrutura que agrupa funções nesse trabalho usamos a biblioteca para controlar o Sonar e o moto servo, o Arduíno possui milhares de class preparadas para da suporte a todo tipo de equipamento, alem de facilitar o uso de class também simplifica o código, hoje em dia o uso de class e tão importante que recebeu ate um nome, Programação orientada a objeto, esse nome é bem impactante no mercado, muita gente fica boba quando ouve falar de POO. Conexão: É muito importante mencionar que o Arduíno pode fazer uma comunicação serial o código para fazer essa tarefa e através de uma biblioteca chamada Serial com esse recurso se torna possível analisar os dados que são obtidos pelo dispositivo pelo computador, dessa forma facilitando a analise o projeto fica mais fácil de ser construído e elaborado. Interação ambiente X programação: Essa interação se baseia na seguinte teoria, através de sensores no ambiente o robô toma executa ações através de atuadores, esse é o principio da inteligência artificial nosso robô usa a programação para comparar situações e tomar uma atitude, por exemplo, “caso houver um obstáculo desvie se não tiver seguir reto” a partir de diversas deduções lógicas o algoritmo chega a possuiu uma espécie de inteligência artificial, inteligência artificial é algo muito mais complicado do que parece, eu já fiz alguns projetos voltados à inteligência artificial porem não tive muito sucesso, esse projeto, por exemplo, é seqüencial, pois segue uma regra e caso essa regra não exista ele se desorienta e não procura resolver o problema, um exemplo, um robô seguidor de linha segue uma linha preta e o chão e branco, se eu pudesse inverter isso o chão preto e a linha branca, o robô se perderia na mesma hora entre tanto um robô com inteligência artificial poderia bolar um meio através de seu próprio algoritmo para tentar entender a situação e talvez compreender que pode inverta a ordem seguir a linha branca ao invés da preta. 25
  • 26. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Programação do carro Para compor o algoritmo do robô desenvolvi funções para facilitar a visualização e futuras modificações no programa, para entender a programação vou dividir ela em 6 partes. 1)Declaração de variáveis e objetos Nessa parte declaro todo tipo de variável, referencia ou objeto, variável como já explicado e um endereço de memória que pode ser escrita ou lida a qual quer momento, Referencia é uma técnica para evitar usar um nome ou numero muitas vezes ou mesmo para organizar usamos uma referencia que na hora de Copilar “passar para placa” a referencia é alterada pelo valor, dessa forma facilitando, e evitando o uso de espaço na memória. #include "Ultrasonic.h" // incluir o arquivo da lib #include "Servo.h" // incluir arquivo da lib #define TRIG_PIN 7 #define ECHO_PIN 4 #define SEE 3 #define SED 0 #define DMF 10 #define DMT 9 #define EMF 5 #define EMT 6 Servo motor; // Lib Servor Ultrasonic OurModule(TRIG_PIN, ECHO_PIN); // Lib Ultrasonic int vel=255; // velocidade curva int tempo1=350; // tempo de curva A variável vel e responsável pelo controle da velocidade com que o carro faz uma curva e tempo1 é o intervalo de tempo em mile segundos que ele vai fazer a curva na velocidade “vel”, Servo motor e utrasonic são bibliotecas usadas no programa. 26
  • 27. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com 2)Função Move o robô se locomove através de 4 motores que são ligados em em pares (em paralelo) para que funcione bolei o seguinte função move(); essa função tem 4 argumentos que simbolizam o chaveamento do drive por exemplo Move(255,0,255,0); moveria o meu motor a velocidade máxima para frente, veja dessa maneira Move(velocidade A para frente, Velocidade A para trás,Velocidade B para frente,velocidade B para trás); essa função foi montada com a estrutura abaixo. void move(int DmF, int DmT, int EmF, int EmT) { analogWrite(DMF, DmF); analogWrite(DMT, DmT); analogWrite(EMF, EmF); analogWrite(EMT, EmT); } 3) Função Seguir linha Essa função é bem mais complexa do que a anterior, então vamos detalhar bem ela, primeiro é importante explicar que essa função usa a função anterior para mover o robô, primeiramente vamos jogar no “ar” o objetivo da função, Seguir linha para conseguir essa façanha bolei uma técnica a partir de um método cientifico vou colocar uma verdade absoluta e a partir dela fazer deduções, essa verdade será “o robô vai ser ligado De baixo de uma linha” isso não precisa ser verdade porem a partir desse postulado posso fazer com que ele não saia de baixo dela, colocando os sensores na frente afastado por certa distancia para depois fazer uma leitura digital, retorna 1 para perto e 0 , o algoritmo funcionara da seguinte forma caso o sensor da esquerda ver preto (a linha é preta) o carro vira um pouco para direita caso o sensor da direita ver preto o carro vai um pouco para esquerda,logo o carro vai fazer o movimento inverso do sensor que responder com 1 (preto), para melhor analise na hora da construção do robô usei a comunicação serial para ver no display o estado no qual o robô estava, existe um pequeno tempo nomeado tempo1 que é o tempo de curva já explicada na primeira divisão da programação. 27
  • 28. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Script da função void linha () { if (digitalRead(SED)==1){ //esquerda move(vel,0,0,vel); delay(tempo1); Serial.print("esquerda"); Serial.println("n"); Serial.println(digitalRead(SED)); } else if (digitalRead(SEE)==1){ //direita move(0,vel,vel,0); delay(tempo1); Serial.print("direita"); Serial.println("n"); Serial.println(digitalRead(SEE)); } Serial.print("seguindo para frente"); Serial.println("n"); move(150,0,150,0); delay(10); } 4) Detector de Obstáculos Além de seguir linha nosso robô e será capaz de detectar um obstáculo e desviar para isso ele usei um motor servo para mover o sonar que faz a leitura em centímetros dos objetos ao redor, existe uma rotina chamada “loop” que vamos detalhar em outro tópico que faz a verificação constante da possibilidade de existir um obstáculo, a função que detecta obstáculo tem o nome de pedra, depois que o algoritmo já estiver certo que há um obstáculo a função pedra vai virar o servo para esquerda e para direita para verificar qual lado e disponível para passar depois disso ele escolhe o lado que estiver livre, caso os dois estejam livre ele vai para direita por padrão, para o funcionamento adequado do sensor existe um tempo de espera para executar o movimento do motor, o motor servo gira em graus, 90 -> mirado para frente, 0, esquerda ,180 Direita , veja o script na próxima pagina. 28
  • 29. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Script para desviar de obstáculo void pedra () { int Sensor_teste = 0; motor.write(90); delay(500); motor.write(0); // realocar para esquerda delay(500); if (OurModule.Ranging(CM) > 10) { motor.write(90); delay(500); Sensor_teste = 1; } motor.write(180); // realocar para direita delay(500); if (OurModule.Ranging(CM) > 10) { motor.write(90); delay(500); Sensor_teste = 2; } // parte responsavel pelo movimento do carro apos detectar os objetos if (Sensor_teste==2) { // se encontrar uma pedra na direita virar para esquerda move(vel,0,0,vel); delay(tempo1); }if else (Sensor_teste==1) { // se encontra uma pedra na esquerda vira para direita move(0,vel,vel,0); delay(tempo1); else { // caso não houver nenhuma pedra virar para direita por padrão move(0,vel,vel,0); delay(tempo1); } } } 5)preparação Antes de fato de executar o script é preciso fazer uma preparação, para por exemplo posicionar o sonar declarar entradas e algumas portas void setup () { pinMode(SED,INPUT); pinMode(SEE,INPUT); Serial.begin(9600); motor.attach(8); motor.write(90); delay(500); 29 }
  • 30. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com 6)rotina de repetição Finalmente a parte final, ate então só declarei e preparei o programa de fato, agora o programa vai entra em uma rotina infinita, nessa parte o programa vai organizar a cadeia de eventos void loop () { linha(); if (OurModule.Ranging(CM) < 15) { delay(200); if (OurModule.Ranging(CM) < 15) { pedra(); } } } Nessa ultima parte há um teste para ver se existe obstáculo, para ter certeza que não haja uma interferência momentânea (caso o sonar detectar um obstáculo sem de fato existir) o algoritmo fará um segundo teste e só assim executara a função pedra. 30
  • 31. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Conclusão Esse trabalho possibilitou a analise de dados de diversas áreas que a robótica atua. Eletrônica: Houve diversos problemas com uso de baterias o Arduíno consome muito em poucos minutos uma bateria normal de 9V não consegue mais da suporte ao robô, isso se deve pelo fato de ter N sensores drives entre outras coisas alimentadas pelo Arduíno. Física: As rodas de borracha causam muito atrito com o chão, isso se torna um problema na hora de fazer curvas, outra analise interessante é com os sensores, a distancia dos sensores com o chão e determinante para a precisão do sensor. Programação: É preciso muita organização no código, pois o código e constantemente alterado por isso e importante desenvolver funções em forma de diagrama, pois caso uma parte não funcionar, assim podemos ir direto ao erro e conserta sem a necessidade de analisar todo o código, estruturar com base em objetos e referencias aumentou bastante a velocidade de processamento do programa. 31
  • 32. Autor: Isvaldo Fernandes de Souza Site: www.robotizando.com Email: Miojex360@hotmail.com Bibliografia Bronzatti,AutoNet,Aprendendo a programar em Arduíno,realização PET Marshall Brain. "HowStuffWorks - Como funciona a programação em C". Publicado em 01 de abril de 2000 (atualizado em 14 de maio de 2008) http://informatica.hsw.uol.com.br/programacao-em-c.htm (26 de julho de 2012) SOAREZ, R. Curso de robots m´oviles. Universidad Carlos III de Madrid, Nov. 1999. WALLNER, F., AND DILLMANN, R. Real-time map refinement by use of sonar and active stereo-vision. Robotics and Autonomous Systems, 16 (1995), 47–56. 32