Escolar Documentos
Profissional Documentos
Cultura Documentos
INTERFACE TOUCHSCREEN
UNICENP/NCET
Curitiba
2007
TERMO DE APROVAÇÃO
Interface TouchScreen
Aos meus pais, Hildeberto Lopes Filho e Naria Maria Martins Lopes, pelo esforço que
fizeram para que hoje eu pudesse estar concluindo este curso de graduação e principalmente pelo
amor, valores e o apoio em todos os momentos dessa caminhada.
À minha noiva Ghiovandra que sempre acreditou no meu trabalho e a agradeço por ter
agüentado meu mau humor e stress durante todo o curso, e também nunca me deixou desistir.
Ao meu orientador professor e amigo Valfredo Pilla Junior, pela idéia do projeto, por
acreditar e sempre estar disposto a ajudar, não apenas nesse projeto, mas em outras pesquisas
acadêmicas. Agradeço
ABSTRACT
CAPÍTULO 1 - INTRODUÇÃO...................................................................................................12
CAPÍTULO 6 - CONCLUSÃO.....................................................................................................53
- ohm
MHz - Mega Hertz.
Hz - Hertz.
V - Volts
11
CAPÍTULO 1 - INTRODUÇÃO
12
Medicina: Os sistemas que usam touch simplificam os sofisticados sistemas médicos, reduzem as
possibilidades de erros e proporcionam um mecanismo de entrada de dados mais eficiente que
qualquer outro periférico.
Educação: Hoje o touch esta se tornando a interface de treinamento mais popular em todas as
fases do aprendizado desde a pré escola, jardim de infância e preparação profissional, eliminando
a frustrações de crianças ao utilizar o mouse ou teclado.
E aplicações com o objetivo de diminuir o tempo de resposta, aumentar a produtividade,
proporcionar produtos e serviços de maior qualidade e aumentar os lucros. Por exemplo, realizar
um atendimento de forma rápida e fácil é objetivo da automação comercial, tanto para o
vendedor quanto para os clientes. Os sistemas de quiosques e pontos de vendas mais bem
sucedidos possuem sistema Touch-Screen. Os serviços intuitivos e interativos de uma interface
Touch proporcionam confiabilidade ao cliente que é exatamente o que o seu negócio precisa para
o crescimento e o sucesso em longo prazo (elotouch, 2007).
Este projeto no futuro poderá ser integrado com outro projeto formando assim um sistema
parecido com um PDA (Personal Digital Assistant).
13
CAPÍTULO 2 – FUNDAMENTAÇÃO TEÓRICA
2.1-Touch Screen
Um Touch-Screen que em portugues quer dizer “tela sensivel ao toque” estão disponíveis
para uma grande variedade de uso, desde pontos de vendas até quiosques, equipamentos médicos
e industriais e sistemas de jogos. As vantagens das soluções touch incluem precisão,
transparência, e facilidade de uso e instalação.
O Touch-Screen usado neste projeto é o modelo de quatro fios resistivos AT4 da empresa
Elo TouchSystem (www.elotouch.com.br).
A tecnologia resistiva touch de quatro fios consta de uma tela de vidro coberto
uniformemente por camadas eletricamente condutivas e resistivas. Uma lâmina de poliester é
hermeticamente estendida sobre a parte superior do vidro e separada por minúsculos espaçadores
(pontos) transparentes e isolantes. A parte externa dessa lâmina é uma película durável e firme; a
parte interna contém uma camada condutiva. Durante seu funcionamento, uma corrente elétrica
se propaga através do touchscreen. Ativada por um mínimo toque, a película condutiva faz o
contato com a camada de vidro, registrando esse ponto de contato. A figura 1 mostra uma
imagem real da tela touch-screen e as figuras 2 e 3 mostram as imagems e descrição das
camadas que compoem o Touch-Screen.
14
Figura 2 – Mascara
(Adaptado do site elotouch.com.br)
Figura 3 – Vidro
(Adaptado do site elotouch.com.br)
15
2.1.1 Placa e chip da Controladora do Touch-Screen
16
Figura 5 – Placa Controladora
(Adaptado do site elotouch.com)
17
A Tabela 2 descreve os pinos do conector para o touch da placa controladora.
2.2-Video
É usado um monitor CRT convencional o qual apresentará uma imagem criada através as
bibliotecas graficas proprietarias da ALTERA esta imagem representa um menu com botoes e e
que atravez da manipulação dos metodos das bibliotecas os resultados são disponibilizados na
saida VGA do kit, dependendo do botão da imagem que for tocada atravez do touch alguma ação
de alteração na imagem será atulalizada na saida vga.
A Figura 8 ilustra o conector (fêmea) da saída VGA do kit DE2.
18
9 KEY - Key (No pin)
10 SGND Sync Ground
11 ID0 Monitor ID Bit 0
12 ID1 or DAS Monitor ID Bit 1
13 HSYNC or CSYNC Horizontal Sync (or Composite Sync)
14 VSYNC Vertical Sync
15 ID3 or SCL Monitor ID Bit 3
19
2.3-Kit Altera Development & Education Board 1 (Kit DE2)
2.3.1-Layout e Componentes
O Kit DE2 tem muintas funcionalidades que permite o desenvolvedor implementar uma
infinadades de circuitos, e varios projetos de multimidia.
20
12 50-MHz oscillator and 27-MHz oscillator for clock sources
13 24-bit CD-quality audio CODEC with line-in, line-out, and microphone-in jacks
14 VGA DAC (4-bit resistor network) with VGA-out connector
15 RS-232 transceiver and 9-pin connector
16 PS/2 mouse/keyboard connector
17 Two 40-pin Expansion Headers with diode protection
18 Powered by either a 7.5V DC adapter or a USB cable
21
A Tabela 5 mostra a informação detalhada do Bloco Cyclone II FPGA 2C20 mostrado na
Figura 10.
Tabela 6 - Descrição das configurações que são feitas através da Serial e Usb-Blaster
Configuração do dispositivo Serial e do Circuito Usb-Blaster
Configuração do dispositivo serial Altera EPCS4
On-Board Usb-Blaster para Controle de API de usuário e programação
JTAG e AS são os modos do programação suportados
22
A Tabela 9 mostra a descrição do Bloco Memory Flash.
23
A Tabela 14 mostra a descrição do Bloco VGA DAC.
2.3.3.1 PushButtons
A Figura 11 mostra uma foto dos PushButtons do kit, Key[3..0], a ordem é o button da
esquerda é o mais significativo e o mais de direita o menos signigicativo.
24
A Tabela 17 mostra os pinos da FPGA aos PushButtons.
Tabela 17 – Pinos da FPGA referentes a cada PushButton
(DE2_UserManual.pdf, contrado no cd do kit)
25
A Tabela 18 mostra os pinos da FPGA referente a cada segmento dos displays de 7
segmentos do modulo.
26
2.3.3.3 VGA
27
A Tabela 21 mostra os pinos da FPGA referente a cada pino de saida do conector VGA do
Kit DE2.
28
CAPÍTULO 3 – ESPECIFICAÇÃO TECNICA
Nesse capítulo tem-se uma descrição dos principais módulos do projeto. São eles: Software,
Firmware e Hardware.
Inicialmente é apresentada a visão geral do sistema e a descrição funcional de cada módulo.
A Figura 15 apresenta o diagrama em blocos do sistema
29
3.1.2 Modulo do PC
30
3.2.2.1 O Processador NIOS II
O Firmware foi feito utilizando a linguagem C utilizando a ferramenta NIOS II IDE. Através
do firmware é possível desenvolver rotinas para utilizar o NIO II de acordo com a necessidade
deste projeto, rotinas para utilizar a controladora da VGA, LEDS, BUTTONS, MEMORIA etc.
O Firmware esta preparado utilizar as bibliotecas gráficas para controlar a vga e serial, e
USB-BLASTER é encarregado em enviar todo o desenvolvimento do projeto para o Kit DE2
31
3.2.4 Comunicação entre FPGA e o Touch-Screen
Para comunicação entre dos dois hardwares Touch-Screen e o FPGA, é utilizando uma
interface serial RS-232.
A configuração da interface é a seguinte
Bits de dados: 8.
Taxa de dados 5600(bps).
A Tabela 23 mostra a relação dos pinos da porta serial com os pinos da FPGA.
32
3.3.2 Validação de Software
A validação do controle da interface touch-screen faz-se a partir dos resultados obtidos das
funções escritas na linguagem C especificas para cada componente externos ao FPGA, essas
funções tornam possíveis que o processador NIOS na FPGA tenha total controle sobre os
módulos externos, como a VGA e a SERIAL.
As funções que são utilizadas para validar o funcionamento do software são, para a VGA os
métodos de controle (alt_up_vga_draw_char_1b( char, int x, int y)) e (alt_up_vga_draw_pixel(
color, x, y)).
O método (alt_up_vga_draw_char_1b( char, int x, int y)) tem a funcionalidade de escrever
caracteres na tela do monitor, e a descrição da sua assinatura “parâmetros” é a seguinte, char é o
caractere que é escrito em alguma posição na tela, int x é a posição x da tela do monitor e int y é
a posição y da tela do monitor, sendo que a resolução utilizada é de 80x60, ou seja x não pode
passar de 80 e y não pode passar de 60.
O método (alt_up_vga_draw_pixel( color, int x, int y)) tem a funcionalidade de “pintar” o
fundo da tela do monitor, o método de imprimir caracteres tem preferência sobre este método, ou
seja os caracteres sempre ficam sob a área pintada ou seja o caractere sempre ficara em cima da
área pintada, a descrição da assinatura deste método é a seguinte, color é a valor da cor, que pode
ser um valor inteiro ou em hexadecimal para definir uma cor de alguma posição da tela definidos
pelos parâmetros x e y.
As funções que são utilizadas para validar o funcionamento do software são, para a Serial os
métodos de controle de transmissão (fread( packet, sizeof(*packet), 1, serial_fp )), a função
fread é utilizada para a leitura via interrupção dos pacotes que a controladora envia para o kit
DE2, as assinaturas do método fread tem a seguinte composição, packet é a estrutura do pacote
que será recebido, o sizeof(*packet) é o diz qual é o tamanho exato da estrutura criada, e o
serial_fp é o handle da porta serial.
Uma observação muito importante, é que para o total funcionamento é necessário com se
copie os arquivos *.c e *.h que acompanham os componentes para dentro da pasta principal do
projeto do firmware do nios.
Neste projeto foram copiados os arquivos rs232.h e rs232.c onde estão os métodos de
controle da SERIAL e alt_up_vga.h, alt_up_vga.c onde estão os métodos de controle para a
VGA. Para tornar estes métodos acessíveis é preciso fazer os includes dos arquivos *.h no
projeto da NIOS IDE.
A figura 17 mostra a utilização dos métodos (alt_up_vga_draw_pixel( color, int x, int y))
para pintar o fundo da tela com as cores preta e azul, e (alt_up_vga_draw_char_1b( char, int x,
33
int y)) utlizado para escrever os caracteres ‘a’ e ‘b’ dentro de um grupo de pixel previamente
pintado, a (alt_up_vga_draw_pixel( color, int x, int y)) não pinta um pixel de cada vez, e sim
um bloco de 8x8 pixels.
Figura 17 - Tela para a validação dos testes com as bibliotecas gráficas do componente VGA.
34
Borland C++ Builder Para desenvolvimento de ima interface de comunicação via caboUSB-
BLASTER, para o envio de imagem para o kit
Linguagem Ferramenta
C++ Borland C++ Builder
Verilog/VHDL Quartus II
C NIOS II IDE
35
CAPÍTULO 4 – ESPECIFICAÇÃO TECNICA
36
O software embarcado (firmware) estará rodando nessa arquitetura. É uma arquitetura
completa, construída com a ferramenta SOPC Builder da Altera. A Figura 18 representa em
blocos os principais componentes dessa arquitetura.
Outro bloco importante é o do Touch-Screen, esta tela sensível ao toque, pois como esta tela
trabalha com resistência, ao ser tocado em uma determinada região, uma resistência é gerada e a
tensão de saída é modificada, a alimentação desta placa é proveniente de sua placa controladora
a mesma placa que recebe a tensão de saída modificada de acordo com a região tocada na tela.
Para verificar as características detalhadas do Touch-Screen e sua placa controlador favor ver
o Capitulo 2.
O Monitor inicialmente tem apenas o desenho de um botão, que ao ser tocado via touch,
mudara a cor de toda a tela. A imagem exibida no monitor tem uma resolução de
37
Protótipo das telas para os testes esta na Figura 19, a tela verde quando a touch não é tocando
na região do botão de OK, quando o botão de OK for tocado a tela do monitor mudara de cor
ficando azul.
Entre a placa controladora do Touch-Screen e o FPGA existe uma comunicação serial. Sendo
que a placa controladora do touch apenas envia dados para a para a interface serial do kit DE2, e
o kit tem a responsabilidade de interpretar estes dados para a manipulação da imagem que é
mostrada no monitor.
No capitulo 2 estão das descrições dos pinos e do conector da comunicação Serial.
O pacote serial que é transmitido pela placa controladora do touch-screen possui 10 bytes de
comprimento e segue a seguinte seqüência de envio:
[55] [54] [##] [##] [##] [##] [##] [##] [##] [##]
38
4.2.4 Comunicação USB-Blaster
Essencial para envio do projeto desenvolvido para o kit DE2, também muito utilizado para o
debug deste projeto.
A memória utilizada para armazenar grandes quantidades de dados é a SDRAM (ver detalhes
no Capitulo 2).
Essa memória é muito rápida serviu muito bem para armazenar o firmware deste projeto,
pois tem o tempo acesso ideal para ler as instruções que utilizaram a VGA e também é rápida o
suficiente para fazer a leitura dos dados e disponibilizar na saída VGA do kit.
É onde será armazenado o firmware, possui espaço suficiente para isso 4MB, e uma memória
mais lenta e por isso não foi usada para armazenar dados para serem jogados na vga do Kit.
4.3 Software
4.3.2 Objetivos
4.3.2 Funções
40
caractere era impresso no display de 7 segmentos. Tendo feito este modulo funcionar, foi preciso
entender como era o pacote transmitido pela placa controladora do touch-screen.
Os pacotes de 10 bytes transmitidos serialmente pela placa controladora seguem na seguinte
ordem:
[55] [54] [##] [##] [##] [##] [##] [##] [##] [##]
A figura 21, onde contem o teste básico feito que foi a chave principal para o sucesso deste
projeto.
41
Como dito no item 3.3.2 do projeto, foram utilizados as funções da controladora VGA, esses
métodos possuem o seguinte formato, (alt_up_vga_draw_pixel( color, int x, int y)) para pintar o
fundo da tela com as cores preta e azul, e (alt_up_vga_draw_char_1b( char, int x, int y)) para
escrever os caracteres sobre os pixels previamente pintados.
Para pintar um grupo de 8x8 pixels é utilizado o método alt_up_vga_draw_pixel( color, int
x, int y), onde color é a cor do bloco de pixels, e x e y são as coordenadas da tela onde o bloco
que será pintado.
Para escrever um caractere sobre um bloco de pixels pintado é utilizado a função
alt_up_vga_draw_char_1b( char, int x, int y) onde char é o caractere a ser impresso, e x e y são
as coordenadas da tela onde os o caractere é impresso.
42
CAPÍTULO 5 – VALIDAÇÃO E RESULTADOS
Para desenhar o menu da figura acima, foi utilizado os métodos proprietários de controle da
VGA citados no capitulo 4 e também estruturas de repetição para que a tela fosse varrida e os
pixels desenhados nos respectivos lugares da tela, bem como os caracteres.
Na figura 23 é definida a seguinte estrutura em C para representar de um botão.
43
A figura 24 é a declaração dos botões que serão utilizados pelo aplicativo editor de texto
para comprovar o funcionamento do controle da interface touch-screen.
Apenas o que esta dentro da marcação quadrada representa os botões do menu da figura 23,
e o restante são os botões do teclado do editor de texto.
44
A figura 25 representa o método drawnButtonUp responsável por desenhar os botões na tela,
de acordo com as posições em que foram declarados, os botões deste método são desenhados
para parecerem que estão “levantados” e não pressionados.
Note que foram utilizados os métodos proprietários de controle da VGA
alt_up_vga_draw_pixel pra pitar os pixels e alt_up_vga_draw_char_b1 para desenhar caracteres,
como já foi especificado no item 4.4 do projeto.
45
O método que desenha o caption do botão se chama drawButtonText, desenha os caracteres
em cima dos botões, não importa se o botão esta pressionado ou não.
A figura 26 mostra como este método foi implementado, e ele é chamado no final de cada
método onde algum tipo de botão é desenhado, quando o método que desenha o botão normal
quanto o pressionado, e até mesmo o do teclado.
46
A figura 27 mostra o método drawButtonDown que desenha o botão pressionado, ou seja,
quando o usuário pressiona a região correspondente a um botão do menu no touch-screen o
mesmo redesenhará o botão parecendo um efeito de botão afundado, note que no final do
método novamente é chamado o método drawButtonText, que reescreverá o caption do botão
como mostra o método da figura 26 e esta ilustrado na figura 28.
47
Dependendo da área do menu que o usuário pressionar no touch-screen causar o efeito de
pressionado como mostra a figura 28.
48
5.1 Interface Grafica Final
A figura 29 mostra a interface final que o usuário terá para poder verificar o funcionamento
do controle da interface touch-screen.
Na figura 28 temos o menu, o prompt e o teclado qwerty, todos esses item combinados
mostram perfeitamente e validam o projeto que tem por objetivo controlar uma corretamente
uma interface touch-screen.
O menu possui 4 botoes, cada um com sua respectiva funcionalidade, quando o usuario
pressiona a area do botão “apagar” uma vez, então um carectere do prompt é apagado. Quando é
precionado a area correspondente ao botão “Reset”, todo o conteudo do prompt será apagado e o
plano de fundo retornará a cor branca. Quando o botão “amarelo” é pressionado, o fundo da tela
passa a ser amarelo, e o mesmo acontece se o usuario precionar o botão verde, tornando o cor de
fundo verde.
49
O teclado possui 29 teclas, sendo duas delas que equivalem ao ENTRA “ENT”, e ao
SPACE, “SPC”. Quando o usuario pressiona a area correspondente a algum botão do teclado o
mesmo muda sua cor para azul e o seu caractere é disponibilizado no prompt.
Essas funcionalidades nada mais são do que um bom exemplo de como funciona
corretamente o controle da interface touch-screen.
A estrutura feita na linguagem C que define o prompt da figura 28, esta representado na
figura 30.
A figura 31, mostra o metodo drawPrompt utilizado para desenhar na tela o prompt.
50
A estrutura do teclado é a mesma utilizada pela figura 23, e tambem é criado são
inicializados na figura 24.
O restante as implementações estão disponiveis no cd deste documento.
Quando algum botão do teclado é pressionado sua cor muda para azul e sua letra
correspondente é escrita o prompt.
51
5.3 Controle da Interface Touch-Screen
O Controle da interface touch-screen, mostrou-se totalmente funcional, e por ter sido feito
para o KIT DE2, aceita facilmente mudanças, podendo ser alterado rapidamente o tipo de
aplicação, ou integrado rapidamente com outro projeto.
52
CAPÍTULO 6 - CONCLUSÃO
Uma das principais dificuldades no desenvolvimento deste projeto foi fazer o levantamento
da documentação, sobre o processador NIOS, e os módulos externos a FPGA do Kit DE2. Como
não foi feito algum projeto antes que utilizasse a interface VGA e a SERIAL do Kit DE2, levou-
se muito tempo até conseguir adquirir e ordenar o conhecimento que foi sendo adquirido até
conseguir dar os primeiros passos e realizar os primeiros testes com a VGA e a SERIAL. Outro
grande obstáculo foi ter de descobrir que para que o NIOS controlasse os módulos externos a
FGPA fosse necessário copiar os arquivos *.c e *.h dos respectivos componente para dentro do
projeto.
Mas depois de todos os problemas com os módulos externos solucionados, cada modulo do
projeto foi sendo desenvolvido separadamente até seu total funcionamento. Não tive dificuldades
com a linguagem da programação, pois o Firmware do processador NIOS é o C, a qual mais tive
contato na faculdade.
Outro desafio foi fazer a película touch-screen e sua controladora funcionarem, pois a
primeira tela que comprei veio embalada errada o que danificou o cabo flat, fazendo com que a
película não se comunicasse direito com a controlada, entrei em contato com a empresa Elotouch
e se prontificou a trocar na hora a tela com defeito. Assim que chegou a nova tela foi possível
começar a fazer os testes necessários para prosseguir com o projeto, aprender como o a película
identifica um toque e manda este sinal para a controladora e a controladora transforma este sinal
em um sinal serial, que é recepcionado pela serial do kit DE2 controlado pelo processador NIOS,
o mesmo pega o sinal interpreta as coordenadas do toque e desenha na tela do monitor as ações
que as coordenadas já estão previamente calibradas no firmware para fazer, bem como mudar de
cor a tela, fazer o efeito de um botão subindo e descendo, etc...
Varias vezes o projeto parou de funcionar, então tive que voltar alguma vezes os backups
que fiz ao decorrer de cada progresso.
Este projeto por ter sido feito com o Kit DE2 que possui uma FPGA poderosa e uma gama
muito boa de componentes externos como, VGA, SERIAL, memória abundante etc, uma das
facilidades é a fácil alteração do projeto, podendo ser integrado a outro ou até mesmo alterado
para realizar outros tipos de ações com o touch-screen.
Existem vários melhoramentos que podem ser executados no projeto, um deles é tentar
interpretar de uma maneira diferente os valores do eixo y, pois do jeito que esta a resolução do
eixo y esta muito baixa dificultando o reconhecimento de toques em áreas pequenas. Talvez a
inclusão de mais alguns bytes no pacote de leitura da serial resolva o problema.
53
Uma idéia para um próximo projeto que use a interface touch-screen, poderia ser a
integração com o projeto do nosso colega Roberto Junqueira, ou a desenvolvimento de uma
placa controladora para o touch-screen.
Este trabalho é uma modesta contribuição para o uso de FPGAs e do processador embarcado
NIOS implementado em VHDL pela Altera, que acredito que vai abrir vários caminhos, pois
com este projeto alguns caminhos ficaram mais fáceis de percorrer daqui para a frente.
54
CAPÍTULO 7 - REFERÊNCIAS BIBLIOGRÁFICAS
AMORE, Roberto d’. VHDL: Descrição e Sintese de Circuitos. Rio de Janeiro: ed. LTC,
2005.
ALTERA, NIOS II. Documentação sobre o pprocessador embracado NIO II. Disponivel
em: <http://www.altera.com/products/ip/processors/ipm-index.jsp>. Acesso em: Abril de 2007.
55