\ Tutorial: Display LCD com protocolo I2C e sensor DS18B20

Tutorial: Display LCD com protocolo I2C e sensor DS18B20

Foto capa do projeto utilizando LCD com módulo I2C e o sensor de temperatura DS18B20

Uma forma interessante de exibir informações é através do LCD, entretanto, a quantidade de pinos que possui pode ser um limitador quando for realizar algum projeto. Por isso, podemos utilizar um circuito integrado que fará o controle por meio do protocolo I2C. Podemos adquirir esse CI e conectá-lo ao LCD ou comprar o conjunto LCD já com a CI soldada (Figura 1).

foto Lcd 16x2 e módulo I2C
Figura 1; (a) Display LCD 16x2; (b) Módulo I2C.

Foto módulo I2c para arduino
Figura 2: módulo IC2 com detalhes das saídas.

A Figura 2 traz detalhes do módulo que iremos utilizar. Ele pode vir já conectado ao LCD ou ele poderá ser adquirido à parte. O módulo contém 16 pinos de conexões que se encaixa perfeitamente no LCD. Os 4 pinos GND, VCC, SDA e SCL deverão ser conectados ao Arduino. Ele possui um potenciômetro para ajuste do contraste da tela (muito provavelmente você deverá ajustar o seu display, fique atento). Esse módulo, geralmente, vem com endereço default 0x27, em alguns casos é necessário encontrar o endereço do seu módulo.

Para se trabalhar com LCDs com módulo I2C precisaremos instalar a biblioteca LiquidCrystal_I2C; ela será muito útil na hora de controlar o LCD. A versão mais recente desta biblioteca pode ser baixada  aqui no GitHub  ou clique no botão abaixo:

Você pode instalar a biblioteca fazendo: Sketch-> Incluir Biblioteca -> Adicionar Biblioteca.zip (Figura 3). Uma vez instalada você pode incluí-la no sketch (Figura 4). Esse procedimento deverá ser realizado para as demais bibliotecas que deverão ser instaladas ainda nesse post.

Foto de como instalar uma biblioteca no arduino
Figura 3: instalação da biblioteca Cristal Liquid I2C.

Foto de como instalar uma biblioteca no arduino
Figura 4: Inclusão da biblioteca no sketch.

Muito cuidado ao tentar baixar essa biblioteca em outro site pois poderá haver conflito com outra biblioteca pré-instalada na IDE do Arduino. O quadro a seguir traz as principais funções da biblioteca LiquidCrystal_I2C. 

Função

Descrição

begin(int coluna, int linha)

Define as dimensões da tela

clear()

Reinicia e limpa tudo no display

home()

Posiciona o curso no canto superior esquerdo do display

setCursor(int coluna, int linha)

Posiciona o cursor na posição solicitada

write (byte valor)

Escreve um caractere na posição atual do vetor

print(dado)

Imprime o texto na string; pode ser char, byte, int, long ou String


Projeto 1: Utilizando o LCD para exibir uma mensagem

Material utilizado

Um LCD 16x2 Hitachi HD44780 com (módulo I2C embutido - opcional);
Um módulo I2C para LCD;
Um Arduino Uno;
Uma protoboard;
Cabos Jumpers;

Esquema de ligação

Figura 5: Esquema de ligação do LCD I2C no Arduino.
Figura 5: Esquema de ligação do LCD I2C no Arduino.

Descobrindo o endereço hexadecimal do módulo I2C

Para não termos problemas futuros, vamos buscar o endereço hexadecimal do I2C. Essa informação é muito importante para quando formos inciar o LCD a partir da biblioteca que iremos utilizar. Depois de fazer as ligações apresentada na Figura 2 carregue o código abaixo no Arduino. O endereço hexadecimal de seu LCD será apresentado no Monitor Serial. Anate-o, pois será necessário utilizar no sketch do projeto 1. Utilizamos a biblioteca Wire.h, que permite a comunicação com dispositivos I2C. Ele deve vir pré-instalado com o  Arduino IDE. O endereço encontrado do meu módulo LCD é o 0x3f.

Programando o Arduino

Agora que já temos o endereço hexadecimal e sabemos quais as principais funções da biblioteca LiquidCrystal_I2C, podemos escrever nosso código. A principal função do código a seguir é a de exibir uma mensagem na tela do LCD. Ao carregar o código no Arduino, e, por acaso, a mensagem não é exibida na tela, faz-se necessário ajustar o contraste com potenciômetro que se encontra no módulo I2C (Figura 2).

Projeto Funcionando


Projeto 2: Utilizando o LCD com o sensor de temperatura DS18B20

Já utilizamos o sensor de temperatura TM36 em dois projetos, agora, iremos utilizar um outro: o sensor DS18B20. Esse sensor usa um protocolo de um fio e está se tornando muito popular no mercado. O protocolo de um fio permite que um ou mais dispositivos escravos de um fio se comuniquem com um outro dispositivo mestre por meio de uma única linha de dados, o que significa que é possível conectar diversos desses sensores ao Arduino sem utilizar muitas entradas e, além disso, eles são baratos, confiáveis e pode se comunicar através de fio em comunicações remotas (em breve, irei escrever um post usando esse sensor com o módulo XBee). Ele possui duas bibliotecas poderosas: OneWire e o DallasTemperature, o que torna nosso trabalho mais simples. Nesse projeto iremos utilizar ambas. Ela permitirá a comunicação com o sensor de temperatura. Ela pode ser baixada clicando nos botões abaixo:


Material utilizado

Um LCD 16x2 com I2C;
Um Arduino Uno;
Uma protoboard;
Cabos Jumpers;
Um sensor DS18B20;
Um resistor de 4,7K Ohms.

Esquema de ligação

Fiquem atentos aos detalhes do esquema abaixo. Coloquei as linhas das tabelas nas cores dos fios para facilitar. Coloquei também uma imagem do sensor DS18B20. O pino da direita é o 1, o central é o 2 e o da esquerda é o 3. O resistor é o de 4,7K Ohms.

Figura 6: Esquema  de montagem do projeto 2. LCD, módulo I2C e arduino e conexões.
Figura 6: Esquema  de montagem do projeto 2. LCD, módulo I2C e arduino e conexões.

Programando o Arduino


Projeto Funcionando


Se tiverem dúvidas deixem um comentário! Compartilhem!

2 Comentários

  1. Como ligar o módulo max6675 de temperatura, com o i2c, e dois arduinos, preciso de uma luz

    ResponderExcluir
  2. Como ligar o módulo max6675 de temperatura, com o i2c, e dois arduinos, preciso de uma luz

    ResponderExcluir

Postar um comentário

Postagem Anterior Próxima Postagem