Arduino – Teclado touch capacitivo

Veja neste artigo um tutorial passo a passo de como conectar o seu Arduino a um teclado touch capacitivo.
teclado touch

O uso de teclados touch capacitivos é uma tendência nos dias atuais, já que a vida útil de uma tecla desse tipo é muito superior a de uma tecla mecânica. Outro fator interessante para o uso desse tipo de teclado é a possibilidade de um design mais moderno. Cada vez mais estão surgindo interfaces desse tipo, seja em eletrodomésticos, aparelhos eletrônicos ou até mesmo em interfaces industriais.


Neste artigo iremos explorar a solução proposta pelo Touchpad Shield para teclado touch capacitivo. Esse shield foi adquirido em parceria com a loja FILIPEFLOP para nossa avaliação.

Hardware


O Touchpad Shield é baseado no circuito integrado MPR121, um controlador para sensores touch capacitivos da Freescale. Possui 9 teclas capacitivas e 3 pinos para conexão de novos eletrodos externos. Além disso possui o conversor de nível de 5V para 3,3V.  A figura 1 exibe o shield com as respectivas teclas no layout da placa. 

1 - placa

Figura 1 – Touchpad Shield frente e verso.

O esquema elétrico desse shield é relativamente simples visto que possui pouco componentes. A figura 2 exibe seu esquema elétrico, note que possui apenas o MPR121 e alguns componentes:

2 - esquema

Figura 2 – Esquemático Touchpad Shield.

Note na figura 2 que o MPR121 é alimentado com 3,3V proveniente do pino 3,3V do Arduino. Para interface com Arduino alimentado com 5V foi montado um conversor de nível para os pinos SDA e SCL da comunicação I2C. Você pode aproveitar este circuito conversor de nível para aplicações de interfaces digital entre diferentes níveis de tensões, como por exemplo interface de circuitos com a placa Arduino Due.

O MPR121 é um controlador para sensor touch capacitivo com interface I2C. Ele pode controlar até 12 eletrodos capacitivos. Outra característica interessante é que este chip pode ser utilizado como drive de até 8 LEDs, quando os pinos não estão configurados como entrada para eletrodos.

Note que o pino ADDR está conectado ao GND, dessa forma o endereço da I2C é 0X5A. Não há a possibilidade de mudança do endereço nesse hardware já que os desenvolvedores não previram jumpers de configuração na placa. O MPR121 permite até 4 endereços dependendo de onde está conectado o pino ADDR. Este pino pode ser conectado ao VSS, VDD, SDA ou SCL resultando nos endereços 0x5A, 0x5B, 0x5C e 0x5D respectivamente, porém como visto nessa placa o ADDR está conectado ao GND resultando no endereço 0x5A.

Note que além dos pinos SDA e SCL da I2C, também está ligado ao Arduino o pino IRQ. Este pino é utilizado para gerar uma interrupção quando for detectado alguma tecla pressionada ou solta. Este pino é uma saída em coletor aberto sendo ativa em nível zero. Dessa forma pode-se utilizar recurso de interrupção para leitura das teclas, conforme será abordado no código exemplo. Nesse momento o microcontrolador, que atua como Master no barramento I2C, requisita as informações para o CI, que funciona como Slave nesse mesmo barramento. Para mais informações veja o datasheet do componente.

Software

Na página do produto no site da FILIPEFLOP está disponível um código exemplo para teste do shield. Além do código para o Arduino estão disponíveis alguns arquivos que deverão ser inseridos na biblioteca do Arduino para correta compilação. O desenvolvedor optou por não utilizar a biblioteca Wire do Arduino. Vamos analisar este exemplo iniciando pelo arquivo mpr121.h:

Nesse arquivo foram definidos os registradores do MPR121 para manipulação via I2C. Para mais detalhes de cada registrador consulte datasheet do MPR121.

Toda a implementação da comunicação I2C com as funções para interface com o MPR121 é feita no arquivo I2C.h. Confira o código desse arquivo a seguir: 

Note que este arquivo está bem denso, já que o desenvolvedor não se preocupou com a separação de código e juntou toda a implementação em um único arquivo.

Como dito, neste arquivo estão as funções de configuração, escrita e leitura do MPR121 que serão utilizadas no código do Arduino.

Exemplo

Por fim vamos analisar o código exemplo para teste no Arduino. Com toda a abstração realizada nos arquivos apresentados a codificação no Arduino fica relativamente simples. Neste exemplo vamos atentar para a utilização do recurso de interrupção para leitura das teclas. Como apresentado anteriormente o MPR121 possui um pino de interrupção que “avisa” quando tem tecla para ser lida. Vejamos o código com os comentários em português: 

O tratamento de leitura de teclas é feito dentro da função getNumber que é chamada quando o pino IRQ vai para zero, gerando uma interrupção externa configurada no pino 2 do Arduino. Para verificação de qual tecla (eletrodo) foi acionado, são lidos os registradores de status (0x00 e 0x01). No código apresentado apenas uma tecla é tratada.


A figura 3 exibe a saída no terminal serial para o tratamento do evento de tecla: 

3 - terminal serial

Figura 3 – Teclas pressionadas exibidas no terminal serial

Conclusão

O Touchpad shield se apresentou uma placa bem interessante para interface touch capacitiva utilizando a plataforma Arduino. Utilizando os recursos do MPR121 fica bem fácil esse tipo de aplicação. Com o uso da comunicação I2C e utilizando o recurso de interrupção, a interface com o microcontrolador é feita com poucos pinos e não há a necessidade de ficar varrendo as teclas já que o MPR121 se encarrega de “avisar” quando há tecla para leitura. Vale a pena acessar a página sobre o MPR121 no site da Freescale [5] e estudar os Application Notes para obter mais informações.

Para aprender mais

Arduino – Primeiros Passos

Arduino UNO

Arduino – Saídas PWM

Referências

LOJA FILIPEFLOP

Datasheet MPR121

Arduino Due

Biblioteca Wire

MPR121 – site Freescale

Notificações
Notificar
guest
8 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Túlio Veloso
Túlio Veloso
08/11/2015 13:45

Não consigo compilar este codigo exemplo, esta dando erro quando inicia acomunicação I2C utilizando biblioteca apresentada. Poderia tirar minha duvida?

Fabio_Souza_Embarcados
Fabio_Souza_Embarcados
Reply to  Túlio Veloso
08/11/2015 20:44

Olá Túlio, você incluiu todas as bibliotecas? Qual o erro apresentado?

trackback
02/06/2015 23:27

[…] Arduino – Teclado touch capacitivo […]

trackback
22/05/2015 21:00

[…] Arduino – Teclado touch capacitivo […]

trackback
21/05/2015 00:31

[…] Arduino – Teclado touch capacitivo […]

trackback
14/04/2015 02:01

[…] Arduino – Teclado touch capacitivo […]

trackback
09/04/2015 11:50

[…] Arduino – Teclado touch capacitivo […]

trackback
09/04/2015 11:24

[…] Arduino – Teclado touch capacitivo […]

WEBINAR

Visão Computacional para a redução de erros em processos manuais

DATA: 23/09 ÀS 17:00 H