Upload
duongdung
View
220
Download
0
Embed Size (px)
Citation preview
Júlio César Nardelli Borges
MouseCAM
Curitiba, Dezembro de 2008
Júlio César Nardelli Borges
MouseCAM
Monografia apresentada à disciplina
de Oficina de Integraçao 2 do 4o
período do curso de Engenharia da
Computação da Universidade
Tecnológica Federal do Paraná.
Orientador:
Hugo Vieira
Curitiba, Dezembro de 2008
ii
SUMÁRIO
Lista de figuras...................................................................................................iii
Lista de tabelas...................................................................................................iv
1 Introdução.......................................................................................................5
2 Objetivo...........................................................................................................6
3 Metodologia.....................................................................................................6
3.1 Construção do dispositivo.........................................................................6
3.2 Comunicação: dispositivo e computador................................................11
3.2.1 Porta paralela e ppdev.....................................................................11
3.2.2 Lógica de controle............................................................................14
3.2.3 Ligação sensor x porta paralela.......................................................16
3.2.4 Software de comunicação................................................................17
4 Resultados.....................................................................................................19
4.1 Operação do dispositivo.........................................................................19
4.2 Leitura da imagem..................................................................................20
4.3 PCB.........................................................................................................20
5 Conclusão......................................................................................................21
6 Referência Bibliográfica.................................................................................22
iii
LISTA DE FIGURAS
Mouse óptico MS3202..........................................................................................6
PCB do mouse.....................................................................................................7
Sensor óptico OM02.............................................................................................7
Pinagem do CI......................................................................................................8
Ligação do OM02 para interfaceamento serial....................................................9
Conector DB25..................................................................................................11
Operação de leitura...........................................................................................14
Montagem do dispositivo em protoboard..........................................................18
Layout da PCB do dispositivo............................................................................20
iv
LISTA DE TABELAS
Ligações internas da porta paralela em um computador..................................12
Registradores do Agilent(R) ANDS-2051............................................................15
Registradores do Agilent(R) ADNS-2610............................................................17
5
1 INTRODUÇÃO
Visão Computacional compreende métodos e técnicas através dos
quais sistemas computacionais podem interpretar imagens. É uma área
que ainda se encontra em seus primórdios, sendo tratada muitas vezes
como objeto de pesquisa [1].
O presente trabalho parte da motivação do estudante de se iniciar
na área de visão computacional, em que será proposta a construção de
um dispositivo de aquisição de imagens de baixa resolução, adaptando-se
um mouse óptico para funcionar como câmera digital.
Preferiu-se construir o próprio dispositivo ao invés de utilizar uma
câmera digital ou webcam devido ao interesse do estudante por eletrônica
e hardware. Desse modo, ele pretende se familiarizar também com essas
áreas ao longo das atividades.
O trabalho consistirá na descrição de procedimentos e materiais
necessários, incluindo a montagem do dispositivo até o teste para verificar
o seu funcionamento.
6
2 OBJETIVO
O objetivo do presente trabalho é construir um dispositivo de
aquisição de imagens utilizando um sensor de mouse óptico, indicando
materiais e procedimentos necessários; ao final da montagem o
dispositivo será testado.
3 METODOLOGIA
3.1 Construção do dispositivo
O dispositivo foi construído a partir de um mouse óptico da marca
Coletek e modelo MS3202 (Figura 1).
Figura 1: Mouse óptico MS3202
Fonte:<http://www.coletek.com.br/>.
Acessado em 17/12/2208.
7
Procedeu-se com a desmontagem do mouse, retirando-se o sensor
óptico da PCB1, um CI2 de 16 pinos OM02, como mostram as Figuras 2 e 3:
Figura 2: PCB do mouse
1 Placa de circuito impresso.
2 Circuito integrado.
8
Figura 3: Sensor óptico OM02
O OM02 é um sensor óptico CMOS3 que oferece funcionalidades para
implementação de um mouse para computador [4]. No seu interior,
imagens são capturadas, digitalizadas e processadas. O sensor usa uma
tecnologia de navegação óptica, em que é possível medir a mudança de
posição através da aquisição de uma seqüência de imagens da superfície.
A partir disso, é determinada matematicamente a direção e a amplitude
do movimento. Outra característica desse CI é que ele possibilita
implementar uma interface serial com um microcontrolador. O datasheet
do sensor informa um modo de operação (“testing mode”, ver Figura 4) no
qual é possível acessar diretamente os dados do sensor via serial. Com
isso, partiu-se da hipótese de que seria possível adequar esse modo de
operação para extrair a imagem do sensor.
3 CMOS é uma série de CIs baseados na tecnologia MOS para confecção de circuitos
integrados. A tecnologia MOS (semicondutor de óxido metálico – metal-oxide-
semiconductor) é derivada de uma estrutura básica MOS, que consiste de um eletrodo
de metal sobre um óxido isolante, que está sobre um substrato de semicondutor [2].
9
Montou-se o CI segundo uma configuração que permitisse seu
interfaceamento via serial com um computador (Figura 5). Com essa
finalidade, o CI foi ligado a um circuito de alimentação apropriado e os
pinos TCLK e TIO foram habilitados para uso. O diagrama esquemático
representado na Figura 5 foi feito usando o gschem, que é parte
integrante do gEDA Suite4.
4 O projeto está disponível no sítio <http://www.geda.seul.org/>.
Figura 4: Pinagem do CI
Fonte: Datasheet do OM02.
10
O circuito está de acordo com [4], o qual determina duas
configurações possíveis para o CI: uma compatível com o chip Agilent(R)
HDNS-2000 e outra compatível com o chip Agilent(R) ADNS-2050. Foi
aplicada a segunda configuração por razões que serão explicadas adiante.
O circuito ficou montado com 3 capacitores eletrolíticos (dois de
100uF e um de 47uF), 2 capacitores cerâmicos de 0.1uF, 3 resistores de
1/8W (58, 8.2k e 51k ohms), um LED de alto brilho e 2 conectores de 1x4 e
1x2 pinos.
O conector “CONN2” indicado na Figura 5 é ligado diretamente à
fonte de alimentação do circuito. O conector “CONN1” serve para ligar o
sensor ao computador e será explicado em detalhes mais adiante.
Figura 5: Ligação do OM02 para interfaceamento serial
11
3.2 Comunicação: dispositivo e computador
A comunicação entre o sensor e o computador foi implementada
através da porta paralela do computador. Para melhorar o entendimento,
faz-se uma breve descrição desse recurso e de como é possível usá-lo em
plataformas Linux.
3.2.1 Porta paralela5 e ppdev
A porta paralela é um recurso simples e barato para construir
dispositivos controlados pelo computador. A facilidade na programação a
torna popular no mundo da eletrônica, sendo freqüentemente usada em
robôs controlados por computador, programação PIC, automação, etc.
A norma IEEE 1284, publicada em 1994, estabelece padrões para
transmissão de dados via porta paralela, entretanto, não é necessário citá-
los visto que o OM02 apresenta um padrão proprietário de comunicação,
que será esclarecido adiante.
Usa-se o conector DB25 para ligar periféricos ao computador através
da porta paralela. Os pinos desse conector são mostrados na Figura 6:
5 Todas as informações sobre esse assunto foram extraídas de [3].
12
Figura 6: Conector DB25
Fonte:<http://logix4u.net/Legacy_Ports/Parall
el_Port/A_tutorial_on_Parallel_port_Interfacing
.html>. Acessado em 17/12/2008.
Internamente, esses pinos são ligados aos respectivos registradores
do computador, conforme indicado pela Tabela 1:
13
Pino
num.Sinal Direção6 Registrador
Polaridade invertida
(S/N)
1 nStrobe E Control-0 S
2 Data0 E/S Data-0 N
3 Data1 E/S Data-1 N
4 Data2 E/S Data-2 N
5 Data3 E/S Data-3 N
6 Data4 E/S Data-4 N
7 Data5 E/S Data-5 N
8 Data6 E/S Data-6 N
9 Data7 E/S Data-7 N
10 nAck E Status-6 N
11 Busy E Status-7 S
12 Paper-S E Status-5 N
13 Select E Status-4 N
14 Linefeed S Control-1 S
15 nError E Status-3 N
16 nInitialize S Control-2 N
17nSelect-
Printer S Control-3 S
18-25 Ground - - -
Tabela 1: Ligações internas da porta paralela em um computador
Fonte:<http://logix4u.net/Legacy_Ports/Parallel_Port/A_tutorial_on_Parallel_po
rt_Interfacing.html>.Acessado em 17/12/2008.
Dessa forma, utilizando esses registradores adequadamente, através
de um software é possível enviar e/ou receber sinais via porta paralela e,
desse modo, controlar um periférico.
Os sistemas Linux oferecem suporte ao desenvolvimento de
aplicações que acessam periféricos através da porta paralela
6 Entrada (E) e saída (S).
14
disponibilizando um driver específico para isso chamado ppdev7, o qual
vem acompanhado de uma API de programação de alto nível.
Tendo em vista o conhecimento dessas ferramentas, apresentam-se
a seguir os procedimentos para implementação da lógica de controle
necessários para comunicação do sensor com o computador.
3.2.2 Lógica de controle
Como foi mencionado na seção anterior, o OM02 implementa um
padrão de comunicação proprietário e requer que seja feita uma aplicação
específica capaz de implementar esse padrão.
O datasheet do OM02 não fornece detalhes sobre esse padrão.
Contudo, ele informa que o sensor é compatível com o sensor Agilent(R)
ADNS-2051 quando montado segundo uma configuração apropriada. Na
Seção 3.1 foi citado que o sensor estaria montado segundo essa
configuração e por isso, de agora em diante, o sensor OM02 será tratado
como se fosse um sensor ADNS-2051.
O diagrama de tempos a seguir (Figura 7) mostra o padrão de
comunicação implementado pelo sensor durante a operação de leitura de
dados. Para os fins deste trabalho, apenas a operação de leitura foi
implementada.
Essa operação corresponde a duas etapas: 1) envio do endereço do
registrador cujos dados se desejam ler; 2) recebimento dos dados. O
endereço é enviado “bit por bit” (serialmente), equivalendo aos bits
7 Para maiores informações consulte
<http://people.redhat.com/twaugh/parport/html/ppdev.html>.
15
A6~A0, sendo que o primeiro bit enviado é 0, o qual sinaliza que a
operação requerida é de leitura. A primeira etapa leva, portanto, 8 ciclos
de clock, equivalendo aos 8 bits enviados para o sensor. Após isso, há um
atraso de clock tHOLD de no mínimo 100us e, a seguir, inicia-se a segunda
etapa do processo com a leitura serial dos bits de retorno D7~D0, que
correspondem ao valor do registrador. São 8 bits lidos serialmente e,
portanto, a segunda etapa leva 8 ciclos de clock. Com isso, a operação
inteira leva 16 ciclos de clock.
Figura 7: Operação de leitura no ADNS-2051.
Fonte: Datasheet do Agilent(R) ADNS-2051.
16
A especificação de cada ciclo de clock pode ser vista na Figura 7, na
parte “Detail B”. O pulso tem duração de no mínimo 120ns. Os bits são
monitorados através do pino 16 e os sinais de clock são enviados ao pino
1 do sensor, TIO e TCLK na Figura 6, respectivamente.
Usando esse processo de baixo nível, é possível ler diretamente os
registradores do sensor. A Tabela 2 exibe o endereço desses registradores:
De acordo com o datasheet do ADNS-2051, é possível extrair a
imagem do sensor usando os registradores “Data_Out_Lower” e
“Data_Out_Upper”.
3.2.3 Ligação sensor x porta paralela
Para ligar o sensor à porta paralela do computador, foi utilizado um
metro de cabo de 7 núcleos e um conector DB25. Na Figura 5, o conector
“CONN1” indicado foi ligado diretamente a quatro pinos do DB25.
Utilizaram-se os pinos 5, 9, 12 e 25. Observando a Tabela 1, esses pinos
corresponderiam aos sinais “Data-3”, “Data-7”, “Status-5” e “GND”8.
8 Ground, massa do circuito.
Tabela 2: Registradores do Agilent(R) ANDS-2051.
Fonte: Datasheet do Agilent(R) ADNS-2051.
17
3.2.4 Software de comunicação
O programa utilizado foi escrito em C e usa a API do ppdev para
implementar as operações de acesso à porta-paralela. Ele foi compilado
com o GCC 49 sobre uma plataforma Linux Kernel 2.6. O código-fonte é de
autoria de Joshua Wise10, em que o autor realiza montagem semelhante
usando um sensor Agilent(R) ADNS-2051 ligado à porta porta paralela do
computador. O programa original foi adaptado por Carsten Gross11 para
funcionar também com sensores Agilent(R) ADNS-2610.
Os aplicativos são capazes de implementar a lógica de controle
descritas anteriormente com a finalidade de extrair as imagens
capturadas e digitalizadas pelos sensores. A diferença entre eles é apenas
o endereço utilizado para acessar os registradores de cada tipo de sensor.
Para extrair a imagem do sensor ADNS-2610 usa-se o registrador
“Pixel_Data”, conforme é mostrado na Tabela 3:
9 Consulte <http://gcc.gnu.org> para mais detalhes.
10Contato com <[email protected]>.
11Contato com <[email protected]>.
18
Finalmente, procedeu-se com a montagem em protoboard para
testar o dispositivo, mostrado na Figura 8:
Tabela 3: Registradores do Agilent(R) ADNS-2610.
Fonte: Datasheet do Agilent(R) ADNS-2610.
19
4 RESULTADOS
4.1 Operação do dispositivo
Ao alimentar o circuito com entrada VDD de 5V DC, este operou
como esperado. O circuito de alimentação forneceu as condições
adequadas para o sensor funcionar. Embora o chip tenha sido projetado
para operar juntamente com um controlador de mouse, através do qual é
feito interfaceamento PS2 ou USB com o computador, o OM02 não
demonstrou anormalidades na operação.
Figura 8: Montagem do dispositivo em protoboard.
20
4.2 Leitura da imagem
A primeira tentativa de ler a imagem do sensor através do
computador falhou. Foi utilizado o código-fonte original, escrito para
acessar sensores ADNS-2051. Ao executar o aplicativo, este não detectou
o dispositivo ligado e não iniciou a comunicação com o mesmo.
A lógica de verificação para determinar se o sensor está ativo é feita
acessando o registrador Product_ID (ver Tabela 2) cujo endereço é 0x00.
Os dados desse registrador não podem ser determinados, possivelmente
porque não há um registrador com esse endereço no OM02, ou se houver,
os valores esperados não são os mesmos. Há, portanto, incompatibilidade
entre os dois chips, que gera inconsistência de dados quando se referir
aos registradores do OM02 pelos mesmos endereços dos registradores do
ADNS-2051.
Em seguida, foi usado um programa similar ao anterior, adaptado
pera ler sensores da série ADNS-2610. Não se obteve êxito e
possivelmente pelos mesmos motivos.
4.3 PCB
Foi desenhado o layout da PCB que deveria portar os componentes
do dispositivo, caso este funcionasse devidamente:
21
Figura 9: Layout da PCB do
dispositivo
O desenho foi feito a partir do diagrama esquemático (Figura 5)
usando o aplicativo PCB Design, que é parte integrante do gEDA Suite.
5 CONCLUSÃO
Apesar de os resultados não serem satisfatórios, este trabalho
informa materiais, procedimentos e informações necessárias para
execução de montagens similares. A falta de documentação do sensor
OM02 aliada à dificuldade em se encontrarem sensores de mouse que
permitam interfaceamento serial foram fatores relevantes para o fracasso
dessa primeira montagem.
Para os próximos trabalhos, sugere-se que sejam utilizados os
sensores da Agilent(R) ADNS-2051 e ADNS-2610.
22
Por fim, considera-se este trabalho como o primeiro contado do
estudante com o campo da eletrônica digital. Os conhecimentos técnicos
adquiridos durante o projeto, como programação sobre porta paralela,
leitura de datasheets, projeto de circuitos usando gEDA Suite, entre
outros, serão de grande valia para os próximos trabalhos.
6 REFERÊNCIA BIBLIOGRÁFICA
[1] UFSC. Material do Prof. Aldo von Wangenheim. Visão Computacional.
Disponível em <http://www.inf.ufsc.br/~visao/#Introdução>.
Acessado em 17/12/2008.
[2] TOCCI, Ronald J.; WIDMER, S. Neal. Sistemas Digitais: Princípios e
Aplicações. 8a Edição – São Paulo: Prentice Hall, 2003. p. 381.
[3] LOGIX4U.NET. A tutorial on Parallel port Interfacing.
Disponível em
<http://logix4u.net/Legacy_Ports/Parallel_Port/A_tutorial_on_Parallel_port_Interfacing.html>
Acessado em 17/12/2008.
[4] OM02. Optical Mouse Sensor. Datasheet. Revisão de 10/02/2004.