DANILO FERREIRA RONCARI
GUSTAVO AMORIM CEZARINO
A UTILIZAÇÃO DA ROBÓTICA NO AUXÍLIO DA RECICLAGEM DO
LIXO
Trabalho de Conclusão de Curso
apresentado como exigência parcial, para
a obtenção do grau no curso de Ciência
da Computação, da Universidade de
Franca.
Orientador: Prof. Dr. Ricardo David
FRANCA
2011
DANILO FERREIRA RONCARI
GUSTAVO AMORIM CEZARINO
A UTILIZAÇÃO DA ROBÓICA NO AUXÍLIO DA RECICLAGEM DO LIXO
Orientador:__________________________________________________
Nome: Prof. Dr. Ricardo David
Instituição: Universidade de Franca
Examinador (a):_______________________________________________
Nome: Dr. Antônio Fernando Traina
Instituição: Universidade de Franca
Examinador (a):________________________________________________
Nome: Me. Henrique José da Silva
Instituição: Universidade de Franca
Franca, ____/____/______
DEDICO este trabalho aos meus pais, José e Edna, que
sempre estiveram comigo me dando apoio, força e o mais
importante do que isso, o amor deles. Sempre estiveram ao
meu lado e nos momentos mais difíceis, eles estavam sempre
por perto para me ajudar.
Danilo Ferreira Roncari
DEDICO este trabalho aos meus pais Carlos e Sandra e a
minha namorada Fernanda que me apoiaram não
somente durante este ano, mas durante todo o curso, nos
piores e melhores momentos, sempre me dando carinho e
amor.
Gustavo Amorim Cezarino
AGRADEÇO eternamente a Deus, a quem devo tudo e sem o
qual eu nada faço ou teria feito, ao meu anjo da guarda que é a
luz que me conduz e ilumina, meu eterno amigo; ao meu pai,
fonte de todo amor e sabedoria; a minha mãe, minha “vida”, por
me amar e estar sempre comigo; a minhas irmãs, Ana Flávia,
Camila e Renata, e minha namorada Mariane, que me
apoiaram e dedicaram o seu tempo para revisar nossos textos;
ao meu orientador Prof. Dr. Ricardo David que nos apoiou,
incentivou
e
auxiliou
através
de
seus
profundos
conhecimentos; aos Profs. Cacildo e Traina que sempre
estiveram presente e ajudando de maneira fundamental; ao
meu a grande amigo Lucas Zanella, que mesmo morando
muito distante me auxiliou; a empresa Franfacas por ter
fornecido material necessário para construção do robô; ao meu
grande companheiro Gustavo, que estudou e se dedicou
comigo durante todo o período para que pudéssemos concluir
este trabalho. Em fim, a todos amigos que diretamente ou
indiretamente contribuíram para a realização deste trabalho.
Danilo Ferreira Roncari
AGRADEÇO primeiramente a Deus por ter me dado força,
esperança e fé por que sem ele nada teria feito; ao meu pai
Carlos por me amar e mesmo estando distante sempre esteve
ao meu lado nos piores e melhores momentos; a minha mãe
Sandra por me amar e estar sempre disposta a me acolher; a
minha namorada Fernanda que sempre esteve ao meu lado em
todos os momentos e também me ajudou na escrita desta
monografia; ao meu orientador Prof. Dr. Ricardo David que nos
apoiou, incentivou e auxiliou através de seus profundos
conhecimentos; aos Profs. Cacildo e Traina que sempre
estiveram presente e ajudando de maneira fundamental; ao
meu grande parceiro Danilo que estudou e se dedicou ao
máximo comigo durante todo o período para que pudéssemos
concluir este trabalho. Em fim, a todos amigos que diretamente
ou indiretamente contribuíram para a realização deste trabalho.
Gustavo Amorim Cezarino
Às vezes a vida te bate com um tijolo na cabeça. Não perca a
fé. Estou convencido de que a única coisa que me fez
continuar foi que eu amava o que eu fazia. Você precisa
encontrar o que você ama. E isso vale para o seu trabalho e
para seus amores. Seu trabalho irá tomar uma grande parte da
sua vida e o único meio de ficar satisfeito é fazer o que você
acredita ser um grande trabalho. E o único meio de se fazer um
grande trabalho é amando o que você faz. Caso você ainda
não tenha encontrado o que gosta de fazer, continue
procurando. Não pare. Do mesmo modo como todos os
problemas do coração, você saberá quando encontrar. E, como
em qualquer relacionamento longo, só fica melhor e melhor ao
longo dos anos. Por isso, continue procurando até encontrar,
não pare.
(Steve Jobs, 2005)
Não basta ter diploma universitário, nem fazer pós-graduação
ou defender uma tese, é preciso ser solícito, enxergar o todo,
ter uma visão macro da sociedade. Quem tem compromisso
social ganha dinheiro com mais prazer e o usa com muito mais
sentido.
(CURY, 2007)
Eu aprendi que deveríamos ser gratos à Deus por não nos dar
tudo que lhe pedimos.
(WILLIAM SHAKESPEARE)
RESUMO
RONCARI, Danilo Ferreira e CEZARINO, Gustavo Amorim A utilização da robótica
no auxílio da reciclagem do lixo. 2011. 53 f. Trabalho de Conclusão de Curso
(Graduação em Ciência da Computação) – Universidade de Franca, Franca.
Este trabalho tem como objetivo o desenvolvimento de um protótipo capaz de
reconhecer e separar três tipos de materiais recicláveis (latas de alumínio e garrafas
de plástico e vidro). A ideia surgiu mediante ao problema enfrentado atualmente pelo
lixo gerado pelo ser humano sendo este pouco reciclado. O foco principal do
trabalho é a identificação e separação dos materiais citados, o que já agilizaria e
facilitaria um dos processos da reciclagem. O robô será capaz de reconhecer
quando um objeto está à sua frente, colocá-lo dentro do coletor, e através de
sensores posicionados em lugares estratégicos conseguirá identificar qual o tipo
objeto recolhido. Após ser identificado, ele o armazenará em um compartimento
específico para cada material, localizado em sua estrutura e este ciclo se repetirá
quantas vezes forem necessárias, auxiliando assim, na reciclagem, procurando
agilizar e diminuir os custos e consequentemente contribuindo para a manutenção
dos recursos naturais e menor exploração da natureza. As ferramentas utilizadas
foram o Arduino, que é o microcontrolador do robô e a plataforma de
desenvolvimento do mesmo. Com a construção do protótipo foi possível adquirir um
bom domínio da ferramenta e linguagem utilizada, além de um rico conhecimento
sobre a área da robótica e consequentemente, boas noções de eletrônica. O robô foi
capaz de diferenciar vasilhames de metal, plástico e vidro atendendo os objetivos
propostos.
Palavras-chave: robô; reciclagem; separação de lixo; Arduino; robô que separa lixo.
ABSTRACT
RONCARI, Danilo Ferreira e CEZARINO, Gustavo Amorim. The use of robotics in
aid of waste recycling. 2011. 53 f. End of Course Work (Graduate in Computer
Science) – University of Franca, Franca.
The main objective of this project is the construction of a prototype able to recognize
and separate three kinds of recyclable materials (aluminum cans and bottles of
plastic and glass). The idea came with the current problem of trash that is produced
by the human being, but just a small part of it is recycled. The focus of this work is
the identification and separation of the cited materials, what would make faster and
favor one of recycling processes. The robot will be able to recognize if an object is in
front of it, place it inside the collector and, through sensors strategically placed, it will
identify the kind of material that the object is made. Once identified the material, the
robot will store the object in a specific compartment. This cycle will be repeated as
often as needed, therefore the recycling process will be improved, the costs will be
reduced, what will lead to a maintenance of natural resources and a reduction in the
exploitation of nature. The tools used were the Arduino, which is the robot
microcontroller, and its development platform. With the construction of the prototype,
was possible to acquire a good command of the tools and the language used, a great
knowledge about robotics and, consequently, notions of electronics. The robot was
able to identify objects made of metal, plastic and glass, achieving the goals.
Keywords: robot; recycling; separation of waste; Arduino; robot that separate waste.
LISTA DE ABREVIATURAS
AUD Audio
FFT Fast Fourier Transform
Gnd Ground
MCU Microcontrolador
PWM Pulse Width Modulation
RAM Random Access Memory
ROM Read Only Memory
USB Universal Serial Bus
V Volts
VCC Voltagem Corrente Contínua
VIN Voltage Input
Lista de Figuras
Figura 1
– Tabela de cores para os tipo de matérias recicláveis
15
Figura 2
– Lixobô
19
Figura 3
– Competição IEE SouthEastCon
21
Figura 4
– Visão geral do robô
22
Figura 5
– Coletor dos materiais
23
Figura 6
– Parte superior do robô (Compartimentos)
24
Figura 7
– Mecanismo de abertura dos compartimentos
24
Figura 8
– Aplicação do sensor indutivo na indústria
26
Figura 9
– Composição do sensor indutivo
27
Figura 10 – Distância de Acionamento
28
Figura 11 – Reflexão do som
30
Figura 12 – Exemplo de funcionamento do sensor ultrassônico
30
Figura 13 – Esforço mecânico do cristal piezoelétrico
32
Figura 14 – Carga elétrica sobre o material
32
Figura 15 – Microfone
33
Figura 16 – Funcionamento Piezoelétrico como microfone
33
Figura 17 – Arduino versão Uno
35
Figura 18 – Sensor PING)))
39
Figura 19 – Breakout Board for Electret Microphone
40
Figura 20 – Eixo de rotação do coleto
42
Figura 21 – Garrafas de Vidro
43
Figura 22 – Garrafas de Plástico
43
Figura 23 – Frequência do Plástico
44
Figura 24 – Frequência do Vidro
44
Figura 25 – FFT de resposta das garrafas de Vidro e de plástico
sobrepostas
45
Figura 26 – Diagrama de Atividades
48
SUMÁRIO
INTRODUÇÃO...........................................................................................................14
1.
ROBÓTICA E RECICLAGEM ........................................................................ 17
1.1.
CONSIDERAÇÕES INICIAIS ......................................................................... 17
1.2.
ROBÓTICA ..................................................................................................... 17
1.3.
EXEMPLOS ENCONTRADOS NA LITERATURA .......................................... 19
1.3.1. Lixobô ............................................................................................................. 19
1.3.2. Competição..................................................................................................... 20
2.
MECÂNICA .................................................................................................... 22
2.1.
CONSIDERAÇÕES INICIAIS ......................................................................... 22
2.2.
Montagem ....................................................................................................... 22
3.
ELETRÔNICA ................................................................................................ 25
3.1.
CONSIDERAÇÕES INICIAIS ......................................................................... 25
3.2.
SENSORES .................................................................................................... 25
3.2.1. Sensor indutivo ............................................................................................... 25
3.2.1.1 Funcionamento do sensor indutivo ............................................................... 27
3.2.2. Sensor ultrassônico ........................................................................................ 28
3.2.2.1 Funcionamento do sensor utrassônico ......................................................... 30
3.2.3. Microfone e Piezoelétrico................................................................................ 31
3.2.3.1 Funcionamento do Piezoelétrico .................................................................. 32
3.3.
MICROCONTROLADORES ........................................................................... 34
3.3.1. Arduino ........................................................................................................... 34
3.3.1.1 Estrutura do Arduino .................................................................................... 36
3.4.
VANTAGENS DO ARDUINO .......................................................................... 38
3.5.
SENSORES ESCOLHIDOS ........................................................................... 38
3.5.1. Utilização do sensor ultrassônico ................................................................... 38
3.5.2. Utilização do sensor indutivo .......................................................................... 39
3.5.3. Utilização do Microfone................................................................................... 39
4.
SOFTWARE ................................................................................................... 41
4.1.
CONSIDERAÇÕES INICIAIS ......................................................................... 41
4.2.
DISTINÇÃO DO ALUMÍNIO............................................................................ 41
4.3.
DISTINÇÃO DO PLÁSTIVO E DO VIDRO ..................................................... 41
4.4.
FUNCIONAMENTO GERAL ........................................................................... 47
CONCLUSÃO ........................................................................................................... 49
REFERÊNCIAS ......................................................................................................... 50
APÊNDICES ............................................................................................................. 53
14
INTRODUÇÃO
O presente trabalho tem como objetivo analisar o problema enfrentado
atualmente com o lixo gerado e sugerir uma possível ferramenta para auxilio na
identificação de determinados materiais, tais como, garrafas de plástico e vidro e
latas de alumínio, visando facilitar o processo de coleta, reciclagem e também
proporcionar maior agilidade e menor custo.
O método mais utilizado para solucionar boa parte do lixo gerado pelo
ser humano é a reciclagem, que vem do inglês recycle (re = repetir, e cycle = ciclo)
repetir o ciclo, é um método que utiliza certos tipos de lixo como garrafas de plástico
e vidro e latas de alumínio, como matéria-prima para a fabricação de novos
produtos,
O objetivo da reciclagem é diminuir a extração dos recursos naturais,
muitas vezes não renováveis, uma economia de energia nos processos de
fabricação, e a diminuição da poluição do lixo gerado pela sociedade.
A resolução n° 275 de 25 de abril 2001 do Conama (2001 Conama),
estabelece um código de cores a serem seguidos para os diversos tipos de materiais
recicláveis, o padrão utilizado é mostrado na figura 1.
De acordo com o IBGE (2011) e o Compam (2011), o Brasil produz 90
milhões de toneladas de lixo por ano sendo apenas 2% reciclado. Isso ocorre devido
ao alto custo do processo de reciclagem que hoje é 15 vezes mais caro do que
simplesmente depositar o lixo em aterros. A título de comparação, a Europa e os
Estados Unidos reciclam 40% de todo os seus resíduos produzidos, uma diferença
de 38%. O processo de coleta do lixo nos dias atuais é bem manual, que vai desde
catadores de lixo a separação dos tipos de materiais.
Atualmente, percebe-se um grande acúmulo de resíduos sólidos
provenientes de festas e eventos que ocorrem nos mais diversos locais. Em
especial, são encontrados garrafas de vidro, recipientes de plástico e latas de
alumínio jogadas pelo chão, mesmo havendo lixeiras no local.
15
Utilizando a robótica nesse contexto, seria possível então criar robôs
capazes de auxiliar na limpeza desses estabelecimentos a partir da identificação
desses materiais para seu posterior recolhimento. Essa coleta e separação no local
irá conferir maior agilidade e menor custo ao processo de reciclagem, do que se
realizadas nos depósitos sanitários a céu aberto, além de auxiliar a limpeza do
estabelecimento ou recinto.
Visando esses conceitos, o projeto apresenta uma alternativa para
contribuir com um tema tão importante quanto à reciclagem, mostrando que a
tecnologia também está associada ao meio ambiente, apresentando opções para a
resolução dos problemas presentes e considerando as consequências dessas ações
no futuro.
Figura 1: Tabela de cores para os tipos de matérias recicláveis
Fonte: Conama, 2001.
O projeto está divido em três partes, sendo a primeira, a mecânica, que
mostra o processo mecânico de funcionamento do robô, relatando a movimentação
e mecanismos de abertura dos compartimentos e coleta. A segunda é a eletrônica,
onde relata de que forma os objetos são identificados, abordando o funcionamento
16
do microcontrolador e sensores utilizados. A terceira é relacionado ao Software, que
aborda as distinções dos materiais, os testes realizados e seus resultados e as
principais rotinas de programação.
17
1. ROBÓTICA E RECICLAGEM
1.1. CONSIDERAÇÕES INICIAIS
Este capítulo abordará informações sobre robótica, apresentando uma
breve introdução sobre o tema, bem como algumas definições, informações,
exemplos e principais características de outros robôs semelhantes.
1.2. ROBÓTICA
De acordo com o site American HeritageDictionary, a robótica é a
ciência ou o estudo da tecnologia associado ao projeto, fabricação, teoria e
aplicação dos robôs. Segundo Santos (2003) a palavra robótica foi utilizada pela
primeira vez na imprensa, dentro da história de ficção científica de Isaac Asimov
"Liar!" (1941).
Conforme Santos (2003) o termo “robô” vem da palavra Robota que na
língua eslava significa trabalhos forçados ou escravos, e teve sua divulgação numa
peça de 1921 de Karel Capek. Através dos tempos o conceito de robô ou servo do
homem tem ocupado a mentalidade do ser humano.
De acordo com o dicionário Webster (2011), robô é um dispositivo
automatizado capaz de manipular objetos ou de executar operações de acordo com
um programa fixo, modificável ou adaptável.
Já o dicionário Michaelis (2011), define robô como um aparelho
automático, com aspecto de boneco capaz de executar diferentes tarefas, incluindo
algumas geralmente feitas pelo homem.
Algum tempo depois dos primeiros projetos de robôs terem sidos
executados, Isaac Asimov definiu as leis da robótica por volta de 1950:
18
Lei Zero: Um robô não pode fazer mal à humanidade e nem, por
inação, permitir que ela sofra algum mal.
1ª Lei: Um robô não pode maltratar um ser humano, ou pela sua
passividade deixar que um ser humano seja maltratado.
2ª Lei: Um robô deve obedecer às ordens dadas por um ser humano,
exceto se entrarem em conflito com a 1ª Lei.
3ª Lei: Um robô deve proteger a sua própria existência desde que
essa proteção não entre em conflito com a 1ª ou 2ª Lei.
De acordo com Ferrari e Eto (2011), os robôs são divididos em várias
classes, que são utilizadas para definir seus respectivos tipos:
1. Robôs Inteligentes: são manipulados por sistemas multifuncionais
controlados por computador, capazes de interagir com seu ambiente através de
sensores e de tomar decisões em tempo real. Atualmente se dedica grande esforço
no desenvolvimento desse tipo de robô.
2. Robôs com controle por computador: são semelhantes aos robôs
inteligentes, porém não tem a capacidade de interagir com o ambiente. Se estes
robôs forem equipados com sensores e software adequado, se transformam em
robôs inteligentes.
3. Robôs de aprendizagem: se limitam a repetir uma sequência de
movimentos, realizados com a intervenção de um operador ou memorizadas.
4. Manipuladores: são
sistemas
mecânicos
multifuncionais,
cujo
sistema sensível de controle permite governar o movimento de seus membros das
seguintes formas:
a) manual, quando o operador controla diretamente os movimentos;
b) de sequência variável, quando é possível alterar algumas das
características do ciclo de trabalho.
19
1.3. EXEMPLOS ENCONTRADOS NA LITERATURA
1.3.1. Lixobô
Um dos exemplos de robôs encontrados na área da reciclagem é o
Lixobô (SOARES, 2011), que consiste em uma lixeira mecanizada que se locomove
autonomamente. Ele é acionado com um assovio ou bater de palmas, e assim sua
tampa se abre e o robô coloca-se em movimento durante 15 segundos, para que o
para que o lixo possa ser colocado em seu interior.
Figura 2: Lixobô
Fonte: SOARES, 2011
Segundo Soares (2011), o funcionamento do Lixobô é bem simples:
quando ligado, ele se mantém parado, esperando ser chamado com um bater de
20
palmas ou outro som qualquer (alto). Assim que identificado o som, ele abrirá a
tampa da lixeira e se colocará em movimento, iniciando uma coleta pela sala. A
identificação dos obstáculos é realizada através de um sensor de distância
infravermelho e sensores de colisão (bumper’s).
1.3.2. Competição
Nos Estados Unidos houve uma competição, IEEE SouthEastCon,
voltada para construção de robôs que recolhem alguns materiais pré-determinados e
efetuam a separação dos mesmos.
A competição ocorreu em 2009, cujo objetivo era que os robôs
localizassem, fizessem o recolhimento e a classificação segundo o gênero de lixo,
em seguida armazenassem os produtos relacionados às bebidas. Durante a triagem,
o armazenamento deveria ser feito no próprio robô.
No final da rodada, foi considerada uma pontuação maior para os
objetos recolhidos e separados corretamente e, por conseguinte uma pontuação
menor para aqueles que tiveram erros no momento da distribuição dos objetos.
A estrutura mecânica do robô do presente trabalho se baseou em um
dos robôs participantes desse concurso, porém a identificação foi desenvolvida com
outros métodos, criados pelos autores.
21
Figura 3: Competição IEEE SouthEastCon
Fonte: http://www.flickr.com/photos/erby/3339547071/sizes/o/in/set-72157614843462433/
22
2. MECÂNICA
2.1. CONSIDERAÇÕES INICIAIS
Este capítulo irá abordar a montagem e a parte mecânica do robô,
visando mostrar todas as peças e suas determinadas funções.
2.2. Montagem
O robô possui três compartimentos para armazenar os materiais, uma
estrutura superior para abertura desses compartimentos e um coletor de materiais,
conforme mostra a figura 4.
Figura 4: Visão geral do robô
Fonte: Os Autores
23
Foi desenvolvido um coletor de materiais que além de recolher os
objetos também identifica latas de alumínio e garrafas de plástico e vidro.
Há ainda uma estrutura frontal que auxilia no recolhimento dos
materiais, composta por um eixo de alumínio com seis rodas de borracha que
quando necessario entra em rotação contínua para empurrar o objeto para o interior
do coletor, onde o mesmo efeturá a identificação. O movimento horizontal deste eixo
é feito por dois servos localizados nas laterais do coletor, conforme a figura 6.
Existem dois servos e um contrapeso utilizados para articular o coletor
até a parte superior do robô. O contrapeso possui 0,6 kg de ferro, calculados
proporcionalmente ao peso dos materiais juntamente com o peso do coletor, para
minimizar o esforço na subida do coletor.
Figura 5: Coletor dos materiais
Fonte: Os Autores
A estrutura superior do robô, onde são armazenados os materiais foi
feita com madeira. Ela possui uma inclinação calculada relativa à base principal do
robô, para que os objetos projetados sobre a estrutura deslizem suavemente para o
compartimento desejado. A madeira possui duas aberturas que são utilizadas como
compartimentos que armazenam respectivamente vidro e plástico e atrás do robô
possui um terceiro que armazena as latas de alumínio. Veja figura 7.
24
Figura 6: Parte superior do robô (Compartimentos)
Fonte: Os Autores
O movimento de abertura e fechamento dos compartimentos é
realizado por dois microservos fixados em uma placa retangular de acrílico,
conforme a figura 8.
Figura 7: Mecanismo de abertura dos compartimentos
Fonte: Os Autores
Para maiores esclarecimentos sobre a estrutura e suas dimensões veja
o apêndice A.
25
3. ELETRÔNICA
3.1. CONSIDERAÇÕES INICIAIS
O objetivo deste capítulo é relatar conceitos fundamentais e
necessários para o entendimento dos componentes e do conteúdo do trabalho. Será
feita uma abordagem sobre os sensores que existem no mercado que podem ser
utilizados para o propósito do projeto. O capítulo explicará cada sensor e sua
definição detalhando o seu funcionamento.
3.2. SENSORES
3.2.1. Sensor indutivo
Segundo Wendling (2011), o sensor indutivo é um componente
eletrônico capaz de detectar a aproximação de um objeto metálico sem a
necessidade de contato físico entre sensor e o acionador. Sendo que para cada tipo
de material, o sensor deve ficar a uma distância adequada para correta identificação.
O sensor foi desenvolvido para atender às necessidades dos sistemas modernos de
produção, nos quais é necessária grande confiabilidade e velocidade.
26
Figura 8: Aplicação do sensor indutivo na indústria
Fonte : http://www.flickr.com/photos/erby/3339547071/sizes/o/in/set72157614843462433/
Os sensores indutivos em geral são totalmente vedados e com
invólucro robusto, não possuindo partes móveis, sendo capazes de operar em
condições severas como na presença de lubrificantes, óleos e imersos em água.
Eles são utilizados, nas indústrias em geral, maquinários, injetoras de
plástico e linhas transportadoras, entre outras.
3.2.1.1. Funcionamento do sensor indutivo
Um objeto de metal, ao se aproximar de um sensor de proximidade
indutivo, absorve a energia gerada pelo oscilador. Quando o alvo está muito próximo
da faixa, o fluxo de energia interrompe o oscilador e altera o estado da saída.
27
Figura 4: Composição do sensor indutivo
Fonte: Os autores
O sensor é constituído por uma bobina em um núcleo de ferrite, um
oscilador, um detector de nível de sinais de disparo e um circuito de saída. Este
trabalha pelo princípio da indução eletromagnética e funciona de maneira similar aos
enrolamentos primários e secundários de um transformador. O sensor tem um
oscilador e uma bobina; juntos produzem um campo magnético fraco. Quando um
objeto entra no campo, pequenas correntes são induzidas na superfície do mesmo e
por causa da interferência do campo magnético, parte da energia é extraída do
circuito oscilador do sensor, diminuindo a amplitude da oscilação e causando uma
queda de tensão. O circuito de detecção do sensor percebe a queda de tensão do
oscilador e muda o seu estado (Allen-Bradley, 2011).
28
Figura 10: Distância de Acionamento
Fonte:http://www.flickr.com/photos/erby/3339547071/sizes/o/in/set72157614843462433/
3.2.2. Sensor ultrassônico
Segundo Braga (2008), o sensor ultrassônico é bastante utilizado em
aplicações industriais. Estes podem ser utilizados para detectar a passagem de
objetos numa linha de montagem, detectar a presença de pessoas ou ainda de
substâncias em diversos estados num reservatório permitindo a medida de seu nível.
Esses sensores se caracterizam por operar através de um tipo de
radiação não sujeita a interferência eletromagnética e totalmente limpa, o que pode
ser muito importante para determinados tipos de aplicações. Eles podem operar de
29
modo eficiente detectando objetos em distâncias que variam entre milímetros até
vários metros, e ainda para detectar os mais variados tipos de objetos e substâncias,
de acordo com Braga (2008).
O sensor ultrassônico é um equipamento destinado a detectar a
presença de sólidos ou líquidos, quando colocados na trajetória do seu cone de
detecção. Esse sensor, além de imune à pressão do ar atmosférico, possui também
compensação interna de temperatura que mantém a detecção estável em quaisquer
condições de uso. Vários sensores podem operar próximos sem interferências
mútuas devido à possibilidade de sincronização interna ou externa ou no modo
multiplexado (Di-eletrons, 2011).
3.2.2.1. Funcionamento do sensor ultrassônico
De acordo com Braga (2008), o princípio de operação desses sensores
é exatamente o mesmo do sonar, usado pelo morcego para detectar objetos e
presas em seu voo cego. Conforme mostra a figura 12, o pequeno comprimento de
onda das vibrações ultrassônicas faz com que elas se reflitam em pequenos
objetos, podendo ser captadas por um sensor colocado em posição apropriada.
30
Figura 11: Reflexão do som
Fonte:http://www.sabereletronica.com.br/secoes/leitura/892
O princípio de funcionamento dos sensores ultrassônicos se baseia na
emissão de uma onda sonora de alta frequência (superior a 20.000 Hz), e na
medição do tempo levado para a recepção do eco produzido quando esta onda se
choca com um objeto capaz de refletir o som. Eles emitem pulsos ultrassônicos
ciclicamente. Quando um objeto reflete estes pulsos, o eco resultante é recebido e
convertido em um sinal elétrico, Automatize (2008).
Figura 12: Exemplo de funcionamento do sensor ultrassônico.
Fonte: http://www.automatizesensores.com.br/ultrasonicos.html.
31
A detecção do eco incidente depende de sua intensidade e esta da
distância entre o objeto e o sensor ultrassônico. Estes funcionam medindo o tempo
de propagação do eco, isto é, o intervalo de tempo medido entre o impulso sonoro
emitido e o eco do mesmo.
3.2.3. Microfone e Piezoelétrico
De acordo The Great Soviet Encyclopedia (1970 - 1979), o transdutor
piezoelétrico converte estresse mecânico em um sinal elétrico. Seu funcionamento é
baseado no efeito piezoelétrico.
Os transdutores piezoelétricos são adequados para medir pressões
que variam rapidamente. As principais vantagens dos transdutores piezoelétricos
são as suas características de alta dinâmica e sua capacidade de perceber as
variações de pressão em frequências de dezenas de hertz até dezenas de
megahertz. Os transdutores piezoelétricos são utilizados na medição de tensão,
vibração e deformação, mas também encontra aplicação em aparelhos de pesagem
e de triagem de acordo com o peso (The Great Soviet Encyclopedia, 1970 - 1979).
3.2.3.1. Funcionamento do piezoelétrico
De acordo com Braga (2008), existem materiais, denominados
piezoelétricos, que, quando submetidos a uma deformação mecânica, geram cargas
elétricas que aparecem em suas faces, como mostra a figura 14.
32
Figura 13: Esforço mecânico do cristal piezoelétrico
Fonte: BRAGA, 2008.
Da mesma forma segundo Braga (2008), se esses materiais forem
submetidos a uma tensão elétrica, eles sofrem uma deformação mecânica, ou seja,
podem curvar-se, alongar-se ou mudar sua espessura, conforme ilustra a figura 15.
Figura 14: Carga elétrica sobre o material.
Fonte: BRAGA, 2008.
O cristal de quartzo é um material que apresenta essas propriedades,
podendo ser usado, por esse motivo, para gerar sinais elétricos de frequência fixa.
De fato, se um cristal de quartzo for excitado eletricamente, ele tende a vibrar numa
única frequência, de forma precisa, dada pelas suas dimensões e o formato em que
ele é cortado, de acordo com Braga (2008).
33
Figura 15: Microfone
Fonte: http://www.estudiolivre.org/tiki
Muitas vezes o piezo é vendido em lojas de eletrônica como microfone,
porque de fato pode comportar-se como tal quando utilizado numa entrada de áudio
pré-amplificada.
Figura 16: Funcionamento piezoelétrico como microfone
Fonte: BRAGA, 2008.
34
3.3. MICROCONTROLADORES
Segundo Angelfire, um microcontrolador é um circuito integrado que
possui internamente um microprocessador e todos os periféricos essenciais ao seu
funcionamento, como:
Memória de programa, geralmente uma memória do tipo EPROM
(memória apagável de somente leitura), onde serão armazenadas as informações de
programa, ou seja, o que o microprocessador deve executar;
Memória de dados, geralmente uma memória do tipo RAM (memória
de acesso randômico), onde ficarão armazenadas as informações de dados que o
programa ira utilizar, geralmente é utilizada para guardar um valor;
Clock, em alguns microcontroladores o gerador desse sinal é também
acoplado ao microprocessador dentro do CI, ele tem a função de sincronizar todos
os eventos de um circuito digital;
Dispositivo controlador de interrupção, como o nome já diz, é este
componente que controla os pedidos de interrupção para a CPU.
3.3.1. Arduino
Arduino é uma placa de prototipação open-sourse que utiliza o
microcontrolar ATmega da Atmel. Ele possui uma plataforma baseada em hardware
e software flexíveis e fáceis de usar. O MCU da placa é programado usando a
linguagem de programação Arduino, que é fundamentada em Wiring e seu ambiente
de desenvolvimento é espelhado em Processing.
Atualmente existem varias versões do Arduino e cada uma delas com
suas respectivas características. Elas podem ser compradas prontas ou construídas
manualmente, pois seus desenhos de referência do hardware estão disponíveis sob
uma licença open-source. Com isso o usuário está livre para adaptá-los conforme as
suas necessidades.
35
3.3.1.1. Estrutura do Arduino
Na figura 18 pode ser vista a placa controladora do Arduino e seus componentes.
Figura 17: Arduino versão Uno
Fonte: http://multilogica-shop.com
Neste parágrafo serão comentados alguns conceitos e especificações
que foram extraídos do site oficial do Arduino (Arduino.cc) sobre a versão Uno. Na
parte superior existem quatorze pinos de entradas e saídas digitais para conectar
com tensões de até cinco Volts (V). Estes pinos podem ser configurados tanto para
enviar ou receber pulsos elétricos, dependendo dos objetivos do sistema.
Os pinos digitais de número 3, 5, 6, 9, 10 e 11 possuem saídas do tipo
Pulse Width Modulation (PWM). Ao lado do pino de número 13 fica o ground (GND).
A este deve ser conectado o cabo que receberá o aterramento no circuito eletrônico.
Na parte inferior, encontram-se seis pinos de entradas analógicas, utilizados para
conexão de sensores e outros dispositivos de variabilidade analógica. Estas
convertem o sinal analógico em digital com resolução de 10 bits, que compreende
valores entre 0 a 1024, com tensão máxima de 5V. Também ficam situados na parte
inferior os pinos de saída de energia, que se dividem em dois: um de 5V, um de 3,3V
36
ambos para alimentação de instrumentos que venham a ser conectados ao Arduino.
Dois pinos identificados como GND funcionam como aterramento. Ao lado existe um
pino descrito como voltage input (VIN) que deve ser utilizado caso haja a
necessidade de outra fonte de energia, que não seja por USB ou fonte de
alimentação de 5V, que são os padrões do Arduino.
No lado esquerdo da figura ficam localizadas as entradas de
alimentação, por fonte de energia de 5V ou entrada USB. Caso o sistema depois de
pronto fique independente do computador, ou seja, não possua qualquer tipo de
interação com o seu hospedeiro no funcionamento, pode-se optar pela alimentação
da placa através de uma fonte de alimentação de energia de 9V. Porém, se o
Arduino estiver constantemente ligado a um computador hospedeiro, a própria
conexão USB se encarregará de manter a placa energizada e em funcionamento. A
seleção do tipo de alimentação da placa, por fonte ou USB, varia de um modelo para
o outro. Os mais modernos, como o Arduino Uno, já identificam automaticamente o
método como a placa está sendo alimentada. Já os modelos mais antigos
necessitam de um jumper, posicionado ao lado da porta USB.
A título de comparação segue a tabela 1 com algumas características
das principais placas de prototipação encontradas no mercado.
37
Tabela 1 – Tabela comparativa de placas de prototipação.
Arduino
Uno
Tensão de entrada
Corrente máxima
Arduino
Parallax BASIC
Mega 2560
Stamp 2
Orangutan
SVP - 1284
7 – 12 V
7 – 12 V
5 – 15 V
6 – 13,5 V
40 mA
40 mA
25 mA
40mA
7,49 x 5,33
10,84 x 53,4
3,05 x 1,6 cm
9,4 x 5,59 cm
cm
cm
ATmega328
ATmega2560
Microchip
ATmega1284
PIC16C57C
P
de saída
Tamanho
Processador
Memória
31,5 KB
248 KB
2 KB
128 KB
2 KB
8 KB
32 Bytes
16 KB
16 MHZ
16 MHZ
20 MHz
20 MHZ
20
54
16
17
6
16
-
12
6
11
16
6
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Sim
Não
Sim
USB
Sim
Sim
Não
Sim
Preço
U$ 29,95
U$ 64,95
U$ 49,00
U$ 99,95
Memória RAM
Clock
Entradas e Saídas
Digitais
Entradas
Analógicas
Saídas PWM
Suporte a
Interrupções
Possui
Temporizadores
Possui interface
para prototipação
(Preços extraídos da loja Pololu, maio de 2011.)
Fonte: os Autores
38
3.4. VANTAGENS DO ARDUINO
As principais vantagens do Arduino em relação as outras placas são: a
capacidade de efetuar protótipos rapidamente e com grande simplicidade, a
possibilidade de expandir a sua capacidade através da utilização de Shields e um
valor bastante acessível se comparado às placas semelhantes. Além de oferecer
todos os componentes necessários para sua utilização, basta ligar e programar pela
interface USB não precisando de um gravador específico para o MCU.
A programação do Arduino é muito ágil devido à utilização de
bibliotecas, contendo funções e rotinas de códigos já prontas que facilitam a
implementação de certas aplicações.
3.5. SENSORES ESCOLHIDOS
Dentre os diversos modelos de sensores existentes, foi feito uma
relação e escolhidos os sensores o que melhor se aplicam no robô.
3.5.1. Utilização do sensor ultrassônico
Para verificar se o objeto está próximo ao coletor, utilizou-se o sensor
de distância ultrassônico PING))) da Parallax, pelo baixo custo e também porque
alguns dos objetos que precisam ser recolhidos possuem um baixo índice de
refração, tais como a garrafa de vidro e de plástico. Por esse motivo, dificulta-se a
utilização de sensores de outra categoria, como os do tipo infravermelho
39
Figura 18: Sensor PING)))
Fonte: http://www.pololu.com/catalog/product/1605
Segundo a Pololu, o sensor PING))), fornece um método de baixo
custo e de fácil medição de distância. Este sensor é perfeito para quaisquer
aplicações que requer medições entre objetos, em movimento ou parado. Este
sensor de distância ultrassônico é amplamente utilizado em aplicações de robótica e
também é útil em sistemas de segurança ou como uma alternativa de sensores de
distância infravermelho.
3.5.2. Utilização do sensor indutivo
A escolha do sensor indutivo foi feita com base em sua característica
de diferenciação do metal em relação a outros materiais não metálicos. Dessa
maneira a identificação de um dos três tipos de materiais para futura reciclagem,
está resolvida.
3.5.3. Utilização do Microfone
O microfone “Breakout Board for Electret Microphone”, fabricada pela
empresa norte americana Sparkfun, é utilizado na captação do som emitido pelos
40
materiais. Essa placa consiste em um microfone e um circuito de amplificação de
100 vezes o som capturado, facilitando a análise.
A placa possui três pinos, sendo que dois deles, GND E VCC, são para
alimentação que pode variar de 2,7 a 5,5 V. O ultimo pino, o audio (AUD) é o pino
que fornece o sinal analógico do microfone já amplificado.
Figura 19: Breakout board for electret microphone
Fonte: http://www.pololu.com/catalog/product/1605
O sinal recebido pelo microfone é convertido em digital utilizando o
conversor digital/analógico do MC, mas apenas com esse processo não há como
analisar o sinal a ponto de distinguir o plástico do vidro. Para isso se utilizou a
transformação rápida de Fourier, em inglês Fast Fourier Transform (FFT). Com ela
conseguiu-se analisar o comportamento de várias frequências do sinal de áudio,
tornando possível a distinção entre vidro e o plástico.
41
4. SOFTWARE
4.1. CONSIDERAÇÕES INICIAIS
O grande diferencial do robô é a distinção entre os materiais. Através
de um conjunto de sensores e de um software no MCU, o robô é capaz de
diferenciar o tipo de material dos objetos que foram recolhidos.
4.2. DISTINÇÃO DO ALUMÍNIO
A distinção do alumínio é realizada por meio de dois sensores indutivos
localizados no coletor de objetos. Esses sensores identificam diretamente a
presença a uma pequena distância de sua face, sem a necessidade de testes mais
complexos.
4.3. DISTINÇÃO DO PLÁSTIVO E DO VIDRO
A distinção destes dois materiais é um pouco mais complexa que a
distinção do alumínio, pois envolve análise de espectro sonoro de cada material.
Ela funciona da seguinte maneira; um eixo de alumínio que possui
cinco molas com chumbo em sua ponta (como mostra a figura 21), começa a girar
fazendo com que o chumbo bata no material recolhido, com a batida, é gerado um
ruído, esse que é captado por um microfone fixado no coletor, a partir disso o MCU
verifica se o som gerado é característico do vidro ou do plástico.
42
Figura 20: Eixo de rotação do coletor
Fonte: Os Autores
O maior desafio encontrado foi a distinção entre as garrafas de plástico
e vidro. Foram realizados vários testes com sensores infravermelho que foram
inviabilizados em função das diferentes tonalidades das garrafas, o que torna o
processamento mais complexo para ser resolvido pelo MCU. Outro teste feito foi a
emissão de ruído branco através dos objetos sob teste. A ideia seria captar de volta
o som refletido pelo objeto com um microfone e procurar um padrão ressonante que
distinguisse os três tipos de materiais. Ainda não se conseguiu no presente trabalho
acertar um algoritmo eficiente capaz de resolver a questão que seja passível de
rodar no MCU utilizado.
A melhor solução encontrada foi analisar a frequência de resposta que
cada material emite quando é excitado através da batida repetitiva de um objeto
metálico em sua superfície.
Os testes realizados para a escolha do melhor algoritmo de distinção
do plástico do vidro serão descritos a seguir. Inicialmente foram levantados os
principais tipos de garrafas de plástico e vidro existentes no mercado, logo após, foi
feita uma relação com as existentes nos ambientes em que está trabalhando e
escolhido os seguintes objetos, como mostra a figura 22 e 23.
43
Figura 21: Garrafas de Vidro
Fonte: Os Autores
Figura 22: Garrafas de Plástico
Fonte: Os Autores
Em seguida foram feitos testes com cada um desses objetos, que
foram colocados no interior do coletor do robô e por meio de um microfone foi
captado o som gerado através da batida do estanho no objeto. Logo em seguida, foi
realizado a FFT. O resultado da transformação é um vetor, em que cada posição
corresponde a uma frequência, e o valor corresponde à intensidade de cada
frequência.
Para cada objeto foram feitas trinta aquisições, e calculada a média
aritmética, esta técnica é chamada de promediação. Os resultados são mostrados
nos gráficos abaixo:
44
Plástico
120
Intensidade (dBi)
100
80
60
Plástico 1
40
Plástico 2
Plástico 3
20
0
0
5000
10000
15000
20000
25000
Frequência (Hz)
Figura 23: Frequência do Plástico
Fonte: Os Autores
Vidro
120
Intensidade (dBi)
100
80
60
Vidro 1
40
Vidro 2
Vidro 3
20
0
0
5000
10000
15000
Frequência (Hz)
Figura 24: Frequência do Vidro
Fonte: Os Autores
20000
25000
45
Fazendo outra média aritmética por tipo de material e sobrepondo os
traçados chegou-se ao seguinte resultado:
IIntensidade (dBi)
Plástico x Vidro
90
80
70
60
50
40
30
20
10
0
Plastico
Vidro
0
5000
10000
15000
20000
25000
Frequência (Hz)
Figura 25: FFT de resposta das garrafas de Vidro e de plático sobrepostas
Fonte: Os Autores
Existe uma região de deflexão dos traçados que proporciona evidente
diferenciação entre os espectros dos dois sinais (12,6 kHz), isso permite facilmente a
determinação de um limiar de separação entre os sinais em estudo.
Através desses testes, verificou-se que a frequência de ressonância do
vidro é muito mais alta que a do plástico. A identificação do material é realizada
através de um algoritmo de filtro por software que distingue faixas de frequências. A
Rotina do robô para distinção do vidro do plástico é descrita abaixo.
boolean calcMediaIsVidro(){
boolean vet[media];
for(int i = 0 ;i<media;i++){
boolean valor = isVidro();// Percorre o vetor adicionando se é vidro ou nao, o tamanho do vetor é
quantidade de vezes q vamos realizar a média
vet[i] = valor;
//Serial.println(valor);
}
int cont = 0;
for(int i = 0 ;i<media;i++){
if(vet[i] == true){
cont++;
}
}
46
if(cont>10){
Serial.println("Vidro");
return true;
}
else{
Serial.println("Plastico");
return false;
}
}
boolean isVidro(){
fft_input(capture, bfly_buff);
fft_execute(bfly_buff);
fft_output(bfly_buff, spektrum);
int maior=0;
for (byte i = 0; i < 64; i++){
if(spektrum[i]> spektrum[maior]){
maior = i;
}
}
if(maior > 40){
position = 0;
Serial.println("Vidro");
return true;
}
position = 0;
Serial.println("Plastico");
return false;
}
O código acima mostra duas das principais funções que o robô irá
executar, sendo a primeira dependente da segunda. A segunda função chamada
“isVidro” executa a transformação de FFT no som armazenado pela variável
“capture” que foi captado pelo microfone, esse som sofrerá a transformação de FFT,
que retornará um vetor com as frequências analisadas. Após obtermos esse vetor,
percorremos o mesmo em busca do maior valor obtido, sempre comparando o valor
maior já encontrado com o valor de cada posição do vetor.
Posteriormente se verifica se esse valor que obtido é maior que 40,
caso seja, o objeto recolhido é vidro e a função retorna true, senão é plástico
retornando false.
A primeira função chamada “calcMediaIsVidro” cria um vetor do tipo
boolean. Seu tamanho será relacionado à quantidade de vezes que vamos chamar a
função “IsVidro”. Também é criada uma variável local do tipo boolean para
47
armazenar o retorno da função “isVidro”, essa variável será jogada dentro do vetor
criado e posteriormente esse vetor será percorrido e os valores contidos em cada
posição serão comparados com true. Cada vez que a função “isVidro” for chamada
ela irá retornar true para quando for vidro ou false para quando for plástico, e esses
valores ficarão armazenados em um vetor, que depois será percorrido para verificar
se em suas posições vão existir mais vezes true ou false. Sendo assim consegue-se
verificar se é plástico ou vidro. Para maiores detalhes sobre o código fonte, veja
apêndice B.
4.4. FUNCIONAMENTO GERAL
O robô possui uma sequencia pré-definidas de atividades, a primeira
delas é posicionar os servos que existem no interior do coletor para que o objeto
possa entrar, após, ele verifica se existe algum objeto próximo a ele, através do
sensor de distância ultrassônico, caso tenha algum objeto próximo, ele abaixa a
haste do coletor para deixar o objeto preso dentro do mesmo. Em seguida verifica se
o objeto realmente foi coletado, através de dois micro-swtch.
Após a confirmação de que o objeto de fato está lá, o robô começa a
primeira identificação, utilizando o sensor indutivo verifica-se se o objeto é alumínio,
se for, levanta o coletor até a parte superior do robô, se não for verifica-se se é vidro
através da FFT, caso seja, abre o compartimento do vidro e levanta o coletor, senão,
abre o compartimento do plástico e também levanta o coletor.
Após o robô ter recolhido o objeto o processo reinicia, que se mostra
uma característica da reciclagem, repetir o ciclo. Essas etapas são ilustradas no
diagrama na figura 27.
48
Figura 26: Diagrama de Atividades
Fonte: Os Autores
49
CONCLUSÃO
O lixo gerado pelos seres humanos é um grande problema para o
mundo. A reciclagem vem para amenizar um pouco o impacto causado por ele.
Contudo, com o aumento da população, o atual processo manual de reciclagem não
bastará, sendo assim, a utilização de sistemas robotizados será inevitável.
O desafio de construir um robô com poucos recursos, ultrapassou as
expectativas. A busca por alternativas diante das situações problema que advieram
naturalmente do processo construtivo se tornaram experiência inestimável para
nossa formação técnica, prática e cientifica. A persistência se mostrou elemento
constantemente necessário para que conseguíssemos alcançar os objetivos
propostos.
O maior desafio encontrado no desenvolvimento do trabalho foi a
distinção das garrafas de plástico e vidro. Através dos vários testes realizados com
sensores infravermelho, viu-se a inviabilidade de sua utilização devido à
transparência das garrafas. Ainda, por não encontrar um padrão no som retornado, a
emissão de ruído branco através da garrafa e sua captação com um microfone se
tornou um método inviável.
A solução encontrada foi analisar a frequência que cada material emite
quando se bate um objeto metálico em sua estrutura. Por meio de vários testes,
constatou-se que ao bater o vidro as frequências que predominam são frequências
mais altas, diferentemente do plástico.
O método encontrado para distinguir vidro de plástico trouxe grande
satisfação e abriu espaço para aprimoramento das técnica a fim de atingir objetivos
mais audaciosos, como o de talvez conseguir distinguir materiais de mesma
natureza, como por exemplo, diferentes tipos de plásticos.
Como trabalho futuro, pretende-se aperfeiçoar o protótipo para que ele
se torne cada vez mais eficiente, agregando outros recursos, tais como, um GPS
para a sua locomoção autônoma diante de obstáculos e o aumento de sua
capacidade de armazenamento de objetos.
50
REFERÊNCIAS
Allen-Bradley. Sensores de proximidade indutivos. Disponível em:<http://literatu
re.rockwellautomation.com/idc/groups/literature/documents/ca/c115-ca524_-ptp.pdf>. Acessado em: 22 set. 2011.
Angelfire O Microcontrolador e Suas Características. Disponível em:<
http://www.angelfire.com/sc/wagner/Microcontroladores.html>. Acessado em: 09 nov.
2011.
Automatize Sensores. Sensores ultra-sônicos Siemens. Disponível em:<http://ww
w.automatizesensores.com.br/ultrasonicos.html>. Acesso em: 30 abr. 2011.
Braga N. Mecatrônica Fácil (Ano 6 - N°40). Transdutores piezoelétricos.
Disponível em: <http://www.mecatronicaatual.com.br/secoes/leitura/216>. Acesso
em: 30 abr. 2011.
Braga, N. Sensores ultra-sônicos. Disponível em:<http://www.sabereletronica.co
m.br/secoes/leitura/892>. Acesso em: 04 maio 2011.
Coel. Sensores indutivos e capacitivos. Produced by Coel Controles Eletrônicos
Ltda. Disponível em: <http://www.syar.com.uy/pdf/coel/inductivos_capacitivos.pdf>.
Acesso em: 28 mar. 2011
Compam. Porque Reciclar. Disponível
quereciclar.htm>. Acesso em: 09 abr. 2011.
em:<http://www.compam.com.br/por
Conama. Código de Cores para os Diferentes Tipos de Resíduos. Disponível em:
<http://ambientes.ambientebrasil.com.br/residuos/codigo_de_cores/codigo_de_cores
_para_os_diferentes_tipos_de_residuos.html >. Acessado em: 22 set. 2011.
CTA do Brasil. O que é um Transdutor Piezoeléctrico. Disponível em:
<http://www.cta-ultrasom.com.br/faq.htm#4> Acesso em: 02 maio 2011.
Dbpedia. Sensor piezoelétrico. Disponível em:<http://dbpedia.org/resource/Piez
oelectric_sensor>. Acesso em: 30 abr. 2011.
51
Di-elétrons. Sensor ultra-sônico. Disponível em:<http://www.di-eletrons.com
.br/produtos/Produtos_Detalhados/Pdf/Sensor_ultra_sonico.pdf>. Acessado em: 06
out 2011.
Domingos, W. Sensor Infravermelho. Disponível em:<http://www.sabereletronica
.com.br/secoes/leitura/1196>. Acesso em: 09 abr. 2011.
Ferrari, D e Eto, R. Classificação Geral dos Robôs. Disponível em:<http://
www.din.uem.br/ia/robotica/classif.htm>. Acessado em: 09 abr. 2011.
IBGE. Cuidando do Lixo. Disponível em:<http://www.ibge.gov.br/ibgeteen/da
tas/gari/cuidando.html>. Acesso em: 09 abr. 2011.
Michaelis. Robô. Disponível em:<http://michaelis.uol.com.br/moderno/portugues/in
dex.php?lingua=portuguesportugues&palavra=rob&CP=148135&typeToSearchRadio
=exactly&pagRadio=50>. Acesso em: 09 abr. 2011.
Nava, F. O que é Reciclagem?. Disponível em:<http://www.acrepom.com.br
/index.php?option=com_content&view=article&id=48&Itemid=55>. Acesso em: 09
abr. 2011.
Neuroelec, FFT Library for Arduino. Disponível em:< http://neuroelec.com/2011/03/
fft-library-for-arduino/>. Acesso em: 15 jun. 2011.
PARALLAX. Ping))) ultrasonic sensor. Produced by Pololu Corporation. Disponível
em:< http://www.pololu.com/catalog/product/1605f>. Acesso em: 04 nov. 2011
Rosa, E e Graber, F. Sensores Capacitivos.
Disponível em:<http://www.d
emar.eel.usp.br/eletronica/2009/Sensores_capacitivos.pdf>. Acesso em: 30 abr.
2011.
Santos, V.Robótica Industrial. Disponível em:<http://www2.mec.ua.pt/activities/dis
ciplinas/RoboticaIndustrial/Apontamentos/v2003-2004/RoboticaIndustrialSebenta2003-2004-v2a.pdf>. Acesso em: 15 mar. 2011.
Soares, M. Robô Lixobô. Disponível em:<http://www.arnerobotics.com.br/el
etronica/robotica/robo_lixobo.htm>. Acessado em: 30 mar. 2011.
52
Tatien, Adding an AVR library (ffft, suart) Disponível em: < http://arduino.cc/forum
/index.php/topic,37751.0.html>. Acessado em: 15 jun. 2011.
The Great Soviet Encyclopedia, 3rd Edition (1970-1979). Transdutor piezoelétrico.
Disponível em: <http://encyclopedia2.thefreedictionary.com/Piezoelectric>. Acesso
em: 03 Maio 2011.
Webster. Robot. Disponível em: <http://dictionary.reference.com/browse/robot>.
Acessado em: 10 mar. 2011.
Wendling
R.
Técnicas
de
Sensoriamento.
Disponível
em:
<http://s2i.das.ufsc.br/seminarios/apresentacoes/tecnicas-sensoreamento.pdf>.
Acesso em: 15 maio 2011.
APÊNDICES
APÊNDICE A – ESTRUTURA DO ROBÔ E SUAS DIMENSÕES
APÊNDICE B – CÓDIGO FONTE DO ROBÔ
1
//V2.8
//Include
#include <Servo.h>
#include <stdint.h>
#include <ffft.h>
//HasteColetor ---------------------------------------------------------------Servo servoHaste;
#define pinoServoHaste 3
//Coletor ------------------------------------------------------------------Servo servoColetor1;
Servo servoColetor2;
Servo servoColetor3;
#define pinoServoColetor1 9//Esquerda
#define pinoServoColetor2 10//Direita
#define pinoServoColetor3 11//Roda
#define sensorEntrada 12 // Sensor que identifica se o objeto entrou no coletor
//Superior -----------------------------------------------------------------Servo servoSuper1;// Vidro
Servo servoSuper2;// Plastico
#define pinoServoSuper1 5// Vidro
#define pinoServoSuper2 6// Plastico
#define tempoVidro 1000
#define tempoPlastico 1000
#define tempoAluminio 1000
//PING))) SENSOR DE DISTANCIA -----------------------------------------------------------#define pingPin 7
//Distinção dos materiais --------------------------------------------------//Som (Vidro e plástico)******************************
#define media 500
//Variaveis da ffft.lib
#define IR_AUDIO 0 // Pino do Microfone
volatile byte position = 0;
volatile long zero = 0;
int16_t capture[FFT_N];
/* Wave captureing buffer */
2
complex_t bfly_buff[FFT_N];
/* FFT buffer */
uint16_t spektrum[FFT_N/2];
/* Spectrum output buffer */
//The Uint16_t is a synonym for "unsigned short", a 16 bit variable, also known as "W
ORD".
//Indutivo (Aluminio)***********************************
#define pinoIndutivo 4
void setup(){// Função executada apenas umas vez, quando inicia o robô
// Inicia o FFT
adcInit();
adcCalb();
Serial.begin(9600);// Inicio a Serial, é apenas utilizado para debugar
Serial.print("Iniciando o servico de distincao... ");
Serial.println("OK");
Serial.print("Iniciando variaveis do coletor... ");
//Coletor
servoColetor1.attach(pinoServoColetor1);
servoColetor2.attach(pinoServoColetor2);
// Posiciono o coletor em baixo
servoColetor1.write(35);
servoColetor2.write(58);
pinMode(sensorEntrada, INPUT);
Serial.println("OK");
//Sensor Indutivo
pinMode(pinoIndutivo, INPUT);
// Superior
fecharTampa();
Serial.print("Posicionando servos... ");
//Coletor
servoColetor1.write(83);
servoColetor2.write(10);
digitalWrite(sensorEntrada,HIGH); // Ativa o resistor interno de pull Up
//Sensor Indutivo
digitalWrite(pinoIndutivo,HIGH); // Ativa o resistor interno de pull Up
Serial.println("OK \n\nPronto");
3
Serial.println("Procurando");
subirHasteColetor();
}
//######################## ROTINA PRINCIPAL #########################
void loop(){
Serial.print(".");
desligaRoda();
delay(100);
if(distanciaUltrasom() < 15 ){// Verifica se existe algum objeto na frente do robô
Serial.println("\nObjeto detectado! \nDescendo Coletor...");
delay(500);
ligaRoda(true);
descerHasteColetor();
desligaRoda();
delay(2000);
if(digitalRead(sensorEntrada) == LOW){// Se o objeto foi recolhido, vamos
identificar o tipo de material que é
Serial.println("Objeto Recolhido");
if(digitalRead(pinoIndutivo) == LOW){// Se o sensor indutivo identificar
Serial.println("Material recolhido: Aluminio");
subirHaste(false);
delay(tempoAluminio);
}
else{
Serial.println("Vamos ver se e platico ou vidro");
// Abaixa um pouco mais a HasteServoColetor para que na hora que for gira a
"roda" nao atrapalhe
servoColetor1.write(26);
servoColetor2.write(67);
delay(500);
ligaRoda(false);
delay(500);
if(calcMediaIsVidro()){// Vidro
Serial.println("Material recolhido: Vidro");
desligaRoda();
abrirTampa(1);
subirHaste(true);
delay(tempoVidro);
}
else{// Plastico
Serial.println("Material recolhido: Plastico");
desligaRoda();
abrirTampa(2);
4
subirHaste(false);
delay(tempoPlastico);
}
fecharTampa();
}// Fecha else do aluminio
descerHaste();
}
else{// Fecha if de objeto recolhido
subirHasteColetor();
}
Serial.println("\n\nProcurando");
}// Fecha if de objeto detectado
}// Fecha loop
// HasteColetor --------------------------------------------------------------------------void subirHaste(boolean fast){
Serial.println("SubirHaste");
servoHaste.attach(pinoServoHaste);// Liga o servo da Haste
servoHaste.write(180);// Possiciona o servo
delay(100);
for(int i = 180;i>=0;i-=2){
if(i == 70){// Quanto a Haste Frente estiver em cima vamos subir a haste coletor
para travar a garrafa
subirHasteColetor2();
}
servoHaste.write(i);
if(i < 70){// Damos o delay para nao subir de uma vez mas soh depois de ter
pegado um impulso
delay(50);
}
else{
if(fast){
delay(10);
}
else{
delay(50);
}
}
}
5
delay(100);
descerHasteColetor2();// Já em cima vamos abaixar para poder liberar o objeto
// Fazemos isso caso o objeto fique preso no coletor
ligaRoda(true);
delay(1500);
desligaRoda();
subirHasteColetor();
}
void descerHaste(){
for(int i = 0;i<=180;i+=2){
servoHaste.write(i);
delay(30);
}
delay(100);
servoHaste.detach();// Desliga Servo
}
//HasteColetor --------------------------------------------------------------------------void subirHasteColetor(){
int a = 58;
for(int i = 35;i<95; i++){
servoColetor1.write(i);
servoColetor2.write(a);
a--;
delay(40);
}
}
void subirHasteColetor2(){ // Funçao especifica de quando o objeto já está recolhido
int a = 58;
for(int i = 35;i<83; i++){
servoColetor1.write(i);
servoColetor2.write(a);
a--;
delay(40);
}
}
void descerHasteColetor(){
int a = 10;
for(int i = 83;i>35; i--){
servoColetor1.write(i);
6
servoColetor2.write(a);
if(i <45){
desligaRoda();
}
a++;
delay(100);
}
}
void descerHasteColetor2(){// Funçao especifica de quando o objeto já está
recolhido
int a = 10;
for(int i = 83;i>10; i--){
servoColetor1.write(i);
servoColetor2.write(a);
if(i <45){
ligaRoda(true);
}
delay(40);
a++;
}
}
//Superior -----------------------------------------------------------------------------void abrirTampa(int op){
switch(op){
case 1:// Vidro
servoSuper1.attach(pinoServoSuper1);
servoSuper1.write(0);
break;
case 2:// Plastico
servoSuper2.attach(pinoServoSuper2);
servoSuper2.write(0);
break;
}
delay(1000);
}
void fecharTampa(){
servoSuper1.attach(pinoServoSuper1);// Liga o Servo
servoSuper2.attach(pinoServoSuper2);// Liga o Servo
servoSuper1.write(180);
servoSuper2.write(180);
7
delay(500);// Aguarda um tempo para poder desligar os servos
servoSuper1.detach();// Desliga o Servo
servoSuper2.detach();// Desliga o Servo
}
// Liga Roda
void ligaRoda(boolean giraFrente){
servoColetor3.attach(pinoServoColetor3);
if(giraFrente){
servoColetor3.write(180);
}
else{
servoColetor3.write(0);
}
}
// Desliga Roda
void desligaRoda(){
servoColetor3.detach();
}
// Ultra Som --------------------------------------------------------------------------------int distanciaUltrasom(){
long duracao;
pinMode(pingPin, OUTPUT); // Vamos declarar o pino do sensor como saída
digitalWrite(pingPin, LOW);// Deixar zerado, para garantir que está em baixo nível,
0
delayMicroseconds(2);
digitalWrite(pingPin, HIGH);// O sensor PING))) é ativado por um pulso ALTO, de 2
ou mais microsegundos
delayMicroseconds(5);
digitalWrite(pingPin, LOW);
pinMode(pingPin, INPUT); // O Mesmo pino é usado para ler o sinal
duracao = pulseIn(pingPin, HIGH);//A função pulseIn retorna o tempo em
microsegundos. Tempo começa a contar e para quando recebe um sinal alto, 1,
HIGH
// Converter tempo em Distancia
// A velocidade do som é 340 m/s (34000 cm --- 1.000.000us = 1000000/34000 =
29,411) ou 29 microsegundos por centimetros
// O caminho é de ida e de volta, então a temos que dividir por 2
return (duracao / 29 / 2);
}
8
//Distinção vidro do plástico ---------------------------------------------------------------------------boolean calcMediaIsVidro(){
boolean vet[media];
for(int i = 0 ;i<media;i++){
boolean valor = isVidro();// Percorre o vetor adicionando se é vidro ou nao, o
tamanho do vetor é quantidade de vezes q vamos realizar a média
vet[i] = valor;
//Serial.println(valor);
}
int cont = 0;
for(int i = 0 ;i<media;i++){
if(vet[i] == true){
cont++;
}
}
if(cont>10){
Serial.println("Vidro");
return true;
}
else{
Serial.println("Plastico");
return false;
}
}
boolean isVidro(){
fft_input(capture, bfly_buff);// Prepara as variaveis para a execução da FFT
fft_execute(bfly_buff);// Executa a FFT
fft_output(bfly_buff, spektrum); // Recupera os valores
int maior=0;
for (byte i = 0; i < 64; i++){
if(spektrum[i]> spektrum[maior]){// spektrum é um vetor, onde cada posição do
vetor é uma frequência, e o valor corresponde a intensidade de cada frequência
maior = i;
}
}
if(maior > 40){
position = 0;
Serial.println("Vidro");
return true;
}
position = 0;
9
Serial.println("Plastico");
return false;
}
// ********************* FFT *************************
// As rotinas abaixo fazem parte da ffft.lib, ou sejá foram estraidas do site:
//http://arduino.cc/forum/index.php/topic,37751.0.html e http://neuroelec.com/2011/03
/fft-library-for-arduino/
ISR(ADC_vect){ // Função responsável por realizar a limpeza do buffer de áudio, do
conversor A/D
if (position >= FFT_N)
return;
capture[position] = ADC + zero;
if (capture[position] == -1 || capture[position] == 1)
capture[position] = 0;
position++;
}
void adcInit(){ // Inicia o conversor analógico digital do MC
/* REFS0 : VCC use as a ref, IR_AUDIO : channel selection, ADEN : ADC Enable,
ADSC : ADC Start, ADATE : ADC Auto Trigger Enable, ADIE : ADC Interrupt Enable,
ADPS : ADC Prescaler
*/
// free running ADC mode, f = ( 16MHz / prescaler ) / 13 cycles per conversion
ADMUX = _BV(REFS0) | IR_AUDIO; // | _BV(ADLAR);
/* ADCSRA = _BV(ADSC) | _BV(ADEN) | _BV(ADATE) | _BV(ADIE) | _BV(ADPS2)
| _BV(ADPS1) //prescaler 64 : 19231 Hz - 300Hz per 64 divisions
*/
ADCSRA = _BV(ADSC) | _BV(ADEN) | _BV(ADATE) | _BV(ADIE) | _BV(ADPS2) | _
BV(ADPS1) | _BV(ADPS0);
// prescaler 128 : 9615 Hz - 150 Hz per 64 divisions, better for most music
sei();
}
void adcCalb(){// Essa função calcula o som ambiente, para poder eliminar os ruidos.
É executada quando o robô é ligado
//Serial.println("Start to calc zero");
long midl = 0;
// get 2 meashurment at 2 sec
// on ADC input must be NO SIGNAL!!!
for (byte i = 0; i < 2; i++)
{
position = 0;
delay(100);
10
midl += capture[0];
delay(900);
}
zero = -midl/2;
//Serial.println("Done.");
}