Upload
hoangtuyen
View
214
Download
0
Embed Size (px)
Citation preview
PAINEL ELETRÔNICO DE COMANDO COM INTERFACE SENSÍVEL A TOQUE
PARA EMBARCAÇÕES MARÍTIMAS
Zheng Yi Ming
Projeto de Graduação apresentado ao Curso de
Engenharia Eletrônica e de Computação da Escola
Politécnica, Universidade Federal do Rio de Janeiro,
como parte dos requisitos necessários à obtenção do
título de Engenheiro.
Orientador: Prof. Ricardo Rhomberg Martins. DSc
Rio de Janeiro
Março de 2014
ii
Universidade Federal do Rio de Janeiro
Escola Politécnica
Departamento de Eletrônica e de Computação
Painel eletrônico de comando com interface sensível a toque
para embarcações marítimas
Autor: _________________________________________________
Zheng Yi Ming
Orientador: _________________________________________________
Prof. Ricardo Rhomberg Martins. DSc
Examinador: _________________________________________________
Prof. Carlos Fernando Teodósio Soares, DSc
Examinador: _________________________________________________
Prof. Frederico Jandre, DSc
DEL
Março de 2014
iii
Zheng, Yi Ming
Painel eletrônico de comando com interface sensível a
toque para embarcações marítimas/ Zheng Yi Ming – Rio de
Janeiro: UFRJ/ Escola Politécnica, 2014.
XIII, 39 p.: il.; 29,7 cm.
Orientador: Prof. Ricardo Rhomberg Martins, DSc
Projeto de Graduação – UFRJ/ Escola Politécnica/ Curso
de Engenharia Eletrônica e de Computação, 2014.
Referências Bibliográficas: p. 89-95
1. Projeto de painel de comando sensível a toque 2. Estudo de
painel resistivo de 4 fios 3. Montagem de protótipo
I. Rhomberg, Ricardo Martins II. Universidade Federal do Rio de
Janeiro, Escola Politécnica, Curso de Engenharia Eletrônica e de
Computação. III. Painel eletrônico de comando com interface
sensível a toque.
v
Agradecimentos
Agradeço à minha família pelo suporte e a oportunidade de todos os meus anos
de estudo. Aos parentes próximos, distantes ou futuros sempre interessados no decorrer
e no fim de meu curso, obrigado.
Aos amigos sempre presentes, e também aqueles que tomaram outros caminhos.
Nossos momentos de convivência sempre tiveram algum significado. Muito obrigado a
vocês.
A todas as pessoas do Laboratório de Traçadores, que me permitiram tantas
experiências e aprendizados no tempo que me foi confiado, obrigado. Ao engenheiro
José Otávio Pecly, sempre muito ocupado, mas igualmente interessado. Por todos os
ensinamentos, questionamentos e apoio, muito obrigado.
Ao professor Ricardo Rhomberg, companheiro de longos anos de graduação. Por
todas as aulas, pelo conhecimento e todo ensinamento. Pelas oportunidades, por toda a
ajuda, interesse e esforços que me permitiram chegar onde estou. Muito obrigado.
Às pessoas que me são próximas de coração, sempre muito pacientes. Muito
obrigado por tudo e sempre.
vi
Resumo
A popularização de dispositivos eletrônicos equipados com interface sensível a
toque tem tornado esta uma forma natural e difundida de controle e interação com os
equipamentos. De modo geral, sistemas de toque agregam valor ao produto pelo apelo
tecnológico e de modernidade. Além disso, sob o ponto de vista de projeto e fabricação,
sistemas de toque apresentam grande flexibilidade por permitir implementar diferentes
interfaces com o mesmo hardware, alterando-se apenas a programação.
Neste trabalho foi desenvolvido um protótipo de um painel eletrônico de
comando para embarcações marítimas de pequeno porte, utilizando uma interface de
toque para o acionamento de diversos tipos de dispositivos elétricos como motores,
buzinas e iluminação, sendo uma alternativa ao tradicional sistema atualmente utilizado
de painel com chaves eletromecânicas. O sistema é composto por painel sensível a
toque, circuito eletrônico destinado à leitura dos toques e acionamento dos dispositivos
elétricos e outros componentes destinados a interface como LEDs, buzzers e relés.
O projeto desenvolvido foi elaborado utilizando componentes de grande
disponibilidade no mercado e baixo custo. Como exemplo disto, temos o painel de
toque, para o qual foi utilizado um painel resistivo de quatro fios, ao invés de
alternativas de maior custo e complexidade, como painéis capacitivos ou painéis
resistivos de 5,7 e 8 fios. Para a parte eletrônica foi utilizada a plataforma Arduino,
composta por microcontrolador Atmel e uma IDE para programação, tendo como
diferencial tanto o software quanto o hardware serem open-source. Uma interface
terminal via porta serial também foi desenvolvida com o intuito de permitir processos
de calibração e configuração de forma mais rápida e eficiente.
Por fim, características do protótipo desenvolvido, decorrentes das restrições
físicas e elétricas ao qual o projeto está sujeito, serão apresentadas. Dispositivos
destinados à operação em ambiente marítimo devem passar por uma etapa conhecida
como marinização, em que se proporciona adequada proteção das conexões mecânicas e
partes móveis contra vibrações, além de isolamento das partes elétricas contra umidade,
salinidade e corrosão, elementos sempre presentes no ambiente em que o painel deve
operar. Embora o protótipo não tenha sido devidamente validado no processo de
marinização, ele apresenta características básicas de proteção contra esse processo.
Palavras-Chave: painel de toque resistivo, Arduino, comunicação serial
vii
Abstract
The popularization of touch-screen enabled electronics made it a common and
natural way of controlling and interacting with devices. Overall, touch enabled devices
have a high technological appeal and a modern feeling. Also, from a design and
manufacturing standpoint, touch systems shows as a high flexibility solution, being able
to implement many different interfaces within the same hardware, only changing the
software.
In this work, a prototype electronic control panel designed for small vessels was
developed, using a touch enabled surface as a way of switching the many different
electrical devices aboard, like engines and lights. This comes as an option from the
standard control panel currently used, with electromechanical switches. The system is
composed of a touch-sensitive glass, an electronic circuit designed to read the touch
signals and enable the electrical devices, and a wide range of components like LEDs,
buzzers and relays for interfacing.
The developed project aimed for low cost and high availability parts to
compound it. As an example, the touch panel used is a 4-wire resistive panel, instead of
more complex and expensive parts like capacitive panels or 5,7 or 8 wire resistive
panels. The electronic was developed on the Arduino platform, comprised of an Atmel
microcontroller and an IDE for programming, having the advantage of both hardware
and software being open-source. A terminal interface through a serial port was also
developed, allowing configuration and calibration process to be done in a quick and
efficient way.
Finally, details of the prototype built inherited from physical and electrical
limitations within the project will be shown. Devices designed to work in a marine
environment goes through a step known as marinization, where moving parts and
mechanical connections are protected against vibration, and the electrical parts are
protected against humidity, corrosion and salinity, elements always present in the
environment the panel will be required to operate on. Even though the prototype wasn’t
properly validated in a marinization process, it shows basic key features from it.
Key-words: resistive touch panel, Arduino, serial communication
viii
SIGLAS
ADC – Analog to digital converter
DC – Direct current
DDP – Diferença de potencial
EEPROM – electrically erasable programmable read-only memory
E/S – Entrada e saída
HID – Human interface device
ICSP – In-circuit serial programming
IDE – Integrated development environment
ITO - Indium tin oxide
I/O – Input /Output
KB – Kilobyte
LED - Light-emitting diode
PWM – Pulse width modulation
RAM – Random access memory
RMS – Root mean square
SRAM – Static random access memory
TI – Texas Instruments
UART - Universal asynchronous receiver transmitter
USB – Universal serial bus
ix
Sumário
1 Introdução 1
1.1 - Tema 1
1.2 - Delimitação 1
1.3 - Justificativa 2
1.4 - Objetivos 2
1.5 - Metodologia 3
1.6 - Descrição 4
2 Desenvolvimento do hardware 5
2.1 - Pesquisa e seleção de componentes 5
2.2 - Painel sensível a toque
2.2.1 – Introdução a interfaces sensíveis a toque
2.2.2 – Características do painel utilizado
6
6
8
2.3 - Limitações e restrições
2.3.1 – Limitações físicas
2.3.2 – Limitações elétricas
10
10
11
2.4 - Montagem 13
3 Programação do microcontrolador
3.1 – Introdução a plataforma Arduino
3.1.1 – Introdução
3.1.2 – Bootloader Arduino
3.1.3 – Ambiente Arduino (IDE)
3.1.4 – Estrutura de um Sketch
3.2 – Leitura do painel e funções associadas
3.2.1 – A leitura do painel
16
16
16
16
17
17
19
19
x
3.2.2 – Calibração
3.2.3 – Mapeamento dos toques
3.3 – Reconhecimento de erros nas leituras
3.4- Estrutura e uso da memória
3.4.1 – Memória disponível
3.4.2 – Uso da memória FLASH
3.4.3 – Uso da memória SRAM
3.4.4 – Uso da memória EEPROM
3.5 – Comunicação serial e interface via terminal
4 Construção do protótipo
5 Conclusões
22
24
25
29
29
30
30
31
33
37
44
Referências 45
xi
Lista de Figuras
2-1 – Estrutura do painel de toque resistivo
2.2 – Modelo do divisor resistivo
2.3 – Circuito de um canal do módulo de relés
2.4 – Pinagem do ATMega168 no Arduino Nano
2.5 – Esquema de ligação
3.1 – Fluxograma tradicional de aquisição de um painel de toque
3.2 - Fluxograma de aquisição do painel de toque - projeto painel eletrônico
3.3 – Processo de calibração avançado – 25 pontos
3.4 – Calibração simples de 5 pontos
3.5 - 2 modos de calibração possíveis - Projeto painel eletrônico – 4 pontos
3.6 – Divisões no painel
3.7 – Exemplo de configuração – 4 botões virtuais
3.8 – Sinal gerado por um toque
3.9 – Modelo do método de medição 1
3.10 - Modelo do método de medição 2
3.11 – Estrutura da SRAM
3.12 - Hardware serial port no Arduino nano
3.13 – Pontos de toque para função cal
3.14 - Programação dos parâmetros do painel
7
8
12
14
15
20
21
22
22
23
24
25
26
26
27
30
33
34
35
xii
3.15 – Exemplo de configuração de botões virtuais
4.1 – Protótipo montado
4.2 – Tampa com painel e botões virtuais
4.3 – Lateral com prensa cabos
4.4 – Prensa cabo aberto e fechado
4.5 – Prensa cabos fechados sobre cabos
4.6 – Aplicação de silicone entre tampa e painel de toque
4.7 – Componentes eletrônicos dentro da caixa
4.8 – Fixação do cabo de ligação do painel de toque
4.9 – Componentes ligados com caixa aberta
4.10 – Configuração 1 – 40 regiões
4.11 – Configuração 2 – 160 regiões
4.12 - Esquema de botões 1
4.13 - Esquema de botões 2
4.14 - Esquema de botões 3
4.15 - Esquema de botões 4
36
37
38
38
39
39
40
40
41
41
42
42
43
43
43
43
xiii
Lista de Tabelas
2.1 – Especificações da placa Arduino
2.2 – Especificações do painel de toque
2.3 – Polarização do circuito de acionamento do módulo de relés
2.4 – Polarização do painel de toque
2.5 – Ligação e lógica
3.1 - Variáveis e seus tamanhos
3.2- Seqüência lógica e de ligação para leitura do eixo X
3.3 - Seqüência lógica e de ligação para leitura do eixo Y
3.4 - Memória disponível para diferentes microcontroladores usados na
plataforma Arduino
3.5 - Armazenamento de valores maiores que 8 bits
3.6 - Estrutura da EEPROM
3.7 – Configurações da interface terminal
6
9
12
13
14
18
28
28
29
32
32
34
1
Capítulo 1 - Introdução
1.1 – Tema
O trabalho desenvolvido tem como tema o projeto e construção de um protótipo
de um painel eletrônico de comando para embarcações marítimas de pequeno porte,
destinado a substituir seu equivalente eletromecânico. Estudo e pesquisa de
componentes para implementação do projeto, detalhes da plataforma de hardware e
software utilizados, programação do microcontrolador e criação de uma interface de
configuração no dispositivo são alguns dos assuntos apresentados.
Sendo um HID com lógica implementada em microcontrolador, a forma como a
programação da leitura dos toques do painel é realizada é de grande importância.
Fatores como a resolução do painel, tipos de botões virtuais a serem implementados,
que podem ser do tipo biestável ou astável, quantidade de botões e forma de
acionamento dos controles, entre outros, devem ser adequadas ao modo com que o
dispositivo será utilizado, além de serem implementados de forma simples e coerentes
com os limitados recursos computacionais e de memória disponíveis no
microcontrolador.
1.2 – Delimitação O projeto surgiu na metade de 2013 como uma solução proposta ao orientador
do projeto, que comentou a questão ao final de uma aula. Este, a pedido de conhecidos
da área de manutenção náutica, buscava por uma alternativa mais “elegante” para os já
velhos e tradicionais painéis de chaves e botoeiras. Mais especificamente no segmento
das lanchas, que é um mercado destinado a um público de grande poder aquisitivo, a
introdução de um novo tipo de painel mais moderno e funcional seria capaz de gerar
uma boa demanda no mercado.
O levantamento de uma primeira alternativa baseada em dispositivos eletrônicos
comerciais como tablets foi considerada, apresentando diversas características positivas,
como um melhor aspecto visual através de interface gráfica interativa, capacidade
multimídia, integração e conectividade com outros dispositivos. Entretanto,
características básicas e fundamentais como interface com sistemas de relés,
2
manutenção, durabilidade, e o próprio processo de marinização seriam inviáveis e/ou
com alto custo de implementação.
Optou-se, então, pelo desenvolvimento de um projeto baseado em componentes
de baixo custo e disponíveis no mercado brasileiro, e de baixa complexidade, tanto no
que se refere à montagem do dispositivo, quanto ao processo de programação e
manutenção do mesmo.
1.3 – Justificativa
A utilização de equipamentos eletrônicos em substituição aos seus equivalentes
elétricos, mecânicos ou eletromecânicos é um processo antigo e que, cedo ou tarde,
tende a acontecer nas mais diversas áreas.
Um sistema eletrônico programável apresenta grande flexibilidade de uso,
podendo assumir diversas funções diferentes, apenas com a troca de software, além de
permitir a fácil incorporação de diversas funcionalidades extras, como sistemas de
comunicação de emergência, monitoramento de temperatura e corrente elétrica, alarmes
e outros sistemas de controle.
1.4 – Objetivos
O trabalho tem como objetivo final o desenvolvimento completo em hardware e
software de um protótipo de painel eletrônico capaz de acionar comandos elétricos
através de sua interface de toque. Este protótipo deve apresentar a viabilidade e as
vantagens da implementação de um painel deste tipo em relação ao sistema tradicional.
Para o hardware, isso inclui a seleção de componentes compatíveis
eletricamente entre si e uma descrição do circuito para interligação do mesmo. Os
componentes selecionados devem ser de baixo custo e de fácil aquisição no mercado. A
montagem dos componentes utilizados deve ser rápida e simples, requerendo pouco ou
nenhum equipamento ou instalações específicas.
Para o software, tem-se como objetivo a programação de uma lógica para o
conjunto de hardware desenvolvido, com sistema de aquisição de toques e acionamento
de saídas digitais para controle de dispositivos elétricos. O algoritmo de leitura de toque
deve ser genérico para painéis resistivos de quatro fios, não se limitando ao modelo ou
tamanho utilizado no protótipo. Para isso, o sistema incluirá uma interface para o
usuário com funções específicas de programação e calibração dos pontos.
3
1.5 – Metodologia Para o desenvolvimento do projeto, o primeiro passo foi a descrição detalhada
das características do painel de chaves original que se pretende substituir, como
dimensão física média, características elétricas, funcionalidades etc. Definidas essas
características, foi realizada uma busca por componentes compatíveis com as
características do projeto e, dentre estes, as opções com grande disponibilidade de
aquisição e baixo custo, sobretudo em lojas online.
A etapa seguinte consistiu em uma busca dentro da comunidade de
desenvolvimento Arduino por exemplos e projetos semelhantes ao desejado. Palavras
chave como touchscreen, 4-wire resistive panel e serial port foram utilizadas nesta
busca. Tópicos importantes de diferentes áreas são coletados a partir destes projetos
semelhantes, para futuramente compor o projeto desejado. Identificadas as
funcionalidades necessárias, foi composto um cenário de teste isolado para cada função,
com o intuito de verificar, modificar e validá-la até se obter a resposta adequada.
O sistema completo foi então montado e novamente testado, simulando padrões
reais de uso das interfaces e corrigindo os erros encontrados. Nesta etapa foi importante
verificar a interação entre as diversas funções desenvolvidas e outras questões
importantes como temporização, acionamento repetido de interfaces e controle de erro.
Por fim foi montado o protótipo final, com as características de hardware e
software especificadas. A estrutura do hardware, embora desenvolvida com itens
característicos de estruturas marinizadas, não teve uma etapa de validação da
marinização a ser aplicada, por este ter sido considerado um processo necessário apenas
ao desenvolvimento de um produto final, com finalidade de uso prático ou comercial,
enquanto o protótipo desenvolvido tem como objetivo apenas demonstrar a viabilidade,
as vantagens e as desvantagens da implementação de uma interface de toque.
4
1.6 – Descrição
O capítulo 2 é dedicado à descrição das informações relativas ao
desenvolvimento do hardware do projeto.
Na seção 2.1 serão apresentadas as etapas iniciais de pesquisa e seleção dos
componentes principais que compõem o painel.
Na seção 2.2 será apresentado o princípio de funcionamento e principais
características do painel de toque utilizado, além de uma breve explicação sobre os
principais tipos de painéis de toque atualmente disponíveis no mercado.
Na seção 2.3 serão apresentadas as principais limitações físicas e elétricas
referentes à montagem do protótipo para utilização em embarcações marítimas de
pequeno porte.
Na seção 2.4 será detalhado o esquema de ligação entre os componentes na
montagem do protótipo, com foco na análise da documentação dos mesmos e as
mudanças decorrentes disso.
O capítulo 3 é dedicado ao software do projeto, incluindo apresentações sobre o
que foi utilizado e o algoritmo desenvolvido.
A seção 3.1 apresenta a interface de programação utilizada, a plataforma
Arduino, e os conceitos básicos da criação dos sketches
A seção 3.2 apresenta o princípio de funcionamento lógico da leitura do painel
de toque pelo microcontrolador e a forma como foram definidas as funções de
mapeamento de toque em ações.
A seção 3.3 trata da execução das funções destinadas ao reconhecimento de
erros nas leituras, e suas ações associadas.
A seção 3.4 trata da estrutura da memória e o controle do seu uso, recursos
geralmente muito limitados em sistemas com microcontroladores
A seção 3.5 trata da comunicação serial do controlador, envolvendo basicamente
as interfaces de programação e calibração do sistema através de um terminal.
O capítulo 4 apresenta os elementos e as características do protótipo montado a
partir do que foi definido nos capítulos 2 e 3.
O capítulo 5 corresponde às conclusões acerca do projeto.
5
Capítulo 2 - Desenvolvimento do Hardware
2.1 – Pesquisa e seleção de componentes
O desenvolvimento do projeto se iniciou com a busca do seu elemento mais
característico, o painel sensível a toque. Interfaces sensíveis a toque já estão
amplamente disponíveis em diversos segmentos da indústria, sendo a forma básica de
interação do usuário com dispositivos eletrônicos de consumo de alta tecnologia como
smartphones, tablets, notebooks e quadros interativos.
A escolha de um painel resistivo para o projeto teve como peso principal na
decisão a sua disponibilidade imediata no mercado. Atualmente é possível adquirir
através de lojas online ou revendedores especializados diversos tipos de kits
touchscreen, composto por um painel resistivo sensível a toque e um circuito
controlador com interface USB. Estes kits são direcionados a pessoas interessadas em
adicionar funcionalidades de toque a dispositivos tais como notebooks e monitores,
sendo necessário o uso de um sistema operacional Windows com suporte aos drivers do
controlador USB. Tal controlador é simplesmente um ADC capaz de selecionar quais
eletrodos serão acionados para aplicação da ddp e quais eletrodos serão utilizados como
entrada do ADC. O ADC pode operar tanto em modo simples quanto diferencial. Assim,
a funcionalidade necessária do controlador pode ser facilmente replicada em um sistema
com microcontrolador programável, mais simples.
Para o controlador, optou-se pela plataforma Arduino, que utiliza
microcontroladores Atmel. A plataforma Arduino é bastante popular entre hobbistas e
pequenos desenvolvedores, principalmente pela grande facilidade de acesso, tanto ao
software quanto ao hardware. Ela é composta por um ambiente de desenvolvimento
para programação e um projeto físico das placas com microcontroladores, ambos open-
source. Por ser open-source, há hoje uma grande oferta de placas de desenvolvimento
Arduino compatible ou Arduinos originais no mercado, trazendo uma maior
concorrência e menores preços. Encontram–se, também, diversos tutoriais e exemplos
de códigos para Arduino em sites e fórums de discussão na internet, além do site oficial
mantido pelos desenvolvedores originais.
6
A tabela 2.1 apresenta as principais especificações de hardware da placa
Arduino utilizada no projeto, um modelo Arduino Nano.
Tabela 2.1 - Especificações da placa Arduino
Especificações
Microcontrolador Atmel ATmega 168 ou ATmega 328
Tensão operacional (nível lógico) 5 V
Tensão de entrada (recomendada) 7-12 V
Tensão de entrada (limites) 6-20 V
Pinos digitais de E/S 14 (6 com capacidade de PWM)
Pinos analógicos de entrada 8
Corrente DC por pino de E/S 40 mA
Memória Flash 16 KB (ATmega168) ou 32 KB (ATmega328) dos
quais 2KB usados pelo bootloader
SRAM 1 KB (ATmega168) ou32 KB ATmega328)
EEPROM 512 bytes (ATmega168) ou 1 KB (ATmega328)
Velocidade do clock 16 MHz
Dimensões 18.5 x 43mm
A decisão pelo uso da plataforma Arduino permitiu também uma rápida e fácil
identificação de componentes adicionais compatíveis, dado que já existem diversas
empresas fabricando e comercializando sensores, placas de expansão e acessórios com o
logo Arduíno compatible.
2.2 - Painel sensível a toque
2.2.1 - Introdução a interfaces sensíveis a toque
Existem hoje sistemas de reconhecimento de toques implementados com
diversas tecnologias diferentes, como ondas acústicas de superfície, imageamento por
câmeras, sistemas com infravermelho, entre outros. Entretanto, os tipos de painéis
sensíveis a toque mais utilizadas em dispositivos comerciais e industriais, são os
capacitivos e os resistivos. As tecnologias capacitivas e resistivas podem ser
implementadas através de painéis independentes, sendo, então, aplicadas sobre telas ou
outras superfícies.
7
Painéis resistivos são compostos de duas folhas flexíveis recobertas por uma
camada uniforme de óxido metálico transparente. Esta é a camada de material resistivo,
sendo o indium tin oxide (ITO) um dos materiais mais empregados atualmente. Uma das
camadas é dotada de eletrodos nas extremidades de um eixo, enquanto a outra camada
possui eletrodos nas extremidades do outro eixo.
Figura 2.1 – Estrutura do painel de toque resistivo
É comum que a camada inferior corresponda ao Y+ e Y-, enquanto a superior
corresponda ao X+ e X-. Por fim, elas são separadas por uma fina camada de ar ou
micro pontos feitos de material isolante, de forma que ao se tocar na sua superfície, as
duas camadas entram em contato sendo então possível registrar a posição do toque.
Esse registro de posição é feito em duas etapas, lendo a posição de um dos dois eixos de
cada vez.
Quando é registrada a existência de um toque, ao se aplicar uma ddp nos
terminais Y+ e Y-, é possível determinar a posição do toque relativa ao eixo Y medindo
o potencial em X+ ou X-. Em seguida, alterna-se o processo, com aplicação da ddp nos
terminais X+ e X- para medição em Y+ ou Y- do potencial correspondente a posição ao
longo do eixo X.
8
Este processo se baseia no modelo de divisor resistivo formado pelo contato da
resistência das duas superfícies, representado na figura 2.2.
Figura 2.2 - Modelo do divisor resistivo
É possível também ser determinada uma leitura do eixo Z, correspondente a
pressão do toque no ponto obtido. Isto é feito aplicando a ddp em Y+ e X-, com leitura
em Y- ou X+ por exemplo. Entretanto, esta funcionalidade é pouco utilizada, estando
presentes apenas em sistemas muito específicos, auxiliando na validação dos toques ou
reconhecimento de assinaturas.
2.2.2 – Características do painel utilizado
Ao consultar a literatura sobre painéis resistivos[2][3][5], encontramos como
principais características positivas o seu baixo custo de produção, grande resistência à
presença de poeira, água e umidade na sua superfície, e a ativação ser feita através da
pressão mecânica. Isto significa que o painel é capaz de operar normalmente seja
através da pele humana, com o uso de luvas ou de instrumentos como canetas de toque.
Painéis capacitivos, por exemplo, precisam do contato com a pele humana
devido à natureza do seu funcionamento, aproveitando-se das características elétricas
dela. Em países de clima frio ou em atividades onde o uso de luvas é comum, ou mesmo
obrigatório, o uso de painéis capacitivos é altamente prejudicado, muitas vezes inviável.
Entre as características negativas associadas aos painéis resistivos, podemos
destacar uma diminuição na transmissão luminosa devido à presença de camadas
adicionais de materiais sobre uma tela, a menor sensibilidade a toques leves quando
comparada com tecnologias como a de painéis capacitivos e uma vida útil
potencialmente curta, sendo esta muito relacionada com a qualidade do processo de
fabricação e dos materiais empregados.
9
Dentre as características dos painéis resistivos, cabe ressaltar as implicações dos
seus pontos fracos em relação à sua aplicação no projeto. A baixa transmissão luminosa
é um fator de baixa relevância, uma vez que o painel será aplicado sobre uma imagem
impressa e não sobre uma tela, caso em que haveria a necessidade de um aumento no
brilho de seu backlight e um correspondente aumento no consumo energético. Painéis
resistivos também possuem menor sensibilidade e não suportam multi-toques, em
comparação com painéis capacitivos. Nenhuma destas características é necessária ao
projeto, que necessita apenas de toques simples para operação.
Com relação à vida útil do painel, valores limites típicos para painéis resistivos
estão na ordem de um milhão de toques quando ativados através dos dedos, ou de 100
mil toques para ativações com canetas de toque ou outros objetos rígidos semelhantes.
Isto ocorre devido à característica flexível das camadas resistivas responsáveis pelo
reconhecimento dos toques.
A movimentação e a pressão pontual lentamente geram falhas e “rachaduras” ao
longo da camada uniforme resistiva. Isto altera as suas características elétricas,
diminuindo a linearidade e a precisão do painel. Estes efeitos se acentuam na medida
em que o tamanho do painel aumenta, sendo relativamente pequenos ou desprezíveis em
painéis de pequeno porte. Em equipamentos de uso público ou comercial como caixas
eletrônicos, telas de pontos de venda ou mapas interativos, um milhão de toques pode
corresponder a uma vida útil de alguns meses. Para dispositivos de uso pessoal, ou de
uso não diário, esse limite aumenta consideravelmente, podendo alcançar diversos anos
de uso.
O painel de toque utilizado no projeto foi um modelo de 7 polegadas, adquirido
em loja online. É um painel resistivo de 4 fios genérico sem modelo. As especificações
do painel estão na tabela 2.2
Tabela 2.2 - Especificações do painel de toque
Tamanho 7 polegadas
Dimensões da área externa 164,20 x 103,20 (mm)
Dimensões da área ativa 155 x 94 (mm)
Linearidade desvio menor ou igual a 1.5%
Vida útil com toque aproximadamente 1 milhão de ativações
Vida útil com caneta aproximadamente 100 mil ativações
Resistência do eixo X 670 ohms
Resistência do eixo Y 245 ohms
10
2.3 – Limitações e restrições
2.3.1 – Limitações físicas
Um dos objetivos do projeto é desenvolver um sistema de painel de toque com
implementação flexível capaz de ser reprogramado e adaptado para diferentes tipos e
tamanhos. O painel de toque utilizado é um modelo de 7 polegadas com dimensões
físicas semelhantes a de painéis tradicionais de 4 a 6 botões, que se pretende substituir
nessa primeira implementação. A área sensível a toque do painel, a chamada área útil,
deve ser suficiente para exibição dos botões virtuais de acordo com os tipos e
quantidades desejados.
O painel foi desenvolvido com a intenção de ser ativado através do toque de
dedos. Sendo assim, o tamanho dos botões a serem configurados deve ser compatível
com o modo de uso. Existem diversos estudos e documentos relacionados à otimização
no dimensionamento de botões, objetos e outros elementos em interfaces de toque
[6][7]. De modo geral, o menor tamanho para um botão é determinado pelo tamanho do
dedo de um adulto. Assim, elementos de interface devem possuir pelo menos 1cm nas
suas dimensões. Além disso, botões ou objetos cujas funções associadas sejam de
grande importância ou de uso freqüente devem ter um tamanho maior, indicando sua
importância e facilitando seu uso. Botões menores que o tamanho mínimo podem ser
utilizados desde que devidamente separados de outros elementos de interface.
O protótipo desenvolvido divide a área útil do painel em 40 regiões de ativação,
cada uma com aproximadamente 2 cm de lado. Estas regiões podem reproduzir um
botão virtual, ou serem utilizadas como campos de separação. Botões maiores podem
ser configurados através do agrupamento de regiões, enquanto a utilização de botões
menores requer uma divisão maior no número de regiões do painel.
O modelo de Arduino escolhido foi o Arduino Nano V3.0, por apresentar todas
as funcionalidades e recursos de hardware da versão tradicional, o Arduino Uno, mas
em um design mais compacto, ambos com capacidades suficientes para montagem do
protótipo. O uso da plataforma Arduino permite, ainda, uma fácil substituição de
componentes, uma vez que a placa do microcontrolador é adquirida completamente
montada, pronta para uso. Circuitos de clock, regulação de tensão e alimentação já estão
integrados no projeto da placa. Além disso, da mesma forma que o modelo Nano é
semelhante à versão Uno, existem diversos outros modelos com diferentes tamanhos e
11
particularidades focadas em objetivos específicos. Observadas algumas restrições como
quantidade de memória e número de entradas e saídas analógicas e digitais, é possível
substituir o Arduino Nano utilizado por outras placas Arduino.
2.3.2 – Limitações elétricas
Embarcações marítimas de pequeno porte são geralmente dotadas de um sistema
elétrico alimentado por baterias semelhantes às automotivas. São baterias seladas de
chumbo-ácido, reguladas por válvulas com tensão nominal de 12 V. Embarcações
maiores ou com sistema elétrico de grande porte podem ainda utilizar baterias de 24 V.
Sendo esta a alimentação disponível para o sistema, foi possível utilizar componentes
compatíveis com esta tensão, obtendo-se um sistema simples como desejado.
O Arduino nano V3.0, modelo utilizado no projeto, pode ser alimentado através
de sua porta USB mini pela linha de 5 V, ou pelo seu terminal Vin. A placa é dotada de
um circuito integrado regulador de tensão cuja entrada está conectada ao terminal Vin.
O projeto original do Arduino nano especifica um regulador de tensão UA78M05 para
geração dos 5 V utilizados na placa a partir de Vin. A tensão de entrada recomendada
para a placa, de acordo com as especificações originais, é de 7-12 V, mas analisando a
documentação do regulador de tensão verificamos que sua tensão de entrada
recomendada é de 7-25 V, com valor máximo absoluto de 35 V. Desta forma é possível
alimentar a placa do Arduino diretamente através das baterias disponíveis.
Uma característica importante no que se refere ao regulador de tensão é o uso do
UA78M05 ao invés de um regulador 7805 convencional. O regulador UA78M05 é uma
versão do tradicional 7805, mas com menor capacidade de fornecimento de corrente,
tendo sua saída limitada a 500 mA. O microcontrolador Atmega328 estabelece um
limite de corrente de até 40 mA por pino, com corrente máxima para todas as saídas em
conjunto de 200 mA. Isso significa que, apesar do projeto da placa oferecer 2 pinos com
tensões de 5 V e 3,3 V, que poderiam ser utilizados para alimentar componentes extras,
após subtrair o consumo do Atmega328 e do restante da eletrônica da placa, há pouca
corrente disponível de fato. Como exemplo desta limitação, o módulo de relés utilizado
no projeto utiliza uma linha de 5 V para enviar o sinal de controle dos relés. A corrente
necessária para ativar os relés excedia a capacidade disponível da linha de 5 V do
Arduino, tendo sido usado um regulador 7805 dedicado apenas ao módulo de relés. O
12
uso de um módulo de relés ativado por 12 V ao invés de 5 V seria possível, sendo na
realidade o mais adequado por dispensar o uso do regulador.
O módulo de relés utilizado é uma placa de 8 canais, cada um composto por um
relé de alta sensibilidade modelo SRD-05VDC-SL-C e um optoacoplador EL-817,
responsáveis pela ligação entre os pinos de atuação e o sinal de controle dos relés, além
de componentes de polarização e indicação como resistores, transistores e LEDs. O
circuito de acionamento é ativado com a saída digital em LOW, atuando como current
sink. A programação utilizada foi adaptada de forma a permitir que módulos com
diferentes valores de tensão pudessem ser utilizados. O modo tradicional de
acionamento de relés opera um pino digital do microcontrolador como saída,
selecionando nível lógico alto ou baixo para acionamento do relé. Este método
usualmente requer que a tensão de saída em nível lógico alto seja a mesma utilizada no
sinal de controle dos relés. O sistema implementado alterna o pino digital entre estado
de saída com nível lógico baixo e estado de entrada, em alta impedância. O estado de
alta impedância simula o nível lógico alto ao cortar a corrente do circuito, com a
vantagem de passar a ser independente da tensão.
A figura 2.3 apresenta o circuito de um canal do módulo de relés.
Figura 2.3 - Circuito de um canal do módulo de relés
A tabela 2.3 apresenta os valores medidos e utilizados para o circuito de
acionamento de um canal de relé.
Tabela 2.3 - Polarização do circuito de acionamento do módulo de relés
Vcc 5 V DC
R1 1 Kohm
V(R1) 2,25 V
V(IN1) - LED 1,65 V
If 2,25 mA
13
A polarização dos terminais do painel de toque também é feita diretamente
através dos pinos de saída do microcontrolador. A partir dos valores de resistência de
cada um dos eixos, e da tensão de saída em HIGH do microcontrolador, obtemos os
valores de corrente necessários para leitura do painel, apresentados na tabela 2.4.
Tabela 2.4 - Polarização do painel de toque
V(HIGH) 5 V DC
R(X) 670 ohms
I(X) 7,46 mA
R(Y) 245 ohms
I(Y) 20,4 mA
A corrente total máxima para as saídas do microcontrolador no protótipo
montado corresponde à soma da maior corrente necessária para ativar o painel com a
corrente total de acionamento de todos os canais do módulo de relés. Não são somadas
as correntes dos dois eixos do painel de toque, pois estes são acionados de modo
alternado. Obtemos, então, um total de 38,4 mA, valor bem abaixo do limite de 200 mA
combinados para as 22 portas de I/O. Destaca-se, assim, a capacidade ociosa e
disponível do sistema para expansão e novos recursos.
2.4 – Montagem
A programação de um Arduino como controlador de touchscreen resistivo é um
projeto já conhecido pela comunidade. Neste [9], o autor detalha seu projeto em que
uma matriz de LEDs pode ter cada um de seus elementos acionado por um toque
correspondente na superfície touch sobre ela. Exemplos de códigos e esquemas de
ligação são apresentados, além de breve explicação do princípio de funcionamento.
Tendo tomado este projeto [9] como ponto de partida, foi observada a
necessidade de diversas mudanças para adequação ao uso no protótipo do painel, além
de outras melhorias.
14
No que se refere à ligação do Arduino ao touchpad e à lógica na leitura, segue
na tabela 2.5 o esquema utilizado no projeto original que serviu de base.
Tabela 2.5 - Ligação e lógica
Pino D = digital Pino A = analógico
Ligação Terminal - Pino Lógica
Painel de toque Arduino Fase 1 – Leitura do eixo X Fase 2 – Leitura do eixo Y
Esquerda D2 Modo: Saída Estado: LOW Modo: Entrada
Alta impedância
Cima A3 Leitura do eixo X (não usado)
D5 Modo: Entrada
Alta impedância
Modo: Saída
Estado: HIGH
Direita A4 (não usado) Leitura do eixo Y
D4 Modo: Saída
Estado: HIGH
Modo: Entrada
Alta impedância
Baixo D3 Modo: Entrada
Alta impedância
Modo: Saída
Estado: LOW
Analisando o esquemático do Arduino Nano, verificamos que as portas digitais
de I/O (D0 a D13) são identificadas como portas PB (PB0 a PB5) e PD (PD0 a PD7),
enquanto as portas analógicas responsáveis pelas leituras com o A/D são identificadas
como PC(PC0 a PC5) e ADC5/ADC6.
Figura 2.4 - Pinagem do ATMega168 no Arduino Nano
15
Embora o esquemático do Arduino Nano disponível em [1] liste o
microcontrolador ATMega168, a versão 3.0 utiliza o ATMega328. Ambos os chips são
equivalentes, tendo como diferencial a quantidade de memória disponível. 16KB de
FLASH, 1 KB de SRAM e 512 bytes de EEPROM para o 168, e o dobro destas para a
versão 328.
De acordo com o manual do microcontrolador, as PC5:0 são portas de 7 bits
bidirecionais de I/O e que têm como função alternativa a ligação com as entradas de um
ADC. Dessa forma, é possível utilizar os pinos A3:0 para interface com o painel
resistivo, simplificando a conexão de 6 para 4 fios. Alternam-se suas funções entre saída
digital para polarização dos eixos e entrada analógica para o ADC para leitura dos
toques. O ADC presente no microcontrolador tem uma resolução de 10 bits, retornando
inteiros de 0 a 1023.
O módulo de relés utilizado é um modelo Arduino compatible, já sendo dotado
de circuito de proteção e isolamento entre a saída do Arduino e a bobina do relé. Este
isolamento é feito por um optoacoplador EL817, garantindo isolação de até 5000 V
RMS entre entrada e saída. A ligação da entrada de cada canal do módulo de relés é feita
diretamente com um pino de saída digital do microcontrolador.
A figura 2.5 apresenta a ligação entre os 3 componentes.
Figura 2.5 -Esquema de ligação
16
Capítulo 3 - Programação do microcontrolador
3.1 – Introdução à plataforma Arduino
3.1.1 – Introdução
A plataforma Arduino é uma plataforma eletrônica de prototipagem de código
aberto, e tem como um de seus objetivos oferecer hardware e softwares flexíveis e
fáceis de usar. Uma das características que contribuíram para a sua popularização com
base na idéia de ser fácil de usar é a possibilidade de programar o microcontrolador
através da porta USB presente na maioria das placas Arduino. Ao invés de requerer o
uso de gravadores ou placas de programação, como é comum com outros
microcontroladores, a plataforma Arduino utiliza microcontroladores pré-programados
com um bootloader, além de possuir integrado no circuito um controlador responsável
pela conversão entre os sinais da interface serial do microcontrolador e a interface USB.
Interfaces USB estão presentes em praticamente 100% dos computadores atuais, sendo a
interface mais popular e disponível para conexão com outros dispositivos e periféricos.
3.1.2 – Bootloader Arduino
O bootloader, quando presente, é a primeira seqüência de instruções a ser
executada quando o microcontrolador é iniciado. Sua função é introduzir um atraso na
execução do código gravado pelo usuário enquanto monitora as informações recebidas
pela interface serial, convertidas da interface USB. Ao reconhecer instruções específicas
do processo de gravação, o bootloader negocia a comunicação e a programação do
microcontrolador é realizada. A presença do bootloader é imprescindível para a
comunicação com o microcontrolador pela porta USB.
A gravação do bootloader, ou programação do microcontrolador sem uso do
bootloader, deve ser feita através do conector ICSP. A presença do bootloader implica
no uso de 2KB de memória FLASH, além de um delay na inicialização do código
gravado, razões pelas quais pode ser desejado utilizar o microcontrolador sem
bootloader.
17
O Projeto Painel Eletrônico foi desenvolvido com base em placas Arduino já
pré-programadas com o bootloader, sendo este um fator que acelera e simplifica o
processo de programação e integração do circuito ao painel.
3.1.3 – Ambiente Arduino(IDE)
Embora os microcontroladores Atmel utilizados possam ser programados
utilizando qualquer compilador e gravador compatíveis, o uso da IDE Arduino oferece
diversas vantagens, principalmente no que se refere à simplicidade da programação e a
disponibilidade de referências e guias.
A IDE Arduino é um pacote completo de instalação disponível na página oficial
do site arduino.cc[1], que contem todo o software necessário para a programação. Ela é
multiplataforma, possuindo os drivers necessários para o reconhecimento da interface
USB das placas nos sistemas Windows, Mac OSX e Linux.
A interface de programação inclui um editor de texto para desenvolvimento dos
códigos, exemplos com as principais funções e algoritmos de acesso ao hardware,
interface de comunicação com a porta serial através de uma janela Serial Monitor,
suporte para gravação de bootloader em placas Arduino, o compilador responsável pela
tradução das instruções do Sketch em binário para o microcontrolador e um uploader
para gravação do código.
A IDE Arduino foi o ambiente utilizado para o desenvolvimento da
programação do microcontrolador. As ferramentas disponíveis, os exemplos de funções
e a integração com referências se mostraram adequadas e suficientes para o
desenvolvimento do projeto, sendo, portanto, recomendadas para futuros trabalhos
semelhantes.
3.1.4 – Estrutura de um Sketch
Sketch é o nome utilizado na plataforma Arduino para os seus programas. São os
códigos fontes enviados para a placa Arduino e executados por ela. Os Sketches são
programados na linguagem Arduino, que é baseada em C/C++, além de permitir o uso
de qualquer função da biblioteca AVR Libc.
Um Sketch básico é composto sempre por pelo menos dois blocos de funções
especiais, o setup() e o loop(). O setup() é chamado apenas uma vez, quando o Sketch
18
começa, sendo utilizado normalmente para realização de tarefas de inicialização como
definição de modo de operação de pinos ou inicialização de bibliotecas.
A função loop() por sua vez é chamada novamente sempre que é encerrada,
sendo executada de forma cíclica. É no loop( ) que se encontram as principais funções
de um Sketch. Os tutoriais Arduino chamam atenção para a fato de que um Sketch
sempre deve possuir um setup() e um loop(), ainda que estes não venham a ser
utilizados.
Outra função especial que pode ser definida dentro de um sketch é a
serialEvent().
A serialEvent() ocorre sempre que um novo dado se encontra no receptor da
hardware serial. Essa rotina é executada entre os ciclos de loop(), portanto o uso de
instruções de delay dentro de um loop podem atrasar a resposta. Múltiplos bytes de
dados podem estar disponíveis.
O uso da serialEvent() facilita o monitoramento da interface serial, prevenindo a
perda de dados. Seu uso é altamente recomendado se o seu Sketch tiver a necessidade de
receber dados pela interface serial, porém não é obrigatório como no caso das funções
setup() e loop().
A declaração de variáveis em um Sketch deve levar em conta o escopo desejado
e a faixa de valores possíveis a serem assumidas pela variável. A tabela 3.1 apresenta os
tipos de variáveis disponíveis na plataforma Arduino e o tamanho ocupado por cada
uma delas.
Tabela 3.1 - Variáveis e seus tamanhos
Variável Tamanho
Boolean 1 byte
Byte 1 byte
Char 1 byte
Int 2 bytes
Int 2 bytes
Word 2 bytes
Long 4 bytes
Unsigned Long 4 bytes
Float 4 bytes
Double 4/8 bytes
19
Considerando as limitações típicas de hardware para sistemas microcontrolados,
a escolha do tipo adequado de variável é de grande importância para que garantir que
não haja esgotamento de recursos como memória RAM. Para o Atmega328P,
microcontrolador presente na placa Arduino utilizada, 2KB de RAM estão disponíveis.
O Sketch desenvolvido utiliza a etapa de setup() para inicialização da porta
Serial utilizada na comunicação e para carregamento dos parâmetros de configuração da
memória. O bloco de loop() é composto de diversas chamadas de funções, monitorando
as leituras do painel de toque e tratando os eventuais dados provenientes da porta Serial.
O Sketch do projeto conta com a função serialEvent() para leitura da porta serial,
adicionando instruções de temporização para permitir o recebimento e processamento
de strings completas. São permitidos até 5 segundos de intervalo entre caracteres no
recebimento de uma string, para que esta seja processada como um todo. Isto possibilita
que comandos sejam digitados manualmente em programas terminal convencionais.
Esta temporização é variável através do parâmetro serialTimeLimit.
Em relação às variáveis, evitou-se utilizar variáveis de maior tamanho. Para
praticamente todas as variáveis de trabalho, foi possível defini-las com tipos de 1 ou 2
bytes, sendo o uso de variáveis inteiras ou booleanas predominante. A única exceção
ocorre por parte das variáveis responsáveis pela contagem de tempo, para temporização.
Estas foram definidas como variáveis de 4 bytes, em virtude das possíveis faixas de
valores retornadas pelas funções associadas a elas.
3.2 – Leitura do painel e funções associadas
3.2.1 – A leitura do painel
A leitura de um painel de toque é um processo no qual se obtém a posição atual
de contato entre as camadas inferior e superior do painel, resultado de um toque por um
dedo,caneta de toque ou similar. Em 2005 a Texas Instruments Incorporated publicou
um documento entitulado Using resistive touch screens for human/machine interface
[10] no qual diversas tecnologias de painéis de toque resistivos são apresentadas e
comparadas.
20
O fluxograma tradicional do processo de aquisição da leitura de um painel de
toque está reproduzido na figura 3.1.
Figura 3.1 - Fluxograma tradicional de aquisição de um painel de toque
O processo de aquisição utiliza o princípio básico de leitura de um painel de
toque resistivo, aplicando uma ddp ao longo de um eixo e medindo-se a tensão ao longo
do outro, obtendo-se assim a posição relativa do toque no segundo.
A aquisição dos toques no processo tradicional realiza sequencialmente todas as
leituras do eixo X, as leituras do eixo Y e as leituras do eixo Z. O eixo Z pode ser lido
ao aplicar a ddp em uma extremidade de cada eixo, enquanto a medição é realizada nas
extremidades restantes. Obtém-se assim um valor relativo à pressão do toque naquele
instante. O valor da pressão do toque é uma informação que pode ser utilizada para
validar toques detectados com características duvidosas, como valores fora da faixa
normal, duração muito curta/longa, ou ainda leituras com grande variância. Outra
aplicação comum para a leitura da pressão é a de adicionar funções secundárias para
uma mesma região de toque, como por exemplo abrir um menu de opções para um
21
objeto utilizando um toque forte e longo, ao invés de um toque simples e rápido para
selecionar o objeto.
A figura 3.2 apresenta o processo de aquisição utilizado, que é diferente do
tradicional.
Figura 3.2 - Fluxograma de aquisição do painel de toque - projeto painel eletrônico
O processo de aquisição no Projeto Painel Eletrônico não realiza leituras de
pressão, o eixo Z, por ter sido considerada desnecessária. A interface a ser apresentada é
simples, contendo poucos objetos e associando a cada um deles apenas uma função.
A principal mudança implementada em relação ao processo de aquisição
tradicional foi a leitura alternada dos eixos para obtenção dos valores médios. No
processo tradicional, as leituras do eixo Y só são realizadas após obtenção das leituras
22
do eixo X. Isto ocasionalmente fazia com que poucas leituras do eixo Y pudessem ser
obtidas, especialmente em situações de toques leves e rápidos, pois não é possível
dividir o tempo de aquisição igualmente entre os eixos, uma vez que não é possível
saber previamente qual será a duração do toque. O processo de leitura alternada dos
eixos permite uma obtenção de dados mais equivalente para os dois eixos.
3.2.2 – Calibração
Para que o valor obtido no processo de leitura do painel possa ser utilizado, é
necessário ainda que seja feita uma calibração das leituras do painel. O processo de
calibração é um processo típico no uso de painéis resistivos e consiste na obtenção de
valores brutos de tensão de pontos conhecidos que devem ser pressionados. Estes
pontos conhecidos geralmente incluem as extremidades e/ou os cantos do painel, além
do centro, podendo ainda incluir uma série de pontos eqüidistantes. As figuras 3.3 e 3.4
apresentam dois exemplos de padrões de calibração.
Figura 3.3 - Processo de calibração avançado – 25 pontos
Figura 3.4 - Calibração simples de 5 pontos
23
O processo de calibração tem dois objetivos principais. O primeiro é a obtenção
de leituras relativas às extremidades do painel, enquanto o segundo é o alinhamento
com os elementos de uma tela, quando aplicado sobre ela.
As leituras das extremidades geram valores que corresponderão aos limites dos
eixos X e Y do painel. Desta forma, qualquer outra leitura realizada estará dentro desses
limites, e sua posição relativa sobre o painel, considerando a linearidade da resistência,
pode ser determinada a partir destes limites. Em sistemas de cinco pontos, a leitura do
ponto central tem como função uma simples verificação da linearidade da resistência, ao
comparar o valor obtido para o centro do painel com o valor teórico a partir das
extremidades. Em painéis de maiores dimensões, ou em aplicações que exijam grande
acurácia, acrescenta-se a função de calibração avançada, como a de 25 pontos
apresentada na figura 3.5. Nestes casos, problemas decorrentes da diminuição ou de
uma baixa linearidade da resistência são amenizados ao determinar a posição do toque
pela interpolação entre extremidades mais próximas.
Quando o painel de toque é aplicado sobre uma tela, o processo de calibração
tem como função adicional corrigir erros de alinhamento entre a tela e o painel
decorrente do processo de montagem. Obtêm-se assim uma correta associação entre os
pontos da tela com as posições no painel de toque.
No Projeto Painel eletrônico, a calibração é realizada apenas com quatro pontos,
um para cada extremidade. Isto é possível e suficiente devido às pequenas dimensões do
painel utilizado, característica esta que lhe confere alto grau de linearidade ao longo dos
eixos.
Figura 3.5 - 2 modos de calibração possíveis - Projeto painel eletrônico – 4 pontos
O processo de calibração é importante também como rotina de manutenção do
painel, cujas características elétricas e linearidade podem variar ao longo da vida útil e
24
operacional. Uma simples calibração pode fazer com que um painel que apresente erros
no reconhecimento dos toques volte a estar plenamente funcional.
A adição de um processo de calibração avançada no sistema desenvolvido é
possível. Contudo, a calibração avançada, implica em maior uso de memória e de ciclos
de processamento ao requerer o armazenamento adicional de valores correspondentes
aos pontos de calibração.
A real utilidade de um sistema de calibração avançado, porém, é questionável.
Especialmente considerando as pequenas dimensões do painel de toque utilizado. De
acordo com a Hope Industrial[11], o processo de calibração avançado não é necessário
para todos projetos. O processo de calibração padrão é adequado à maioria dos usuários,
sendo que menos de 1% de seus usuários tem necessidade de realizar uma calibração
avançada para obtenção de resultados ótimos com seus monitores touch screen.
3.2.3 – Mapeamento dos toques
A etapa seguinte após a leitura do toque é o mapeamento com sua função
correspondente. As funções definidas foram o acionamento das portas digitais do
microcontrolador, que poderia ser de duas formas. A primeira, função toggle, ligaria ou
desligaria a saída digital relacionada, independente da duração do toque. Esta é
destinada ao acionamento de elementos como motores, bombas d`água, iluminação e
outros controles. A segunda, função hold, mantém a saída digital relacionada ligada
enquanto houver o toque, sendo assim, adequada para o acionamento de buzinas,
guinchos de âncoras e outros motores de pequeno porte.
Para a criação de botões virtuais no painel de toque, a superfície do painel foi
dividida em regiões numeradas sequencialmente da esquerda para a direita e de cima
para baixo, de modo que cada região corresponderia a uma função, podendo inclusive
esta função ser a de não executar nenhuma ação. A figura 3.6 representa a divisão em
regiões da superfície do painel de toque.
33 34 35 36 37 38 39 40
25 26 27 28 29 30 31 32
17 18 19 20 21 22 23 24
9 10 11 12 13 14 15 16
1 2 3 4 5 6 7 8 Figura 3.6 - Divisões no painel
25
A divisão da superfície do painel foi feita com base nas dimensões
recomendadas para objetos em sistemas com interface de toque, de modo que cada
região tem o tamanho adequado à representação de um objeto. No protótipo
desenvolvido, foi utilizado um módulo de relés com 8 canais, de modo que o painel
pode ser composto por até 8 botões. Em uma das configurações definidas, foram criados
quatro botões virtuais, cada um composto por quatro regiões adjacentes configuradas
com a mesma função, formando um único botão, utilizando os demais botões adjacentes
como região de guarda, que são as regiões de separação entre os botões sem nenhuma
função associada. A figura 3.7 apresenta a configuração do painel com 4 botões virtuais.
Figura 3.7 - Exemplo de configuração - 4 botões virtuais
Tanto a resolução do painel quanto a do ADC, que é de 10 bits, permitem a
divisão do painel em regiões ainda menores, possibilitando assim a criação de botões
maiores ou menores, agrupando ou não regiões adjacentes, além de definir o tamanho
necessário para as regiões de guarda.
Quanto à programação da função de cada botão, foi associado um endereço na
EEPROM (memória não volátil) para cada região, de modo que o conteúdo desse
endereço de memória representa a função e a porta digital a ser controlada. Detalhes
sobre a programação da memória são apresentados na seção 3.4.
3.3 – Reconhecimento de erros nas leituras
O processo de leitura da posição em um painel de toque está sujeito a diversos
erros que podem levar a um funcionamento inadequado ou indesejado do sistema. Estes
erros podem ser de natureza física do conjunto, ou resultado de uso incorreto por parte
do usuário. É necessário, então, que hajam algoritmos na programação capazes de
identificar e corrigir esses erros, ainda que de forma simples e minimalista.
Dentre os efeitos de natureza física que tradicionalmente afetam sistemas de
toque, podemos destacar a movimentação da camada externa do painel no processo do
toque, que gera um efeito de bouncing, e a ativação dos drivers para energização dos
26
eixos no processo de leitura, que pode fazer com que cargas se acumulem na
capacitância parasita entre as camadas superior e inferior do painel, o chamado efeito
charging. Ambos geram um pico de tensão no início do sinal correspondente ao toque,
que vai oscilar antes de desaparecer e estabilizar a leitura. A figura 3.8 apresenta o
aspecto geral do sinal gerado por um toque.
Figura 3.8 - Sinal gerado por um toque
A primeira ação realizada após ativação dos drivers do painel é a introdução de
um atraso antes da leitura. Foi determinado experimentalmente que a introdução de um
atraso de 1 ms entre a ativação dos drivers e a realização da leitura é o suficiente para
obtenção de valores corretos para a posição do toque. Além disso, é calculado o valor
médio de todas as leituras obtidas ao longo da duração do toque, reduzindo, assim, os
efeitos de ruídos provenientes do meio externo.
O processo de detecção inicial do toque também pode ser melhorado alterando o
estado das portas responsáveis pela leitura. No chamado método 1, colocamos o
terminal oposto do terminal de leitura em alta impedância de modo que a posição do
toque pode ser facilmente mapeada a partir do valor obtido, devido à linearidade da
resistência no painel. A figura 3.11 apresenta o modelo do circuito do método 1 na
leitura do eixo Y.
Figura 3.9 - Modelo do método de medição 1
27
A tensão lida depende basicamente da relação entre as resistências que
compõem o eixo. Indesejavelmente, o estado de ausência de toque pode gerar leituras
diferentes de 0, devido aos efeitos de bouncing do painel, charging das placas e
principalmente ruído captado pelo terminal em alta impedância. Este método é o ideal
para realizar a leitura do toque, mas não para identificar o toque inicial, o qual é feito
pelo método seguinte.
No chamado método 2, colocamos o terminal oposto ao de leitura em LOW,
definindo o pino digital como saída. As leituras obtidas a partir dos toques passam a ser
dependentes dos eixos, tornando este método não-ideal para identificação de posição.
Contudo, ao aterrar o terminal oposto ao de leitura, eliminamos grande parte do ruído
captado, melhorando a sinalização de 0 e a detecção inicial dos toques. A figura 3.12
apresenta o modelo do circuito para o método 2.
Figura 3.10 - Modelo do método de medição 2
Deste modo, o processo de identificação e leitura dos toque inicia-se no método
2. Ao detectar leituras diferentes de 0, alterna-se para o método 1 para obtenção do
valores e mapeamento da posição.
28
As tabelas 3.2 e 3.3 apresentam a seqüência lógica e de ligação para os eixos X
e Y.
Tabela - 3.2- Seqüência lógica e de ligação para leitura do eixo X
Ligação física Ligação Lógica
Painel Arduino Etapa 1 – Detecção
do toque pelo eixo X
Etapa 2 – Leitura do eixo
X
Cima A0 Modo: Saída
Estado: LOW
Modo: Entrada
Alta impedância
Baixo A2 Leitura do eixo X Leitura do eixo X
Esquerda A3 Modo: Saída
Estado: LOW
Modo: Saída
Estado: LOW
Direita A1 Modo: Saída
Estado: HIGH
Modo: Saída
Estado: HIGH
Tabela 3.3 - Seqüência lógica e de ligação para leitura do eixo Y
Ligação física Ligação Lógica
Painel Arduino Etapa 1 – Detecção
do toque pelo eixo X
Etapa 2 – Leitura do eixo
X
Cima A0 Modo: Saída
Estado: HIGH
Modo: Saída
Estado: HIGH
Baixo A2 Modo: Saída
Estado: LOW
Modo: Saída
Estado: LOW
Esquerda A3 Leitura do eixo y Leitura do eixo y
Direita A1 Modo: Saída
Estado: LOW
Modo: Entrada
Alta impedância
Outros erros provenientes da interação do usuário com o painel são relacionados
com as funções toggle e hold, definidas para associar os botões virtuais com as portas
digitais a serem ativadas. Para essas funções, foram adicionadas rotinas de verificação e
temporização com o objetivo de detectar e impedir ações indesejadas. Múltiplos
acionamentos seqüenciais por um único toque, interrupção da função hold por leituras
espúrias ou acionamento por toques acidentais são os problemas mais comuns.
A função de leitura do painel, ao adquirir a primeira leitura indicando haver um
toque, acumula as leituras e, se não for obtido um número mínimo de leituras até que se
29
detecte o fim do toque, esta é descartada, sendo considerada uma leitura espúria ou
oriunda de toque acidental, geralmente de duração curta. Obtendo-se número superior
ao limite mínimo, o toque é validado e passa-se à etapa seguinte de reconhecimento da
região.
A função toggle reconhece o toque, altera a saída da porta digital
correspondente, e continua realizando leituras do painel até observar que a região
previamente ativada não está mais em uso. Desta forma, não se produzem múltiplos
acionamentos acidentais da mesma saída em virtude de um toque de duração mais longo
A função hold reconhece o toque em uma região associada à sua função e
mantêm a saída correspondente ativada enquanto o toque permanecer sendo
reconhecido. Além disso, ao detectar uma interrupção ou alteração na leitura, é
realizada uma contagem de leituras subseqüentes de modo a determinar a duração desta
mudança. Ela deve ser maior que um limite mínimo para ser reconhecida como correta e
encerrar a função hold.
3.4 – Estrutura e uso da memória
3.4.1 – Memória disponível
Os microcontroladores utilizados na plataforma Arduino possuem 3 tipos de
memória disponíveis para uso. Memória FLASH, onde são armazenados os códigos do
Bootloader e dos Sketches, SRAM, a memória de trabalho do microcontrolador e, por
fim, a EEPROM, memória destinada ao armazenamento persistente de dados. A tabela
3.4 apresenta a quantidade de memória disponível nos diferentes microcontroladores
utilizados nas placas Arduino.
Tabela 3.4 - Memória disponível para diferentes microcontroladores usados na plataforma Arduino
ATMega168 ATMega328P ATMega1280 ATMega2560
Flash (1Kbyte
usado pelo
bootloader)
16 Kbytes 32 Kbytes 128 Kbytes 256 Kbytes
SRAM 1024 bytes 2048 bytes 8 Kbytes 8 Kbytes
EEPROM 512 bytes 1024 bytes 4 Kbytes 4 Kbytes
A placa utilizada no projeto, modelo Arduino Nano, possui um microcontrolador
ATMega328P.
30
3.4.2 – Uso da memória FLASH
A quantidade de memória FLASH limita o número de funções que podem ser
incorporadas ao sistema. O próprio uso do bootloader como conveniência para o
processo de programação do microcontrolador implica no uso de 1 a 5 Kbyte de
memória FLASH, dependendo da versão e dos recursos oferecidos pelo bootloader
utilizado. A memória FLASH é a que tem a monitoração de uso mais fácil, uma vez que
a IDE Arduino apresenta o tamanho total compilado de cada Sketch, e emite um alerta
ao detectar que o tamanho do Sketch excede a quantidade de memória FLASH
disponível no microcontrolador.
O Sketch desenvolvido ocupa um total de 9,830 Kbytes de memória FLASH,
reservando recursos para futuras revisões e funcionalidades adicionais.
3.4.3 – Uso da memória SRAM
A memória SRAM é onde são criadas e manipuladas as variáveis definidas
pelo Sketch. A estrutura da memória RAM pode ser representada de acordo com a figura
3.11.
Figura 3.11 - Estrutura da RAM
Uma quantidade insuficiente de memória RAM disponível acarreta possíveis
sobreposições de blocos de memória, com perda de dados, travamentos ou
funcionamento anormal dos Sketches, É importante destacar que mensagens de debug
ou de interface utilizadas com a função Serial.print() ocupam espaço na RAM, pois na
inicialização do Sketch, essas strings são copiadas da FLASH para a RAM. Cada
caractere utilizado na string, além do caractere terminador \0 ocupa um byte, tornando
fácil o uso excessivo de RAM ao utilizar diversas strings ao longo do Sketch.
Uma técnica utilizada para redução no uso da memória RAM é o uso do
modificador PROGMEM na definição de variáveis. Isto faz com que a variável seja
31
carregada na memória FLASH, ao invés de na RAM, reduzindo assim o seu uso. Em
compensação, o uso dessas variáveis passa a ser mais complexo, exigindo o uso de
funções adicionais para carregar a variável na RAM e só então podermos manipulá-las.
O uso do modificador PROGMEM e suas funções associadas estão definidas na
biblioteca pgmspace.h .
De forma semelhante, podemos utilizar o modificador F() na definição de
strings associadas as funções Serial.print, , indicando que estas devem ser lidas a partir
da memória FLASH, e não pré-alocadas na RAM durante a inicialização. Esta solução
foi implementada no projeto Painel Eletrônico. O modificador F() só deve ser utilizado
em strings que não precisem ser modificadas ou manipuladas.
A verificação do uso da memória RAM é um processo complicado de ser
executado com precisão. Um dos modos de se realizar esse monitoramento de forma
simplificada, porém eficiente, é sugerido por Jean-Claude Wippler [13], através da
leitura da variável de sistema __brkval. Esta variável retorna o valor do ponto
mais alto na RAM ocupado pelo heap.
O uso do modificador F() no projeto Painel Eletrônico resultou em uma redução
de aproximadamente 500 bytes no uso da memória RAM, aproximadamente ¼ do total.
3.4.4 – Uso da memória EEPROM
A EEPROM é a memória não volátil disponível para uso do programador. Seu
intuito é permitir que dados como parâmetros de configuração variáveis, preferências de
usuários e até mesmo dados coletados sejam armazenados de forma segura. A EEPROM
não é alterada nos processos de gravação de um Sketch ou do bootloader, a menos que
especificamente instruída para apagá-la.
No contexto de um Sketch, a EEPROM pode se acessada através das funções
EEPROM.read(address) e EEPROM.write(address). A função read retorna o valor
(byte) correspondente ao conteúdo do endereço de memória especificado. Endereços
nunca utilizados retornam o valor 255. Da mesma forma, é possível armazenar um byte
em um endereço da EEPROM através da função write. É importante destacar que o
processo de gravação na EEPROM leva aproximadamente 3.3 milisegundos para ser
completado, o que pode interferir com outras rotinas do Sketch, onde a temporização é
importante. Além disso, EEPROMs têm uma especificação de vida-útil, relacionada ao
número de ciclos de gravação, aproximadamente 100 mil vezes.
32
Para o projeto Painel Eletrônico, a memória EEPROM foi utilizada para
armazenar diversos parâmetros de inicialização e configuração, além das ações de cada
botão virtual. No caso dos valores máximos dos eixos X e Y, parâmetro utilizado para
mapeamento da posição do toque juntamente com os valores mínimos, foi necessária a
utilização de 2 endereços de memória. Isto porque esses valores podem ser de até 10
bits, resolução do ADC, enquanto e a EEPROM armazena dados de 8 bits. Desta forma,
dividiu-se estes valores em multiplicador e resto da divisão por 254. A tabela 3.5
apresenta exemplos do armazenamento de leituras dos eixos X e Y.
Tabela 3.5 - Armazenamento de valores maiores que 8 bits
Variável Valor
Leitura X1 1012
Xhigh 250
Xmultiplier 3
Leitura Y1 1007
Yhigh 245
Ymultiplier 3
Para o armazenamento desses parâmetros, a estrutura da EEPROM foi dividida
de acordo com a tabela 3.6.
Tabela 3.6 – Estrutura da EEPROM
Endereço Parâmetro ou Dado Endereço Parâmetro ou Dado
0 Calibration Flag 1016 Yhigh(multiplier)
1 1017 Xhigh(multiplier)
... 1018 Y axis division
40 1019 X axis division
... 1020 Ylow
... 1021 Yhigh(modulo)
... 1022 Xlow
1015 1023 Xhigh(modulo)
Os endereços de 1 a 40 correspondem às funções a serem configuradas e
executadas pelas regiões definidas na superfície do painel. Ao identificar um toque na
região 25, o microcontrolador acessa o endereço 25 da EEPROM e verifica qual ação
deve ser executada. Os endereços que mapeiam as funções a serem executadas são
33
definidos automaticamente de acordo com os parâmetros Y axis division e X axis
division, que definem a divisão dos eixos e a quantidade de regiões reconhecidas.
3.5 – Comunicação serial e interface via terminal
Todas as placas Arduino possuem ao menos uma porta serial, também chamada
de UART - Universal Asynchronous Receiver Transmitter, que utilizam os pinos digitais
0(RX) e 1(TX) para se comunicar. Esta porta serial também é comumente chamada de
hard serial, em contraste com as chamadas soft serial, portas seriais que utilizam outros
pinos digitais e uma biblioteca como a SoftwareSerial.h para comunicação. A
comunicação serial é utilizada para comunicação entre placas Arduino, computadores
ou outros dispositivos, e os terminais que compõem a porta serial na placa Arduino
Nano utilizada são apresentados na figura 3.12.
Figura 3.12 - Hardware serial port no Arduino nano
A comunicação serial é também a maneira tradicional de interação do
programador ou usuário com o software já gravado no microcontrolador. A interface
IDE de programação do Arduino conta com a função de Serial Monitor, que permite a
comunicação direta com a placa Arduino conectada. O uso da função Serial.print, que
escreve na porta serial, permite a exibição de mensagens de Debug ou de interface.
É importante destacar que a função Serial Monitor da IDE Arduino é
essencialmente diferente de um programa terminal de comunicação serial comum. A
principal diferença observada é a forma como as informações são transmitidas do
computador para a placa Arduino. Na Serial Monitor, existe a presença de um botão
Send ao lado da caixa de texto, de modo que é possível digitar toda a string que se
deseja enviar e esta será armazenada em um buffer local, sendo enviada apenas quando
o botão Send é pressionado. Programas terminais comuns enviam os caracteres tão logo
eles são recebidos, de modo que a programação de uma função de leitura da porta serial
deve permitir um atraso na recepção dos caracteres no buffer de entrada.
34
No Projeto Painel Eletrônico, a comunicação serial pode ser feita através de
qualquer programa terminal, ou através da interface Serial Monitor da IDE Arduino. Foi
configurado um Baud rate de 2400 bits/s, velocidade relativamente baixa, mas que
permite ao microcontrolador receber todos os dados sem que haja overflow no buffer da
porta serial. Ao inicializar a placa Arduino conectada a um terminal, a função setup()
envia a string InitOk indicando o reconhecimento dos parâmetros de calibração do
painel. Sempre que um toque é reconhecido, os valores da leitura de posição dos eixos
X e Y são enviados para a porta serial. Se a posição do toque corresponder à região de
um botão virtual configurado, outra mensagem será enviada indicando que houve um
toque naquela região.
Para configuração das funções do sistema, deve-se enviar comandos para o
microcontrolador através do terminal. A função de leitura da porta serial é chamada
assim que é detectada a presença de um caractere no buffer de entrada, entre os ciclos de
loop(). Esta função deve ler uma linha inteira, procurando pelo caractere de final de
string. A string completa adquirida é então analisada, em busca de palavras pré-
definidas de identificação de função. A tabela 3.7 apresenta as opções de configuração
programadas.
Tabela 3.7 – Configurações da Interface Terminal
Nome Função
cal Calibrar painel
P1 Programação da EEPROM
show Mostra valores da calibração
mem Exibe configurações da EEPROM
erase Apaga todo conteúdo da EEPROM
erase2 Apaga as ações das regiões da EEPROM
ram Exibe total da RAM livre
A função cal exibe instruções sobre as posições a serem tocadas em quatro
extremidades diferentes do painel, realizando sua leitura e calibração. A figura 3.13, já
apresentada na seção 3.22, representa os pontos a serem tocados
Figura 3.13 – Pontos de toque para função cal
35
A P1 é a função responsável pela programação dos parâmetros de
funcionamento do painel na EEPROM. Esta função reconhece comandos de acordo com
os exibidos na figura 3.14, que representa um arquivo texto .ini que pode ser enviado
para o microcontrolador pelo terminal, realizando toda a configuração automaticamente.
Figura 3.14 - Programação dos parâmetros do painel
A string P1 seleciona a opção de configuração e a string $prog.on confirma a
seleção, ativando o reconhecimento de dados para a programação. A configuração é
feita enviando o endereço da EEPROM a ser configurado e o dado a ser armazenado. O
caractere # é o identificador de endereço, o qual deve ser seguido por %, identificador
do dado.
36
Os endereços 1018 e 1019, de acordo com a estrutura da EEPROM apresentada
na tabela 3.5, correspondem ao número de divisões dos eixos Y e X, que definem a
quantidade e o tamanho das regiões no painel.
Para os endereços cujo número corresponde a uma região, seu conteúdo indica o
número da porta digital a ser ativada. Assim, os endereços 1, 2, 9 e 10 correspondem às
quatro regiões adjacentes no canto inferior esquerdo, todas configuradas para ativar a
saída 2, formando assim um único botão virtual. Endereços configurados com a função
toggle indicam apenas o número da porta digital a ser controlada. Para a função hold, o
número da porta é acrescido de 100. Os endereços 31, 32, 39 e 40 representam as 4
regiões adjacentes do canto superior direito, formando um único botão virtual função
hold, que controla a porta 5.
Os botões virtuais definidos pela configuração da figura 3.16 no painel de toque
podem ser vistos na figura 3.15.
Figura 3.15 – Exemplo de configuração de botões virtuais
A função show exibe os valores máximos e mínimos de leitura dos eixos X e Y,
usados na calibração e leitura. Função basicamente de uso para debug e verificação.
Função mem exibe as posições de memória na EEPROM em uso, e o conteúdo
delas. Uma posição de memória ainda não utilizada retorna o valor 255. Todas as
posições de memória são lidas, mas se o valor retornado for 255, aquele endereço e seu
conteúdo não são exibidos.
As funções erase e erase2 são a mesma função, porém chamadas com
parâmetros diferentes. Seu algoritmo possui 2 parâmetros, primeiro e último endereço a
serem apagados. A função escreve o valor 255, correspondente a vazio, na faixa de
endereços especificada. Enquanto a erase apaga todos os endereços da EEPROM, a
erase2 apaga somente as configurações de botões virtuais e suas ações.
A função ram realiza a verificação de memória RAM disponível. Esta
verificação retorna apenas o tamanho do bloco disponível entre o heap e a stack, não
incluindo blocos de memória livre esparsos decorrentes de malloc() e free(). Função
basicamente de uso para debug e verificação
37
Capítulo 4 – Construção do protótipo
Tendo sido definidas as características de hardware do projeto, e a programação
lógica do microcontrolador, a etapa seguinte foi a construção do protótipo. Os principais
objetivos desta etapa envolvem demonstrar a funcionalidade do projeto, apresentar
aspectos relevantes de marinização aos componentes utilizados e ajudar a identificar
outros fatores físicos ou mecânicos que possam interessar em futuros projetos de um
produto final.
Os componentes básicos, painel sensível à toque, placa microcontroladora
Arduíno e módulo de relés, foram montados dentro de uma caixa de derivação para
instalações elétricas Cemarbox modelo CBOX-914004[15]. Trata-se de uma caixa de
material termoplástico, isolante elétrico, com grau de proteção IP66. O IP66 se refere ao
código IP[16], International Protection Marking, que classifica e avalia o índice de
proteção disponível em caixas e recipientes contra intrusão (incluindo partes do corpo
como mãos e dedos), poeira, contato acidental e água. O índice IP66 indica que o objeto
em questão conta com total proteção contra contato e nenhuma entrada de poeira em sua
área interna, além de garantir que jatos de água provenientes de qualquer direção não
gerarão efeitos nocivos. A figura 4.1 apresenta o aspecto geral final do protótipo
montado.
Figura 4.1 - Protótipo montado
38
A tampa da caixa foi cortada de modo que o painel sensível a toque pudesse ser
fixado na sua face inferior ao longo da área externa do painel, de modo que a sua área
ativa fique exposta no lado externo. Sob o painel de toque, foi aplicado uma folha
impressa com ícones correspondentes a diferentes elementos que podem ser acionados,
dependendo da configuração. A figura 4.2. apresenta a tampa da caixa com o painel de
toque aplicado e uma folha representando uma possível configuração de botões virtuais.
Tanto as dimensões dos ícones quanto as suas posições correspondem ao mapeamento e
agrupamento de regiões em uma configuração funcional e testada, capaz de acionar a
saída correspondente adequadamente.
Figura 4.2 - Tampa com painel e botões virtuais
Na lateral da caixa foram montados também 2 prensa cabo, modelo genérico
PG9, conforme figura 4.3, para entrada de alimentação e saída para dispositivos.
Figura 4.3 – Lateral com prensa cabos
39
Prensa cabos[17] são componentes que permitem a passagem de cabos através
de sua estrutura, proporcionando fixação e vedação através de um sistema de aletas
concêntricas que se moldam e selam à superfície externa de um cabo de adequada
dimensão após o rosqueamento da tampa. As figuras 4.4 e 4.5 apresentam os prensa
cabos aplicados, com a tampa removida, e já fechados em torno dos cabos.
Figura 4.4 - Prensa cabo aberto e fechado
Figura 4.5 - Prensa cabos fechados sobre cabos
É importante destacar que após os furos para montagem dos prensa cabos, corte
da tampa e aplicação do painel sob a mesma, a certificação de grau de proteção IP66
deixa de ser válida, uma vez que se alterou profundamente a estrutura da caixa, com
introdução de diversos pontos passíveis de admissão de poeira e água. Embora os
componentes utilizados externamente sejam adequados para montagem de estrutura
marinizada com equivalente alto grau de proteção IP, a certificação através de índice IP,
40
essencial para dispositivo comercial marinizado, requer uma série de testes a ser
realizada por laboratório competente. Este processo foge do escopo deste trabalho.
Como última característica tipica de processos de marinização, foi aplicada uma
camada de silicone com função de vedação, entre a tampa da caixa e a intersecção da
área externa com a área ativa do painel de toque. A camada de silicone está destacada
em vermelho na figura 4.6
Figura 4.6 - Aplicação de silicone entre tampa e painel de toque
Internamente, os componentes eletrônicos foram montados e fixados na caixa,
conforme figura 4.7.
Figura 4.7 - Componentes eletrônicos dentro da caixa
41
A conexão do painel de toque com o microcontrolador é feita através de um
fino terminal flexível que sai da borda do painel de toque e se liga em um conector
adequado de um cabo de ligação que se conectará diretamente com a placa Arduino.
Devido à característica frágil do terminal flexível do painel de toque, o cabo de ligação
foi fixado junto a face interna da tampa, de modo a reduzir a movimentação e estresse
mecânico entre seu conector e o terminal flexível, conforme a figura 4.8.
Figura 4.8 - Fixação do cabo de ligação do painel de toque
Figura 4.9 – Componentes ligados, com caixa aberta
42
Após a montagem do protótipo, foram aplicadas diferentes configurações no
microcontrolador para teste da leitura do painel. As figuras 4.10 e 4.11 apresentam duas
configurações diferentes de mapeamento da superfície, com divisões em 40 e 160
regiões, respectivamente.
Figura 4.10 - Configuração 1 - 40 regiões
Figura 4.11 - Configuração 2 - 160 regiões
43
E por fim, foram aplicados outros padrões de posição e dimensionamento de
botões virtuais sobre as regiões configuradas, conforme as figuras 4.12, 4.13, 4.14 e
4.15, de forma a testar a capacidade de reconfiguração do painel.
Figura 4.12 – Esquema de botões 1 Figura 4.13 – Esquema de botões 2
Figura 4.14 - Esquema de botões 3 Figura 4.15 – Esquema de botões 4
Os testes aplicados consistiram basicamente na associação de dispositivos
correspondentes aos ícones dos botões com a sua saída no módulo de relés. Para cada
esquema de botões o microcontrolador foi reprogramado adequadamente com um
arquivo de configuração enviado através da porta serial.
O protótipo montado foi capaz de reconhecer e mapear os toques corretamente
dos ícones dos botões para o acionamento da saída configurada, em cada um dos
esquemas de botões utilizados.
44
Capítulo 5 - Conclusões
Este trabalho teve como resultado o desenvolvimento de um painel eletrônico
com interface sensível a toque e a documentação dos diversos aspectos relevantes a
integração dos seus componentes. O projeto foi composto por placa Arduino com
microcontrolador ATmel, painel de toque resistivo de 4 fios, módulo de relés Arduino
Compatible, além da programação do microcontrolador em linguagem Arduino, baseada
em C/C++.
Tendo como objetivo inicial a substituição de um painel eletromecânico, o
projeto mostrou a validade da implementação de uma interface de toque funcional a um
custo acessível através da montagem e demonstração de um protótipo. O protótipo
mostrou também a capacidade de configuração e remapeamento dos botões virtuais,
característica de grande valor para o projeto.
Como trabalhos futuros relacionados ao tema, as seguintes sugestões podem ser
exploradas.
Desenvolvimento de funções relacionadas à leitura do eixo Z: Neste
projeto não foram utilizadas leituras do eixo Z, focando em soluções mais
simples. O uso do eixo Z pode permitir o desenvolvimento de algoritmos mais
avançados de verificação de erros nos toques, caso venha a se mostrar necess
Adição de funcionalidades ao microcontrolador: Funções como
monitoramento meteorológico, carga nas baterias, sistemas de comunicação de
emergência etc, geralmente estão presentes no mesmo ambiente como
equipamentos independentes, os quais poderiam ser integrados ao sistema.
Integração do sistema com outros dispositivos wireless: Através de
shields WIFI/Bluetooth, o painel desenvolvido pode operar como central de
controle fixa, oferecendo o mesmo controle móvel para outros dispositivos
conectados como smartphones ou tablets.
45
Referências
[1] ARDUINO, Arduino – ArduinoBoardNano. Disponível em:
arduino.cc/en/Main/arduinoObardNano#.UxDlyuNdUUrg. Acesso em: fev de 2014.
[2] Tech Glocal, Tech Global – High Quality Coomercial interactive LCD & LED touch
screen solutions. Disponível em:
http://www.techglobal.com/TouchTechnologies. Acesso em: fev de 2014.
[3] Elo Touch, Elo Touch Solutions – Touch Technologies. Disponível em:
http://www.elotouch.com/Technologies/default.asp. Acesso em: fev de 2014.
[4] Ahmed, M., How 4 wire resistive touch screen works? – Telecommunication and
Electronics Projects, 2011. Disponível em:
http://elprojects.blogspot.com.br/2011/07/how-4-wire-resistive-touch-screen-
works.html. Acesso em: fev de 2014.
[5] Kolokowsky, S., Touchscreens 101: Understanding Touchscreen Tchnology and
Design, 2009. Disponível em:
http://www.cypress.com/?docID=17212. Acesso em: dez de 2013.
[6] Ubuntu, UMEGuide/DesigningForFingerUIs. Disponível em:
help.ubuntu.com/community/UMEGuide/DesigningForFingerUIs. Acesso em: fev de
2014.
[7] Dandekar, K., Raju, B.I., Srinivasan, M.A., 3-D Finite-Element Models of Human
and Monkey Fingertips to Investigate the Mechanics of Tactile Sense, 2003. Disponível
em:
http://touchlab.mit.edu/publications/2003_009.pdf. Acesso em: fev de 2014.
[8] SainSmart 8 channel DC 5V Relay Module. Disponível em:
http://www.sainsmart.com/arduino/arduino-components/relays/8-channel-dc-5v-relay-
module-for-arduino-pic-arm-dsp-avr-msp430-ttl-logic.html. Acesso em: fev de 2014.
[9] Nicolato, M. , Arduino... Touche, 2009. Disponível em:
http://mnicolato.altervista.org/arduino/ardtouch.htm. Acesso em: fev de 2014.
[10] Downs, R. , Using resistive touch screens for human/machine interface, 2005.
Disponível em:
http://www.ti.com/lit/an/slyt209a/slyt209a.pdf. Acesso em: fev de 2014.
[11] Hope Industrial Systems, Inc., Enhanced Calibration for Industrial Touch
Screens,2012. Disponível em:
news.hopeindustrial.com/2012/enhanced-calibration-for-industrial-touch-screens.
Acesso em: fev de 2014.
[12] Cruz, Cruz |Support. Disponível em:
www.cruzreader.com/Article_801.php. Acesso em: fev de 2014.
46
[13] Wippler, J.C., ATmega memory use Jeelabs, 2011. Disponível em:
jeelabs.org/2011/05/22/atmega-memory-use. Acesso em: fev de 2014.
[14] Practical Arduino, Touch Control Panel. Disponível em:
http://www.practicalarduino.com/projects/touch-control-panel. Acesso em: fev de 2014.
[15] Cemar, Cemar Legrand. Disponível em:
http://files.cemar.com.br/catalogo_digital/#/194/. Acesso em mar de 2014.
[16] IP Code – Wikipedia, the free encyclopedia. Disponível em:
http://en.wikipedia.org/wiki/IP_Code. Acesso em mar de 2014
[17] Prensa Cabo | Legrand – Cemar. Disponível em:
http://www.cemarlegrand.com.br/produtos-e-solucoes/processos-industriais/prensa-cabo-0.
Acesso em mar de 2014