Índice:

Módulo de proteção do teclado 1602 LCD com mochila I2C: 6 etapas
Módulo de proteção do teclado 1602 LCD com mochila I2C: 6 etapas

Vídeo: Módulo de proteção do teclado 1602 LCD com mochila I2C: 6 etapas

Vídeo: Módulo de proteção do teclado 1602 LCD com mochila I2C: 6 etapas
Vídeo: Using LCD Displays with Arduino 2024, Novembro
Anonim
Módulo de proteção do teclado 1602 LCD com mochila I2C
Módulo de proteção do teclado 1602 LCD com mochila I2C

Como parte de um projeto maior, eu queria ter um display LCD e um teclado para navegação em alguns menus simples. Usarei muitas portas de E / S no Arduino para outros trabalhos, então queria uma interface I2C para o LCD. Então eu comprei algum hardware, consistindo de um módulo de blindagem de teclado 1602 LCD da DFRobot e um módulo serial I2C anônimo para LCDs. Quero usá-los com um Arduino Nano. Então descobri que existem alguns desafios para fazer esses componentes funcionarem juntos - mas é possível. Por isso, quero compartilhar minha experiência e talvez ajudar outras pessoas.

Esta foto é da placa de ensaio em funcionamento, que pode exibir mensagens no LCD e identificar teclas pressionadas. O LCD é controlado por meio da interface I2C, incluindo a luz de fundo do LCD. As teclas pressionadas são recebidas pelo Arduino no pino A0 (pode ser qualquer um dos pinos analógicos, exceto para A4 e A5 que estão ligados à interface I2C).

Etapa 1: Descrição das peças - Módulo de blindagem do teclado LCD

Descrição das peças - Módulo de blindagem do teclado LCD
Descrição das peças - Módulo de blindagem do teclado LCD

O módulo de blindagem do teclado LCD consiste em um LCD 1602 comumente usado montado na parte superior de uma placa de circuito que contém as teclas e que pega um subconjunto das conexões do LCD e as disponibiliza para os pinos do conector na parte inferior da placa de circuito. Eu entendo que esta placa deve ser montada em cima de um Arduino Uno ou similar e fornece o layout de pino correto para que funcione naquele ambiente. Comprei este módulo no Ebay de um fornecedor na China. Os pinos do cabeçalho no lado inferior (teclado) da placa são geralmente rotulados, mas os pinos do lado superior, que é a interface LCD, não são rotulados. No entanto, os pinos no próprio LCD são identificados.

Etapa 2: Descrição das peças - Módulo serial I2C

Descrição das peças - Módulo I2C Serial
Descrição das peças - Módulo I2C Serial

O módulo serial tem o conector de 4 pinos usual para I2C e um conjunto de pinos de cabeçalho não rotulados que, segundo entendi, devem ser conectados diretamente na parte inferior do módulo LCD. Ao estudar as etiquetas no LCD, consegui identificar as funções dos pinos no módulo serial.

Este módulo é baseado no IC PCF8574T que termina o protocolo I2C, possui 3 pinos para controle de endereço (20 a 27) e possui 8 pinos de entrada / saída digital P0 a P7. De acordo com a folha de dados do PCF8574T, cada pino de E / S tem um FET para puxá-lo para o aterramento para o estado LOW e pode afundar pelo menos 20ma. No estado Alto, ele tem um pull-up ativo transiente e, em seguida, uma corrente pull-up contínua de cerca de 0,1 mA.

Neste módulo, todos os pinos de E / S digitais, exceto P3, são simplesmente trazidos para os pinos de cabeçalho (à direita na foto). No caso do P3, ele é conectado à base de um transistor (visível na foto na área superior direita logo abaixo da etiqueta “LED”). O emissor desse transistor é conectado ao Vss (terra) e o coletor é conectado ao pino 16 do conector, onde pode ser usado para controlar a luz de fundo do LCD. Por causa do transistor, o estado lógico é revertido em relação ao assumido na biblioteca de software. Ou seja, a luz de fundo do LCD é LIGADA quando o pino P3 está baixo e DESLIGADA quando o pino P3 está alto.

A etiqueta no transistor diz L6 que, de acordo com minha pesquisa, provavelmente o torna um MMBC1623L6 que tem um ganho de corrente mínimo de 200. Com 0,1 mA de corrente de base, ele deve ser capaz de manter uma condição BAIXA em seu coletor (módulo Pino 16) com pelo menos 20mA de corrente do coletor.

Além disso, este módulo possui um potenciômetro de 10K conectado entre +5 e Terra, cujo condutor variável é trazido para o pino 3 (terceiro da parte inferior na foto). Quando conectado diretamente ao LCD, este potenciômetro controlará o contraste do LCD. No entanto, essa função é fornecida por um potenciômetro semelhante separado na blindagem do LCD, portanto, este potenciômetro no módulo serial não tem função.

Não consegui encontrar nenhuma conexão com o pino INT do PCF8574T.

ATUALIZAÇÃO em 22 de agosto de 2019

Conforme mencionado acima, o PCF8574 possui 3 pinos de controle de endereço. Eles parecem ser trazidos para almofadas na placa da mochila, onde são identificados como A0, A1 e A2. Eles podem ser vistos na foto. Eu não testei isso, mas parece quase certo que ligando um ou mais desses pinos aos blocos adjacentes, o endereço I2C pode ser controlado no intervalo de 20 a 27. Além disso, há um segundo dispositivo quase idêntico, o PCF8574A, que tem funcionalidade idêntica ao PCF8574, mas cobre a faixa de endereço de 0x38 a 0x3F.

O endereço que seu dispositivo realmente usa pode ser verificado com um I2CScanner. Existem vários scanners I2C simples disponíveis em várias fontes. Este em https://github.com/farmerkeith/I2CScanner também identifica alguns dos dispositivos encontrados.

Etapa 3: conexões

Conexões
Conexões

Obrigado a ChaitanyaM17 que forneceu o diagrama de Fritzing que mostra as conexões, descritas abaixo.

Poder:

O módulo LCD possui um pino no lado inferior identificado como "5.0 V". À direita, adjacente a ele, estão dois pinos sem etiqueta, ambos aterrados.

Segurando o módulo serial com a interface I2C na extremidade esquerda, existem 16 pinos na extremidade inferior. O primeiro deles é aterrado e o segundo deles é + 5v. Outra opção é usar os dois pinos inferiores na interface I2C para alimentação, mas achei mais conveniente usar os pinos conforme descrito acima.

Interface I2C. No módulo serial, o pino superior é SCL (clock) e vai para o Arduino A5. O segundo pino é SDA (dados) e vai para o Arduino A4.

Interface de impressão LCD. Existem 6 conexões entre o módulo serial e a blindagem do teclado LCD, todas entre pinos sem etiquetas. Vou identificá-los no módulo LCD contando da direita para a esquerda, com o primeiro pino como 1. Existem 2 blocos de 8, então eles vão de 1 a 16. Eu os identifico no módulo serial I2C contando da esquerda para Certo, também há 16 deles. Além disso, dou a cada fio uma etiqueta, que é o pino equivalente no Arduino que normalmente está associado a essa função, no caso de uma conexão direta sem o módulo serial.

Portanto, as 6 conexões de dados são:

Equivalente do Arduino // Pino do módulo serial // Pino do módulo do teclado LCD

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

Controle de luz de fundo do LCD: usa mais uma conexão:

Equivalente do Arduino // Pino do módulo serial // Pino do módulo do teclado LCD

D10 // 16 // 11

Interface do teclado: usa um único fio do pino do módulo LCD no lado inferior identificado como "A0", para o pino A0 no Arduino. Pelo menos isso foi muito fácil!

Etapa 4: tornando a chave RST utilizável semelhante às outras 5 chaves

O RST pode ser conectado diretamente à entrada RESTART do Arduino Nano.

No entanto, se você quiser que a chave RST seja utilizável no software para outras coisas, isso pode ser feito conectando um resistor de 15K entre o pino RST e o pino A0 no lado inferior da proteção do teclado LCD.

Isso funciona da seguinte maneira: Há um resistor de 2K entre + 5V e a tecla Direita. Em seguida, uma cadeia de resistores progressivamente maiores para cada uma das outras chaves (330R para a tecla PARA CIMA, 620R para a tecla PARA BAIXO, 1K para a tecla ESQUERDA e 3K3 para a tecla SELECIONAR. Todas as chaves (incluindo a tecla RST) se conectam a terra. Quando conectado a um conversor A / D de 10 bits (como para Arduino Nano A0), eles fornecem aproximadamente os seguintes valores:

Direito = 0; Acima = 100; Baixo = 260; Esquerda = 410; Selecione = 640.

Com o resistor de 15 k para RST, ele fornece cerca de 850.

O software usará valores em torno dos pontos intermediários entre esses valores para decidir qual tecla foi pressionada.

Etapa 5: Software

O software útil é, obviamente, um exercício para o leitor. No entanto, para começar, você pode dar uma olhada no meu software de teste. Usei a biblioteca NewLiquidCrystal, que contém suporte para a interface I2C. Tudo funcionou, uma vez que tenho as bibliotecas instaladas corretamente.

O ponto principal era inverter a polaridade dos comandos Backlight OFF e ON (devido ao transistor no módulo I2C conforme explicado na seção Descrição das peças).

ATUALIZAÇÃO em 22 de agosto de 2019

Se você tiver problemas com o visor LCD não funcionando, verifique o endereço I2C de sua mochila serial usando um scanner I2C. Um scanner adequado está conectado. Então, se necessário, ajuste o primeiro parâmetro na instrução

LiquidCrystal_I2C lcd (0x27, 2, 1, 0, 4, 5, 6, 7);

Etapa 6: revisão e discussão

Como você pode ver, as funções principais estão funcionando.

Minha próxima intenção é colocar isso em uma caixa de projeto como parte de outro projeto. Porém, depois de iniciar esse caminho, descobri que há outra dificuldade que não havia previsto.

A dificuldade é que este módulo do teclado LCD não foi configurado para ser instalado em uma caixa. Qualquer tipo de caixa. Os botões das 6 teclas estão bem abaixo do nível da tela LCD, de modo que se o módulo for montado em uma caixa (por exemplo, na tampa) com a parte superior da placa de circuito LCD alinhada com a parte inferior da tampa, os topos das teclas estão cerca de 7 mm abaixo do topo da tampa.

As soluções possíveis são:

a) Aguente. Faça orifícios de acesso na tampa e use uma ferramenta (por exemplo, uma agulha de tricô de diâmetro adequado) para pressionar os botões.

b) Remova o LCD da placa de circuito do módulo e faça uma cirurgia no teclado para que os dois componentes possam ser fixados na tampa da caixa do projeto de forma independente (acho que ainda pode haver um problema com os botões sendo muito curtos)

c) remova os botões existentes e substitua-os por botões mais altos. Os novos botões devem ter cerca de 13 mm de altura para que possam ser acionados através da tampa da caixa do projeto). Os interruptores de botão de reposição estão disponíveis em uma variedade de alturas, incluindo 13 mm.

d) descarte o módulo de blindagem do teclado LCD e use unidades separadas de LCD e teclado (ou seja, reinicie). Há uma grande variedade de unidades de teclado disponíveis, no entanto, não vi nenhuma com o mesmo layout de 6 teclas deste módulo (ou seja, Selecionar, Esquerda, Para cima, Para baixo, Direita, Reiniciar). Pode não ser um grande problema, mas um dos motivos pelos quais comecei com este módulo foi que pensei que esse layout de chave era o que eu queria.

Estou planejando ir com a solução c) acima e ver como vou.

Outro snippet de informação que pode ser de interesse:

Com a luz de fundo LIGADA, o consumo atual deste projeto é: Arduino Nano 21,5 ma; Módulo serial 3,6 ma; Módulo LCD 27,5 mA; Total 52 mA.

Com a luz de fundo desligada, o consumo atual deste projeto é: Arduino Nano 21,5 ma; Módulo serial 4,6 ma; Módulo LCD 9,8 mA; Total 36 mA.

Recomendado: