17 março 2015

Como ligar um display LCD 16x2 ao Raspberry Pi

Ligar um display LCD 16x2 ao Raspberry Pi é uma tarefa muito simples, e você pode fazer isso utilizando somente 6 pinos da placa. Existe também a possibilidade de utilizar um módulo I2C (2 pinos), mas isso será assunto para um outro artigo. 

No post de hoje vamos mostrar como enviar caracteres para o display mostrando o endereço IP do Raspberry. Esse esquema pode ser muito útil quando você precisa obter rapidamente informações sobre o endereço IP da placa, especialmente quando o endereço é obtido via DHCP.

Como ligar display LCD 16x2 ao Raspberry Pi B+

O display que vamos usar é um LCD comum 16x2, com controlador  HD44780. Para conexão ao Raspbeerry Pi vamos usar os pinos RS e E, mais  os 4 pinos de dados (D4 a D7). Como vamos apenas escrever no display, conectamos o pino RW no GND. A alimentação do display será feita por meio de um dos pinos 5V do Rasberrpy.

Na figura abaixo, mostramos a pinagem do display LCD e a ligação aos pinos do Raspberry que vamos utilizar no circuito de testes : 

Pinagem display LCD 16x2


Você pode modificar os pinos de ligação de acordo com as suas necessidades, utilizando as outras portas do Raspberry. Nesse caso, não esqueça de alterar a configuração também no  programa.

Conexão display LCD 16x2 ao Raspberry

Faça a ligação do display conforme a relação mostrada acima. O potenciômetro de 10K serve para ajuste do contraste.

Circuito Raspberry Pi B+ e Display LCD 16x2



Verifique as características do display (corrente exigida pelo backlight) e se necessário adicione um resistor de 1K entre o pino 15 e o Vcc, evitando sobrecarregar o Raspberry. Esse resistor não é necessário para os displays mais comuns que usam LED como backlight e consomem por volta de 40mA.

Instalação biblioteca LCD 16x2 no Raspberry

Certifique-se de que o seu Raspberry está conectado à internet e execute os comandos abaixo no LX Terminal. Não se preocupe com mensagens de erro informando que os pacotes já estão instalados :

sudo apt-get update
sudo apt-get install build-essential python-dev python-smbus python-pip  git
sudo pip install RPi.GPIO

Como biblioteca, vamos usar a Adafruit_Python_CharLCD. Faça o download da biblioteca e a instalação executando os comandos :

cd ~
git clone https://github.com/adafruit/Adafruit_Python_CharLCD.git
cd Adafruit_Python_CharLCD
sudo python setup.py install

Após o download e instalação, você terá uma pasta chamada  Adafruit_Python_CharLCD e dentro dela uma pasta chamada EXAMPLES. Dentro desssa pasta você encontra programas para enviar texto simples ao display, usar displays RGB e conectar o LCD ao Raspberry usando pinos PWM.

Teste o display abrindo o IDLE e copie o programa abaixo :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# Programa : Teste display LCD 16x2 e Raspberry Pi B+
# (mostra Texto e endereco IP)
# Autor : Arduino e Cia

import Adafruit_CharLCD as LCD
import socket
import os
import time

# Le as informacoes do endereco IP
gw = os.popen("ip -4 route show default").read().split()
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect((gw[2], 0))
ipaddr = s.getsockname()[0]

# Pinos LCD x Raspberry (GPIO)
lcd_rs        = 18
lcd_en        = 23
lcd_d4        = 12
lcd_d5        = 16
lcd_d6        = 20
lcd_d7        = 21
lcd_backlight = 4

# Define numero de colunas e linhas do LCD
lcd_colunas = 16
lcd_linhas  = 2

# Configuracao para display 20x4
# lcd_colunas = 20
# lcd_linhas  = 4

# Inicializa o LCD nos pinos configurados acima
lcd = LCD.Adafruit_CharLCD(lcd_rs, lcd_en, lcd_d4, lcd_d5,
                           lcd_d6, lcd_d7, lcd_colunas, lcd_linhas,
                           lcd_backlight)


# Imprime texto na primeira linha
lcd.message(' Arduino e Cia \n')

# Mostra o endereco IP na segunda linha
lcd.message('IP %s' %(ipaddr))

# Aguarda 10 segundos
time.sleep(10.0)

# Scroll de texto esquerda/direita
while 1:
        lcd.clear()
        message = 'Arduino e Cia'
        lcd.message(message)
        lcd.message('\nRaspberry  Pi')
        for i in range(lcd_colunas-len(message)):
                time.sleep(0.5)
                lcd.move_right()
        for i in range(lcd_colunas-len(message)):
                time.sleep(0.5)
                lcd.move_left()

O programa mostra o texto "Arduino e Cia" na primeira linha do display, e o endereço IP da placa na linha inferior. Após alguns segundos, a tela é apagada e é mostrado um novo texto com aplicação do efeito scroll (rolagem) horizontal. Abaixo, o vídeo com o programa em funcionamento :


Clique aqui para ver outros artigos sobre Raspberry Pi aqui no Arduino e Cia !

4 comentários:

  1. Muito bom! funcionou comigo.
    Tenho uma dúvida. O Backlight não desliga ou pisca. Seria o caso de ligar o pino 15 do LCD no pino 7 da GPIO (GPIO 4). É seguro fazer isto?

    ResponderExcluir
    Respostas
    1. Boa noite Rodrigo,

      Mas ele funciona, certo ? Sim, você pode ligar o pino 15 à uma das portas do Raspberry, já vi alguns projetos funcionando assim.

      Abraço !

      Excluir
  2. Parabéns! tem alguma forma de identificar se o LCD usa o controlador HD44780? Tenho dois LCDs que uso em arduino uno, porem não tem nenhuma indicação HD44780. Qualquer LCD 16x2 server?
    Grato!

    ResponderExcluir
    Respostas
    1. Boa noite Ronualdo,

      Não encontrei ainda uma forma de identificar o controlador. De qualquer forma, o HD44780 é um dos controladores mais comuns em displays LCD.

      Abraço!

      Excluir