Você está na página 1de 32

Autor: Isvaldo Fernandes de Souza

Site: www.robotizando.com
Email: Miojex360@hotmail.com

Rob seguidor de linha


Sumrio
INTRODUO ........................................................................................................................................ 2
OBEJETIVO GERAL .................................................................................................................................. 3
OBJETIVOS ESPECFICO .......................................................................................................................... 4
APRESENTAO DO MATERIAL .............................................................................................................. 5
ARDUINO ............................................................................................................................................. 5
SENSOR SHIELD .................................................................................................................................... 7
SENSOR UTRASNICO .......................................................................................................................... 8
SENSOR DE LUZ .................................................................................................................................. 10
DRIVE MOTOR .................................................................................................................................... 11
MOTOR SERVO ................................................................................................................................... 15
ALIMENTAO ................................................................................................................................... 16
MONTAGEM DO ROB ........................................................................................................................ 17
PROGRAMAO ESTRUTURA LGICA .............................................................................................. 21
PROGRAMAO TEORIA ..................................................................................................................... 21
PROGRAMAO DO CARRO ................................................................................................................ 26

Concluso.......................................................................................................................... 31
Bibliografia ........................................................................................................................ 32

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Introduo
Com a revoluo industrial e com o surgimento de um mercado competitivo a vida das
pessoas comeou a ser facilitado por diversos utenslios que so produzidos o tempo
todo, com passar do tempo a demanda foi aumentando esse fato comeou a estimular
os detentores do capital a investir em tecnologia, agora as indstrias eram equipadas
com rob que poderiam ser controlados pelo homem, hoje em dia existe algo muito
mais avanado, a inteligncia artificial, mtodo utilizado para que um dispositivo tenha
aes com embasamento no seu ambiente, um rob interage com ambiente atravs
de atuadores que no caso seria uma garra, por exemplo, ele consegue detectar o
ambiente atrs 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 dimenses especficas 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 tcnicas
foram desenvolvidas pelo autor desse trabalho bibliogrfico, outras foram conseguidas
ao longo do ano no laboratrio de robtica da escola ferreira Viana 2 junto ao
orientador Cesar Bastos e colegas de equipe.

Light Dependent Resistor, Resistor que varia sua resistncia na presena da luz, sua composio
qumica permite ter uma capacidade de diminuir sua resistncia na presena da luz
2
O laboratrio de robtica da escola ferreira Viana tem suas atividades as quintas feiras das 18h30min
ate 20h30min tera no mesmo horrio para desenvolvimento de projetos dos veteranos

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-snico 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 superfcie que ele se
encontra, a cor, textura, ate mesmo a altura que ele se encontra, a partir destes
princpios o carro pode seguir uma linha preta no cho desde que o cho seja
totalmente branco, ou pode seguir uma linha branca desde que o cho seja totalmente
preto, o carro possui um sensor que capaz de detectar objetos de ate 6 metros de
distancia.

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Objetivo especfico
O rob deve de forma totalmente autnoma seguir uma linha preta em uma pista
especifica para esse tipo de projeto, nessa pista vai existir um obstculo que deve ser
detectado e desviado depois disso o rob vai tentar localizar a linha para completar o
percurso, para execuo dessas tarefas os sensores sero orientados pelo uso de um
micro controlador que far os clculos e fornecer pulsos para dar inicio aos atuadores,
o micro controlador programvel em linguagem C/C++, a tcnica de programao
tem embasamento em inteligncia artificial.

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Apresentao do material
Arduno
3

Apresentao do Arduno: uma placa micro-controladora baseada no microcontrolador ATmega 328. Ela tem 14 Pinos Input/output digitais, 6 entradas analgicas,
um boto de reset. Ele contm tudo que necessrio para o suporte do Microcontrolador, Ligando-a simplesmente a um computador atravs de um cabo USB, ou
alimentando-o com um Adaptador AC/AD (ou baterias 9V) para dar a partida.
Especificaes do hardware
Micro-controlador
Tenso de funcionamento
Tenso de entrada (recomendado)
Tenso de entrada (limites)
Pinos E/S Digitais
Pinos de Entrada Analgicos
Corrente DC por pino E/S
Corrente DC por pino 3.3V
Memria Flash
SRAM
EEPROM

ATmega328
5V
7-12V
6-20V
14 (dos quais 6 so sadas PWM)
6
40 mA
50 mA
32KB
2Kb
1KB

O Arduno 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 (referncia, C Header file). Tambm poder-se- programar o
ATmega328 atravs do ICSP (in-Circuit Serial Programming) header;4
Memria
O ATmega tem 32KB de memria flash para armazenar o cdigo ( dos quais 2KB so
utilizados pelo bootloader), alm de 2 KB de SRAM e 1 KB de EEPROM (electricallyerasable programmable Read-Only memory), quepode ser lida e escrita atravs da
biblioteca EEPROM.
Comunicao
Com o Arduno, a comunicao com um computador, com outro Arduno ou com
outros micro-controladores muito simplificada. O ATmega328 permite comunicao
srie no padro UART TTL (5V), que est disponvel nos pinos digitais 0 (RX) e 1 (TX).
3

Texto extrado da revista Saber eletrnica; Ano 47; n454-2011; Editora Saber LTDA pginas 12 a 15.
Autor Filipe pereira
4
Embasamento retirado da apostila da PET auto net autor: Micael bronzatti

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Um chip FTDI FT232RL na placa encaminha esta comunicao srie atravs do USB e os
drives FTDI (includo no software do Arduno) fornecem uma porta COM virtual para o
software no computador. O software Arduno inclui um monitor srie que permite que
dados simples de texto sejam enviados placa Arduno.
Veja a aparncia fsica do Arduno.

Programao
A programao em C/C++ e estruturada em condicionais (if,else,for,while,do
while,swith) o Arduno j vem com uma biblioteca com funes como DigitalWrite
DigitalRead (escrever e ler sinais digitais), A programao ser mais detalhada no
tpico programao Estrutura lgica

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Sensor Shield

Com a fama do Arduno comeou a produo de placas que mais tarde foram
chamadas de Shield, tais placas so encaixadas perfeitamente no Arduno 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 analgicas temos uma entrada especifica para sensores (trs pinos )
Sinal,vcc,gnd agora essa placa fornece terra e vcc para suprir grandes projetos como
esse que usa diversos sensores.

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Sensor Ultrassnico
O ultra-som um som, uma onda de presso com uma freqncia maior do que o
limite superior audio humana, no H muitos sons na faixa Ultra podemos
aproveitar uma propriedade da onde muito interessante. Quando emitimos uma onda
para um local caso haja um obstculo ela pode sofrer uma reflexo e voltar, veja a
figura5

Ento para simular calcular a distancia em que uma parede esta de voc, preciso
saber a velocidade do som tempo da emisso e o momento da captao a partir de
um calculo pode-se determinar a distancia de um objeto, para simular esse evento
com ultra-som usamos um emissor snico junto com um receptor

Agora a parte que de fato interessa, ou voc monta um circuito para amplificar os
sinais e toda parafernlia que esse circuito vai precisar ou simplesmente compra

Esse artigo foi retirado do site http://robotizando.com/blog/ultrasonic-sensor-sensor-de-distancia/


artigo que foi escrito pelo autor deste trabalho bibliogrfico

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Um mdulo (quem souber eletrnica a fundo tente


montar). Ultrassnico no Arduno ou ultra snico tanto faz, com o Arduno o ultra som
e muito fcil de usar, O sensor ultra-snico e muito usado na robtica
Veja o modulo do sensor ultrassnico

Vcc: tenso 5V
TRIG: comunicao
ECHO: comunicao
GND : Terra
As especificaes mais precisas do funcionamento sero explicadas em outro tpico
que fala sobre a programao.

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 reflexo dependendo da
cor da superfcie o receptor varia sua resistncia, ento para nosso entendimento
vamos teorizar vamos dividir a variao 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 potencimetro que regula a preciso do sensor e um CI que modulo
as variaes de forma a transforma essa variao 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 rpido do que ler um sinal to varivel como o analgico, quanto mais rpido a
freqncia de leitura do sinal digital mais rpido ser a resposta do controlador, o
Arduno 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 difcil imaginar um rob que no tenha motor ou alguma forma de se
locomover, nesse projeto utilizamos 4 motores normais que funcionam um uma
tenso 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 mtodo de chaveamento de transistores, esse mtodo 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 sada de fato
existe duas alternativas uma e totalmente invivel seria a utilizao de rels 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

Ponte H pois sua forma esquemtica lembra a letra H

11

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Vamos a uma breve explicao dos pinos


OUTPUT: so sadas que vo alimentar os motores
INPUT: So entradas que recebem sinais lgicos (5V) que alternam o sentido da
corrente das sadas output
LOGIC SUPPLY VSS: 5V (sinal para alimentar o CI )
SUPPLY VSS: tenso 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 ligao

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 preciso fusvel e reguladores tambm 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 ultrassnico precisamos de um motor que mapeie o movimento seu
movimento, infelizmente o moto servo no 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, tambm existe um jogo de engrenagem denominada
Caixa de reduo que fornece uma vantagem mecnica ao movimento final do motor,
ou seja, temos um motor com mais torque (fora) veja um motor servo internamente

Existe um protocolo de comunicao que desconheo para esse tipo de motor, porem
existe uma biblioteca que facilita essa comunicao o motor servo utilizado esse

15

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Alimentao
O Arduno precisa de uma alimentao prpria, o drive motor tambm assim como
todos os sensores e como qual quer componente eletrnico nesse projeto vamos ter 2
alimentaes e talvez uma terceira em caso de necessidade de potencia
Suporte para bateria (alimentao do Arduno)

Suporte para pilhas (alimentao do Motor drive)

16

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com
7

Montagem do rob
Alimentao:
Pino Vin. alimentao do Arduno
Drive motor
Sensor de Cor A
Sensor de Cor B
Ultrassnico
Ligaes digitais
Ligao
~~ sem ligao ~~
~~ sem ligao ~~
~~ sem ligao ~~
Controle do motor para frente A
Controle do motor para trs A
Controle do Motor Servo
TRIG Pino do sonar
Controle do motor para frente B
Controle do motor para trs B
ECHO pino do sonar
Sensor ptico da Esquerda
~~ sem ligao ~~
~~ sem ligao ~~
Terra do drive motor
Suplemento de energia lgica (5v)
Bateria 9V
~~ sem ligao ~~
Motor 1 E 2
Motor 3 E 4

9V (bateria)
9V (6 pilhas)
5V (pino sensor shield)
5V (pino sensor shield)
5V (pino sensor shield)

Pino correspondente Arduno


13
12
11
10
9
8
7
6
5
4
3
2
1
GND (terra)
5V (alimentao)
Vin (voltagem de entrada )
Todas as portas Analgicas
So ligados em paralelo
So ligados em paralelo

Observaes:

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 ligaes foram feitas utilizando cabos Jump, o cabo tem uma entrada que
entra perfeitamente nos sensores no drive e no Arduno, ou seja, esse cabo padro

Estrutura:
O rob tem dois andares so conectados por parafusos (espaadores) cerca de 5 cm de
distancia entre um e outro no meio fica o drive do motor os mores so presos por um
suporte de alumnio que e preso por dois parafuso com porcas, so 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 ento faz se necessrio rodas.

Observao: as rodas so emborrachadas o material gera um atrito muito grande ate


em superfcies totalmente lisas, isso gera um problema na locomoo do carro ento
para driblar esse problema a borracha da roda foi retirada, com o diminuio do atrito
o rob passou a fazer curvas mais perfeitas e a sua preciso 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

Programao estrutura lgica


Teoria
Introduo:
Cada movimento do rob ser orientado por um algoritmo escrito em uma linguagem
de programao a usada nesse projeto foi C/C++, esse tpico vai detalhar como
funciona a linguagem, sua estrutura lgica e alguns exemplos aplicados ao projeto, no
vou poder prolongar muito o funcionamento, pois no e o foco principal.
Plataforma IDE:
O Arduno 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 aparncia do programa.

8
9

Esse programa pode ser adquirido no site www.arduino.cc


Debug e um Script que fica na IDE para detectar erros na programao

21

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Funcionamento da IDE
Cada parte da ide tem uma funo veja a ilustrao abaixo

Estrutura da linguagem
Varivel:
Antes de falar de variveis costume meu antes de explicar uma linguagem de
programao por trabalho escrito dar um HELLO WORD bom como o Arduno no
tem propriamente um lugar para Exibir essa mensagem temos que usar um artifcio
ento vamos ficar com Serial.print(HELLO WORD);
Variveis so como gavetas que tem a funo de guardar dados, as variveis guardam
dados na memria do micro-processador, para declarar uma varivel voc precisa
dizer o tipo dela se e um numero ou carter ou um dado booleano depois dar um
nome a ela desde que o primeiro carter seja uma letra e no tenha espaos, 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 responsvel por guiar o cdigo para com alguma orientao
IF () { }
If uma condicional dentro dos () fica um teste lgico feito a partir de operadores
um assunto que no 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 condio se ela for verdadeira executa o que esta dentro das
chaves caso no for essa estrutura e pulada
If (condio) {
corpo
}

Para complementar essa condio existe ELSE que executa caso a condio no seja
verdadeira
If (condio) {
executa aqui se a condio
for verdadeira
} ELSE {
executa aqui caso a condio
for falsa
}
Estrutura de repetio:
o for e uma estrutura com que gera uma repetio controlada veja a sintaxe
For (iniciao;Condio;incremento)
{
comandos a serem repetidos
}

Incremento a tcnica de adicionar +1 a uma varivel a sintaxe e (variavel++)


Funes Nativas
No vai da para detalhar todas as estruturas de programao por isso s descrevi as
mais bsicas. O Arduno possui funes nativas, ou seja, funes que tem uma atuao
que esta difcil para descrever veja na lista a baixo algumas funes do que vem com o
Arduno.

24

Autor: Isvaldo Fernandes de Souza


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

Bibliotecas:
Biblioteca no mundo da programao representa uma Class, e class uma estrutura
que agrupa funes nesse trabalho usamos a biblioteca para controlar o Sonar e o
moto servo, o Arduno possui milhares de class preparadas para da suporte a todo tipo
de equipamento, alem de facilitar o uso de class tambm simplifica o cdigo, hoje em
dia o uso de class e to importante que recebeu ate um nome, Programao orientada
a objeto, esse nome bem impactante no mercado, muita gente fica boba quando
ouve falar de POO.

Conexo:
muito importante mencionar que o Arduno pode fazer uma comunicao serial o
cdigo para fazer essa tarefa e atravs de uma biblioteca chamada Serial com esse
recurso se torna possvel analisar os dados que so obtidos pelo dispositivo pelo
computador, dessa forma facilitando a analise o projeto fica mais fcil de ser
construdo e elaborado.
Interao ambiente X programao:
Essa interao se baseia na seguinte teoria, atravs de sensores no ambiente o rob
toma executa aes atravs de atuadores, esse o principio da inteligncia artificial
nosso rob usa a programao para comparar situaes e tomar uma atitude, por
exemplo, caso houver um obstculo desvie se no tiver seguir reto a partir de
diversas dedues lgicas o algoritmo chega a possuiu uma espcie de inteligncia
artificial, inteligncia artificial algo muito mais complicado do que parece, eu j fiz
alguns projetos voltados inteligncia artificial porem no tive muito sucesso, esse
projeto, por exemplo, seqencial, pois segue uma regra e caso essa regra no exista
ele se desorienta e no procura resolver o problema, um exemplo, um rob seguidor
de linha segue uma linha preta e o cho e branco, se eu pudesse inverter isso o cho
preto e a linha branca, o rob se perderia na mesma hora entre tanto um rob com
inteligncia artificial poderia bolar um meio atravs de seu prprio algoritmo para
tentar entender a situao e talvez compreender que pode inverta a ordem seguir a
linha branca ao invs da preta.

25

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Programao do carro

Para compor o algoritmo do rob desenvolvi funes para facilitar a visualizao e


futuras modificaes no programa, para entender a programao vou dividir ela em 6
partes.
1)Declarao de variveis e objetos
Nessa parte declaro todo tipo de varivel, referencia ou objeto, varivel como j
explicado e um endereo de memria que pode ser escrita ou lida a qual quer
momento, Referencia uma tcnica 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 espao na memria.

#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 varivel vel e responsvel 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 so bibliotecas usadas no programa.

26

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

2)Funo Move
o rob se locomove atravs de 4 motores que so ligados em em pares (em paralelo)
para que funcione bolei o seguinte funo move(); essa funo tem 4 argumentos que
simbolizam o chaveamento do drive por exemplo Move(255,0,255,0); moveria o meu
motor a velocidade mxima para frente, veja dessa maneira Move(velocidade A para
frente, Velocidade A para trs,Velocidade B para frente,velocidade B para trs); essa
funo 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) Funo Seguir linha


Essa funo bem mais complexa do que a anterior, ento vamos detalhar bem ela,
primeiro importante explicar que essa funo usa a funo anterior para mover o
rob, primeiramente vamos jogar no ar o objetivo da funo, Seguir linha para
conseguir essa faanha bolei uma tcnica a partir de um mtodo cientifico vou colocar
uma verdade absoluta e a partir dela fazer dedues, essa verdade ser o rob vai ser
ligado De baixo de uma linha isso no precisa ser verdade porem a partir desse
postulado posso fazer com que ele no 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 construo do
rob usei a comunicao 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 diviso da programao.

27

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Script da funo
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 Obstculos
Alm de seguir linha nosso rob e ser capaz de detectar um obstculo e desviar para
isso ele usei um motor servo para mover o sonar que faz a leitura em centmetros dos
objetos ao redor, existe uma rotina chamada loop que vamos detalhar em outro
tpico que faz a verificao constante da possibilidade de existir um obstculo, a
funo que detecta obstculo tem o nome de pedra, depois que o algoritmo j estiver
certo que h um obstculo a funo pedra vai virar o servo para esquerda e para
direita para verificar qual lado e disponvel para passar depois disso ele escolhe o lado
que estiver livre, caso os dois estejam livre ele vai para direita por padro, 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 prxima pagina.

28

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Script para desviar de obstculo


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 no houver nenhuma pedra virar para direita por padro
move(0,vel,vel,0);
delay(tempo1);
}
}
}

5)preparao
Antes de fato de executar o script preciso fazer uma preparao, 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 repetio
Finalmente a parte final, ate ento 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 obstculo, para ter certeza que no
haja uma interferncia momentnea (caso o sonar detectar um obstculo sem de fato
existir) o algoritmo far um segundo teste e s assim executara a funo pedra.

30

Autor: Isvaldo Fernandes de Souza


Site: www.robotizando.com
Email: Miojex360@hotmail.com

Concluso
Esse trabalho possibilitou a analise de dados de diversas reas que a robtica atua.
Eletrnica:
Houve diversos problemas com uso de baterias o Arduno consome muito em poucos
minutos uma bateria normal de 9V no consegue mais da suporte ao rob, isso se
deve pelo fato de ter N sensores drives entre outras coisas alimentadas pelo Arduno.
Fsica:
As rodas de borracha causam muito atrito com o cho, isso se torna um problema na
hora de fazer curvas, outra analise interessante com os sensores, a distancia dos
sensores com o cho e determinante para a preciso do sensor.
Programao:
preciso muita organizao no cdigo, pois o cdigo e constantemente alterado por
isso e importante desenvolver funes em forma de diagrama, pois caso uma parte
no funcionar, assim podemos ir direto ao erro e conserta sem a necessidade de
analisar todo o cdigo, 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 Arduno,realizao PET
Marshall Brain. "HowStuffWorks - Como funciona a programao 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 moviles. 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), 4756.

32

Você também pode gostar