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


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
3

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); // Email: Miojex360@hotmail.com comando obrigatrio para informa tipo de porta 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